diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000000000000000000000000000000000000..ce79239414f1b19f66ebc1d17ce63a1a164b8dc7 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,7 @@ +node_modules +**/node_modules +dist +**/dist +Dockerfile* +.env +docker-compose* \ No newline at end of file diff --git a/packages/api/.env-example b/.env-example similarity index 89% rename from packages/api/.env-example rename to .env-example index e9d4ee220064d63b9c58a01454925fd0c759b035..68c9840597078d6687a5c28fe27253250cf335f3 100644 --- a/packages/api/.env-example +++ b/.env-example @@ -1,12 +1,13 @@ # definir les variables d'environnement # renommer le fichier en .env -URL= +API_URL= +UI_URL= ENV=dev -UI_URL="http://localhost:3000" # environnement node.js NODE_ENV=development -PORT=4000 +API_PORT=4000 +UI_PORT=3000 NODE_DEBUG=false # jwt @@ -37,8 +38,5 @@ API_GEO_URL="" # API Openfisca API_OPENFISCA_URL="" -# url du serveur (docker-compose) -URL="" - # certificat ssh (docker-compose) LETSENCRYPT_EMAIL="" diff --git a/.github/workflows/api-ci.yml b/.github/workflows/api-ci.yml index 40233a106e42585c3c9a9fa43cf0995074fff500..ea6c9ce0b1d8d185d9610f32af823ba626edf5b5 100644 --- a/.github/workflows/api-ci.yml +++ b/.github/workflows/api-ci.yml @@ -2,7 +2,7 @@ name: api/ci on: push: concurrency: - group: environment-${{ github.ref }} + group: api-ci-${{ github.ref }} cancel-in-progress: true jobs: test: @@ -26,11 +26,12 @@ jobs: - 5432:5432 steps: - name: Checkout - uses: actions/checkout@v1 + uses: actions/checkout@v3 - name: Use Node.js - uses: actions/setup-node@v1 + uses: actions/setup-node@v3 with: node-version: '16.12' + cache: 'npm' - name: Npm install run: | npm set-script prepare "" @@ -66,13 +67,14 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v1 + uses: actions/checkout@v3 - name: Build Docker image - run: docker build -t caminofr/camino-api:develop packages/api + run: docker build -t caminofr/camino-api:develop -f Dockerfile.api . + - name: Login to Docker Hub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_TOKEN }} - name: Push Docker image to the Docker Hub - run: | - docker login --username "$DOCKER_USERNAME" --password "$DOCKER_PASSWORD" - docker push caminofr/camino-api:develop - env: - DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} - DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} + run: docker push caminofr/camino-api:develop + diff --git a/.github/workflows/api-release-docker.yml b/.github/workflows/api-release-docker.yml new file mode 100644 index 0000000000000000000000000000000000000000..5e0c8c61767f7f948f7a417c2cfd5b40126a0f31 --- /dev/null +++ b/.github/workflows/api-release-docker.yml @@ -0,0 +1,46 @@ +name: api/Release Docker images +on: + release: + types: [published] +jobs: + api: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Build Docker image + run: docker build -t caminofr/camino-api:$VERSION -t caminofr/camino-api:latest -t caminofr/camino-api:master -f Dockerfile.api . + env: + VERSION: ${{ github.event.release.tag_name }} + - name: Login to Docker Hub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_TOKEN }} + - name: Build and Push Docker image to the Docker Hub + run: docker push caminofr/camino-api --all-tags + docs: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Use Node.js + uses: actions/setup-node@v3 + with: + node-version: '16.12' + cache: 'npm' + - name: Generate docs + run: | + npm ci + npm run docs -w packages/api + env: + CI: true + - name: Build Docker image + run: docker build -f Dockerfile.api.docs -t caminofr/camino-api-docs . + - name: Login to Docker Hub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_TOKEN }} + - name: Push Docker image to the Docker Hub + run: docker push caminofr/camino-api-docs \ No newline at end of file diff --git a/.github/workflows/gitguardian.yml b/.github/workflows/gitguardian.yml index 75137be4abf8be5cdca90e02e9f702186e62ab8b..f5cd122a1e9417376a65fe4d59da024e2f134d64 100644 --- a/.github/workflows/gitguardian.yml +++ b/.github/workflows/gitguardian.yml @@ -8,7 +8,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: fetch-depth: 0 # fetch all history so multiple commits can be scanned - name: GitGuardian scan diff --git a/.github/workflows/release-docker.yml b/.github/workflows/release-docker.yml deleted file mode 100644 index 41ce81787957e7d3e8f5400488912fe5efc34531..0000000000000000000000000000000000000000 --- a/.github/workflows/release-docker.yml +++ /dev/null @@ -1,45 +0,0 @@ -name: Release Docker images -on: - release: - types: [published] -jobs: - api: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v1 - - name: Build Docker image - run: docker build -t caminofr/camino-api:$VERSION -t caminofr/camino-api:latest -t caminofr/camino-api:master . - env: - VERSION: ${{ github.event.release.tag_name }} - - name: Build and Push Docker image to the Docker Hub - run: | - docker login --username "$DOCKER_USERNAME" --password "$DOCKER_PASSWORD" - docker push caminofr/camino-api --all-tags - env: - DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} - DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} - docs: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v1 - - name: Use Node.js - uses: actions/setup-node@v1 - with: - node-version: '16.12' - - name: Generate docs - run: | - npm ci - npm run docs - env: - CI: true - - name: Build Docker image - run: docker build -f Dockerfile.docs -t caminofr/camino-api-docs . - - name: Push Docker image to the Docker Hub - run: | - docker login --username "$DOCKER_USERNAME" --password "$DOCKER_PASSWORD" - docker push caminofr/camino-api-docs - env: - DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} - DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} diff --git a/.github/workflows/release-github.yml b/.github/workflows/release-github.yml index 672adb94f3374c90c9be7a85f46e973d3015f204..b7acd6e97c45ec255c923b32dff326ba59959611 100644 --- a/.github/workflows/release-github.yml +++ b/.github/workflows/release-github.yml @@ -8,13 +8,14 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: fetch-depth: 0 - name: Setup Node.js - uses: actions/setup-node@v2 + uses: actions/setup-node@v3 with: node-version: 'lts/*' + cache: 'npm' - name: Install dependencies run: npm ci - name: Release diff --git a/.github/workflows/ui-ci.yml b/.github/workflows/ui-ci.yml new file mode 100644 index 0000000000000000000000000000000000000000..29c7ef418ffffa1620e61eb9628e17654620a717 --- /dev/null +++ b/.github/workflows/ui-ci.yml @@ -0,0 +1,45 @@ +name: ui/ci +on: + push: +concurrency: + group: ui-ci-${{ github.ref }} + cancel-in-progress: true +jobs: + test: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Use Node.js + uses: actions/setup-node@v3 + with: + node-version: '16.12' + cache: 'npm' + - name: Test units + run: | + npm set-script prepare "" + npm ci + npm run build --workspace=packages/ui + npm test --workspace=packages/ui + env: + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + CI: true + + build: + if: github.ref == 'refs/heads/develop' + needs: test + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Build Docker image + run: docker build . -f Dockerfile.ui --tag caminofr/camino-ui:develop + - name: Login to Docker Hub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_TOKEN }} + - name: Push Docker image to the Docker Hub + run: docker push caminofr/camino-ui:develop + diff --git a/.github/workflows/ui-release-docker.yml b/.github/workflows/ui-release-docker.yml new file mode 100644 index 0000000000000000000000000000000000000000..02544d3d93798f69f3bf640f13a61277a9deb9ad --- /dev/null +++ b/.github/workflows/ui-release-docker.yml @@ -0,0 +1,21 @@ +name: ui/Release Docker images +on: + release: + types: [published] +jobs: + ui: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Build Docker image + run: docker build -t caminofr/camino-ui:$VERSION -t caminofr/camino-ui:latest -t caminofr/camino-ui:master packages/ui + env: + VERSION: ${{ github.event.release.tag_name }} + - name: Login to Docker Hub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_TOKEN }} + - name: Build and Push Docker image to the Docker Hub + run: docker push caminofr/camino-ui --all-tags diff --git a/.gitignore b/.gitignore index eb79dd5fc7e98b4a2f206aec0ee842107c13d962..326b754e02b81c5623eb60d73d9e628149079ddd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ node_modules .idea +.eslintcache +.env diff --git a/Dockerfile.api b/Dockerfile.api new file mode 100644 index 0000000000000000000000000000000000000000..3c159de091cb5636f2b7fda267c5ab1a511b93e1 --- /dev/null +++ b/Dockerfile.api @@ -0,0 +1,29 @@ +FROM node:16.12-alpine as build-stage +WORKDIR /app + +COPY package*.json /app/ +COPY packages/api/package.json /app/packages/api/package.json + +# On désactive husky +RUN npm set-script prepare "" +RUN npm ci --only=prod + +COPY ./ /app/ +RUN npm run build -w packages/api + +FROM node:16.12-alpine as production-stage + +# redirige les logs sur le collecteur de logs docker +# cf le Dockerfile de nginx +# https://github.com/nginxinc/docker-nginx/blob/8921999083def7ba43a06fabd5f80e4406651353/mainline/jessie/Dockerfile#L21-L23 +RUN ln -sf /dev/stdout ./app.log + +COPY --from=build-stage /app/package.json ./ +COPY --from=build-stage /app/packages/api/package.json ./packages/api/ +COPY --from=build-stage /app/packages/api/dist/ ./packages/api/dist/ +COPY --from=build-stage /app/node_modules ./node_modules/ +# nous avons besoin des sources pour lancer certains scripts manuellement +COPY --from=build-stage /app/packages/api/src ./packages/api/src/ +COPY --from=build-stage /app/packages/api/tsconfig.json ./packages/api/ + +CMD ["npm", "start", "-w", "packages/api"] diff --git a/Dockerfile.api.docs b/Dockerfile.api.docs new file mode 100644 index 0000000000000000000000000000000000000000..19988078b25f1042f39a8363d7880aede9edf36f --- /dev/null +++ b/Dockerfile.api.docs @@ -0,0 +1,2 @@ +FROM nginx +COPY packages/api/docs /usr/share/nginx/html diff --git a/Dockerfile.ui b/Dockerfile.ui new file mode 100644 index 0000000000000000000000000000000000000000..816965f7e9f3a241cab307a23650a527a5fcb496 --- /dev/null +++ b/Dockerfile.ui @@ -0,0 +1,25 @@ +#https://github.com/fabriziocucci/vuejs.org/blob/7f9aa12833c085b97a826df3ba240f7d9e069e1b/src/v2/cookbook/dockerize-vuejs-app.md + +FROM node:16.12-alpine as build-stage +LABEL maintainer=francois.romain@beta.gouv.fr + +WORKDIR /app + +COPY package*.json /app/ +COPY packages/ui/package.json /app/packages/ui/package.json +# On désactive husky +RUN npm set-script prepare "" +RUN npm ci + +COPY ./ /app/ +RUN npm run build -w packages/ui + +FROM node:16.12-alpine as production-stage + +COPY --from=build-stage /app/package*.json ./ +COPY --from=build-stage /app/packages/ui/package.json ./packages/ui/package.json +RUN npm set-script prepare "" && npm ci --only=prod +COPY --from=build-stage /app/packages/ui/dist ./packages/ui/dist +COPY --from=build-stage /app/packages/ui/index.js ./packages/ui/index.js + +CMD ["npm", "start", "-w", "packages/ui"] diff --git a/README.md b/README.md new file mode 100644 index 0000000000000000000000000000000000000000..711a3c446623eb8ca32708ae3878c8fd34956824 --- /dev/null +++ b/README.md @@ -0,0 +1,87 @@ +# Camino + +[](https://github.com/MTES-MCT/camino/actions/workflows/ui-ci.yml) [](https://github.com/MTES-MCT/camino/actions/workflows/api-ci.yml) [![codecov][codecov-img]][codecov] + +[codecov-img]: https://codecov.io/gh/MTES-MCT/camino/branch/master/graph/badge.svg +[codecov]: https://codecov.io/gh/MTES-MCT/camino + + +> Interface web de [Camino](https://camino.beta.gouv.fr), le cadastre minier numérique. + + + +--- + +## Composants + +* [Interface](packages/ui/README.md) +* [API](packages/api/README.md) + +--- + +## Configuration + +- Cloner ce repo : `git clone https://github.com/MTES-MCT/camino.git`. +- Renommer le fichier `.env-example` en `.env` et le compléter. + +### Installation + +```bash +# installe les dépendances +npm ci +``` + +### Développement + +```bash +# lance un serveur de développement de l'api +# accessible à localhost:4000 +npm run dev -w packages/api +``` + +```bash +# lance un serveur de développement de l'interface +# accessible à localhost:3000 +npm run dev -w packages/ui +``` + +### Production + +```bash +# crée les fichiers de production dans le répertoire dist +npm run build -w packages/ui +npm run build -w packages/api + +# lance le serveur de production +npm run start -w packages/ui +npm run start -w packages/api +``` + +### Tests unitaires + +```bash +# lance les tests unitaires en local +npm run test +``` + +--- + +## Contribution + +Voir `contributing.md` (en anglais) pour plus d'infos. + +--- + +## Credits + +### Production + +- [La Fabrique Numérique, Ministère de la transition écologique](https://www.ecologique.gouv.fr/inauguration-fabrique-numerique-lincubateur-des-ministeres-charges-lecologie-et-des-territoires) + +--- + +## Licence + +Camino API, le cadastre minier numérique ouvert + +[AGPL 3 ou plus récent](https://spdx.org/licenses/AGPL-3.0-or-later.html) diff --git a/contributing.md b/contributing.md index 67c8dcc568fbdd6acc04b1e62c4357c0c77321bc..590dad59110d6b030160f1edc491e4009def71ea 100644 --- a/contributing.md +++ b/contributing.md @@ -2,7 +2,7 @@ ## Git setup -From the browser, go to the project repo on [Github](https://github.com): `https://github.com/MTES-MCT/camino-api` +From the browser, go to the project repo on [Github](https://github.com): `https://github.com/MTES-MCT/camino` Click on the `fork` button to create your own fork of the project. @@ -10,13 +10,13 @@ Then, from the terminal: ```bash # Clone your fork locally. This add a remote named 'origin' pointing to your fork. -git clone git@github.com:<your-user-name>/camino-api.git +git clone git@github.com:<your-user-name>/camino.git # Go to the project directory -cd camino-api +cd camino # Define the main repo as a remote named 'upstream'. -git remote add upstream https://github.com/MTES-MCT/camino-api.git +git remote add upstream https://github.com/MTES-MCT/camino.git # Now you have two remotes: 'origin' (your fork) and 'upstream' (main repo). ``` @@ -71,7 +71,7 @@ git push origin <my-fixes> ### 5. Make a merge request -Go to [github.com/MTES-MCT/camino-api](https://github.com/MTES-MCT/camino-api/). +Go to [github.com/MTES-MCT/camino](https://github.com/MTES-MCT/camino/). Make a new merge request from your `<my-fixes>` branch against the `master` branch from the main repo. See [Github Doc](http://docs.github.com/ce/github-basics/add-merge-request.html) for more details. **For the next fix, start over at 1.** diff --git a/packages/api/docker-compose.dev.yml b/docker-compose.dev.yml similarity index 56% rename from packages/api/docker-compose.dev.yml rename to docker-compose.dev.yml index 9baed5ee498f09d895b35df2589a0c491a0f87e7..64e4f885fb2892388d50a3eff9f2bac5f9fbd160 100644 --- a/packages/api/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -1,19 +1,21 @@ version: '3' services: - app: + api: container_name: camino_api_app - build: . + build: + context: . + dockerfile: Dockerfile.api depends_on: - db environment: - VIRTUAL_HOST: ${URL} - VIRTUAL_PORT: ${PORT} - LETSENCRYPT_HOST: ${URL} + VIRTUAL_HOST: ${API_URL} + VIRTUAL_PORT: ${API_PORT} + LETSENCRYPT_HOST: ${API_URL} LETSENCRYPT_EMAIL: ${LETSENCRYPT_EMAIL} PGHOST: db expose: - - ${PORT} + - ${API_PORT} volumes: - files:/app/files - ./.env:/app/.env @@ -24,7 +26,9 @@ services: restart: unless-stopped cron: container_name: camino_api_cron - build: . + build: + context: . + dockerfile: Dockerfile.api command: node ./dist/src/cron.js depends_on: - db @@ -52,6 +56,28 @@ services: networks: - default restart: unless-stopped + ui: + container_name: camino_ui_app + build: + context: . + dockerfile: Dockerfile.ui + environment: + VIRTUAL_HOST: ${UI_URL} + VIRTUAL_PORT: ${UI_PORT} + LETSENCRYPT_HOST: ${UI_URL} + LETSENCRYPT_EMAIL: ${LETSENCRYPT_EMAIL} + UI_PORT: ${UI_PORT} + API_URL: http://api:${API_PORT} + API_MATOMO_URL: ${API_MATOMO_URL} + API_MATOMO_ID: ${API_MATOMO_ID} + API_SENTRY_URL: ${API_SENTRY_URL} + ENV: ${ENV} + expose: + - ${UI_PORT} + networks: + - default + - nginx-proxy + restart: always volumes: data: {} diff --git a/docker-compose.local.yml b/docker-compose.local.yml new file mode 100644 index 0000000000000000000000000000000000000000..b6198f99638e2c7f6440a96529fdbd578bcf6d08 --- /dev/null +++ b/docker-compose.local.yml @@ -0,0 +1,54 @@ +version: '3' + +services: + api: + container_name: camino_api_app + build: + context: . + dockerfile: Dockerfile.api + depends_on: + - db + environment: + PGHOST: db + expose: + - ${API_PORT}:${API_PORT} + volumes: + - ./.env:/packages/api/.env + + cron: + container_name: camino_api_cron + build: + context: . + dockerfile: Dockerfile.api + command: node ./packages/api/dist/src/cron.js + depends_on: + - db + environment: + PGHOST: db + volumes: + - ./.env:/packages/api/.env + + db: + container_name: camino_api_db + image: postgis/postgis:12-3.2 + environment: + PGUSER: ${PGUSER} + POSTGRES_USER: ${PGUSER} + POSTGRES_PASSWORD: ${PGPASSWORD} + POSTGRES_DB: ${PGDATABASE} + expose: + - ${PGPORT} + ui: + container_name: camino_ui_app + build: + context: . + dockerfile: Dockerfile.ui + environment: + UI_PORT: ${UI_PORT} + API_URL: ${API_URL} + API_MATOMO_URL: ${API_MATOMO_URL} + API_MATOMO_ID: ${API_MATOMO_ID} + ENV: ${ENV} + ports: + - ${UI_PORT}:${UI_PORT} + diff --git a/packages/api/docker-compose.yml b/docker-compose.yml similarity index 53% rename from packages/api/docker-compose.yml rename to docker-compose.yml index 6f69a1a25266f8ae45c177fa687df82cba581a62..5f423095dabde8ef654db13a2a72d5a1530e8765 100644 --- a/packages/api/docker-compose.yml +++ b/docker-compose.yml @@ -1,15 +1,15 @@ version: '3' services: - app: + api: container_name: camino_api_app image: caminofr/camino-api depends_on: - db environment: - VIRTUAL_HOST: ${URL} - VIRTUAL_PORT: ${PORT} - LETSENCRYPT_HOST: ${URL} + VIRTUAL_HOST: ${API_URL} + VIRTUAL_PORT: ${API_PORT} + LETSENCRYPT_HOST: ${API_URL} LETSENCRYPT_EMAIL: ${LETSENCRYPT_EMAIL} PGHOST: db expose: @@ -52,7 +52,40 @@ services: volumes: - data:/var/lib/postgresql/data restart: unless-stopped - + docs: + container_name: camino_api_docs + image: caminofr/camino-api-docs + environment: + VIRTUAL_HOST: ${UI_URL} + VIRTUAL_PORT: ${UI_PORT} + LETSENCRYPT_HOST: ${UI_URL} + LETSENCRYPT_EMAIL: ${LETSENCRYPT_EMAIL} + expose: + - ${PORT} + networks: + - default + - nginx-proxy + restart: unless-stopped + ui: + container_name: camino_ui_app + image: caminofr/camino-ui:latest + environment: + VIRTUAL_HOST: ${UI_URL} + VIRTUAL_PORT: ${UI_PORT} + LETSENCRYPT_HOST: ${UI_URL} + LETSENCRYPT_EMAIL: ${LETSENCRYPT_EMAIL} + UI_PORT: ${UI_PORT} + API_URL: http://api:${API_PORT} + API_MATOMO_URL: ${API_MATOMO_URL} + API_MATOMO_ID: ${API_MATOMO_ID} + API_SENTRY_URL: ${API_SENTRY_URL} + ENV: ${ENV} + expose: + - ${UI_PORT} + networks: + - default + - nginx-proxy + restart: always volumes: data: {} files: diff --git a/package-lock.json b/package-lock.json index 54df977957c8454c9b9ff682c09f705c60207542..1cbbbee237da598ca40808eb8d73b70646a853f2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,8 +9,12 @@ "version": "1.0.0", "license": "AGPL-3.0-or-later", "workspaces": [ - "packages/api" - ] + "packages/api", + "packages/ui" + ], + "devDependencies": { + "husky": "^7.0.4" + } }, "node_modules/@babel/code-frame": { "version": "7.12.11", @@ -21,9 +25,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz", - "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz", + "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==", "dev": true, "engines": { "node": ">=6.9.0" @@ -89,13 +93,40 @@ "node": ">=0.10.0" } }, + "node_modules/@babel/eslint-parser": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.17.0.tgz", + "integrity": "sha512-PUEJ7ZBXbRkbq3qqM/jZ2nIuakUBqCYc7Qf52Lj7dlZ6zERnqisdHioL0l4wwQZnmskMeasqUNzLBFKs3nylXA==", + "dev": true, + "dependencies": { + "eslint-scope": "^5.1.1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || >=14.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.11.0", + "eslint": "^7.5.0 || ^8.0.0" + } + }, + "node_modules/@babel/eslint-parser/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@babel/generator": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz", - "integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz", + "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==", "dev": true, "dependencies": { - "@babel/types": "^7.15.6", + "@babel/types": "^7.17.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" }, @@ -112,15 +143,40 @@ "node": ">=0.10.0" } }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", + "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", + "dev": true, + "dependencies": { + "@babel/helper-explode-assignable-expression": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz", - "integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz", + "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.15.0", - "@babel/helper-validator-option": "^7.14.5", - "browserslist": "^4.16.6", + "@babel/compat-data": "^7.17.7", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.17.5", "semver": "^6.3.0" }, "engines": { @@ -139,94 +195,183 @@ "semver": "bin/semver.js" } }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.17.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.6.tgz", + "integrity": "sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz", + "integrity": "sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "regexpu-core": "^5.0.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", + "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0-0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", + "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-explode-assignable-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", + "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-function-name": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", - "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", + "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", "dev": true, "dependencies": { - "@babel/helper-get-function-arity": "^7.15.4", - "@babel/template": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-get-function-arity": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-get-function-arity": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", - "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", + "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", "dev": true, "dependencies": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", - "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", "dev": true, "dependencies": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", - "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", + "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", "dev": true, "dependencies": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.17.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", - "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", "dev": true, "dependencies": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.8.tgz", - "integrity": "sha512-DfAfA6PfpG8t4S6npwzLvTUpp0sS7JrcuaMiy1Y5645laRJIp/LiLGIBbQKaXSInK8tiGNI7FL7L8UvB8gdUZg==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", + "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.15.4", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-simple-access": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/helper-validator-identifier": "^7.15.7", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.6" + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", - "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", + "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", "dev": true, "dependencies": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -241,40 +386,67 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", + "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-wrap-function": "^7.16.8", + "@babel/types": "^7.16.8" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-replace-supers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", - "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", + "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", "dev": true, "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", - "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", + "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", "dev": true, "dependencies": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", - "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", "dev": true, "dependencies": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -290,10 +462,25 @@ } }, "node_modules/@babel/helper-validator-option": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", - "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", + "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.8", + "@babel/types": "^7.16.8" + }, "engines": { "node": ">=6.9.0" } @@ -391,9 +578,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz", - "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==", + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.8.tgz", + "integrity": "sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -402,6 +589,321 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz", + "integrity": "sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz", + "integrity": "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz", + "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", + "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-static-block": { + "version": "7.17.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz", + "integrity": "sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.17.6", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-proposal-decorators": { + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.17.8.tgz", + "integrity": "sha512-U69odN4Umyyx1xO1rTII0IDkAEC+RNlcKXtqOblfpzqy1C+aOplb76BQNq0+XdpVkOaPlpEDwd++joY8FNFJKA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.17.6", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/plugin-syntax-decorators": "^7.17.0", + "charcodes": "^0.2.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-dynamic-import": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", + "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-export-default-from": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.16.7.tgz", + "integrity": "sha512-+cENpW1rgIjExn+o5c8Jw/4BuH4eGKKYvkMB8/0ZxFQ9mC0t4z09VsPIwNg6waF69QYC81zxGeAsREGuqQoKeg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-export-default-from": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-export-namespace-from": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz", + "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-json-strings": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz", + "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz", + "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz", + "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", + "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz", + "integrity": "sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.17.0", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", + "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", + "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.16.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz", + "integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.10", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz", + "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz", + "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-async-generators": { "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", @@ -438,6 +940,90 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-decorators": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.17.0.tgz", + "integrity": "sha512-qWe85yCXsvDEluNP0OyeQjH63DlhAR3W7K9BxxU1MvbDb48tgBG+Ao6IJJ6smPDrrVzSQZrbF6donpkFBMcs3A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-default-from": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.16.7.tgz", + "integrity": "sha512-4C3E4NsrLOgftKaTYTULhHsuQrGv3FHrBzOMDiS7UYKIpgGBkAdawg4h+EI8zPeK9M0fiIIh72hIwsI24K7MbA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-flow": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.16.7.tgz", + "integrity": "sha512-UDo3YGQO0jH6ytzVwgSLv9i/CzMcUjbKenL67dTrAZPPv6GFAtDhe6jqnvmoKzC/7htNTohhos+onPtDMqJwaQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-import-meta": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", @@ -462,6 +1048,21 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz", + "integrity": "sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", @@ -534,6 +1135,21 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-top-level-await": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", @@ -564,65 +1180,91 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/template": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", - "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz", + "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/template/node_modules/@babel/code-frame": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz", - "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==", + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz", + "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==", "dev": true, "dependencies": { - "@babel/highlight": "^7.14.5" + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/traverse": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", - "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", + "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-hoist-variables": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4", - "debug": "^4.1.0", - "globals": "^11.1.0" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/traverse/node_modules/@babel/code-frame": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz", - "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==", + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz", + "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==", "dev": true, "dependencies": { - "@babel/highlight": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/traverse/node_modules/globals": { + "node_modules/@babel/plugin-transform-classes": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz", + "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes/node_modules/globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", @@ -631,1671 +1273,1734 @@ "node": ">=4" } }, - "node_modules/@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz", + "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.14.9", - "to-fast-properties": "^2.0.0" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "node_modules/@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz", + "integrity": "sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, "engines": { - "node": ">=0.1.90" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@commitlint/execute-rule": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-13.2.0.tgz", - "integrity": "sha512-6nPwpN0hwTYmsH3WM4hCdN+NrMopgRIuQ0aqZa+jnwMoS/g6ljliQNYfL+m5WO306BaIu1W3yYpbW5aI8gEr0g==", + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", + "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", "dev": true, - "optional": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, "engines": { - "node": ">=v12" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@commitlint/load": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-13.2.0.tgz", - "integrity": "sha512-Nhkv+hwWCCxWGjmE9jd1U8kfGGCkZVpwzlTtdKxpY+Aj2VCFg3BjY+qA81pMF3oAsIpxchSaZG5llb8kduVjYg==", + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz", + "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==", "dev": true, - "optional": true, "dependencies": { - "@commitlint/execute-rule": "^13.2.0", - "@commitlint/resolve-extends": "^13.2.0", - "@commitlint/types": "^13.2.0", - "@endemolshinegroup/cosmiconfig-typescript-loader": "^3.0.2", - "chalk": "^4.0.0", - "cosmiconfig": "^7.0.0", - "lodash": "^4.17.19", - "resolve-from": "^5.0.0" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { - "node": ">=v12" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@commitlint/resolve-extends": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-13.2.0.tgz", - "integrity": "sha512-HLCMkqMKtvl1yYLZ1Pm0UpFvd0kYjsm1meLOGZ7VkOd9G/XX+Fr1S2G5AT2zeiDw7WUVYK8lGVMNa319bnV+aw==", + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", + "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", "dev": true, - "optional": true, "dependencies": { - "import-fresh": "^3.0.0", - "lodash": "^4.17.19", - "resolve-from": "^5.0.0", - "resolve-global": "^1.0.0" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { - "node": ">=v12" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@commitlint/types": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-13.2.0.tgz", - "integrity": "sha512-RRVHEqmk1qn/dIaSQhvuca6k/6Z54G+r/KyimZ8gnAFielGiGUpsFRhIY3qhd5rXClVxDaa3nlcyTWckSccotQ==", + "node_modules/@babel/plugin-transform-flow-strip-types": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.16.7.tgz", + "integrity": "sha512-mzmCq3cNsDpZZu9FADYYyfZJIOrSONmHcop2XEKPdBNMa4PDC4eEvcOvzZaCNcjKu72v0XQlA5y1g58aLRXdYg==", "dev": true, - "optional": true, "dependencies": { - "chalk": "^4.0.0" + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-flow": "^7.16.7" }, "engines": { - "node": ">=v12" - } - }, - "node_modules/@cspotcode/source-map-consumer": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", - "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", - "engines": { - "node": ">= 12" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz", - "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==", + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz", + "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==", + "dev": true, "dependencies": { - "@cspotcode/source-map-consumer": "0.8.0" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { - "node": ">=12" - } - }, - "node_modules/@dabh/diagnostics": { - "version": "2.0.2", - "license": "MIT", - "dependencies": { - "colorspace": "1.1.x", - "enabled": "2.0.x", - "kuler": "^2.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@endemolshinegroup/cosmiconfig-typescript-loader": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@endemolshinegroup/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-3.0.2.tgz", - "integrity": "sha512-QRVtqJuS1mcT56oHpVegkKBlgtWjXw/gHNWO3eL9oyB5Sc7HBoc2OLG/nYpVfT/Jejvo3NUrD0Udk7XgoyDKkA==", + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", + "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", "dev": true, - "optional": true, "dependencies": { - "lodash.get": "^4", - "make-error": "^1", - "ts-node": "^9", - "tslib": "^2" + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { - "node": ">=10.0.0" + "node": ">=6.9.0" }, "peerDependencies": { - "cosmiconfig": ">=6" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@endemolshinegroup/cosmiconfig-typescript-loader/node_modules/ts-node": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz", - "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==", + "node_modules/@babel/plugin-transform-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz", + "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==", "dev": true, - "optional": true, "dependencies": { - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "source-map-support": "^0.5.17", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { - "node": ">=10.0.0" + "node": ">=6.9.0" }, "peerDependencies": { - "typescript": ">=2.7" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@eslint/eslintrc": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.1.tgz", - "integrity": "sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ==", + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", + "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", "dev": true, "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.3.1", - "globals": "^13.9.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@eslint/eslintrc/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/@eslint/eslintrc/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz", + "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==", "dev": true, "dependencies": { - "argparse": "^2.0.1" + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "babel-plugin-dynamic-import-node": "^2.3.3" }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@eslint/eslintrc/node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, "engines": { - "node": ">=8" + "node": ">=6.9.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@gar/promisify": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", - "dev": true - }, - "node_modules/@google-cloud/common": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-3.9.0.tgz", - "integrity": "sha512-R9PfmCKbpOizvcLY+fz/TS4HdOQhvmf4EY4xEXvWnotGbGXujuTLJTJ2URy8BGT8TDxlh6gjjfEwjJ8McnNPIg==", + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.7.tgz", + "integrity": "sha512-ITPmR2V7MqioMJyrxUo2onHNC3e+MvfFiFIR0RP21d3PtlVb6sfzoxNKiphSZUOM9hEIdzCcZe83ieX3yoqjUA==", + "dev": true, "dependencies": { - "@google-cloud/projectify": "^2.0.0", - "@google-cloud/promisify": "^2.0.0", - "arrify": "^2.0.1", - "duplexify": "^4.1.1", - "ent": "^2.2.0", - "extend": "^3.0.2", - "google-auth-library": "^7.9.2", - "retry-request": "^4.2.2", - "teeny-request": "^7.0.0" + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "babel-plugin-dynamic-import-node": "^2.3.3" }, "engines": { - "node": ">=10" - } - }, - "node_modules/@google-cloud/common/node_modules/arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", - "engines": { - "node": ">=8" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@google-cloud/paginator": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-3.0.7.tgz", - "integrity": "sha512-jJNutk0arIQhmpUUQJPJErsojqo834KcyB6X7a1mxuic8i1tKXxde8E69IZxNZawRIlZdIK2QY4WALvlK5MzYQ==", + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz", + "integrity": "sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw==", + "dev": true, "dependencies": { - "arrify": "^2.0.0", - "extend": "^3.0.2" + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "babel-plugin-dynamic-import-node": "^2.3.3" }, "engines": { - "node": ">=10" - } - }, - "node_modules/@google-cloud/paginator/node_modules/arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", - "engines": { - "node": ">=8" - } - }, - "node_modules/@google-cloud/projectify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-2.1.1.tgz", - "integrity": "sha512-+rssMZHnlh0twl122gXY4/aCrk0G1acBqkHFfYddtsqpYXGxA29nj9V5V9SfC+GyOG00l650f6lG9KL+EpFEWQ==", - "engines": { - "node": ">=10" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@google-cloud/promisify": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-2.0.4.tgz", - "integrity": "sha512-j8yRSSqswWi1QqUGKVEKOG03Q7qOoZP6/h2zN2YO+F5h2+DHU0bSrHCK9Y7lo2DI9fBd8qGAw795sf+3Jva4yA==", + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz", + "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, "engines": { - "node": ">=10" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@google-cloud/storage": { - "version": "5.18.2", - "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-5.18.2.tgz", - "integrity": "sha512-hL/6epBF2uPt7YtJoOKI6mVxe6RsKBs7S8o2grE0bFGdQKSOngVHBcstH8jDw7aN2rXGouA2TfVTxH+VapY5cg==", + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz", + "integrity": "sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==", + "dev": true, "dependencies": { - "@google-cloud/common": "^3.8.1", - "@google-cloud/paginator": "^3.0.7", - "@google-cloud/promisify": "^2.0.0", - "abort-controller": "^3.0.0", - "arrify": "^2.0.0", - "async-retry": "^1.3.3", - "compressible": "^2.0.12", - "configstore": "^5.0.0", - "date-and-time": "^2.0.0", - "duplexify": "^4.0.0", - "extend": "^3.0.2", - "gaxios": "^4.0.0", - "get-stream": "^6.0.0", - "google-auth-library": "^7.0.0", - "hash-stream-validation": "^0.2.2", - "mime": "^3.0.0", - "mime-types": "^2.0.8", - "p-limit": "^3.0.1", - "pumpify": "^2.0.0", - "snakeize": "^0.1.0", - "stream-events": "^1.0.4", - "xdg-basedir": "^4.0.0" + "@babel/helper-create-regexp-features-plugin": "^7.16.7" }, "engines": { - "node": ">=10" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@google-cloud/storage/node_modules/arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz", + "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, "engines": { - "node": ">=8" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@google-cloud/storage/node_modules/mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", - "bin": { - "mime": "cli.js" + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", + "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7" }, "engines": { - "node": ">=10.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@graphql-tools/graphql-file-loader": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/@graphql-tools/graphql-file-loader/-/graphql-file-loader-7.3.5.tgz", - "integrity": "sha512-TBWDA7EV/cmFFUlN2eT9JqYIkiOGEtwwOgzzPcjM9HlPrbKjQkPIJ9Jaxp7aKWbSGhJ+PnbZ7vFLFLGKsCYOjg==", + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz", + "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==", + "dev": true, "dependencies": { - "@graphql-tools/import": "6.6.7", - "@graphql-tools/utils": "8.6.3", - "globby": "^11.0.3", - "tslib": "~2.3.0", - "unixify": "^1.0.0" + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@graphql-tools/import": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/@graphql-tools/import/-/import-6.6.7.tgz", - "integrity": "sha512-zzpnVtmdel3mKz6i46GUib4wn0K5dosq4OTBl4avKV6ElvgZTkvsvfSv2aRhbRGIT4VnZPXLfzSnmYd8e+SRLQ==", + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", + "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", + "dev": true, "dependencies": { - "@graphql-tools/utils": "8.6.3", - "resolve-from": "5.0.0", - "tslib": "~2.3.0" + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@graphql-tools/load": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/@graphql-tools/load/-/load-7.5.3.tgz", - "integrity": "sha512-GYwLyGfX1nKUxg6rnTIdryv9d+ugFRTm2q11+IqNsajwNhxJExkx+e/h81AQR5382sAmPEIT+E1J1VS3xNfjyg==", + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz", + "integrity": "sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg==", + "dev": true, "dependencies": { - "@graphql-tools/schema": "8.3.3", - "@graphql-tools/utils": "8.6.3", - "p-limit": "3.1.0", - "tslib": "~2.3.0" + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@graphql-tools/merge": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.2.4.tgz", - "integrity": "sha512-hiNRTsS948F+BB4Q7CZXLaGFOIHQzmimVq3EEI/+PQZsPb7kYDzg0Ow0GyV4conDdEiooLqHf7I1dWzTYwvs0A==", + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.3.tgz", + "integrity": "sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ==", + "dev": true, "dependencies": { - "@graphql-tools/utils": "8.6.3", - "tslib": "~2.3.0" + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-jsx": "^7.16.7", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@graphql-tools/schema": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.3.3.tgz", - "integrity": "sha512-OrRLU9/7UmkDemeyNUy62uH+FofgV3bpVVZJprc9bhe3gZsY7kQNIdY7H1unINlepjLvGOgk7u7iLo2+EhjyWw==", + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz", + "integrity": "sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A==", + "dev": true, "dependencies": { - "@graphql-tools/merge": "8.2.4", - "@graphql-tools/utils": "8.6.3", - "tslib": "~2.3.0", - "value-or-promise": "1.0.11" + "@babel/plugin-transform-react-jsx": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@graphql-tools/utils": { - "version": "8.6.3", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.6.3.tgz", - "integrity": "sha512-CNyP7Uu7dlVMQ32IpHWOxz4yic9BYXXVkDhG0UdTKSszvzHdgMilemE9MpUrGzzBPsTe3aYTtNGyPUkyh9yTXA==", + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.7.tgz", + "integrity": "sha512-hs71ToC97k3QWxswh2ElzMFABXHvGiJ01IB1TbYQDGeWRKWz/MPUTh5jGExdHvosYKpnJW5Pm3S4+TA3FyX+GA==", + "dev": true, "dependencies": { - "tslib": "~2.3.0" + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", - "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz", + "integrity": "sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q==", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.4" + "regenerator-transform": "^0.14.2" }, "engines": { - "node": ">=10.10.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@humanwhocodes/momoa": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/momoa/-/momoa-2.0.3.tgz", - "integrity": "sha512-SytjS6gJk+LXSWFuEm0V9ASdgxlX/BDq6A+6gfh7TaHM90xppBydjcM3SFaziZP4ikKmhUOhPkDi2KktzElnQQ==", + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz", + "integrity": "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, "engines": { - "node": ">=10.10.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", + "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", "dev": true, "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { - "node": ">=8" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "node_modules/@babel/plugin-transform-spread": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz", + "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==", "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + }, "engines": { - "node": ">=6" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", + "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", "dev": true, "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { - "node": ">=8" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz", + "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==", "dev": true, "dependencies": { - "p-locate": "^4.1.0" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { - "node": ">=8" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz", + "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==", "dev": true, "dependencies": { - "p-try": "^2.0.0" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { - "node": ">=6" + "node": ">=6.9.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.8.tgz", + "integrity": "sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ==", "dev": true, "dependencies": { - "p-limit": "^2.2.0" + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-typescript": "^7.16.7" }, "engines": { - "node": ">=8" - } + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", + "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, "engines": { - "node": ">=8" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", + "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, "engines": { - "node": ">=8" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@jest/console": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", - "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", - "slash": "^3.0.0" + "node_modules/@babel/preset-env": { + "version": "7.16.11", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.11.tgz", + "integrity": "sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.16.8", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7", + "@babel/plugin-proposal-async-generator-functions": "^7.16.8", + "@babel/plugin-proposal-class-properties": "^7.16.7", + "@babel/plugin-proposal-class-static-block": "^7.16.7", + "@babel/plugin-proposal-dynamic-import": "^7.16.7", + "@babel/plugin-proposal-export-namespace-from": "^7.16.7", + "@babel/plugin-proposal-json-strings": "^7.16.7", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7", + "@babel/plugin-proposal-numeric-separator": "^7.16.7", + "@babel/plugin-proposal-object-rest-spread": "^7.16.7", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", + "@babel/plugin-proposal-optional-chaining": "^7.16.7", + "@babel/plugin-proposal-private-methods": "^7.16.11", + "@babel/plugin-proposal-private-property-in-object": "^7.16.7", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.7", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.16.7", + "@babel/plugin-transform-async-to-generator": "^7.16.8", + "@babel/plugin-transform-block-scoped-functions": "^7.16.7", + "@babel/plugin-transform-block-scoping": "^7.16.7", + "@babel/plugin-transform-classes": "^7.16.7", + "@babel/plugin-transform-computed-properties": "^7.16.7", + "@babel/plugin-transform-destructuring": "^7.16.7", + "@babel/plugin-transform-dotall-regex": "^7.16.7", + "@babel/plugin-transform-duplicate-keys": "^7.16.7", + "@babel/plugin-transform-exponentiation-operator": "^7.16.7", + "@babel/plugin-transform-for-of": "^7.16.7", + "@babel/plugin-transform-function-name": "^7.16.7", + "@babel/plugin-transform-literals": "^7.16.7", + "@babel/plugin-transform-member-expression-literals": "^7.16.7", + "@babel/plugin-transform-modules-amd": "^7.16.7", + "@babel/plugin-transform-modules-commonjs": "^7.16.8", + "@babel/plugin-transform-modules-systemjs": "^7.16.7", + "@babel/plugin-transform-modules-umd": "^7.16.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.8", + "@babel/plugin-transform-new-target": "^7.16.7", + "@babel/plugin-transform-object-super": "^7.16.7", + "@babel/plugin-transform-parameters": "^7.16.7", + "@babel/plugin-transform-property-literals": "^7.16.7", + "@babel/plugin-transform-regenerator": "^7.16.7", + "@babel/plugin-transform-reserved-words": "^7.16.7", + "@babel/plugin-transform-shorthand-properties": "^7.16.7", + "@babel/plugin-transform-spread": "^7.16.7", + "@babel/plugin-transform-sticky-regex": "^7.16.7", + "@babel/plugin-transform-template-literals": "^7.16.7", + "@babel/plugin-transform-typeof-symbol": "^7.16.7", + "@babel/plugin-transform-unicode-escapes": "^7.16.7", + "@babel/plugin-transform-unicode-regex": "^7.16.7", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.8", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.20.2", + "semver": "^6.3.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@jest/core": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", - "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-flow": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.16.7.tgz", + "integrity": "sha512-6ceP7IyZdUYQ3wUVqyRSQXztd1YmFHWI4Xv11MIqAlE4WqxBSd/FZ61V9k+TS5Gd4mkHOtQtPp9ymRpxH4y1Ug==", "dev": true, "dependencies": { - "@jest/console": "^27.5.1", - "@jest/reporters": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.8.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^27.5.1", - "jest-config": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-resolve-dependencies": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "jest-watcher": "^27.5.1", - "micromatch": "^4.0.4", - "rimraf": "^3.0.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-transform-flow-strip-types": "^7.16.7" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=6.9.0" }, "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@jest/core/node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "node_modules/@babel/preset-react": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.16.7.tgz", + "integrity": "sha512-fWpyI8UM/HE6DfPBzD8LnhQ/OcH8AgTaqcqP2nGOXEUV+VKBR5JRN9hCk9ai+zQQ57vtm9oWeXguBCPNUjytgA==", "dev": true, "dependencies": { - "type-fest": "^0.21.3" + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-transform-react-display-name": "^7.16.7", + "@babel/plugin-transform-react-jsx": "^7.16.7", + "@babel/plugin-transform-react-jsx-development": "^7.16.7", + "@babel/plugin-transform-react-pure-annotations": "^7.16.7" }, "engines": { - "node": ">=8" + "node": ">=6.9.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@jest/core/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "node_modules/@babel/preset-typescript": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.16.7.tgz", + "integrity": "sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ==", "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-transform-typescript": "^7.16.7" + }, "engines": { - "node": ">=10" + "node": ">=6.9.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@jest/environment": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", - "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", + "node_modules/@babel/register": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.17.7.tgz", + "integrity": "sha512-fg56SwvXRifootQEDQAu1mKdjh5uthPzdO0N6t358FktfL4XjAVXuH58ULoiW8mesxiOgNIrxiImqEwv0+hRRA==", "dev": true, "dependencies": { - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1" + "clone-deep": "^4.0.1", + "find-cache-dir": "^2.0.0", + "make-dir": "^2.1.0", + "pirates": "^4.0.5", + "source-map-support": "^0.5.16" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@jest/fake-timers": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", - "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", + "node_modules/@babel/register/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, "dependencies": { - "@jest/types": "^27.5.1", - "@sinonjs/fake-timers": "^8.0.1", - "@types/node": "*", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" + "pify": "^4.0.1", + "semver": "^5.6.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=6" } }, - "node_modules/@jest/globals": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", - "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", + "node_modules/@babel/register/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/types": "^27.5.1", - "expect": "^27.5.1" - }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=6" } }, - "node_modules/@jest/reporters": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", - "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", + "node_modules/@babel/register/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/@babel/runtime": { + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.8.tgz", + "integrity": "sha512-dQpEpK0O9o6lj6oPu0gRDbbnk+4LeHlNcBpspf6Olzt3GIX4P1lWF1gS+pHLDFlaJvbR6q7jCfQ08zA4QJBnmA==", "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-haste-map": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "slash": "^3.0.0", - "source-map": "^0.6.0", - "string-length": "^4.0.1", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^8.1.0" + "regenerator-runtime": "^0.13.4" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "node": ">=6.9.0" } }, - "node_modules/@jest/source-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", - "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", + "node_modules/@babel/template": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", "dev": true, "dependencies": { - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9", - "source-map": "^0.6.0" + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=6.9.0" } }, - "node_modules/@jest/test-result": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", - "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", + "node_modules/@babel/template/node_modules/@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", "dev": true, "dependencies": { - "@jest/console": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" + "@babel/highlight": "^7.16.7" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=6.9.0" } }, - "node_modules/@jest/test-sequencer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", - "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", + "node_modules/@babel/traverse": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", + "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.3", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.17.3", + "@babel/types": "^7.17.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", "dev": true, "dependencies": { - "@jest/test-result": "^27.5.1", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-runtime": "^27.5.1" + "@babel/highlight": "^7.16.7" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=6.9.0" } }, - "node_modules/@jest/transform": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", - "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", "dev": true, "dependencies": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.5.1", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-util": "^27.5.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=6.9.0" } }, - "node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "node_modules/@cnakazawa/watch": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", + "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", "dev": true, "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" + }, + "bin": { + "watch": "cli.js" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=0.1.95" } }, - "node_modules/@mapbox/geojson-area": { - "version": "0.2.2", - "license": "BSD-2-Clause", - "dependencies": { - "wgs84": "0.0.0" + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "engines": { + "node": ">=0.1.90" } }, - "node_modules/@microsoft/tsdoc": { - "version": "0.13.2", + "node_modules/@commitlint/execute-rule": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-13.2.0.tgz", + "integrity": "sha512-6nPwpN0hwTYmsH3WM4hCdN+NrMopgRIuQ0aqZa+jnwMoS/g6ljliQNYfL+m5WO306BaIu1W3yYpbW5aI8gEr0g==", "dev": true, - "license": "MIT" + "optional": true, + "engines": { + "node": ">=v12" + } }, - "node_modules/@microsoft/tsdoc-config": { - "version": "0.15.2", + "node_modules/@commitlint/load": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-13.2.0.tgz", + "integrity": "sha512-Nhkv+hwWCCxWGjmE9jd1U8kfGGCkZVpwzlTtdKxpY+Aj2VCFg3BjY+qA81pMF3oAsIpxchSaZG5llb8kduVjYg==", "dev": true, - "license": "MIT", + "optional": true, "dependencies": { - "@microsoft/tsdoc": "0.13.2", - "ajv": "~6.12.6", - "jju": "~1.4.0", - "resolve": "~1.19.0" + "@commitlint/execute-rule": "^13.2.0", + "@commitlint/resolve-extends": "^13.2.0", + "@commitlint/types": "^13.2.0", + "@endemolshinegroup/cosmiconfig-typescript-loader": "^3.0.2", + "chalk": "^4.0.0", + "cosmiconfig": "^7.0.0", + "lodash": "^4.17.19", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=v12" } }, - "node_modules/@microsoft/tsdoc-config/node_modules/resolve": { - "version": "1.19.0", + "node_modules/@commitlint/resolve-extends": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-13.2.0.tgz", + "integrity": "sha512-HLCMkqMKtvl1yYLZ1Pm0UpFvd0kYjsm1meLOGZ7VkOd9G/XX+Fr1S2G5AT2zeiDw7WUVYK8lGVMNa319bnV+aw==", "dev": true, - "license": "MIT", + "optional": true, "dependencies": { - "is-core-module": "^2.1.0", - "path-parse": "^1.0.6" + "import-fresh": "^3.0.0", + "lodash": "^4.17.19", + "resolve-from": "^5.0.0", + "resolve-global": "^1.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=v12" } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.4", - "license": "MIT", + "node_modules/@commitlint/types": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-13.2.0.tgz", + "integrity": "sha512-RRVHEqmk1qn/dIaSQhvuca6k/6Z54G+r/KyimZ8gnAFielGiGUpsFRhIY3qhd5rXClVxDaa3nlcyTWckSccotQ==", + "dev": true, + "optional": true, "dependencies": { - "@nodelib/fs.stat": "2.0.4", - "run-parallel": "^1.1.9" + "chalk": "^4.0.0" }, "engines": { - "node": ">= 8" + "node": ">=v12" } }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.4", - "license": "MIT", + "node_modules/@cspotcode/source-map-consumer": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", + "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", "engines": { - "node": ">= 8" + "node": ">= 12" } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.6", - "license": "MIT", + "node_modules/@cspotcode/source-map-support": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz", + "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==", "dependencies": { - "@nodelib/fs.scandir": "2.1.4", - "fastq": "^1.6.0" + "@cspotcode/source-map-consumer": "0.8.0" }, "engines": { - "node": ">= 8" + "node": ">=12" } }, - "node_modules/@npmcli/fs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", - "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", + "node_modules/@csstools/convert-colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz", + "integrity": "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==", "dev": true, - "dependencies": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" + "engines": { + "node": ">=4.0.0" } }, - "node_modules/@npmcli/git": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.0.tgz", - "integrity": "sha512-xfSBJ+KBMZWWqRHFbEgIaXG/LtELHrQZMJ72Gkb3yWdHysu/7+VGOs8ME0c3td7QNQX57Ggo3kYL6ylcd70/kA==", + "node_modules/@csstools/normalize.css": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-12.0.0.tgz", + "integrity": "sha512-M0qqxAcwCsIVfpFQSlGN5XjXWu8l5JDZN+fPt1LeW5SZexQTgnaEvgXAY+CeygRw0EeppWHi12JxESWiWrB0Sg==", + "dev": true + }, + "node_modules/@csstools/postcss-color-function": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.0.3.tgz", + "integrity": "sha512-J26I69pT2B3MYiLY/uzCGKVJyMYVg9TCpXkWsRlt+Yfq+nELUEm72QXIMYXs4xA9cJA4Oqs2EylrfokKl3mJEQ==", "dev": true, "dependencies": { - "@npmcli/promise-spawn": "^1.3.2", - "lru-cache": "^7.3.1", - "mkdirp": "^1.0.4", - "npm-pick-manifest": "^7.0.0", - "proc-log": "^2.0.0", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^2.0.2" + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" } }, - "node_modules/@npmcli/git/node_modules/lru-cache": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.6.0.tgz", - "integrity": "sha512-zjOf6cyMI7rcN+5MtLsT4GnDjc6D9XHi8kYcsfXTqWC+yLdSiU3/jtEPX9wZE77+XLtnmdIWu3+291hkizfH+Q==", + "node_modules/@csstools/postcss-font-format-keywords": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.0.tgz", + "integrity": "sha512-oO0cZt8do8FdVBX8INftvIA4lUrKUSCcWUf9IwH9IPWOgKT22oAZFXeHLoDK7nhB2SmkNycp5brxfNMRLIhd6Q==", "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, "engines": { - "node": ">=12" + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.3" } }, - "node_modules/@npmcli/installed-package-contents": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", - "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", + "node_modules/@csstools/postcss-hwb-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.0.tgz", + "integrity": "sha512-VSTd7hGjmde4rTj1rR30sokY3ONJph1reCBTUXqeW1fKwETPy1x4t/XIeaaqbMbC5Xg4SM/lyXZ2S8NELT2TaA==", "dev": true, "dependencies": { - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" - }, - "bin": { - "installed-package-contents": "index.js" + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">= 10" + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.3" } }, - "node_modules/@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "node_modules/@csstools/postcss-ic-unit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.0.tgz", + "integrity": "sha512-i4yps1mBp2ijrx7E96RXrQXQQHm6F4ym1TOD0D69/sjDjZvQ22tqiEvaNw7pFZTUO5b9vWRHzbHzP9+UKuw+bA==", "dev": true, "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=10" + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.3" } }, - "node_modules/@npmcli/node-gyp": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz", - "integrity": "sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA==", - "dev": true - }, - "node_modules/@npmcli/promise-spawn": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz", - "integrity": "sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg==", + "node_modules/@csstools/postcss-is-pseudo-class": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.1.tgz", + "integrity": "sha512-Og5RrTzwFhrKoA79c3MLkfrIBYmwuf/X83s+JQtz/Dkk/MpsaKtqHV1OOzYkogQ+tj3oYp5Mq39XotBXNqVc3Q==", "dev": true, "dependencies": { - "infer-owner": "^1.0.4" + "postcss-selector-parser": "^6.0.9" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" } }, - "node_modules/@npmcli/run-script": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-3.0.1.tgz", - "integrity": "sha512-o2fkld5hYwu9sKYzoXTpqEocMnDLaigobaPzLaGB63k/ExmLBTaB+KpfKlpcIePPnuP8RFR+0GDI4KopJCM6Xg==", + "node_modules/@csstools/postcss-normalize-display-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.0.tgz", + "integrity": "sha512-bX+nx5V8XTJEmGtpWTO6kywdS725t71YSLlxWt78XoHUbELWgoCXeOFymRJmL3SU1TLlKSIi7v52EWqe60vJTQ==", "dev": true, "dependencies": { - "@npmcli/node-gyp": "^1.0.3", - "@npmcli/promise-spawn": "^1.3.2", - "node-gyp": "^9.0.0", - "read-package-json-fast": "^2.0.3" + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.3" } }, - "node_modules/@octokit/auth-token": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", - "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", + "node_modules/@csstools/postcss-oklab-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.0.2.tgz", + "integrity": "sha512-QwhWesEkMlp4narAwUi6pgc6kcooh8cC7zfxa9LSQNYXqzcdNUtNBzbGc5nuyAVreb7uf5Ox4qH1vYT3GA1wOg==", "dev": true, "dependencies": { - "@octokit/types": "^6.0.3" + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" } }, - "node_modules/@octokit/core": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.5.1.tgz", - "integrity": "sha512-omncwpLVxMP+GLpLPgeGJBF6IWJFjXDS5flY5VbppePYX9XehevbDykRH9PdCdvqt9TS5AOTiDide7h0qrkHjw==", + "node_modules/@csstools/postcss-progressive-custom-properties": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz", + "integrity": "sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==", "dev": true, "dependencies": { - "@octokit/auth-token": "^2.4.4", - "@octokit/graphql": "^4.5.8", - "@octokit/request": "^5.6.0", - "@octokit/request-error": "^2.0.5", - "@octokit/types": "^6.0.3", - "before-after-hook": "^2.2.0", - "universal-user-agent": "^6.0.0" + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.3" } }, - "node_modules/@octokit/endpoint": { - "version": "6.0.12", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", - "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", - "dev": true, + "node_modules/@dabh/diagnostics": { + "version": "2.0.2", + "license": "MIT", "dependencies": { - "@octokit/types": "^6.0.3", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" + "colorspace": "1.1.x", + "enabled": "2.0.x", + "kuler": "^2.0.0" } }, - "node_modules/@octokit/graphql": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", - "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", "dev": true, - "dependencies": { - "@octokit/request": "^5.6.0", - "@octokit/types": "^6.0.3", - "universal-user-agent": "^6.0.0" + "engines": { + "node": ">=10.0.0" } }, - "node_modules/@octokit/openapi-types": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-11.2.0.tgz", - "integrity": "sha512-PBsVO+15KSlGmiI8QAzaqvsNlZlrDlyAJYcrXBCvVUxCp7VnXjkwPoFHgjEJXx3WF9BAwkA6nfCUA7i9sODzKA==", - "dev": true - }, - "node_modules/@octokit/plugin-paginate-rest": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.17.0.tgz", - "integrity": "sha512-tzMbrbnam2Mt4AhuyCHvpRkS0oZ5MvwwcQPYGtMv4tUa5kkzG58SVB0fcsLulOZQeRnOgdkZWkRUiyBlh0Bkyw==", + "node_modules/@emotion/cache": { + "version": "10.0.29", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-10.0.29.tgz", + "integrity": "sha512-fU2VtSVlHiF27empSbxi1O2JFdNWZO+2NFHfwO0pxgTep6Xa3uGb+3pVKfLww2l/IBGLNEZl5Xf/++A4wAYDYQ==", "dev": true, "dependencies": { - "@octokit/types": "^6.34.0" - }, - "peerDependencies": { - "@octokit/core": ">=2" - } - }, - "node_modules/@octokit/plugin-request-log": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", - "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", - "dev": true, - "peerDependencies": { - "@octokit/core": ">=3" + "@emotion/sheet": "0.9.4", + "@emotion/stylis": "0.8.5", + "@emotion/utils": "0.11.3", + "@emotion/weak-memoize": "0.2.5" } }, - "node_modules/@octokit/plugin-rest-endpoint-methods": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.13.0.tgz", - "integrity": "sha512-uJjMTkN1KaOIgNtUPMtIXDOjx6dGYysdIFhgA52x4xSadQCz3b/zJexvITDVpANnfKPW/+E0xkOvLntqMYpviA==", + "node_modules/@emotion/core": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/@emotion/core/-/core-10.3.1.tgz", + "integrity": "sha512-447aUEjPIm0MnE6QYIaFz9VQOHSXf4Iu6EWOIqq11EAPqinkSZmfymPTmlOE3QjLv846lH4JVZBUOtwGbuQoww==", "dev": true, "dependencies": { - "@octokit/types": "^6.34.0", - "deprecation": "^2.3.1" + "@babel/runtime": "^7.5.5", + "@emotion/cache": "^10.0.27", + "@emotion/css": "^10.0.27", + "@emotion/serialize": "^0.11.15", + "@emotion/sheet": "0.9.4", + "@emotion/utils": "0.11.3" }, "peerDependencies": { - "@octokit/core": ">=3" + "react": ">=16.3.0" } }, - "node_modules/@octokit/request": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.2.tgz", - "integrity": "sha512-je66CvSEVf0jCpRISxkUcCa0UkxmFs6eGDRSbfJtAVwbLH5ceqF+YEyC8lj8ystKyZTy8adWr0qmkY52EfOeLA==", + "node_modules/@emotion/css": { + "version": "10.0.27", + "resolved": "https://registry.npmjs.org/@emotion/css/-/css-10.0.27.tgz", + "integrity": "sha512-6wZjsvYeBhyZQYNrGoR5yPMYbMBNEnanDrqmsqS1mzDm1cOTu12shvl2j4QHNS36UaTE0USIJawCH9C8oW34Zw==", "dev": true, "dependencies": { - "@octokit/endpoint": "^6.0.1", - "@octokit/request-error": "^2.1.0", - "@octokit/types": "^6.16.1", - "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.1", - "universal-user-agent": "^6.0.0" + "@emotion/serialize": "^0.11.15", + "@emotion/utils": "0.11.3", + "babel-plugin-emotion": "^10.0.27" } }, - "node_modules/@octokit/request-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", - "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", + "node_modules/@emotion/hash": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", + "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==", + "dev": true + }, + "node_modules/@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", "dev": true, "dependencies": { - "@octokit/types": "^6.0.3", - "deprecation": "^2.0.0", - "once": "^1.4.0" + "@emotion/memoize": "0.7.4" } }, - "node_modules/@octokit/rest": { - "version": "18.12.0", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-18.12.0.tgz", - "integrity": "sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q==", + "node_modules/@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "dev": true + }, + "node_modules/@emotion/serialize": { + "version": "0.11.16", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-0.11.16.tgz", + "integrity": "sha512-G3J4o8by0VRrO+PFeSc3js2myYNOXVJ3Ya+RGVxnshRYgsvErfAOglKAiy1Eo1vhzxqtUvjCyS5gtewzkmvSSg==", "dev": true, "dependencies": { - "@octokit/core": "^3.5.1", - "@octokit/plugin-paginate-rest": "^2.16.8", - "@octokit/plugin-request-log": "^1.0.4", - "@octokit/plugin-rest-endpoint-methods": "^5.12.0" + "@emotion/hash": "0.8.0", + "@emotion/memoize": "0.7.4", + "@emotion/unitless": "0.7.5", + "@emotion/utils": "0.11.3", + "csstype": "^2.5.7" } }, - "node_modules/@octokit/types": { - "version": "6.34.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz", - "integrity": "sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw==", + "node_modules/@emotion/sheet": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-0.9.4.tgz", + "integrity": "sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA==", + "dev": true + }, + "node_modules/@emotion/styled": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.3.0.tgz", + "integrity": "sha512-GgcUpXBBEU5ido+/p/mCT2/Xx+Oqmp9JzQRuC+a4lYM4i4LBBn/dWvc0rQ19N9ObA8/T4NWMrPNe79kMBDJqoQ==", "dev": true, "dependencies": { - "@octokit/openapi-types": "^11.2.0" + "@emotion/styled-base": "^10.3.0", + "babel-plugin-emotion": "^10.0.27" + }, + "peerDependencies": { + "@emotion/core": "^10.0.27", + "react": ">=16.3.0" } }, - "node_modules/@placemarkio/check-geojson": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/@placemarkio/check-geojson/-/check-geojson-0.1.8.tgz", - "integrity": "sha512-MLt5Pe6j/iNjG1H55wJUw/g0wu6rcEpnNuLYdfn9d6IfHgYpKY3aID2BOj3DWSGS/1e9MevcPKLOFwaIH/2cLg==", + "node_modules/@emotion/styled-base": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.3.0.tgz", + "integrity": "sha512-PBRqsVKR7QRNkmfH78hTSSwHWcwDpecH9W6heujWAcyp2wdz/64PP73s7fWS1dIPm8/Exc8JAzYS8dEWXjv60w==", + "dev": true, "dependencies": { - "@humanwhocodes/momoa": "^2.0.3", - "@types/geojson": "^7946.0.8", - "@types/jest": "^27.4.0", - "type-fest": "^2.12.0" + "@babel/runtime": "^7.5.5", + "@emotion/is-prop-valid": "0.8.8", + "@emotion/serialize": "^0.11.15", + "@emotion/utils": "0.11.3" }, - "engines": { - "node": ">=10" + "peerDependencies": { + "@emotion/core": "^10.0.28", + "react": ">=16.3.0" } }, - "node_modules/@placemarkio/check-geojson/node_modules/type-fest": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.12.0.tgz", - "integrity": "sha512-Qe5GRT+n/4GoqCNGGVp5Snapg1Omq3V7irBJB3EaKsp7HWDo5Gv2d/67gfNyV+d5EXD+x/RF5l1h4yJ7qNkcGA==", - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "node_modules/@emotion/stylis": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz", + "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==", + "dev": true }, - "node_modules/@selderee/plugin-htmlparser2": { - "version": "0.6.0", - "license": "MIT", + "node_modules/@emotion/unitless": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==", + "dev": true + }, + "node_modules/@emotion/utils": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-0.11.3.tgz", + "integrity": "sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw==", + "dev": true + }, + "node_modules/@emotion/weak-memoize": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz", + "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==", + "dev": true + }, + "node_modules/@endemolshinegroup/cosmiconfig-typescript-loader": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@endemolshinegroup/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-3.0.2.tgz", + "integrity": "sha512-QRVtqJuS1mcT56oHpVegkKBlgtWjXw/gHNWO3eL9oyB5Sc7HBoc2OLG/nYpVfT/Jejvo3NUrD0Udk7XgoyDKkA==", + "dev": true, + "optional": true, "dependencies": { - "domhandler": "^4.2.0", - "selderee": "^0.6.0" + "lodash.get": "^4", + "make-error": "^1", + "ts-node": "^9", + "tslib": "^2" }, - "funding": { - "url": "https://ko-fi.com/killymxi" + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "cosmiconfig": ">=6" } }, - "node_modules/@semantic-release/changelog": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@semantic-release/changelog/-/changelog-6.0.1.tgz", - "integrity": "sha512-FT+tAGdWHr0RCM3EpWegWnvXJ05LQtBkQUaQRIExONoXjVjLuOILNm4DEKNaV+GAQyJjbLRVs57ti//GypH6PA==", + "node_modules/@endemolshinegroup/cosmiconfig-typescript-loader/node_modules/ts-node": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz", + "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==", "dev": true, + "optional": true, "dependencies": { - "@semantic-release/error": "^3.0.0", - "aggregate-error": "^3.0.0", - "fs-extra": "^9.0.0", - "lodash": "^4.17.4" + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "source-map-support": "^0.5.17", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" }, "engines": { - "node": ">=14.17" + "node": ">=10.0.0" }, "peerDependencies": { - "semantic-release": ">=18.0.0" + "typescript": ">=2.7" } }, - "node_modules/@semantic-release/changelog/node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "node_modules/@eslint/eslintrc": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.1.tgz", + "integrity": "sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ==", "dev": true, "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.3.1", + "globals": "^13.9.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" }, "engines": { - "node": ">=10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/@semantic-release/changelog/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "dependencies": { - "universalify": "^2.0.0" + "argparse": "^2.0.1" }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@semantic-release/changelog/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "node_modules/@eslint/eslintrc/node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, "engines": { - "node": ">= 10.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@semantic-release/commit-analyzer": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-9.0.2.tgz", - "integrity": "sha512-E+dr6L+xIHZkX4zNMe6Rnwg4YQrWNXK+rNsvwOPpdFppvZO1olE2fIgWhv89TkQErygevbjsZFSIxp+u6w2e5g==", - "dev": true, + "node_modules/@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true + }, + "node_modules/@google-cloud/common": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-3.9.0.tgz", + "integrity": "sha512-R9PfmCKbpOizvcLY+fz/TS4HdOQhvmf4EY4xEXvWnotGbGXujuTLJTJ2URy8BGT8TDxlh6gjjfEwjJ8McnNPIg==", "dependencies": { - "conventional-changelog-angular": "^5.0.0", - "conventional-commits-filter": "^2.0.0", - "conventional-commits-parser": "^3.2.3", - "debug": "^4.0.0", - "import-from": "^4.0.0", - "lodash": "^4.17.4", - "micromatch": "^4.0.2" + "@google-cloud/projectify": "^2.0.0", + "@google-cloud/promisify": "^2.0.0", + "arrify": "^2.0.1", + "duplexify": "^4.1.1", + "ent": "^2.2.0", + "extend": "^3.0.2", + "google-auth-library": "^7.9.2", + "retry-request": "^4.2.2", + "teeny-request": "^7.0.0" }, "engines": { - "node": ">=14.17" - }, - "peerDependencies": { - "semantic-release": ">=18.0.0-beta.1" + "node": ">=10" } }, - "node_modules/@semantic-release/commit-analyzer/node_modules/compare-func": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", - "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", - "dev": true, - "dependencies": { - "array-ify": "^1.0.0", - "dot-prop": "^5.1.0" + "node_modules/@google-cloud/common/node_modules/arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "engines": { + "node": ">=8" } }, - "node_modules/@semantic-release/commit-analyzer/node_modules/conventional-changelog-angular": { - "version": "5.0.13", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz", - "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==", - "dev": true, + "node_modules/@google-cloud/paginator": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-3.0.7.tgz", + "integrity": "sha512-jJNutk0arIQhmpUUQJPJErsojqo834KcyB6X7a1mxuic8i1tKXxde8E69IZxNZawRIlZdIK2QY4WALvlK5MzYQ==", "dependencies": { - "compare-func": "^2.0.0", - "q": "^1.5.1" + "arrify": "^2.0.0", + "extend": "^3.0.2" }, "engines": { "node": ">=10" } }, - "node_modules/@semantic-release/commit-analyzer/node_modules/dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "dev": true, - "dependencies": { - "is-obj": "^2.0.0" - }, + "node_modules/@google-cloud/paginator/node_modules/arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", "engines": { "node": ">=8" } }, - "node_modules/@semantic-release/commit-analyzer/node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true, + "node_modules/@google-cloud/projectify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-2.1.1.tgz", + "integrity": "sha512-+rssMZHnlh0twl122gXY4/aCrk0G1acBqkHFfYddtsqpYXGxA29nj9V5V9SfC+GyOG00l650f6lG9KL+EpFEWQ==", "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/@semantic-release/error": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-3.0.0.tgz", - "integrity": "sha512-5hiM4Un+tpl4cKw3lV4UgzJj+SmfNIDCLLw0TepzQxz9ZGV5ixnqkzIVF+3tp0ZHgcMKE+VNGHJjEeyFG2dcSw==", - "dev": true, + "node_modules/@google-cloud/promisify": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-2.0.4.tgz", + "integrity": "sha512-j8yRSSqswWi1QqUGKVEKOG03Q7qOoZP6/h2zN2YO+F5h2+DHU0bSrHCK9Y7lo2DI9fBd8qGAw795sf+3Jva4yA==", "engines": { - "node": ">=14.17" + "node": ">=10" } }, - "node_modules/@semantic-release/git": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@semantic-release/git/-/git-10.0.1.tgz", - "integrity": "sha512-eWrx5KguUcU2wUPaO6sfvZI0wPafUKAMNC18aXY4EnNcrZL86dEmpNVnC9uMpGZkmZJ9EfCVJBQx4pV4EMGT1w==", - "dev": true, + "node_modules/@google-cloud/storage": { + "version": "5.18.2", + "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-5.18.2.tgz", + "integrity": "sha512-hL/6epBF2uPt7YtJoOKI6mVxe6RsKBs7S8o2grE0bFGdQKSOngVHBcstH8jDw7aN2rXGouA2TfVTxH+VapY5cg==", "dependencies": { - "@semantic-release/error": "^3.0.0", - "aggregate-error": "^3.0.0", - "debug": "^4.0.0", - "dir-glob": "^3.0.0", - "execa": "^5.0.0", - "lodash": "^4.17.4", - "micromatch": "^4.0.0", - "p-reduce": "^2.0.0" + "@google-cloud/common": "^3.8.1", + "@google-cloud/paginator": "^3.0.7", + "@google-cloud/promisify": "^2.0.0", + "abort-controller": "^3.0.0", + "arrify": "^2.0.0", + "async-retry": "^1.3.3", + "compressible": "^2.0.12", + "configstore": "^5.0.0", + "date-and-time": "^2.0.0", + "duplexify": "^4.0.0", + "extend": "^3.0.2", + "gaxios": "^4.0.0", + "get-stream": "^6.0.0", + "google-auth-library": "^7.0.0", + "hash-stream-validation": "^0.2.2", + "mime": "^3.0.0", + "mime-types": "^2.0.8", + "p-limit": "^3.0.1", + "pumpify": "^2.0.0", + "snakeize": "^0.1.0", + "stream-events": "^1.0.4", + "xdg-basedir": "^4.0.0" }, "engines": { - "node": ">=14.17" - }, - "peerDependencies": { - "semantic-release": ">=18.0.0" + "node": ">=10" } }, - "node_modules/@semantic-release/github": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-8.0.2.tgz", - "integrity": "sha512-wIbfhOeuxlYzMTjtSAa2xgr54n7ZuPAS2gadyTWBpUt2PNAPgla7A6XxCXJnaKPgfVF0iFfSk3B+KlVKk6ByVg==", - "dev": true, - "dependencies": { - "@octokit/rest": "^18.0.0", - "@semantic-release/error": "^2.2.0", - "aggregate-error": "^3.0.0", - "bottleneck": "^2.18.1", - "debug": "^4.0.0", - "dir-glob": "^3.0.0", - "fs-extra": "^10.0.0", - "globby": "^11.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "issue-parser": "^6.0.0", - "lodash": "^4.17.4", - "mime": "^3.0.0", - "p-filter": "^2.0.0", - "p-retry": "^4.0.0", - "url-join": "^4.0.0" - }, + "node_modules/@google-cloud/storage/node_modules/arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", "engines": { - "node": ">=14.17" - }, - "peerDependencies": { - "semantic-release": ">=18.0.0-beta.1" + "node": ">=8" } }, - "node_modules/@semantic-release/github/node_modules/@semantic-release/error": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-2.2.0.tgz", - "integrity": "sha512-9Tj/qn+y2j+sjCI3Jd+qseGtHjOAeg7dU2/lVcqIQ9TV3QDaDXDYXcoOHU+7o2Hwh8L8ymL4gfuO7KxDs3q2zg==", - "dev": true - }, - "node_modules/@semantic-release/github/node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "dev": true, + "node_modules/@google-cloud/storage/node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "bin": { + "mime": "cli.js" + }, "engines": { - "node": ">= 10" + "node": ">=10.0.0" } }, - "node_modules/@semantic-release/github/node_modules/fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", - "dev": true, + "node_modules/@graphql-tools/graphql-file-loader": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/@graphql-tools/graphql-file-loader/-/graphql-file-loader-7.3.5.tgz", + "integrity": "sha512-TBWDA7EV/cmFFUlN2eT9JqYIkiOGEtwwOgzzPcjM9HlPrbKjQkPIJ9Jaxp7aKWbSGhJ+PnbZ7vFLFLGKsCYOjg==", "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "@graphql-tools/import": "6.6.7", + "@graphql-tools/utils": "8.6.3", + "globby": "^11.0.3", + "tslib": "~2.3.0", + "unixify": "^1.0.0" }, - "engines": { - "node": ">=12" + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/@semantic-release/github/node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "dev": true, + "node_modules/@graphql-tools/import": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/@graphql-tools/import/-/import-6.6.7.tgz", + "integrity": "sha512-zzpnVtmdel3mKz6i46GUib4wn0K5dosq4OTBl4avKV6ElvgZTkvsvfSv2aRhbRGIT4VnZPXLfzSnmYd8e+SRLQ==", "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" + "@graphql-tools/utils": "8.6.3", + "resolve-from": "5.0.0", + "tslib": "~2.3.0" }, - "engines": { - "node": ">= 6" + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/@semantic-release/github/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, + "node_modules/@graphql-tools/load": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/@graphql-tools/load/-/load-7.5.3.tgz", + "integrity": "sha512-GYwLyGfX1nKUxg6rnTIdryv9d+ugFRTm2q11+IqNsajwNhxJExkx+e/h81AQR5382sAmPEIT+E1J1VS3xNfjyg==", "dependencies": { - "universalify": "^2.0.0" + "@graphql-tools/schema": "8.3.3", + "@graphql-tools/utils": "8.6.3", + "p-limit": "3.1.0", + "tslib": "~2.3.0" }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/@semantic-release/github/node_modules/mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", - "dev": true, - "bin": { - "mime": "cli.js" + "node_modules/@graphql-tools/merge": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.2.4.tgz", + "integrity": "sha512-hiNRTsS948F+BB4Q7CZXLaGFOIHQzmimVq3EEI/+PQZsPb7kYDzg0Ow0GyV4conDdEiooLqHf7I1dWzTYwvs0A==", + "dependencies": { + "@graphql-tools/utils": "8.6.3", + "tslib": "~2.3.0" }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/@semantic-release/github/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true, - "engines": { - "node": ">= 10.0.0" + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/@semantic-release/npm": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-9.0.0.tgz", - "integrity": "sha512-hj2jqayS2SPUmFtCMCOQMX975uMDfRoymj1HvMSwYdaoI6hVZvhrTFPBgJeM85O0C+G3IFviAUar5gel/1VGDQ==", - "dev": true, + "node_modules/@graphql-tools/schema": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.3.3.tgz", + "integrity": "sha512-OrRLU9/7UmkDemeyNUy62uH+FofgV3bpVVZJprc9bhe3gZsY7kQNIdY7H1unINlepjLvGOgk7u7iLo2+EhjyWw==", "dependencies": { - "@semantic-release/error": "^3.0.0", - "aggregate-error": "^3.0.0", - "execa": "^5.0.0", - "fs-extra": "^10.0.0", - "lodash": "^4.17.15", - "nerf-dart": "^1.0.0", - "normalize-url": "^6.0.0", - "npm": "^8.3.0", - "rc": "^1.2.8", - "read-pkg": "^5.0.0", - "registry-auth-token": "^4.0.0", - "semver": "^7.1.2", - "tempy": "^1.0.0" - }, - "engines": { - "node": ">=16 || ^14.17" + "@graphql-tools/merge": "8.2.4", + "@graphql-tools/utils": "8.6.3", + "tslib": "~2.3.0", + "value-or-promise": "1.0.11" }, "peerDependencies": { - "semantic-release": ">=19.0.0" + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/@semantic-release/npm/node_modules/fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", - "dev": true, + "node_modules/@graphql-tools/utils": { + "version": "8.6.3", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.6.3.tgz", + "integrity": "sha512-CNyP7Uu7dlVMQ32IpHWOxz4yic9BYXXVkDhG0UdTKSszvzHdgMilemE9MpUrGzzBPsTe3aYTtNGyPUkyh9yTXA==", "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "tslib": "~2.3.0" }, - "engines": { - "node": ">=12" + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/@semantic-release/npm/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "node_modules/@humanwhocodes/config-array": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", + "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", "dev": true, "dependencies": { - "universalify": "^2.0.0" + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "engines": { + "node": ">=10.10.0" } }, - "node_modules/@semantic-release/npm/node_modules/normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "dev": true, + "node_modules/@humanwhocodes/momoa": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/momoa/-/momoa-2.0.3.tgz", + "integrity": "sha512-SytjS6gJk+LXSWFuEm0V9ASdgxlX/BDq6A+6gfh7TaHM90xppBydjcM3SFaziZP4ikKmhUOhPkDi2KktzElnQQ==", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=10.10.0" } }, - "node_modules/@semantic-release/npm/node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/@semantic-release/npm/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@semantic-release/npm/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, "engines": { - "node": ">= 10.0.0" + "node": ">=6" } }, - "node_modules/@semantic-release/release-notes-generator": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-10.0.3.tgz", - "integrity": "sha512-k4x4VhIKneOWoBGHkx0qZogNjCldLPRiAjnIpMnlUh6PtaWXp/T+C9U7/TaNDDtgDa5HMbHl4WlREdxHio6/3w==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "dependencies": { - "conventional-changelog-angular": "^5.0.0", - "conventional-changelog-writer": "^5.0.0", - "conventional-commits-filter": "^2.0.0", - "conventional-commits-parser": "^3.2.3", - "debug": "^4.0.0", - "get-stream": "^6.0.0", - "import-from": "^4.0.0", - "into-stream": "^6.0.0", - "lodash": "^4.17.4", - "read-pkg-up": "^7.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=14.17" - }, - "peerDependencies": { - "semantic-release": ">=18.0.0-beta.1" - } - }, - "node_modules/@semantic-release/release-notes-generator/node_modules/compare-func": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", - "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", - "dev": true, - "dependencies": { - "array-ify": "^1.0.0", - "dot-prop": "^5.1.0" + "node": ">=8" } }, - "node_modules/@semantic-release/release-notes-generator/node_modules/conventional-changelog-angular": { - "version": "5.0.13", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz", - "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "dependencies": { - "compare-func": "^2.0.0", - "q": "^1.5.1" + "p-locate": "^4.1.0" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/@semantic-release/release-notes-generator/node_modules/conventional-changelog-writer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz", - "integrity": "sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "dependencies": { - "conventional-commits-filter": "^2.0.7", - "dateformat": "^3.0.0", - "handlebars": "^4.7.7", - "json-stringify-safe": "^5.0.1", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "semver": "^6.0.0", - "split": "^1.0.0", - "through2": "^4.0.0" - }, - "bin": { - "conventional-changelog-writer": "cli.js" + "p-try": "^2.0.0" }, "engines": { - "node": ">=10" - } - }, - "node_modules/@semantic-release/release-notes-generator/node_modules/dateformat": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", - "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", - "dev": true, - "engines": { - "node": "*" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@semantic-release/release-notes-generator/node_modules/dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "dependencies": { - "is-obj": "^2.0.0" + "p-limit": "^2.2.0" }, "engines": { "node": ">=8" } }, - "node_modules/@semantic-release/release-notes-generator/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, "engines": { "node": ">=8" } }, - "node_modules/@semantic-release/release-notes-generator/node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/@semantic-release/release-notes-generator/node_modules/into-stream": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-6.0.0.tgz", - "integrity": "sha512-XHbaOAvP+uFKUFsOgoNPRjLkwB+I22JFPFe5OjTkQ0nwgj6+pSjb4NmB6VMxaPshLiOf+zcpOCBQuLwC1KHhZA==", + "node_modules/@jest/console": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", + "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", "dev": true, "dependencies": { - "from2": "^2.3.0", - "p-is-promise": "^3.0.0" - }, - "engines": { - "node": ">=10" + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@semantic-release/release-notes-generator/node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true, "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@semantic-release/release-notes-generator/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "node_modules/@jest/core": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", + "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", "dev": true, "dependencies": { - "p-locate": "^4.1.0" + "@jest/console": "^27.5.1", + "@jest/reporters": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^27.5.1", + "jest-config": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-resolve-dependencies": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "jest-watcher": "^27.5.1", + "micromatch": "^4.0.4", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/@semantic-release/release-notes-generator/node_modules/meow": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", - "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "node_modules/@jest/core/node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" + "type-fest": "^0.21.3" }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@semantic-release/release-notes-generator/node_modules/meow/node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "node_modules/@jest/core/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, "engines": { "node": ">=10" @@ -2304,3349 +3009,4250 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@semantic-release/release-notes-generator/node_modules/normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "node_modules/@jest/environment": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", + "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", "dev": true, "dependencies": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1" }, "engines": { - "node": ">=10" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@semantic-release/release-notes-generator/node_modules/normalize-package-data/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "node_modules/@jest/fake-timers": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", + "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "@jest/types": "^27.5.1", + "@sinonjs/fake-timers": "^8.0.1", + "@types/node": "*", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" }, "engines": { - "node": ">=10" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@semantic-release/release-notes-generator/node_modules/p-is-promise": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-3.0.0.tgz", - "integrity": "sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==", + "node_modules/@jest/globals": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", + "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", "dev": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/types": "^27.5.1", + "expect": "^27.5.1" + }, "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@semantic-release/release-notes-generator/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/@jest/reporters": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", + "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", "dev": true, "dependencies": { - "p-try": "^2.0.0" + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-haste-map": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^8.1.0" }, "engines": { - "node": ">=6" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/@semantic-release/release-notes-generator/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/@jest/source-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", + "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", "dev": true, "dependencies": { - "p-limit": "^2.2.0" + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9", + "source-map": "^0.6.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/@semantic-release/release-notes-generator/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@semantic-release/release-notes-generator/node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "node_modules/@jest/test-result": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", + "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", "dev": true, "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" + "@jest/console": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" }, "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@semantic-release/release-notes-generator/node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "node_modules/@jest/test-sequencer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", + "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", "dev": true, "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" + "@jest/test-result": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-runtime": "^27.5.1" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@semantic-release/release-notes-generator/node_modules/read-pkg/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "node_modules/@semantic-release/release-notes-generator/node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "node_modules/@jest/transform": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", "dev": true, "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/@semantic-release/release-notes-generator/node_modules/read-pkg/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/@semantic-release/release-notes-generator/node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true, + "@babel/core": "^7.1.0", + "@jest/types": "^27.5.1", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@semantic-release/release-notes-generator/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", "dev": true, "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" }, "engines": { - "node": ">= 6" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@semantic-release/release-notes-generator/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } + "node_modules/@juggle/resize-observer": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@juggle/resize-observer/-/resize-observer-3.3.1.tgz", + "integrity": "sha512-zMM9Ds+SawiUkakS7y94Ymqx+S0ORzpG3frZirN3l+UlXUmSUR7hF4wxCVqW+ei94JzV5kt0uXBcoOEAuiydrw==", + "dev": true }, - "node_modules/@semantic-release/release-notes-generator/node_modules/through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", - "dev": true, + "node_modules/@mapbox/geojson-area": { + "version": "0.2.2", + "license": "BSD-2-Clause", "dependencies": { - "readable-stream": "3" + "wgs84": "0.0.0" } }, - "node_modules/@semantic-release/release-notes-generator/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "node_modules/@mapbox/stylelint-processor-arbitrary-tags": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@mapbox/stylelint-processor-arbitrary-tags/-/stylelint-processor-arbitrary-tags-0.4.0.tgz", + "integrity": "sha512-HTyW4vLgCVrAvmbV4TtXVpkrg3gkRR4WMEveNOo4OBxzA5wl5xQdxe0Iow8B5FRI3ose5yFLA8jvbfU8ZayPJQ==", "dev": true, + "dependencies": { + "execall": "^1.0.0", + "split-lines": "^1.1.0" + }, "engines": { "node": ">=10" } }, - "node_modules/@sentry/core": { - "version": "6.18.2", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-6.18.2.tgz", - "integrity": "sha512-r5ad/gq5S/JHc9sd5CUhZQT9ojQ+f+thk/AoGeGawX/8HURZYAgIqD565d6FK0VsZEDkdRMl58z1Qon20h3y1g==", - "dependencies": { - "@sentry/hub": "6.18.2", - "@sentry/minimal": "6.18.2", - "@sentry/types": "6.18.2", - "@sentry/utils": "6.18.2", - "tslib": "^1.9.3" + "node_modules/@mdx-js/mdx": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-1.6.22.tgz", + "integrity": "sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA==", + "dev": true, + "dependencies": { + "@babel/core": "7.12.9", + "@babel/plugin-syntax-jsx": "7.12.1", + "@babel/plugin-syntax-object-rest-spread": "7.8.3", + "@mdx-js/util": "1.6.22", + "babel-plugin-apply-mdx-type-prop": "1.6.22", + "babel-plugin-extract-import-names": "1.6.22", + "camelcase-css": "2.0.1", + "detab": "2.0.4", + "hast-util-raw": "6.0.1", + "lodash.uniq": "4.5.0", + "mdast-util-to-hast": "10.0.1", + "remark-footnotes": "2.0.0", + "remark-mdx": "1.6.22", + "remark-parse": "8.0.3", + "remark-squeeze-paragraphs": "4.0.0", + "style-to-object": "0.3.0", + "unified": "9.2.0", + "unist-builder": "2.0.3", + "unist-util-visit": "2.0.3" }, - "engines": { - "node": ">=6" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@sentry/core/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/@sentry/hub": { - "version": "6.18.2", - "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-6.18.2.tgz", - "integrity": "sha512-d0AugekMkbnN12b4EXMjseJxtLPc9S20DGobCPUb4oAQT6S2oDQEj1jwP6PQ5vtgyy+GMYWxBMgqAQ4pjVYISQ==", + "node_modules/@mdx-js/mdx/node_modules/@babel/core": { + "version": "7.12.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz", + "integrity": "sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==", + "dev": true, "dependencies": { - "@sentry/types": "6.18.2", - "@sentry/utils": "6.18.2", - "tslib": "^1.9.3" + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.5", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.5", + "@babel/parser": "^7.12.7", + "@babel/template": "^7.12.7", + "@babel/traverse": "^7.12.9", + "@babel/types": "^7.12.7", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" }, "engines": { - "node": ">=6" + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, - "node_modules/@sentry/hub/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/@sentry/minimal": { - "version": "6.18.2", - "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-6.18.2.tgz", - "integrity": "sha512-n7KYuo34W2LxE+3dnZ47of7XHuORINCnXq66XH72eoj67tf0XeWbIhEJrYGmoLRyRfoCYYrBLWiDl/uTjLzrzQ==", + "node_modules/@mdx-js/mdx/node_modules/@babel/plugin-syntax-jsx": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz", + "integrity": "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==", + "dev": true, "dependencies": { - "@sentry/hub": "6.18.2", - "@sentry/types": "6.18.2", - "tslib": "^1.9.3" + "@babel/helper-plugin-utils": "^7.10.4" }, - "engines": { - "node": ">=6" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@sentry/minimal/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "node_modules/@mdx-js/mdx/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } }, - "node_modules/@sentry/node": { - "version": "6.18.2", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-6.18.2.tgz", - "integrity": "sha512-1S+44c09n3KVpCYjwOfnA9jKvnpPegpQWM81Nu5J6ToGx+ZiddMq6B9GRXUnFfZ7Z6fJHZzFtySasQC7KqkQoA==", - "dependencies": { - "@sentry/core": "6.18.2", - "@sentry/hub": "6.18.2", - "@sentry/types": "6.18.2", - "@sentry/utils": "6.18.2", - "cookie": "^0.4.1", - "https-proxy-agent": "^5.0.0", - "lru_map": "^0.3.3", - "tslib": "^1.9.3" - }, + "node_modules/@mdx-js/mdx/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/@sentry/node/node_modules/tslib": { - "version": "1.14.1", - "license": "0BSD" + "node_modules/@mdx-js/util": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/@mdx-js/util/-/util-1.6.22.tgz", + "integrity": "sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "node_modules/@sentry/types": { - "version": "6.18.2", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.18.2.tgz", - "integrity": "sha512-WzpJf/Q5aORTzrSwer/As1NlO90dBAQpaHV2ikDDKqOyMWEgjKb5/4gh59p9gH8JMMnLetP1AvQel0fOj5UnUw==", - "engines": { - "node": ">=6" + "node_modules/@microsoft/tsdoc": { + "version": "0.13.2", + "dev": true, + "license": "MIT" + }, + "node_modules/@microsoft/tsdoc-config": { + "version": "0.15.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@microsoft/tsdoc": "0.13.2", + "ajv": "~6.12.6", + "jju": "~1.4.0", + "resolve": "~1.19.0" } }, - "node_modules/@sentry/utils": { - "version": "6.18.2", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.18.2.tgz", - "integrity": "sha512-EC619jesknyu4xpwud5WC/5odYLz6JUy7OSFy5405PpdGeh/m8XUvuJAx4zDx0Iz/Mlk0S1Md+ZcQwqkv39dkw==", + "node_modules/@microsoft/tsdoc-config/node_modules/resolve": { + "version": "1.19.0", + "dev": true, + "license": "MIT", "dependencies": { - "@sentry/types": "6.18.2", - "tslib": "^1.9.3" + "is-core-module": "^2.1.0", + "path-parse": "^1.0.6" }, - "engines": { - "node": ">=6" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@sentry/utils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/@sindresorhus/slugify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-1.1.2.tgz", - "integrity": "sha512-V9nR/W0Xd9TSGXpZ4iFUcFGhuOJtZX82Fzxj1YISlbSgKvIiNa7eLEZrT0vAraPOt++KHauIVNYgGRgjc13dXA==", + "node_modules/@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", + "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "dev": true, "dependencies": { - "@sindresorhus/transliterate": "^0.1.1", - "escape-string-regexp": "^4.0.0" + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, - "node_modules/@sindresorhus/transliterate": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@sindresorhus/transliterate/-/transliterate-0.1.2.tgz", - "integrity": "sha512-5/kmIOY9FF32nicXH+5yLNTX4NJ4atl7jRgqAJuIn/iyDFXBktOKDxCvyGE/EzmF4ngSUvjXxQUQlQiZ5lfw+w==", + "node_modules/@mrmlnc/readdir-enhanced/node_modules/glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", + "dev": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.4", + "license": "MIT", "dependencies": { - "escape-string-regexp": "^2.0.0", - "lodash.deburr": "^4.1.0" + "@nodelib/fs.stat": "2.0.4", + "run-parallel": "^1.1.9" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 8" } }, - "node_modules/@sindresorhus/transliterate/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "node_modules/@nodelib/fs.stat": { + "version": "2.0.4", + "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 8" } }, - "node_modules/@sinonjs/commons": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", - "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", - "dev": true, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.6", + "license": "MIT", "dependencies": { - "type-detect": "4.0.8" + "@nodelib/fs.scandir": "2.1.4", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/@sinonjs/fake-timers": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", - "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "node_modules/@npmcli/fs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", + "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", "dev": true, "dependencies": { - "@sinonjs/commons": "^1.7.0" + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" } }, - "node_modules/@szmarczak/http-timer": { - "version": "1.1.2", + "node_modules/@npmcli/git": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.0.tgz", + "integrity": "sha512-xfSBJ+KBMZWWqRHFbEgIaXG/LtELHrQZMJ72Gkb3yWdHysu/7+VGOs8ME0c3td7QNQX57Ggo3kYL6ylcd70/kA==", "dev": true, - "license": "MIT", "dependencies": { - "defer-to-connect": "^1.0.1" + "@npmcli/promise-spawn": "^1.3.2", + "lru-cache": "^7.3.1", + "mkdirp": "^1.0.4", + "npm-pick-manifest": "^7.0.0", + "proc-log": "^2.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^2.0.2" }, "engines": { - "node": ">=6" + "node": "^12.13.0 || ^14.15.0 || >=16" } }, - "node_modules/@tootallnate/once": { - "version": "1.1.2", - "license": "MIT", + "node_modules/@npmcli/git/node_modules/lru-cache": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.6.0.tgz", + "integrity": "sha512-zjOf6cyMI7rcN+5MtLsT4GnDjc6D9XHi8kYcsfXTqWC+yLdSiU3/jtEPX9wZE77+XLtnmdIWu3+291hkizfH+Q==", + "dev": true, "engines": { - "node": ">= 6" + "node": ">=12" } }, - "node_modules/@tsconfig/node10": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", - "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==" - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", - "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==" - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", - "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==" - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", - "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==" - }, - "node_modules/@turf/bbox": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-6.5.0.tgz", - "integrity": "sha512-RBbLaao5hXTYyyg577iuMtDB8ehxMlUqHEJiMs8jT1GHkFhr6sYre3lmLsPeYEi/ZKj5TP5tt7fkzNdJ4GIVyw==", + "node_modules/@npmcli/installed-package-contents": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", + "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", + "dev": true, "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/center": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/center/-/center-6.5.0.tgz", - "integrity": "sha512-T8KtMTfSATWcAX088rEDKjyvQCBkUsLnK/Txb6/8WUXIeOZyHu42G7MkdkHRoHtwieLdduDdmPLFyTdG5/e7ZQ==", - "dependencies": { - "@turf/bbox": "^6.5.0", - "@turf/helpers": "^6.5.0" + "bin": { + "installed-package-contents": "index.js" }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/helpers": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.5.0.tgz", - "integrity": "sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==", - "funding": { - "url": "https://opencollective.com/turf" + "engines": { + "node": ">= 10" } }, - "node_modules/@turf/intersect": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.5.0.tgz", - "integrity": "sha512-2legGJeKrfFkzntcd4GouPugoqPUjexPZnOvfez+3SfIMrHvulw8qV8u7pfVyn2Yqs53yoVCEjS5sEpvQ5YRQg==", + "node_modules/@npmcli/move-file": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "dev": true, "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "polygon-clipping": "^0.15.3" + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" }, - "funding": { - "url": "https://opencollective.com/turf" + "engines": { + "node": ">=10" } }, - "node_modules/@turf/invariant": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.5.0.tgz", - "integrity": "sha512-Wv8PRNCtPD31UVbdJE/KVAWKe7l6US+lJItRR/HOEW3eh+U/JwRCSUl/KZ7bmjM/C+zLNoreM2TU6OoLACs4eg==", + "node_modules/@npmcli/node-gyp": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz", + "integrity": "sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA==", + "dev": true + }, + "node_modules/@npmcli/promise-spawn": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz", + "integrity": "sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg==", + "dev": true, "dependencies": { - "@turf/helpers": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" + "infer-owner": "^1.0.4" } }, - "node_modules/@turf/meta": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-6.5.0.tgz", - "integrity": "sha512-RrArvtsV0vdsCBegoBtOalgdSOfkBrTJ07VkpiCnq/491W67hnMWmDu7e6Ztw0C3WldRYTXkg3SumfdzZxLBHA==", + "node_modules/@npmcli/run-script": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-3.0.1.tgz", + "integrity": "sha512-o2fkld5hYwu9sKYzoXTpqEocMnDLaigobaPzLaGB63k/ExmLBTaB+KpfKlpcIePPnuP8RFR+0GDI4KopJCM6Xg==", + "dev": true, "dependencies": { - "@turf/helpers": "^6.5.0" + "@npmcli/node-gyp": "^1.0.3", + "@npmcli/promise-spawn": "^1.3.2", + "node-gyp": "^9.0.0", + "read-package-json-fast": "^2.0.3" }, - "funding": { - "url": "https://opencollective.com/turf" + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" } }, - "node_modules/@types/accepts": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.5.tgz", - "integrity": "sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==", + "node_modules/@octokit/auth-token": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", + "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", + "dev": true, "dependencies": { - "@types/node": "*" + "@octokit/types": "^6.0.3" } }, - "node_modules/@types/babel__core": { - "version": "7.1.18", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.18.tgz", - "integrity": "sha512-S7unDjm/C7z2A2R9NzfKCK1I+BAALDtxEmsJBwlB3EzNfb929ykjL++1CK9LO++EIp2fQrC8O+BwjKvz6UeDyQ==", + "node_modules/@octokit/core": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.5.1.tgz", + "integrity": "sha512-omncwpLVxMP+GLpLPgeGJBF6IWJFjXDS5flY5VbppePYX9XehevbDykRH9PdCdvqt9TS5AOTiDide7h0qrkHjw==", "dev": true, "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" + "@octokit/auth-token": "^2.4.4", + "@octokit/graphql": "^4.5.8", + "@octokit/request": "^5.6.0", + "@octokit/request-error": "^2.0.5", + "@octokit/types": "^6.0.3", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" } }, - "node_modules/@types/babel__generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", - "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "node_modules/@octokit/endpoint": { + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", + "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", "dev": true, "dependencies": { - "@babel/types": "^7.0.0" + "@octokit/types": "^6.0.3", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" } }, - "node_modules/@types/babel__template": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", - "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "node_modules/@octokit/graphql": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", + "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", "dev": true, "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" + "@octokit/request": "^5.6.0", + "@octokit/types": "^6.0.3", + "universal-user-agent": "^6.0.0" } }, - "node_modules/@types/babel__traverse": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz", - "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==", + "node_modules/@octokit/openapi-types": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-11.2.0.tgz", + "integrity": "sha512-PBsVO+15KSlGmiI8QAzaqvsNlZlrDlyAJYcrXBCvVUxCp7VnXjkwPoFHgjEJXx3WF9BAwkA6nfCUA7i9sODzKA==", + "dev": true + }, + "node_modules/@octokit/plugin-paginate-rest": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.17.0.tgz", + "integrity": "sha512-tzMbrbnam2Mt4AhuyCHvpRkS0oZ5MvwwcQPYGtMv4tUa5kkzG58SVB0fcsLulOZQeRnOgdkZWkRUiyBlh0Bkyw==", "dev": true, "dependencies": { - "@babel/types": "^7.3.0" + "@octokit/types": "^6.34.0" + }, + "peerDependencies": { + "@octokit/core": ">=2" } }, - "node_modules/@types/basic-auth": { - "version": "1.1.3", - "license": "MIT", - "dependencies": { - "@types/node": "*" + "node_modules/@octokit/plugin-request-log": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", + "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", + "dev": true, + "peerDependencies": { + "@octokit/core": ">=3" } }, - "node_modules/@types/bcryptjs": { - "version": "2.4.2", - "license": "MIT" - }, - "node_modules/@types/body-parser": { - "version": "1.19.0", - "license": "MIT", + "node_modules/@octokit/plugin-rest-endpoint-methods": { + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.13.0.tgz", + "integrity": "sha512-uJjMTkN1KaOIgNtUPMtIXDOjx6dGYysdIFhgA52x4xSadQCz3b/zJexvITDVpANnfKPW/+E0xkOvLntqMYpviA==", + "dev": true, "dependencies": { - "@types/connect": "*", - "@types/node": "*" + "@octokit/types": "^6.34.0", + "deprecation": "^2.3.1" + }, + "peerDependencies": { + "@octokit/core": ">=3" } }, - "node_modules/@types/compression": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@types/compression/-/compression-1.7.2.tgz", - "integrity": "sha512-lwEL4M/uAGWngWFLSG87ZDr2kLrbuR8p7X+QZB1OQlT+qkHsCPDVFnHPyXf4Vyl4yDDorNY+mAhosxkCvppatg==", + "node_modules/@octokit/request": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.2.tgz", + "integrity": "sha512-je66CvSEVf0jCpRISxkUcCa0UkxmFs6eGDRSbfJtAVwbLH5ceqF+YEyC8lj8ystKyZTy8adWr0qmkY52EfOeLA==", + "dev": true, "dependencies": { - "@types/express": "*" + "@octokit/endpoint": "^6.0.1", + "@octokit/request-error": "^2.1.0", + "@octokit/types": "^6.16.1", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.1", + "universal-user-agent": "^6.0.0" } }, - "node_modules/@types/connect": { - "version": "3.4.34", - "license": "MIT", + "node_modules/@octokit/request-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", + "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", + "dev": true, "dependencies": { - "@types/node": "*" + "@octokit/types": "^6.0.3", + "deprecation": "^2.0.0", + "once": "^1.4.0" } }, - "node_modules/@types/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-0mPF08jn9zYI0n0Q/Pnz7C4kThdSt+6LD4amsrYDDpgBfrVWa3TcCOxKX1zkGgYniGagRv8heN2cbh+CAn+uuQ==" - }, - "node_modules/@types/cookie-parser": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@types/cookie-parser/-/cookie-parser-1.4.2.tgz", - "integrity": "sha512-uwcY8m6SDQqciHsqcKDGbo10GdasYsPCYkH3hVegj9qAah6pX5HivOnOuI3WYmyQMnOATV39zv/Ybs0bC/6iVg==", + "node_modules/@octokit/rest": { + "version": "18.12.0", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-18.12.0.tgz", + "integrity": "sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q==", + "dev": true, "dependencies": { - "@types/express": "*" + "@octokit/core": "^3.5.1", + "@octokit/plugin-paginate-rest": "^2.16.8", + "@octokit/plugin-request-log": "^1.0.4", + "@octokit/plugin-rest-endpoint-methods": "^5.12.0" } }, - "node_modules/@types/cookiejar": { - "version": "2.1.2", + "node_modules/@octokit/types": { + "version": "6.34.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz", + "integrity": "sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw==", "dev": true, - "license": "MIT" - }, - "node_modules/@types/cookies": { - "version": "0.7.7", - "resolved": "https://registry.npmjs.org/@types/cookies/-/cookies-0.7.7.tgz", - "integrity": "sha512-h7BcvPUogWbKCzBR2lY4oqaZbO3jXZksexYJVFvkrFeLgbZjQkU4x8pRq6eg2MHXQhY0McQdqmmsxRWlVAHooA==", "dependencies": { - "@types/connect": "*", - "@types/express": "*", - "@types/keygrip": "*", - "@types/node": "*" + "@octokit/openapi-types": "^11.2.0" } }, - "node_modules/@types/cors": { - "version": "2.8.12", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", - "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==" - }, - "node_modules/@types/cron": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/@types/cron/-/cron-1.7.3.tgz", - "integrity": "sha512-iPmUXyIJG1Js+ldPYhOQcYU3kCAQ2FWrSkm1FJPoii2eYSn6wEW6onPukNTT0bfiflexNSRPl6KWmAIqS+36YA==", + "node_modules/@placemarkio/check-geojson": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/@placemarkio/check-geojson/-/check-geojson-0.1.8.tgz", + "integrity": "sha512-MLt5Pe6j/iNjG1H55wJUw/g0wu6rcEpnNuLYdfn9d6IfHgYpKY3aID2BOj3DWSGS/1e9MevcPKLOFwaIH/2cLg==", "dependencies": { - "@types/node": "*", - "moment": ">=2.14.0" + "@humanwhocodes/momoa": "^2.0.3", + "@types/geojson": "^7946.0.8", + "@types/jest": "^27.4.0", + "type-fest": "^2.12.0" + }, + "engines": { + "node": ">=10" } }, - "node_modules/@types/dateformat": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@types/dateformat/-/dateformat-5.0.0.tgz", - "integrity": "sha512-SZg4JdHIWHQGEokbYGZSDvo5wA4TLYPXaqhigs/wH+REDOejcJzgH+qyY+HtEUtWOZxEUkbhbdYPqQDiEgrXeA==" + "node_modules/@placemarkio/check-geojson/node_modules/type-fest": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.12.0.tgz", + "integrity": "sha512-Qe5GRT+n/4GoqCNGGVp5Snapg1Omq3V7irBJB3EaKsp7HWDo5Gv2d/67gfNyV+d5EXD+x/RF5l1h4yJ7qNkcGA==", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/@types/eslint-visitor-keys": { - "version": "1.0.0", + "node_modules/@popperjs/core": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.4.tgz", + "integrity": "sha512-q/ytXxO5NKvyT37pmisQAItCFqA7FD/vNb8dgaJy3/630Fsc+Mz9/9f2SziBoIZ30TJooXyTwZmhi1zjXmObYg==", "dev": true, - "license": "MIT" - }, - "node_modules/@types/express": { - "version": "4.17.13", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", - "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", - "@types/qs": "*", - "@types/serve-static": "*" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" } }, - "node_modules/@types/express-jwt": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@types/express-jwt/-/express-jwt-6.0.4.tgz", - "integrity": "sha512-I53KRQ9D0eTA6hVCN9S73iOeprKS3JNWK+Cp2mDPB6uOIkTVpkgSkX394kHQzb5cd0U02I0adRmsMxHk+zX8tA==", + "node_modules/@rollup/plugin-inject": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@rollup/plugin-inject/-/plugin-inject-4.0.4.tgz", + "integrity": "sha512-4pbcU4J/nS+zuHk+c+OL3WtmEQhqxlZ9uqfjQMQDOHOPld7PsCd8k5LWs8h5wjwJN7MgnAn768F2sDxEP4eNFQ==", + "dev": true, "dependencies": { - "@types/express": "*", - "@types/express-unless": "*" + "@rollup/pluginutils": "^3.1.0", + "estree-walker": "^2.0.1", + "magic-string": "^0.25.7" + }, + "peerDependencies": { + "rollup": "^1.20.0 || ^2.0.0" } }, - "node_modules/@types/express-serve-static-core": { - "version": "4.17.28", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", - "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", + "node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" } }, - "node_modules/@types/express-unless": { - "version": "0.5.1", + "node_modules/@rollup/pluginutils/node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + }, + "node_modules/@selderee/plugin-htmlparser2": { + "version": "0.6.0", "license": "MIT", "dependencies": { - "@types/express": "*" + "domhandler": "^4.2.0", + "selderee": "^0.6.0" + }, + "funding": { + "url": "https://ko-fi.com/killymxi" } }, - "node_modules/@types/fs-capacitor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/fs-capacitor/-/fs-capacitor-2.0.0.tgz", - "integrity": "sha512-FKVPOCFbhCvZxpVAMhdBdTfVfXUpsh15wFHgqOKxh9N9vzWZVuWCSijZ5T4U34XYNnuj2oduh6xcs1i+LPI+BQ==", + "node_modules/@semantic-release/changelog": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@semantic-release/changelog/-/changelog-6.0.1.tgz", + "integrity": "sha512-FT+tAGdWHr0RCM3EpWegWnvXJ05LQtBkQUaQRIExONoXjVjLuOILNm4DEKNaV+GAQyJjbLRVs57ti//GypH6PA==", + "dev": true, "dependencies": { - "@types/node": "*" + "@semantic-release/error": "^3.0.0", + "aggregate-error": "^3.0.0", + "fs-extra": "^9.0.0", + "lodash": "^4.17.4" + }, + "engines": { + "node": ">=14.17" + }, + "peerDependencies": { + "semantic-release": ">=18.0.0" } }, - "node_modules/@types/geojson": { - "version": "7946.0.8", - "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.8.tgz", - "integrity": "sha512-1rkryxURpr6aWP7R786/UQOkJ3PcpQiWkAXBmdWc7ryFWqN6a4xfK7BtjXvFBKO9LjQ+MWQSWxYeZX1OApnArA==" - }, - "node_modules/@types/graceful-fs": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", - "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "node_modules/@semantic-release/changelog/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, "dependencies": { - "@types/node": "*" + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" } }, - "node_modules/@types/graphql-type-json": { - "version": "0.3.2", - "license": "MIT", + "node_modules/@semantic-release/changelog/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, "dependencies": { - "graphql": "^14.5.3" + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/@types/graphql-type-json/node_modules/graphql": { - "version": "14.7.0", - "license": "MIT", + "node_modules/@semantic-release/changelog/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@semantic-release/commit-analyzer": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-9.0.2.tgz", + "integrity": "sha512-E+dr6L+xIHZkX4zNMe6Rnwg4YQrWNXK+rNsvwOPpdFppvZO1olE2fIgWhv89TkQErygevbjsZFSIxp+u6w2e5g==", + "dev": true, "dependencies": { - "iterall": "^1.2.2" + "conventional-changelog-angular": "^5.0.0", + "conventional-commits-filter": "^2.0.0", + "conventional-commits-parser": "^3.2.3", + "debug": "^4.0.0", + "import-from": "^4.0.0", + "lodash": "^4.17.4", + "micromatch": "^4.0.2" }, "engines": { - "node": ">= 6.x" + "node": ">=14.17" + }, + "peerDependencies": { + "semantic-release": ">=18.0.0-beta.1" } }, - "node_modules/@types/graphql-upload": { - "version": "8.0.11", - "resolved": "https://registry.npmjs.org/@types/graphql-upload/-/graphql-upload-8.0.11.tgz", - "integrity": "sha512-AE8RWANHutpsQt945lQZKlkq0V/zBxU5R0xhKLZN3KkBMlW95/5uJzk01HUl8gbDkG7hGl8l8lJKbi91k0UnPw==", + "node_modules/@semantic-release/commit-analyzer/node_modules/compare-func": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", + "dev": true, "dependencies": { - "@types/express": "*", - "@types/fs-capacitor": "*", - "@types/koa": "*", - "graphql": "0.13.1 - 16" + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" } }, - "node_modules/@types/http-assert": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.3.tgz", - "integrity": "sha512-FyAOrDuQmBi8/or3ns4rwPno7/9tJTijVW6aQQjK02+kOQ8zmoNg2XJtAuQhvQcy1ASJq38wirX5//9J1EqoUA==" + "node_modules/@semantic-release/commit-analyzer/node_modules/conventional-changelog-angular": { + "version": "5.0.13", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz", + "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==", + "dev": true, + "dependencies": { + "compare-func": "^2.0.0", + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } }, - "node_modules/@types/http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-e+2rjEwK6KDaNOm5Aa9wNGgyS9oSZU/4pfSMMPYNOfjvFI0WVXm29+ITRFr6aKDvvKo7uU1jV68MW4ScsfDi7Q==" + "node_modules/@semantic-release/commit-analyzer/node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.3", + "node_modules/@semantic-release/commit-analyzer/node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "dev": true, - "license": "MIT" + "engines": { + "node": ">=8" + } }, - "node_modules/@types/istanbul-lib-report": { + "node_modules/@semantic-release/error": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-3.0.0.tgz", + "integrity": "sha512-5hiM4Un+tpl4cKw3lV4UgzJj+SmfNIDCLLw0TepzQxz9ZGV5ixnqkzIVF+3tp0ZHgcMKE+VNGHJjEeyFG2dcSw==", "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*" + "engines": { + "node": ">=14.17" } }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.0", + "node_modules/@semantic-release/git": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@semantic-release/git/-/git-10.0.1.tgz", + "integrity": "sha512-eWrx5KguUcU2wUPaO6sfvZI0wPafUKAMNC18aXY4EnNcrZL86dEmpNVnC9uMpGZkmZJ9EfCVJBQx4pV4EMGT1w==", "dev": true, - "license": "MIT", "dependencies": { - "@types/istanbul-lib-report": "*" + "@semantic-release/error": "^3.0.0", + "aggregate-error": "^3.0.0", + "debug": "^4.0.0", + "dir-glob": "^3.0.0", + "execa": "^5.0.0", + "lodash": "^4.17.4", + "micromatch": "^4.0.0", + "p-reduce": "^2.0.0" + }, + "engines": { + "node": ">=14.17" + }, + "peerDependencies": { + "semantic-release": ">=18.0.0" } }, - "node_modules/@types/jest": { - "version": "27.4.1", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.4.1.tgz", - "integrity": "sha512-23iPJADSmicDVrWk+HT58LMJtzLAnB2AgIzplQuq/bSrGaxCrlvRFjGbXmamnnk/mAmCdLStiGqggu28ocUyiw==", + "node_modules/@semantic-release/github": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-8.0.2.tgz", + "integrity": "sha512-wIbfhOeuxlYzMTjtSAa2xgr54n7ZuPAS2gadyTWBpUt2PNAPgla7A6XxCXJnaKPgfVF0iFfSk3B+KlVKk6ByVg==", + "dev": true, "dependencies": { - "jest-matcher-utils": "^27.0.0", - "pretty-format": "^27.0.0" + "@octokit/rest": "^18.0.0", + "@semantic-release/error": "^2.2.0", + "aggregate-error": "^3.0.0", + "bottleneck": "^2.18.1", + "debug": "^4.0.0", + "dir-glob": "^3.0.0", + "fs-extra": "^10.0.0", + "globby": "^11.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "issue-parser": "^6.0.0", + "lodash": "^4.17.4", + "mime": "^3.0.0", + "p-filter": "^2.0.0", + "p-retry": "^4.0.0", + "url-join": "^4.0.0" + }, + "engines": { + "node": ">=14.17" + }, + "peerDependencies": { + "semantic-release": ">=18.0.0-beta.1" } }, - "node_modules/@types/json-schema": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "node_modules/@semantic-release/github/node_modules/@semantic-release/error": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-2.2.0.tgz", + "integrity": "sha512-9Tj/qn+y2j+sjCI3Jd+qseGtHjOAeg7dU2/lVcqIQ9TV3QDaDXDYXcoOHU+7o2Hwh8L8ymL4gfuO7KxDs3q2zg==", "dev": true }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", - "dev": true + "node_modules/@semantic-release/github/node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "engines": { + "node": ">= 10" + } }, - "node_modules/@types/jsonwebtoken": { - "version": "8.5.8", - "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.8.tgz", - "integrity": "sha512-zm6xBQpFDIDM6o9r6HSgDeIcLy82TKWctCXEPbJJcXb5AKmi5BNNdLXneixK4lplX3PqIVcwLBCGE/kAGnlD4A==", + "node_modules/@semantic-release/github/node_modules/fs-extra": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", + "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "dev": true, "dependencies": { - "@types/node": "*" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" } }, - "node_modules/@types/keygrip": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.2.tgz", - "integrity": "sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw==" - }, - "node_modules/@types/koa": { - "version": "2.13.4", - "resolved": "https://registry.npmjs.org/@types/koa/-/koa-2.13.4.tgz", - "integrity": "sha512-dfHYMfU+z/vKtQB7NUrthdAEiSvnLebvBjwHtfFmpZmB7em2N3WVQdHgnFq+xvyVgxW5jKDmjWfLD3lw4g4uTw==", + "node_modules/@semantic-release/github/node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, "dependencies": { - "@types/accepts": "*", - "@types/content-disposition": "*", - "@types/cookies": "*", - "@types/http-assert": "*", - "@types/http-errors": "*", - "@types/keygrip": "*", - "@types/koa-compose": "*", - "@types/node": "*" + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" } }, - "node_modules/@types/koa-compose": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/@types/koa-compose/-/koa-compose-3.2.5.tgz", - "integrity": "sha512-B8nG/OoE1ORZqCkBVsup/AKcvjdgoHnfi4pZMn5UwAPCbhk/96xyv284eBYW8JlQbQ7zDmnpFr68I/40mFoIBQ==", + "node_modules/@semantic-release/github/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, "dependencies": { - "@types/koa": "*" + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/@types/mime": { - "version": "1.3.2", - "license": "MIT" + "node_modules/@semantic-release/github/node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } }, - "node_modules/@types/minimist": { - "version": "1.2.1", + "node_modules/@semantic-release/github/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true, - "license": "MIT" + "engines": { + "node": ">= 10.0.0" + } }, - "node_modules/@types/node": { - "version": "17.0.21", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.21.tgz", - "integrity": "sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ==" - }, - "node_modules/@types/node-fetch": { - "version": "2.5.12", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.12.tgz", - "integrity": "sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw==", + "node_modules/@semantic-release/npm": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-9.0.0.tgz", + "integrity": "sha512-hj2jqayS2SPUmFtCMCOQMX975uMDfRoymj1HvMSwYdaoI6hVZvhrTFPBgJeM85O0C+G3IFviAUar5gel/1VGDQ==", + "dev": true, "dependencies": { - "@types/node": "*", - "form-data": "^3.0.0" + "@semantic-release/error": "^3.0.0", + "aggregate-error": "^3.0.0", + "execa": "^5.0.0", + "fs-extra": "^10.0.0", + "lodash": "^4.17.15", + "nerf-dart": "^1.0.0", + "normalize-url": "^6.0.0", + "npm": "^8.3.0", + "rc": "^1.2.8", + "read-pkg": "^5.0.0", + "registry-auth-token": "^4.0.0", + "semver": "^7.1.2", + "tempy": "^1.0.0" + }, + "engines": { + "node": ">=16 || ^14.17" + }, + "peerDependencies": { + "semantic-release": ">=19.0.0" } }, - "node_modules/@types/node-mailjet": { - "version": "3.3.8", - "resolved": "https://registry.npmjs.org/@types/node-mailjet/-/node-mailjet-3.3.8.tgz", - "integrity": "sha512-bjrj7FOG5bVGpV1RovUF1JydGngW/TIrbGDTiId41v9ak3rwzGm4OVmPzjjKbqjECCD8toRXOdyTz28rkH5OlA==" - }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.0", + "node_modules/@semantic-release/npm/node_modules/fs-extra": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", + "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", "dev": true, - "license": "MIT" + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } }, - "node_modules/@types/parse-json": { - "version": "4.0.0", + "node_modules/@semantic-release/npm/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, - "license": "MIT" - }, - "node_modules/@types/pg": { - "version": "8.6.5", - "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.6.5.tgz", - "integrity": "sha512-tOkGtAqRVkHa/PVZicq67zuujI4Oorfglsr2IbKofDwBSysnaqSx7W1mDqFqdkGE6Fbgh+PZAl0r/BWON/mozw==", "dependencies": { - "@types/node": "*", - "pg-protocol": "*", - "pg-types": "^2.2.0" + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/@types/prettier": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.4.tgz", - "integrity": "sha512-ReVR2rLTV1kvtlWFyuot+d1pkpG2Fw/XKE3PDAdj57rbM97ttSp9JZ2UsP+2EHTylra9cUf6JA7tGwW1INzUrA==", - "dev": true - }, - "node_modules/@types/proj4": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@types/proj4/-/proj4-2.5.2.tgz", - "integrity": "sha512-/Nmfn9p08yaYw6xo5f2b0L+2oHk2kZeOkp5v+4VCeNfq+ETlLQbmHmC97/pjDIEZy8jxwz7pdPpwNzDHM5cuJw==" - }, - "node_modules/@types/qs": { - "version": "6.9.6", - "license": "MIT" - }, - "node_modules/@types/range-parser": { - "version": "1.2.3", - "license": "MIT" - }, - "node_modules/@types/retry": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", - "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==", - "dev": true + "node_modules/@semantic-release/npm/node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/@types/serve-static": { - "version": "1.13.9", - "license": "MIT", + "node_modules/@semantic-release/npm/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, "dependencies": { - "@types/mime": "^1", - "@types/node": "*" + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@types/shpjs": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/@types/shpjs/-/shpjs-3.4.1.tgz", - "integrity": "sha512-xdJ65Zp2wslzyKKAid+PPl7Hxz5+eFS7W5G42RfryoJRk2u0CA+5jtX3wBgZhmz1s/mGX0PWzmKCBYTYgRsELg==", - "dependencies": { - "@types/geojson": "*", - "@types/node": "*" + "node_modules/@semantic-release/npm/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" } }, - "node_modules/@types/sql-formatter": { - "version": "2.3.0", - "license": "MIT" + "node_modules/@semantic-release/npm/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } }, - "node_modules/@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", - "dev": true + "node_modules/@semantic-release/release-notes-generator": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-10.0.3.tgz", + "integrity": "sha512-k4x4VhIKneOWoBGHkx0qZogNjCldLPRiAjnIpMnlUh6PtaWXp/T+C9U7/TaNDDtgDa5HMbHl4WlREdxHio6/3w==", + "dev": true, + "dependencies": { + "conventional-changelog-angular": "^5.0.0", + "conventional-changelog-writer": "^5.0.0", + "conventional-commits-filter": "^2.0.0", + "conventional-commits-parser": "^3.2.3", + "debug": "^4.0.0", + "get-stream": "^6.0.0", + "import-from": "^4.0.0", + "into-stream": "^6.0.0", + "lodash": "^4.17.4", + "read-pkg-up": "^7.0.0" + }, + "engines": { + "node": ">=14.17" + }, + "peerDependencies": { + "semantic-release": ">=18.0.0-beta.1" + } }, - "node_modules/@types/superagent": { - "version": "4.1.11", + "node_modules/@semantic-release/release-notes-generator/node_modules/compare-func": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", "dev": true, - "license": "MIT", "dependencies": { - "@types/cookiejar": "*", - "@types/node": "*" + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" } }, - "node_modules/@types/supertest": { - "version": "2.0.11", + "node_modules/@semantic-release/release-notes-generator/node_modules/conventional-changelog-angular": { + "version": "5.0.13", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz", + "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==", "dev": true, - "license": "MIT", "dependencies": { - "@types/superagent": "*" + "compare-func": "^2.0.0", + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" } }, - "node_modules/@types/yargs": { - "version": "16.0.2", + "node_modules/@semantic-release/release-notes-generator/node_modules/conventional-changelog-writer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz", + "integrity": "sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==", "dev": true, - "license": "MIT", "dependencies": { - "@types/yargs-parser": "*" + "conventional-commits-filter": "^2.0.7", + "dateformat": "^3.0.0", + "handlebars": "^4.7.7", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "semver": "^6.0.0", + "split": "^1.0.0", + "through2": "^4.0.0" + }, + "bin": { + "conventional-changelog-writer": "cli.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/@types/yargs-parser": { - "version": "20.2.0", + "node_modules/@semantic-release/release-notes-generator/node_modules/dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", "dev": true, - "license": "MIT" + "engines": { + "node": "*" + } }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.15.0.tgz", - "integrity": "sha512-u6Db5JfF0Esn3tiAKELvoU5TpXVSkOpZ78cEGn/wXtT2RVqs2vkt4ge6N8cRCyw7YVKhmmLDbwI2pg92mlv7cA==", + "node_modules/@semantic-release/release-notes-generator/node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.15.0", - "@typescript-eslint/type-utils": "5.15.0", - "@typescript-eslint/utils": "5.15.0", - "debug": "^4.3.2", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", - "regexpp": "^3.2.0", - "semver": "^7.3.5", - "tsutils": "^3.21.0" + "is-obj": "^2.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=8" } }, - "node_modules/@typescript-eslint/parser": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.15.0.tgz", - "integrity": "sha512-NGAYP/+RDM2sVfmKiKOCgJYPstAO40vPAgACoWPO/+yoYKSgAXIFaBKsV8P0Cc7fwKgvj27SjRNX4L7f4/jCKQ==", + "node_modules/@semantic-release/release-notes-generator/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.15.0", - "@typescript-eslint/types": "5.15.0", - "@typescript-eslint/typescript-estree": "5.15.0", - "debug": "^4.3.2" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=8" } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.15.0.tgz", - "integrity": "sha512-EFiZcSKrHh4kWk0pZaa+YNJosvKE50EnmN4IfgjkA3bTHElPtYcd2U37QQkNTqwMCS7LXeDeZzEqnsOH8chjSg==", + "node_modules/@semantic-release/release-notes-generator/node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.15.0", - "@typescript-eslint/visitor-keys": "5.15.0" + "lru-cache": "^6.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=10" } }, - "node_modules/@typescript-eslint/type-utils": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.15.0.tgz", - "integrity": "sha512-KGeDoEQ7gHieLydujGEFLyLofipe9PIzfvA/41urz4hv+xVxPEbmMQonKSynZ0Ks2xDhJQ4VYjB3DnRiywvKDA==", + "node_modules/@semantic-release/release-notes-generator/node_modules/into-stream": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-6.0.0.tgz", + "integrity": "sha512-XHbaOAvP+uFKUFsOgoNPRjLkwB+I22JFPFe5OjTkQ0nwgj6+pSjb4NmB6VMxaPshLiOf+zcpOCBQuLwC1KHhZA==", "dev": true, "dependencies": { - "@typescript-eslint/utils": "5.15.0", - "debug": "^4.3.2", - "tsutils": "^3.21.0" + "from2": "^2.3.0", + "p-is-promise": "^3.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@typescript-eslint/types": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.15.0.tgz", - "integrity": "sha512-yEiTN4MDy23vvsIksrShjNwQl2vl6kJeG9YkVJXjXZnkJElzVK8nfPsWKYxcsGWG8GhurYXP4/KGj3aZAxbeOA==", + "node_modules/@semantic-release/release-notes-generator/node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "dev": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=8" } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.15.0.tgz", - "integrity": "sha512-Hb0e3dGc35b75xLzixM3cSbG1sSbrTBQDfIScqdyvrfJZVEi4XWAT+UL/HMxEdrJNB8Yk28SKxPLtAhfCbBInA==", + "node_modules/@semantic-release/release-notes-generator/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.15.0", - "@typescript-eslint/visitor-keys": "5.15.0", - "debug": "^4.3.2", - "globby": "^11.0.4", - "is-glob": "^4.0.3", - "semver": "^7.3.5", - "tsutils": "^3.21.0" + "p-locate": "^4.1.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=8" } }, - "node_modules/@typescript-eslint/utils": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.15.0.tgz", - "integrity": "sha512-081rWu2IPKOgTOhHUk/QfxuFog8m4wxW43sXNOMSCdh578tGJ1PAaWPsj42LOa7pguh173tNlMigsbrHvh/mtA==", + "node_modules/@semantic-release/release-notes-generator/node_modules/meow": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", "dev": true, "dependencies": { - "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.15.0", - "@typescript-eslint/types": "5.15.0", - "@typescript-eslint/typescript-estree": "5.15.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@typescript-eslint/utils/node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "node_modules/@semantic-release/release-notes-generator/node_modules/meow/node_modules/type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.15.0.tgz", - "integrity": "sha512-+vX5FKtgvyHbmIJdxMJ2jKm9z2BIlXJiuewI8dsDYMp5LzPUcuTT78Ya5iwvQg3VqSVdmxyM8Anj1Jeq7733ZQ==", + "node_modules/@semantic-release/release-notes-generator/node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.15.0", - "eslint-visitor-keys": "^3.0.0" + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=10" } }, - "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "node_modules/@semantic-release/release-notes-generator/node_modules/normalize-package-data/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=10" } }, - "node_modules/abab": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", - "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", - "dev": true - }, - "node_modules/abbrev": { - "version": "1.1.1", + "node_modules/@semantic-release/release-notes-generator/node_modules/p-is-promise": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-3.0.0.tgz", + "integrity": "sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==", "dev": true, - "license": "ISC" + "engines": { + "node": ">=8" + } }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "node_modules/@semantic-release/release-notes-generator/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, "dependencies": { - "event-target-shim": "^5.0.0" + "p-try": "^2.0.0" }, "engines": { - "node": ">=6.5" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "node_modules/@semantic-release/release-notes-generator/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" + "p-limit": "^2.2.0" }, "engines": { - "node": ">= 0.6" + "node": ">=8" } }, - "node_modules/acorn": { - "version": "7.4.1", + "node_modules/@semantic-release/release-notes-generator/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, "engines": { - "node": ">=0.4.0" + "node": ">=8" } }, - "node_modules/acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "node_modules/@semantic-release/release-notes-generator/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, "dependencies": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/acorn-jsx": { - "version": "5.3.1", + "node_modules/@semantic-release/release-notes-generator/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "node_modules/@semantic-release/release-notes-generator/node_modules/read-pkg/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/@semantic-release/release-notes-generator/node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, - "engines": { - "node": ">=0.4.0" + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, - "node_modules/add-stream": { - "version": "1.0.0", + "node_modules/@semantic-release/release-notes-generator/node_modules/read-pkg/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true, - "license": "MIT" + "bin": { + "semver": "bin/semver" + } }, - "node_modules/adler-32": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.3.0.tgz", - "integrity": "sha512-f5nltvjl+PRUh6YNfUstRaXwJxtfnKEWhAWWlmKvh+Y3J2+98a0KKVYDEhz6NdKGqswLhjNGznxfSsZGOvOd9g==", - "dependencies": { - "printj": "~1.2.2" - }, + "node_modules/@semantic-release/release-notes-generator/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, "engines": { - "node": ">=0.8" + "node": ">=8" } }, - "node_modules/agent-base": { - "version": "6.0.2", - "license": "MIT", + "node_modules/@semantic-release/release-notes-generator/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, "dependencies": { - "debug": "4" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": ">= 6.0.0" + "node": ">= 6" } }, - "node_modules/agentkeepalive": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", - "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + "node_modules/@semantic-release/release-notes-generator/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true, - "dependencies": { - "debug": "^4.1.0", - "depd": "^1.1.2", - "humanize-ms": "^1.2.1" - }, - "engines": { - "node": ">= 8.0.0" + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "node_modules/@semantic-release/release-notes-generator/node_modules/through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", "dev": true, "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" + "readable-stream": "3" } }, - "node_modules/ajv": { - "version": "6.12.6", + "node_modules/@sentry/browser": { + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-6.19.1.tgz", + "integrity": "sha512-nU73PecOoMwrsw2WRJW+oQSSfgGkcY3So3JH7qwRHnnk4Gx56TkDfS0AOrNRsSpIQXj1UbSFIWKzz6ajsOg9OA==", "dev": true, - "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "@sentry/core": "6.19.1", + "@sentry/types": "6.19.1", + "@sentry/utils": "6.19.1", + "tslib": "^1.9.3" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">=6" } }, - "node_modules/ansi-align": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "node_modules/@sentry/browser/node_modules/@sentry/core": { + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-6.19.1.tgz", + "integrity": "sha512-ZSIFnwYCzABK1jX1iMwUbaAoWbbJear0wM+gSZvJpSUJ1dAXV1OZyL7kXtEJRtATahIlcrMou5ewIoeJizeWAw==", "dev": true, "dependencies": { - "string-width": "^4.1.0" + "@sentry/hub": "6.19.1", + "@sentry/minimal": "6.19.1", + "@sentry/types": "6.19.1", + "@sentry/utils": "6.19.1", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" } }, - "node_modules/ansi-align/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/@sentry/browser/node_modules/@sentry/hub": { + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-6.19.1.tgz", + "integrity": "sha512-BgUwdxxXntGohAYrXtYrYBA6QzOeRz3NINuS838n7SRTkGf9gBJ/Rd3dyOWUrzJciKty7rmvYIwTA0oo91AMkw==", "dev": true, + "dependencies": { + "@sentry/types": "6.19.1", + "@sentry/utils": "6.19.1", + "tslib": "^1.9.3" + }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/ansi-align/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/@sentry/browser/node_modules/@sentry/minimal": { + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-6.19.1.tgz", + "integrity": "sha512-Xre3J6mjWEcQhDmQ3j4g71J8f0nDgg2p7K41SngibfZVYSOe8jAowxSI9JuWD7juuwT5GVRVCqLs+Y6mWDBaoQ==", "dev": true, "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "@sentry/hub": "6.19.1", + "@sentry/types": "6.19.1", + "tslib": "^1.9.3" }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/ansi-colors": { - "version": "4.1.1", + "node_modules/@sentry/browser/node_modules/@sentry/types": { + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.19.1.tgz", + "integrity": "sha512-ovmNYdqD2MKLmru4calxetX1xjJdYim+HEI/GzwvVUYshsaXRq4EiQ17h3DAy90MV7JH279PmMoPGDTOpufq+Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, - "node_modules/ansi-escapes": { - "version": "3.2.0", + "node_modules/@sentry/browser/node_modules/@sentry/utils": { + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.19.1.tgz", + "integrity": "sha512-mWcQbQ1yO7PooLpJpQK84+wOfxGeb8iUKRb8inO+2Eg6VksDbXRuJ89Yd4APBTRxBj5Wihy48bPuVfKtovtm8g==", "dev": true, - "license": "MIT", + "dependencies": { + "@sentry/types": "6.19.1", + "tslib": "^1.9.3" + }, "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/@sentry/browser/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@sentry/core": { + "version": "6.18.2", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-6.18.2.tgz", + "integrity": "sha512-r5ad/gq5S/JHc9sd5CUhZQT9ojQ+f+thk/AoGeGawX/8HURZYAgIqD565d6FK0VsZEDkdRMl58z1Qon20h3y1g==", + "dependencies": { + "@sentry/hub": "6.18.2", + "@sentry/minimal": "6.18.2", + "@sentry/types": "6.18.2", + "@sentry/utils": "6.18.2", + "tslib": "^1.9.3" + }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", + "node_modules/@sentry/core/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@sentry/hub": { + "version": "6.18.2", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-6.18.2.tgz", + "integrity": "sha512-d0AugekMkbnN12b4EXMjseJxtLPc9S20DGobCPUb4oAQT6S2oDQEj1jwP6PQ5vtgyy+GMYWxBMgqAQ4pjVYISQ==", "dependencies": { - "color-convert": "^2.0.1" + "@sentry/types": "6.18.2", + "@sentry/utils": "6.18.2", + "tslib": "^1.9.3" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=6" } }, - "node_modules/ansicolors": { - "version": "0.2.1", - "license": "MIT" + "node_modules/@sentry/hub/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, - "node_modules/anymatch": { - "version": "3.1.2", + "node_modules/@sentry/integrations": { + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-6.19.1.tgz", + "integrity": "sha512-0ViIiwx9BlPi8jvT97ERpJWmRbBUThGOyjNVzWxaa07OEjOgKI6cNgsBHWbPjaCM00WSzaOFOtYiC4464+Mucg==", "dev": true, - "license": "ISC", "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "@sentry/types": "6.19.1", + "@sentry/utils": "6.19.1", + "localforage": "^1.8.1", + "tslib": "^1.9.3" }, "engines": { - "node": ">= 8" + "node": ">=6" } }, - "node_modules/anymatch/node_modules/normalize-path": { - "version": "3.0.0", + "node_modules/@sentry/integrations/node_modules/@sentry/types": { + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.19.1.tgz", + "integrity": "sha512-ovmNYdqD2MKLmru4calxetX1xjJdYim+HEI/GzwvVUYshsaXRq4EiQ17h3DAy90MV7JH279PmMoPGDTOpufq+Q==", "dev": true, - "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/aproba": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", - "dev": true - }, - "node_modules/are-we-there-yet": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz", - "integrity": "sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw==", + "node_modules/@sentry/integrations/node_modules/@sentry/utils": { + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.19.1.tgz", + "integrity": "sha512-mWcQbQ1yO7PooLpJpQK84+wOfxGeb8iUKRb8inO+2Eg6VksDbXRuJ89Yd4APBTRxBj5Wihy48bPuVfKtovtm8g==", "dev": true, "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" + "@sentry/types": "6.19.1", + "tslib": "^1.9.3" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": ">=6" } }, - "node_modules/are-we-there-yet/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, + "node_modules/@sentry/integrations/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@sentry/minimal": { + "version": "6.18.2", + "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-6.18.2.tgz", + "integrity": "sha512-n7KYuo34W2LxE+3dnZ47of7XHuORINCnXq66XH72eoj67tf0XeWbIhEJrYGmoLRyRfoCYYrBLWiDl/uTjLzrzQ==", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "@sentry/hub": "6.18.2", + "@sentry/types": "6.18.2", + "tslib": "^1.9.3" }, "engines": { - "node": ">= 6" + "node": ">=6" } }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" + "node_modules/@sentry/minimal/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, - "node_modules/argparse": { - "version": "1.0.10", - "dev": true, - "license": "MIT", + "node_modules/@sentry/node": { + "version": "6.18.2", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-6.18.2.tgz", + "integrity": "sha512-1S+44c09n3KVpCYjwOfnA9jKvnpPegpQWM81Nu5J6ToGx+ZiddMq6B9GRXUnFfZ7Z6fJHZzFtySasQC7KqkQoA==", "dependencies": { - "sprintf-js": "~1.0.2" + "@sentry/core": "6.18.2", + "@sentry/hub": "6.18.2", + "@sentry/types": "6.18.2", + "@sentry/utils": "6.18.2", + "cookie": "^0.4.1", + "https-proxy-agent": "^5.0.0", + "lru_map": "^0.3.3", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" } }, - "node_modules/argv": { - "version": "0.0.2", - "dev": true, + "node_modules/@sentry/node/node_modules/tslib": { + "version": "1.14.1", + "license": "0BSD" + }, + "node_modules/@sentry/types": { + "version": "6.18.2", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.18.2.tgz", + "integrity": "sha512-WzpJf/Q5aORTzrSwer/As1NlO90dBAQpaHV2ikDDKqOyMWEgjKb5/4gh59p9gH8JMMnLetP1AvQel0fOj5UnUw==", "engines": { - "node": ">=0.6.10" + "node": ">=6" } }, - "node_modules/argv-formatter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/argv-formatter/-/argv-formatter-1.0.0.tgz", - "integrity": "sha1-oMoMvCmltz6Dbuvhy/bF4OTrgvk=", - "dev": true - }, - "node_modules/array-find-index": { - "version": "1.0.2", - "dev": true, - "license": "MIT", + "node_modules/@sentry/utils": { + "version": "6.18.2", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.18.2.tgz", + "integrity": "sha512-EC619jesknyu4xpwud5WC/5odYLz6JUy7OSFy5405PpdGeh/m8XUvuJAx4zDx0Iz/Mlk0S1Md+ZcQwqkv39dkw==", + "dependencies": { + "@sentry/types": "6.18.2", + "tslib": "^1.9.3" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/array-flatten": { - "version": "1.1.1", - "license": "MIT" + "node_modules/@sentry/utils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, - "node_modules/array-ify": { - "version": "1.0.0", - "dev": true, - "license": "MIT" + "node_modules/@sindresorhus/slugify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-1.1.2.tgz", + "integrity": "sha512-V9nR/W0Xd9TSGXpZ4iFUcFGhuOJtZX82Fzxj1YISlbSgKvIiNa7eLEZrT0vAraPOt++KHauIVNYgGRgjc13dXA==", + "dependencies": { + "@sindresorhus/transliterate": "^0.1.1", + "escape-string-regexp": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/array-includes": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", - "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", - "dev": true, + "node_modules/@sindresorhus/transliterate": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@sindresorhus/transliterate/-/transliterate-0.1.2.tgz", + "integrity": "sha512-5/kmIOY9FF32nicXH+5yLNTX4NJ4atl7jRgqAJuIn/iyDFXBktOKDxCvyGE/EzmF4ngSUvjXxQUQlQiZ5lfw+w==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", - "is-string": "^1.0.7" + "escape-string-regexp": "^2.0.0", + "lodash.deburr": "^4.1.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/array-union": { - "version": "2.1.0", - "license": "MIT", + "node_modules/@sindresorhus/transliterate/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", "engines": { "node": ">=8" } }, - "node_modules/array.prototype.flat": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz", - "integrity": "sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==", + "node_modules/@sinonjs/commons": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "type-detect": "4.0.8" } }, - "node_modules/arrify": { - "version": "1.0.1", + "node_modules/@sinonjs/fake-timers": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", + "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "@sinonjs/commons": "^1.7.0" } }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", - "dev": true + "node_modules/@storybook/addon-actions": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-6.4.19.tgz", + "integrity": "sha512-GpSvP8xV8GfNkmtGJjfCgaOx6mbjtyTK0aT9FqX9pU0s+KVMmoCTrBh43b7dWrwxxas01yleBK9VpYggzhi/Fw==", + "dev": true, + "dependencies": { + "@storybook/addons": "6.4.19", + "@storybook/api": "6.4.19", + "@storybook/components": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/theming": "6.4.19", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.21", + "polished": "^4.0.5", + "prop-types": "^15.7.2", + "react-inspector": "^5.1.0", + "regenerator-runtime": "^0.13.7", + "telejson": "^5.3.2", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2", + "uuid-browser": "^3.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } }, - "node_modules/ast-types": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", - "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "node_modules/@storybook/addon-controls": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-6.4.19.tgz", + "integrity": "sha512-JHi5z9i6NsgQLfG5WOeQE1AyOrM+QJLrjT+uOYx40bq+OC1yWHH7qHiphPP8kjJJhCZlaQk1qqXYkkQXgaeHSw==", + "dev": true, "dependencies": { - "tslib": "^2.0.1" + "@storybook/addons": "6.4.19", + "@storybook/api": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/components": "6.4.19", + "@storybook/core-common": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/node-logger": "6.4.19", + "@storybook/store": "6.4.19", + "@storybook/theming": "6.4.19", + "core-js": "^3.8.2", + "lodash": "^4.17.21", + "ts-dedent": "^2.0.0" }, - "engines": { - "node": ">=4" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } } }, - "node_modules/astral-regex": { + "node_modules/@storybook/addon-postcss": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@storybook/addon-postcss/-/addon-postcss-2.0.0.tgz", + "integrity": "sha512-Nt82A7e9zJH4+A+VzLKKswUfru+T6FJTakj4dccP0i8DSn7a0CkzRPrLuZBq8tg4voV6gD74bcDf3gViCVBGtA==", "dev": true, - "license": "MIT", + "dependencies": { + "@storybook/node-logger": "^6.1.14", + "css-loader": "^3.6.0", + "postcss": "^7.0.35", + "postcss-loader": "^4.2.0", + "style-loader": "^1.3.0" + }, "engines": { - "node": ">=8" + "node": ">=10", + "yarn": "^1.17.0" } }, - "node_modules/async": { - "version": "1.5.2", - "license": "MIT" - }, - "node_modules/async-retry": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", - "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==", + "node_modules/@storybook/addon-postcss/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, "dependencies": { - "retry": "0.13.1" - } - }, - "node_modules/async-retry/node_modules/retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, "engines": { - "node": ">= 4" + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, - "node_modules/asynckit": { - "version": "0.4.0", - "license": "MIT" - }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "node_modules/@storybook/addon-postcss/node_modules/postcss-loader": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-4.3.0.tgz", + "integrity": "sha512-M/dSoIiNDOo8Rk0mUqoj4kpGq91gcxCfb9PoyZVdZ76/AuhxylHDYZblNE8o+EQ9AMSASeMFEKxZf5aU6wlx1Q==", "dev": true, + "dependencies": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.4", + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0", + "semver": "^7.3.4" + }, "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/aws-sdk": { - "version": "2.1078.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1078.0.tgz", - "integrity": "sha512-eJuiiCE4tomYzsxqfsjERmQ1WQkNAe5RUhOXUwJbGTEfwmbiQqq/HgVYrwcMswOHoURbtKpB5SSrTLNOBuyurA==", - "dependencies": { - "buffer": "4.9.2", - "events": "1.1.1", - "ieee754": "1.1.13", - "jmespath": "0.16.0", - "querystring": "0.2.0", - "sax": "1.2.1", - "url": "0.10.3", - "uuid": "3.3.2", - "xml2js": "0.4.19" + "node": ">= 10.13.0" }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/aws-sdk/node_modules/uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "bin": { - "uuid": "bin/uuid" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/babel-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", - "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", + "node_modules/@storybook/addon-postcss/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", "dev": true, "dependencies": { - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^27.5.1", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/@storybook/addon-storyshots": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/addon-storyshots/-/addon-storyshots-6.4.19.tgz", + "integrity": "sha512-HhXUJylImQIDxzkd7yvQ8p/mzUuvzPc1PWB3ZiwV+t6kg9LX8qnKdkQ6t/asIn54bARhNk3EURPTI8W2fWDgMg==", + "dev": true, + "dependencies": { + "@jest/transform": "^26.6.2", + "@storybook/addons": "6.4.19", + "@storybook/babel-plugin-require-context-hook": "1.0.1", + "@storybook/client-api": "6.4.19", + "@storybook/core": "6.4.19", + "@storybook/core-client": "6.4.19", + "@storybook/core-common": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@types/glob": "^7.1.3", + "@types/jest": "^26.0.16", + "@types/jest-specific-snapshot": "^0.5.3", + "core-js": "^3.8.2", + "glob": "^7.1.6", + "global": "^4.4.0", + "jest-specific-snapshot": "^4.0.0", + "preact-render-to-string": "^5.1.19", + "pretty-format": "^26.6.2", + "react-test-renderer": "^16.8.0 || ^17.0.0", + "read-pkg-up": "^7.0.1", + "regenerator-runtime": "^0.13.7", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "@babel/core": "^7.8.0" + "@angular/core": ">=6.0.0", + "@angular/platform-browser-dynamic": ">=6.0.0", + "@storybook/angular": "*", + "@storybook/react": "*", + "@storybook/vue": "*", + "@storybook/vue3": "*", + "jest": "*", + "jest-preset-angular": "*", + "jest-vue-preprocessor": "*", + "preact": "^10.5.13", + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0", + "rxjs": "*", + "svelte": "*", + "vue": "*", + "vue-jest": "*" + }, + "peerDependenciesMeta": { + "@angular/core": { + "optional": true + }, + "@angular/platform-browser-dynamic": { + "optional": true + }, + "@storybook/angular": { + "optional": true + }, + "@storybook/react": { + "optional": true + }, + "@storybook/vue": { + "optional": true + }, + "@storybook/vue3": { + "optional": true + }, + "jest-preset-angular": { + "optional": true + }, + "jest-vue-preprocessor": { + "optional": true + }, + "preact": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "rxjs": { + "optional": true + }, + "svelte": { + "optional": true + }, + "vue": { + "optional": true + }, + "vue-jest": { + "optional": true + } } }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "node_modules/@storybook/addon-storyshots/node_modules/@jest/transform": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz", + "integrity": "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" + "@babel/core": "^7.1.0", + "@jest/types": "^26.6.2", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-util": "^26.6.2", + "micromatch": "^4.0.2", + "pirates": "^4.0.1", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">= 10.14.2" } }, - "node_modules/babel-plugin-jest-hoist": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", - "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", + "node_modules/@storybook/addon-storyshots/node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", "dev": true, "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", - "@types/babel__traverse": "^7.0.6" + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">= 10.14.2" } }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "node_modules/@storybook/addon-storyshots/node_modules/@types/jest": { + "version": "26.0.24", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.24.tgz", + "integrity": "sha512-E/X5Vib8BWqZNRlDxj9vYXhsDwPYbPINqKF9BsnSoon4RQ0D9moEuLD8txgyypFLH7J4+Lho9Nr/c8H0Fi+17w==", "dev": true, "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "jest-diff": "^26.0.0", + "pretty-format": "^26.0.0" } }, - "node_modules/babel-preset-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", - "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", + "node_modules/@storybook/addon-storyshots/node_modules/@types/yargs": { + "version": "15.0.14", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", + "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", "dev": true, "dependencies": { - "babel-plugin-jest-hoist": "^27.5.1", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "@types/yargs-parser": "*" } }, - "node_modules/balanced-match": { - "version": "1.0.2", + "node_modules/@storybook/addon-storyshots/node_modules/diff-sequences": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", + "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", "dev": true, - "license": "MIT" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] + "engines": { + "node": ">= 10.14.2" + } }, - "node_modules/basic-auth": { - "version": "2.0.1", - "license": "MIT", + "node_modules/@storybook/addon-storyshots/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, "dependencies": { - "safe-buffer": "5.1.2" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">= 0.8" + "node": ">=8" } }, - "node_modules/bcryptjs": { - "version": "2.4.3", - "license": "MIT" - }, - "node_modules/before-after-hook": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz", - "integrity": "sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==", - "dev": true - }, - "node_modules/bignumber.js": { - "version": "9.0.1", - "license": "MIT", + "node_modules/@storybook/addon-storyshots/node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, "engines": { "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "node_modules/@storybook/addon-storyshots/node_modules/jest-diff": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", + "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/bluebird": { - "version": "3.7.2", - "license": "MIT" - }, - "node_modules/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.8.1", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.9.7", - "raw-body": "2.4.3", - "type-is": "~1.6.18" + "chalk": "^4.0.0", + "diff-sequences": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" }, "engines": { - "node": ">= 0.8" + "node": ">= 10.14.2" } }, - "node_modules/body-parser/node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "node_modules/@storybook/addon-storyshots/node_modules/jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "dev": true, "engines": { - "node": ">= 0.8" - } - }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" + "node": ">= 10.14.2" } }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "node_modules/bottleneck": { - "version": "2.19.5", - "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", - "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==", - "dev": true - }, - "node_modules/boxen": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", - "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", + "node_modules/@storybook/addon-storyshots/node_modules/jest-haste-map": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz", + "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==", "dev": true, "dependencies": { - "ansi-align": "^3.0.0", - "camelcase": "^6.2.0", - "chalk": "^4.1.0", - "cli-boxes": "^2.2.1", - "string-width": "^4.2.2", - "type-fest": "^0.20.2", - "widest-line": "^3.1.0", - "wrap-ansi": "^7.0.0" + "@jest/types": "^26.6.2", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^26.0.0", + "jest-serializer": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "micromatch": "^4.0.2", + "sane": "^4.0.3", + "walker": "^1.0.7" }, "engines": { - "node": ">=10" + "node": ">= 10.14.2" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "optionalDependencies": { + "fsevents": "^2.1.2" } }, - "node_modules/boxen/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/@storybook/addon-storyshots/node_modules/jest-regex-util": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", + "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", "dev": true, "engines": { - "node": ">=8" + "node": ">= 10.14.2" } }, - "node_modules/boxen/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/@storybook/addon-storyshots/node_modules/jest-serializer": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz", + "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==", "dev": true, "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "@types/node": "*", + "graceful-fs": "^4.2.4" }, "engines": { - "node": ">=8" + "node": ">= 10.14.2" } }, - "node_modules/boxen/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "node_modules/@storybook/addon-storyshots/node_modules/jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", "dev": true, - "engines": { - "node": ">=10" + "dependencies": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">= 10.14.2" } }, - "node_modules/brace-expansion": { - "version": "1.1.11", + "node_modules/@storybook/addon-storyshots/node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", "dev": true, - "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" } }, - "node_modules/braces": { - "version": "3.0.2", - "license": "MIT", + "node_modules/@storybook/addon-storyshots/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, "dependencies": { - "fill-range": "^7.0.1" + "p-locate": "^4.1.0" }, "engines": { "node": ">=8" } }, - "node_modules/browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true - }, - "node_modules/browserslist": { - "version": "4.17.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.3.tgz", - "integrity": "sha512-59IqHJV5VGdcJZ+GZ2hU5n4Kv3YiASzW6Xk5g9tf5a/MAzGeFwgGWU39fVzNIOVcgB3+Gp+kiQu0HEfTVU/3VQ==", + "node_modules/@storybook/addon-storyshots/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "dependencies": { - "caniuse-lite": "^1.0.30001264", - "electron-to-chromium": "^1.3.857", - "escalade": "^3.1.1", - "node-releases": "^1.1.77", - "picocolors": "^0.2.1" - }, - "bin": { - "browserslist": "cli.js" + "p-try": "^2.0.0" }, "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + "node": ">=6" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/bs-logger": { - "version": "0.2.6", + "node_modules/@storybook/addon-storyshots/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, - "license": "MIT", "dependencies": { - "fast-json-stable-stringify": "2.x" + "p-limit": "^2.2.0" }, "engines": { - "node": ">= 6" + "node": ">=8" } }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "node_modules/@storybook/addon-storyshots/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "node_modules/buffer-equal-constant-time": { - "version": "1.0.1", - "license": "BSD-3-Clause" - }, - "node_modules/buffer-from": { - "version": "1.1.1", - "license": "MIT" - }, - "node_modules/buffer-writer": { - "version": "2.0.0", - "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/builtins": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", - "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", - "dev": true - }, - "node_modules/busboy": { - "version": "0.3.1", + "node_modules/@storybook/addon-storyshots/node_modules/pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "dev": true, "dependencies": { - "dicer": "0.3.0" + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" }, "engines": { - "node": ">=4.5.0" - } - }, - "node_modules/bytes": { - "version": "3.0.0", - "license": "MIT", - "engines": { - "node": ">= 0.8" + "node": ">= 10" } }, - "node_modules/cacache": { - "version": "16.0.1", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.0.1.tgz", - "integrity": "sha512-tHPtfdZDqQpZ15eaEZeLspIqS5mK5fOBDZi6AjuqaIi53QNVXH3dQv6uKT3YuUu6uxV/8pjU9in0CoJ8fgaHqw==", + "node_modules/@storybook/addon-storyshots/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, "dependencies": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.1.2", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "glob": "^7.2.0", - "infer-owner": "^1.0.4", - "lru-cache": "^7.5.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "mkdirp": "^1.0.4", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.1.11", - "unique-filename": "^1.1.1" + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": ">=8" } }, - "node_modules/cacache/node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "node_modules/@storybook/addon-storyshots/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" }, "engines": { - "node": "*" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cacache/node_modules/lru-cache": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.6.0.tgz", - "integrity": "sha512-zjOf6cyMI7rcN+5MtLsT4GnDjc6D9XHi8kYcsfXTqWC+yLdSiU3/jtEPX9wZE77+XLtnmdIWu3+291hkizfH+Q==", + "node_modules/@storybook/addon-storyshots/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", "dev": true, "engines": { - "node": ">=12" + "node": ">=8" } }, - "node_modules/cachedir": { - "version": "2.2.0", + "node_modules/@storybook/addons": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.4.19.tgz", + "integrity": "sha512-QNyRYhpqmHV8oJxxTBdkRlLSbDFhpBvfvMfIrIT1UXb/eemdBZTaCGVvXZ9UixoEEI7f8VwAQ44IvkU5B1509w==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" + "dependencies": { + "@storybook/api": "6.4.19", + "@storybook/channels": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/router": "6.4.19", + "@storybook/theming": "6.4.19", + "@types/webpack-env": "^1.16.0", + "core-js": "^3.8.2", + "global": "^4.4.0", + "regenerator-runtime": "^0.13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" } }, - "node_modules/call-bind": { - "version": "1.0.2", + "node_modules/@storybook/api": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.4.19.tgz", + "integrity": "sha512-aDvea+NpQCBjpNp9YidO1Pr7fzzCp15FSdkG+2ihGQfv5raxrN+IIJnGUXecpe71nvlYiB+29UXBVK7AL0j51Q==", "dev": true, - "license": "MIT", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "@storybook/channels": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/router": "6.4.19", + "@storybook/semver": "^7.3.2", + "@storybook/theming": "6.4.19", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "regenerator-runtime": "^0.13.7", + "store2": "^2.12.0", + "telejson": "^5.3.2", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" } }, - "node_modules/callsites": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } + "node_modules/@storybook/babel-plugin-require-context-hook": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@storybook/babel-plugin-require-context-hook/-/babel-plugin-require-context-hook-1.0.1.tgz", + "integrity": "sha512-WM4vjgSVi8epvGiYfru7BtC3f0tGwNs7QK3Uc4xQn4t5hHQvISnCqbNrHdDYmNW56Do+bBztE8SwP6NGUvd7ww==", + "dev": true }, - "node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "engines": { - "node": ">=10" + "node_modules/@storybook/builder-webpack4": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/builder-webpack4/-/builder-webpack4-6.4.19.tgz", + "integrity": "sha512-wxA6SMH11duc9D53aeVVBwrVRemFIoxHp/dOugkkg6ZZFAb4ZmWzf/ENc3vQIZdZpfNRi7IZIZEOfoHc994cmw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.10", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-decorators": "^7.12.12", + "@babel/plugin-proposal-export-default-from": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.7", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.12", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/plugin-transform-template-literals": "^7.12.1", + "@babel/preset-env": "^7.12.11", + "@babel/preset-react": "^7.12.10", + "@babel/preset-typescript": "^7.12.7", + "@storybook/addons": "6.4.19", + "@storybook/api": "6.4.19", + "@storybook/channel-postmessage": "6.4.19", + "@storybook/channels": "6.4.19", + "@storybook/client-api": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/components": "6.4.19", + "@storybook/core-common": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/node-logger": "6.4.19", + "@storybook/preview-web": "6.4.19", + "@storybook/router": "6.4.19", + "@storybook/semver": "^7.3.2", + "@storybook/store": "6.4.19", + "@storybook/theming": "6.4.19", + "@storybook/ui": "6.4.19", + "@types/node": "^14.0.10", + "@types/webpack": "^4.41.26", + "autoprefixer": "^9.8.6", + "babel-loader": "^8.0.0", + "babel-plugin-macros": "^2.8.0", + "babel-plugin-polyfill-corejs3": "^0.1.0", + "case-sensitive-paths-webpack-plugin": "^2.3.0", + "core-js": "^3.8.2", + "css-loader": "^3.6.0", + "file-loader": "^6.2.0", + "find-up": "^5.0.0", + "fork-ts-checker-webpack-plugin": "^4.1.6", + "glob": "^7.1.6", + "glob-promise": "^3.4.0", + "global": "^4.4.0", + "html-webpack-plugin": "^4.0.0", + "pnp-webpack-plugin": "1.6.4", + "postcss": "^7.0.36", + "postcss-flexbugs-fixes": "^4.2.1", + "postcss-loader": "^4.2.0", + "raw-loader": "^4.0.2", + "stable": "^0.1.8", + "style-loader": "^1.3.0", + "terser-webpack-plugin": "^4.2.3", + "ts-dedent": "^2.0.0", + "url-loader": "^4.1.1", + "util-deprecate": "^1.0.2", + "webpack": "4", + "webpack-dev-middleware": "^3.7.3", + "webpack-filter-warnings-plugin": "^1.2.1", + "webpack-hot-middleware": "^2.25.1", + "webpack-virtual-modules": "^0.2.2" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/camelcase-keys": { - "version": "6.2.2", + "node_modules/@storybook/builder-webpack4/node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz", + "integrity": "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==", "dev": true, - "license": "MIT", "dependencies": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" - }, - "engines": { - "node": ">=8" + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@babel/core": "^7.4.0-0" } }, - "node_modules/camelcase-keys/node_modules/camelcase": { - "version": "5.3.1", + "node_modules/@storybook/builder-webpack4/node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/camino-api": { - "resolved": "packages/api", - "link": true + "node_modules/@storybook/builder-webpack4/node_modules/@types/html-minifier-terser": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.1.2.tgz", + "integrity": "sha512-h4lTMgMJctJybDp8CQrxTUiiYmedihHWkjnF/8Pxseu2S6Nlfcy8kwboQ8yejh456rP2yWoEVm1sS/FVsfM48w==", + "dev": true }, - "node_modules/caniuse-lite": { - "version": "1.0.30001265", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001265.tgz", - "integrity": "sha512-YzBnspggWV5hep1m9Z6sZVLOt7vrju8xWooFAgN6BA5qvy98qPAPb7vNUzypFaoh2pb3vlfzbDO8tB57UPGbtw==", + "node_modules/@storybook/builder-webpack4/node_modules/@types/node": { + "version": "14.18.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.12.tgz", + "integrity": "sha512-q4jlIR71hUpWTnGhXWcakgkZeHa3CCjcQcnuzU8M891BAWA2jHiziiWEPEkdS5pFsz7H9HJiy8BrK7tBRNrY7A==", + "dev": true + }, + "node_modules/@storybook/builder-webpack4/node_modules/@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" + "dependencies": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" } }, - "node_modules/cardinal": { - "version": "0.4.4", - "license": "MIT", + "node_modules/@storybook/builder-webpack4/node_modules/@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", + "dev": true + }, + "node_modules/@storybook/builder-webpack4/node_modules/@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", + "dev": true + }, + "node_modules/@storybook/builder-webpack4/node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "dev": true + }, + "node_modules/@storybook/builder-webpack4/node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", + "dev": true, "dependencies": { - "ansicolors": "~0.2.1", - "redeyed": "~0.4.0" - }, - "bin": { - "cdl": "bin/cdl.js" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" } }, - "node_modules/cerbere": { - "version": "0.2.3", - "license": "AGPL-3.0-or-later", + "node_modules/@storybook/builder-webpack4/node_modules/@webassemblyjs/ieee754": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", + "dev": true, "dependencies": { - "fast-xml-parser": "^3.17.0", - "uuid": "^8.0.0" + "@xtuc/ieee754": "^1.2.0" } }, - "node_modules/cfb": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/cfb/-/cfb-1.2.1.tgz", - "integrity": "sha512-wT2ScPAFGSVy7CY+aauMezZBnNrfnaLSrxHUHdea+Td/86vrk6ZquggV+ssBR88zNs0OnBkL2+lf9q0K+zVGzQ==", + "node_modules/@storybook/builder-webpack4/node_modules/@webassemblyjs/leb128": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", + "dev": true, "dependencies": { - "adler-32": "~1.3.0", - "crc-32": "~1.2.0", - "printj": "~1.3.0" - }, - "engines": { - "node": ">=0.8" + "@xtuc/long": "4.2.2" } }, - "node_modules/cfb/node_modules/printj": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/printj/-/printj-1.3.0.tgz", - "integrity": "sha512-017o8YIaz8gLhaNxRB9eBv2mWXI2CtzhPJALnQTP+OPpuUfP0RMWqr/mHCzqVeu1AQxfzSfAtAq66vKB8y7Lzg==", - "bin": { - "printj": "bin/printj.njs" - }, - "engines": { - "node": ">=0.8" + "node_modules/@storybook/builder-webpack4/node_modules/@webassemblyjs/utf8": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", + "dev": true + }, + "node_modules/@storybook/builder-webpack4/node_modules/@webassemblyjs/wasm-edit": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" } }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@storybook/builder-webpack4/node_modules/@webassemblyjs/wasm-gen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", + "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" } }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "node_modules/@storybook/builder-webpack4/node_modules/@webassemblyjs/wasm-opt": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", "dev": true, - "engines": { - "node": ">=10" + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" } }, - "node_modules/chardet": { - "version": "0.7.0", + "node_modules/@storybook/builder-webpack4/node_modules/@webassemblyjs/wasm-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", "dev": true, - "license": "MIT" + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } }, - "node_modules/chokidar": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", - "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "node_modules/@storybook/builder-webpack4/node_modules/@webassemblyjs/wast-printer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", "dev": true, "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@storybook/builder-webpack4/node_modules/acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true, + "bin": { + "acorn": "bin/acorn" }, "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "node": ">=0.4.0" } }, - "node_modules/chokidar/node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "node_modules/@storybook/builder-webpack4/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "node_modules/@storybook/builder-webpack4/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, "engines": { - "node": ">=10" + "node": ">=4" } }, - "node_modules/ci-info": { - "version": "3.2.0", - "dev": true, - "license": "MIT" - }, - "node_modules/cint": { - "version": "8.2.1", + "node_modules/@storybook/builder-webpack4/node_modules/babel-plugin-macros": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", + "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", "dev": true, - "license": "ISC" - }, - "node_modules/cjs-module-lexer": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", - "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", - "dev": true + "dependencies": { + "@babel/runtime": "^7.7.2", + "cosmiconfig": "^6.0.0", + "resolve": "^1.12.0" + } }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "node_modules/@storybook/builder-webpack4/node_modules/babel-plugin-macros/node_modules/cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", "dev": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/cli-boxes": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", - "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "node_modules/@storybook/builder-webpack4/node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz", + "integrity": "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==", "dev": true, - "engines": { - "node": ">=6" + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.1.5", + "core-js-compat": "^3.8.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/cli-cursor": { - "version": "2.1.0", + "node_modules/@storybook/builder-webpack4/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, - "license": "MIT", "dependencies": { - "restore-cursor": "^2.0.0" + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/cli-table": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.11.tgz", - "integrity": "sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==", + "node_modules/@storybook/builder-webpack4/node_modules/cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", "dev": true, "dependencies": { - "colors": "1.0.3" - }, - "engines": { - "node": ">= 0.2.0" + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" } }, - "node_modules/cli-table3": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.1.tgz", - "integrity": "sha512-w0q/enDHhPLq44ovMGdQeeDLvwxwavsJX7oQGYt/LrBlYsyaxyDnp6z3QzFut/6kLLKnlcUVJLrpB7KBfgG/RA==", + "node_modules/@storybook/builder-webpack4/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "dependencies": { - "string-width": "^4.2.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "engines": { - "node": "10.* || >= 12.*" - }, - "optionalDependencies": { - "colors": "1.4.0" + "node": ">=4" } }, - "node_modules/cli-table3/node_modules/colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "node_modules/@storybook/builder-webpack4/node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "node_modules/@storybook/builder-webpack4/node_modules/clean-css": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz", + "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", "dev": true, - "optional": true, + "dependencies": { + "source-map": "~0.6.0" + }, "engines": { - "node": ">=0.1.90" + "node": ">= 4.0" } }, - "node_modules/cli-table3/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/@storybook/builder-webpack4/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "color-name": "1.1.3" } }, - "node_modules/cli-table3/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/@storybook/builder-webpack4/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/@storybook/builder-webpack4/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, "engines": { - "node": ">=8" + "node": ">= 6" } }, - "node_modules/cli-truncate": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", - "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", + "node_modules/@storybook/builder-webpack4/node_modules/css-select": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.2.1.tgz", + "integrity": "sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==", "dev": true, "dependencies": { - "slice-ansi": "^5.0.0", - "string-width": "^5.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "boolbase": "^1.0.0", + "css-what": "^5.1.0", + "domhandler": "^4.3.0", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/cli-truncate/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "node_modules/@storybook/builder-webpack4/node_modules/css-what": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", + "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", "dev": true, "engines": { - "node": ">=12" + "node": ">= 6" }, "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/cli-truncate/node_modules/ansi-styles": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.1.0.tgz", - "integrity": "sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==", + "node_modules/@storybook/builder-webpack4/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=0.8.0" } }, - "node_modules/cli-truncate/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "node_modules/cli-truncate/node_modules/is-fullwidth-code-point": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", - "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "node_modules/@storybook/builder-webpack4/node_modules/eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", "dev": true, - "engines": { - "node": ">=12" + "dependencies": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=4.0.0" } }, - "node_modules/cli-truncate/node_modules/slice-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", - "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "node_modules/@storybook/builder-webpack4/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, "dependencies": { - "ansi-styles": "^6.0.0", - "is-fullwidth-code-point": "^4.0.0" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" + "node": ">=0.10.0" } }, - "node_modules/cli-truncate/node_modules/string-width": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.0.1.tgz", - "integrity": "sha512-5ohWO/M4//8lErlUUtrFy3b11GtNOuMOU0ysKCDXFcfXuuvUXu95akgj/i8ofmaGdN0hCqyl6uu9i8dS/mQp5g==", + "node_modules/@storybook/builder-webpack4/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "dependencies": { - "emoji-regex": "^9.2.2", - "is-fullwidth-code-point": "^4.0.0", - "strip-ansi": "^7.0.1" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=12" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cli-truncate/node_modules/strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "node_modules/@storybook/builder-webpack4/node_modules/fork-ts-checker-webpack-plugin": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz", + "integrity": "sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw==", "dev": true, "dependencies": { - "ansi-regex": "^6.0.1" + "@babel/code-frame": "^7.5.5", + "chalk": "^2.4.1", + "micromatch": "^3.1.10", + "minimatch": "^3.0.4", + "semver": "^5.6.0", + "tapable": "^1.0.0", + "worker-rpc": "^0.1.0" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "node": ">=6.11.5", + "yarn": ">=1.0.0" } }, - "node_modules/cli-width": { - "version": "2.2.1", + "node_modules/@storybook/builder-webpack4/node_modules/fork-ts-checker-webpack-plugin/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true, - "license": "ISC" + "bin": { + "semver": "bin/semver" + } }, - "node_modules/cliui": { - "version": "7.0.4", + "node_modules/@storybook/builder-webpack4/node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, - "license": "ISC", "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/cliui/node_modules/is-fullwidth-code-point": { + "node_modules/@storybook/builder-webpack4/node_modules/has-flag": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true, - "license": "MIT", "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/cliui/node_modules/string-width": { - "version": "4.2.2", + "node_modules/@storybook/builder-webpack4/node_modules/html-minifier-terser": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", + "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==", "dev": true, - "license": "MIT", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "camel-case": "^4.1.1", + "clean-css": "^4.2.3", + "commander": "^4.1.1", + "he": "^1.2.0", + "param-case": "^3.0.3", + "relateurl": "^0.2.7", + "terser": "^4.6.3" + }, + "bin": { + "html-minifier-terser": "cli.js" }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/clone-response": { - "version": "1.0.2", + "node_modules/@storybook/builder-webpack4/node_modules/html-webpack-plugin": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.5.2.tgz", + "integrity": "sha512-q5oYdzjKUIPQVjOosjgvCHQOv9Ett9CYYHlgvJeXG0qQvdSojnBq4vAdQBwn1+yGveAwHCoe/rMR86ozX3+c2A==", "dev": true, - "license": "MIT", "dependencies": { - "mimic-response": "^1.0.0" - } - }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true, + "@types/html-minifier-terser": "^5.0.0", + "@types/tapable": "^1.0.5", + "@types/webpack": "^4.41.8", + "html-minifier-terser": "^5.0.1", + "loader-utils": "^1.2.3", + "lodash": "^4.17.20", + "pretty-error": "^2.1.1", + "tapable": "^1.1.3", + "util.promisify": "1.0.0" + }, "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" + "node": ">=6.9" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/codecov": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.8.3.tgz", - "integrity": "sha512-Y8Hw+V3HgR7V71xWH2vQ9lyS358CbGCldWlJFR0JirqoGtOoas3R3/OclRTvgUYFK29mmJICDPauVKmpqbwhOA==", + "node_modules/@storybook/builder-webpack4/node_modules/html-webpack-plugin/node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", "dev": true, "dependencies": { - "argv": "0.0.2", - "ignore-walk": "3.0.4", - "js-yaml": "3.14.1", - "teeny-request": "7.1.1", - "urlgrey": "1.0.0" - }, - "bin": { - "codecov": "bin/codecov" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" }, "engines": { - "node": ">=4.0" + "node": ">=4.0.0" } }, - "node_modules/codepage": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/codepage/-/codepage-1.15.0.tgz", - "integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==", - "engines": { - "node": ">=0.8" - } + "node_modules/@storybook/builder-webpack4/node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true }, - "node_modules/collect-v8-coverage": { + "node_modules/@storybook/builder-webpack4/node_modules/is-extendable": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", - "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", - "dev": true + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/color": { + "node_modules/@storybook/builder-webpack4/node_modules/is-number": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, "dependencies": { - "color-convert": "^1.9.1", - "color-string": "^1.5.2" + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/color-convert": { - "version": "2.0.1", - "license": "MIT", + "node_modules/@storybook/builder-webpack4/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, "dependencies": { - "color-name": "~1.1.4" + "is-buffer": "^1.1.5" }, "engines": { - "node": ">=7.0.0" + "node": ">=0.10.0" } }, - "node_modules/color-name": { - "version": "1.1.4", - "license": "MIT" - }, - "node_modules/color-string": { - "version": "1.5.5", - "license": "MIT", + "node_modules/@storybook/builder-webpack4/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "node_modules/@storybook/builder-webpack4/node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", "dev": true, - "bin": { - "color-support": "bin.js" - } - }, - "node_modules/color/node_modules/color-convert": { - "version": "1.9.3", - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" + "engines": { + "node": ">=4" } }, - "node_modules/color/node_modules/color-name": { - "version": "1.1.3", - "license": "MIT" - }, - "node_modules/colorette": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", - "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==" - }, - "node_modules/colors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", + "node_modules/@storybook/builder-webpack4/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true, "engines": { - "node": ">=0.1.90" + "node": ">=0.10.0" } }, - "node_modules/colorspace": { - "version": "1.1.2", - "license": "MIT", + "node_modules/@storybook/builder-webpack4/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, "dependencies": { - "color": "3.0.x", - "text-hex": "1.0.x" + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" } }, - "node_modules/combined-stream": { - "version": "1.0.8", - "license": "MIT", + "node_modules/@storybook/builder-webpack4/node_modules/loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "dev": true, + "engines": { + "node": ">=4.3.0 <5.0.0 || >=5.10" + } + }, + "node_modules/@storybook/builder-webpack4/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, "dependencies": { - "delayed-stream": "~1.0.0" + "p-locate": "^5.0.0" }, "engines": { - "node": ">= 0.8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "engines": { - "node": ">= 12" + "node_modules/@storybook/builder-webpack4/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" } }, - "node_modules/commitizen": { - "version": "4.2.4", + "node_modules/@storybook/builder-webpack4/node_modules/memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", "dev": true, - "license": "MIT", "dependencies": { - "cachedir": "2.2.0", - "cz-conventional-changelog": "3.2.0", - "dedent": "0.7.0", - "detect-indent": "6.0.0", - "find-node-modules": "^2.1.2", - "find-root": "1.1.0", - "fs-extra": "8.1.0", - "glob": "7.1.4", - "inquirer": "6.5.2", - "is-utf8": "^0.2.1", - "lodash": "^4.17.20", - "minimist": "1.2.5", - "strip-bom": "4.0.0", - "strip-json-comments": "3.0.1" - }, - "bin": { - "commitizen": "bin/commitizen", - "cz": "bin/git-cz", - "git-cz": "bin/git-cz" - }, - "engines": { - "node": ">= 10" + "errno": "^0.1.3", + "readable-stream": "^2.0.1" } }, - "node_modules/commitizen/node_modules/ansi-styles": { - "version": "3.2.1", + "node_modules/@storybook/builder-webpack4/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dev": true, - "license": "MIT", "dependencies": { - "color-convert": "^1.9.0" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/commitizen/node_modules/chalk": { - "version": "2.4.2", + "node_modules/@storybook/builder-webpack4/node_modules/micromatch/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "dev": true, - "license": "MIT", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/commitizen/node_modules/color-convert": { - "version": "1.9.3", + "node_modules/@storybook/builder-webpack4/node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "node_modules/@storybook/builder-webpack4/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, - "license": "MIT", "dependencies": { - "color-name": "1.1.3" + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" } }, - "node_modules/commitizen/node_modules/color-name": { - "version": "1.1.3", - "dev": true, - "license": "MIT" - }, - "node_modules/commitizen/node_modules/cz-conventional-changelog": { - "version": "3.2.0", + "node_modules/@storybook/builder-webpack4/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, - "license": "MIT", "dependencies": { - "chalk": "^2.4.1", - "commitizen": "^4.0.3", - "conventional-commit-types": "^3.0.0", - "lodash.map": "^4.5.1", - "longest": "^2.0.1", - "word-wrap": "^1.0.3" + "p-limit": "^3.0.2" }, "engines": { - "node": ">= 10" + "node": ">=10" }, - "optionalDependencies": { - "@commitlint/load": ">6.1.1" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/commitizen/node_modules/escape-string-regexp": { - "version": "1.0.5", + "node_modules/@storybook/builder-webpack4/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, - "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": ">=8" } }, - "node_modules/commitizen/node_modules/has-flag": { - "version": "3.0.0", + "node_modules/@storybook/builder-webpack4/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, - "license": "MIT", + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, "engines": { - "node": ">=4" + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, - "node_modules/commitizen/node_modules/supports-color": { - "version": "5.5.0", + "node_modules/@storybook/builder-webpack4/node_modules/postcss-loader": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-4.3.0.tgz", + "integrity": "sha512-M/dSoIiNDOo8Rk0mUqoj4kpGq91gcxCfb9PoyZVdZ76/AuhxylHDYZblNE8o+EQ9AMSASeMFEKxZf5aU6wlx1Q==", "dev": true, - "license": "MIT", "dependencies": { - "has-flag": "^3.0.0" + "cosmiconfig": "^7.0.0", + "klona": "^2.0.4", + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0", + "semver": "^7.3.4" }, "engines": { - "node": ">=4" + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/common-tags": { - "version": "1.8.0", + "node_modules/@storybook/builder-webpack4/node_modules/pretty-error": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz", + "integrity": "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=4.0.0" + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^2.0.4" } }, - "node_modules/compare-versions": { - "version": "3.6.0", + "node_modules/@storybook/builder-webpack4/node_modules/renderkid": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.7.tgz", + "integrity": "sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==", "dev": true, - "license": "MIT" - }, - "node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^3.0.1" + } }, - "node_modules/compressible": { - "version": "2.0.18", - "license": "MIT", + "node_modules/@storybook/builder-webpack4/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, "dependencies": { - "mime-db": ">= 1.43.0 < 2" + "glob": "^7.1.3" }, - "engines": { - "node": ">= 0.6" + "bin": { + "rimraf": "bin.js" } }, - "node_modules/compression": { - "version": "1.7.4", - "license": "MIT", + "node_modules/@storybook/builder-webpack4/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, "dependencies": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" }, "engines": { - "node": ">= 0.8.0" + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/compression/node_modules/debug": { - "version": "2.6.9", - "license": "MIT", + "node_modules/@storybook/builder-webpack4/node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, "dependencies": { - "ms": "2.0.0" + "randombytes": "^2.1.0" } }, - "node_modules/compression/node_modules/ms": { - "version": "2.0.0", - "license": "MIT" - }, - "node_modules/concat-map": { - "version": "0.0.1", + "node_modules/@storybook/builder-webpack4/node_modules/ssri": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", "dev": true, - "license": "MIT" - }, - "node_modules/concat-stream": { - "version": "1.6.2", - "engines": [ - "node >= 0.8" - ], - "license": "MIT", "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" + "figgy-pudding": "^3.5.1" } }, - "node_modules/configstore": { - "version": "5.0.1", - "license": "BSD-2-Clause", + "node_modules/@storybook/builder-webpack4/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "dependencies": { - "dot-prop": "^5.2.0", - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "unique-string": "^2.0.0", - "write-file-atomic": "^3.0.0", - "xdg-basedir": "^4.0.0" + "ansi-regex": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/configstore/node_modules/dot-prop": { - "version": "5.3.0", - "license": "MIT", + "node_modules/@storybook/builder-webpack4/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "dependencies": { - "is-obj": "^2.0.0" + "has-flag": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/configstore/node_modules/is-obj": { - "version": "2.0.0", - "license": "MIT", + "node_modules/@storybook/builder-webpack4/node_modules/terser": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "dev": true, + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "bin": { + "terser": "bin/terser" + }, "engines": { - "node": ">=8" + "node": ">=6.0.0" } }, - "node_modules/console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "node_modules/@storybook/builder-webpack4/node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "node_modules/@storybook/builder-webpack4/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, "dependencies": { - "safe-buffer": "5.2.1" + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" }, "engines": { - "node": ">= 0.6" + "node": ">=0.10.0" } }, - "node_modules/content-disposition/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" + "node_modules/@storybook/builder-webpack4/node_modules/watchpack": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", + "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + }, + "optionalDependencies": { + "chokidar": "^3.4.1", + "watchpack-chokidar2": "^2.0.1" + } + }, + "node_modules/@storybook/builder-webpack4/node_modules/webpack": { + "version": "4.46.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", + "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.5.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.7.4", + "webpack-sources": "^1.4.1" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true }, - { - "type": "consulting", - "url": "https://feross.org/support" + "webpack-command": { + "optional": true } - ] + } }, - "node_modules/content-type": { - "version": "1.0.4", - "license": "MIT", + "node_modules/@storybook/builder-webpack4/node_modules/webpack-filter-warnings-plugin": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/webpack-filter-warnings-plugin/-/webpack-filter-warnings-plugin-1.2.1.tgz", + "integrity": "sha512-Ez6ytc9IseDMLPo0qCuNNYzgtUl8NovOqjIq4uAU8LTD4uoa1w1KpZyyzFtLTEMZpkkOkLfL9eN+KGYdk1Qtwg==", + "dev": true, "engines": { - "node": ">= 0.6" + "node": ">= 4.3 < 5.0.0 || >= 5.10" + }, + "peerDependencies": { + "webpack": "^2.0.0 || ^3.0.0 || ^4.0.0" } }, - "node_modules/conventional-changelog-atom": { - "version": "2.0.8", + "node_modules/@storybook/builder-webpack4/node_modules/webpack/node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", "dev": true, - "license": "ISC", "dependencies": { - "q": "^1.5.1" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" }, "engines": { - "node": ">=10" + "node": ">=4.0.0" } }, - "node_modules/conventional-changelog-codemirror": { - "version": "2.0.8", + "node_modules/@storybook/builder-webpack4/node_modules/webpack/node_modules/schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", "dev": true, - "license": "ISC", "dependencies": { - "q": "^1.5.1" + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" }, "engines": { - "node": ">=10" + "node": ">= 4" } }, - "node_modules/conventional-changelog-config-spec": { - "version": "2.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/conventional-changelog-conventionalcommits": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.6.1.tgz", - "integrity": "sha512-lzWJpPZhbM1R0PIzkwzGBCnAkH5RKJzJfFQZcl/D+2lsJxAwGnDKBqn/F4C1RD31GJNn8NuKWQzAZDAVXPp2Mw==", + "node_modules/@storybook/builder-webpack4/node_modules/webpack/node_modules/terser-webpack-plugin": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", + "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", "dev": true, "dependencies": { - "compare-func": "^2.0.0", - "lodash": "^4.17.15", - "q": "^1.5.1" + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" }, "engines": { - "node": ">=10" + "node": ">= 6.9.0" + }, + "peerDependencies": { + "webpack": "^4.0.0" } }, - "node_modules/conventional-changelog-conventionalcommits/node_modules/compare-func": { - "version": "2.0.0", + "node_modules/@storybook/builder-webpack4/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "node_modules/@storybook/builder-webpack4/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/@storybook/channel-postmessage": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-6.4.19.tgz", + "integrity": "sha512-E5h/itFzQ/6M08LR4kqlgqqmeO3tmavI+nUAlZrkCrotpJFNMHE2i0PQHg0TkFJrRDpYcrwD+AjUW4IwdqrisQ==", "dev": true, - "license": "MIT", "dependencies": { - "array-ify": "^1.0.0", - "dot-prop": "^5.1.0" + "@storybook/channels": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "core-js": "^3.8.2", + "global": "^4.4.0", + "qs": "^6.10.0", + "telejson": "^5.3.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/conventional-changelog-conventionalcommits/node_modules/dot-prop": { - "version": "5.3.0", + "node_modules/@storybook/channel-postmessage/node_modules/qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", "dev": true, - "license": "MIT", "dependencies": { - "is-obj": "^2.0.0" + "side-channel": "^1.0.4" }, "engines": { - "node": ">=8" + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/conventional-changelog-conventionalcommits/node_modules/is-obj": { - "version": "2.0.0", + "node_modules/@storybook/channel-websocket": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/channel-websocket/-/channel-websocket-6.4.19.tgz", + "integrity": "sha512-cXKwQjIXttfdUyZlcHORelUmJ5nUKswsnCA/qy7IRWpZjD8yQJcNk1dYC+tTHDVqFgdRT89pL0hRRB1rlaaR8Q==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "@storybook/channels": "6.4.19", + "@storybook/client-logger": "6.4.19", + "core-js": "^3.8.2", + "global": "^4.4.0", + "telejson": "^5.3.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/conventional-changelog-ember": { - "version": "2.0.9", + "node_modules/@storybook/channels": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.4.19.tgz", + "integrity": "sha512-EwyoncFvTfmIlfsy8jTfayCxo2XchPkZk/9txipugWSmc057HdklMKPLOHWP0z5hLH0IbVIKXzdNISABm36jwQ==", "dev": true, - "license": "ISC", "dependencies": { - "q": "^1.5.1" + "core-js": "^3.8.2", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" }, - "engines": { - "node": ">=10" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/conventional-changelog-eslint": { - "version": "3.0.9", + "node_modules/@storybook/client-api": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/client-api/-/client-api-6.4.19.tgz", + "integrity": "sha512-OCrT5Um3FDvZnimQKwWtwsaI+5agPwq2i8YiqlofrI/NPMKp0I7DEkCGwE5IRD1Q8BIKqHcMo5tTmfYi0AxyOg==", "dev": true, - "license": "ISC", "dependencies": { - "q": "^1.5.1" + "@storybook/addons": "6.4.19", + "@storybook/channel-postmessage": "6.4.19", + "@storybook/channels": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/store": "6.4.19", + "@types/qs": "^6.9.5", + "@types/webpack-env": "^1.16.0", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7", + "store2": "^2.12.0", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" }, - "engines": { - "node": ">=10" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" } }, - "node_modules/conventional-changelog-express": { - "version": "2.0.6", + "node_modules/@storybook/client-api/node_modules/qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", "dev": true, - "license": "ISC", "dependencies": { - "q": "^1.5.1" + "side-channel": "^1.0.4" }, "engines": { - "node": ">=10" + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/conventional-changelog-jshint": { - "version": "2.0.9", + "node_modules/@storybook/client-logger": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.4.19.tgz", + "integrity": "sha512-zmg/2wyc9W3uZrvxaW4BfHcr40J0v7AGslqYXk9H+ERLVwIvrR4NhxQFaS6uITjBENyRDxwzfU3Va634WcmdDQ==", "dev": true, - "license": "ISC", "dependencies": { - "compare-func": "^2.0.0", - "q": "^1.5.1" + "core-js": "^3.8.2", + "global": "^4.4.0" }, - "engines": { - "node": ">=10" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/conventional-changelog-jshint/node_modules/compare-func": { - "version": "2.0.0", + "node_modules/@storybook/components": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.4.19.tgz", + "integrity": "sha512-q/0V37YAJA7CNc+wSiiefeM9+3XVk8ixBNylY36QCGJgIeGQ5/79vPyUe6K4lLmsQwpmZsIq1s1Ad5+VbboeOA==", "dev": true, - "license": "MIT", "dependencies": { - "array-ify": "^1.0.0", - "dot-prop": "^5.1.0" + "@popperjs/core": "^2.6.0", + "@storybook/client-logger": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/theming": "6.4.19", + "@types/color-convert": "^2.0.0", + "@types/overlayscrollbars": "^1.12.0", + "@types/react-syntax-highlighter": "11.0.5", + "color-convert": "^2.0.1", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.21", + "markdown-to-jsx": "^7.1.3", + "memoizerific": "^1.11.3", + "overlayscrollbars": "^1.13.1", + "polished": "^4.0.5", + "prop-types": "^15.7.2", + "react-colorful": "^5.1.2", + "react-popper-tooltip": "^3.1.1", + "react-syntax-highlighter": "^13.5.3", + "react-textarea-autosize": "^8.3.0", + "regenerator-runtime": "^0.13.7", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" } }, - "node_modules/conventional-changelog-jshint/node_modules/dot-prop": { - "version": "5.3.0", + "node_modules/@storybook/core": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core/-/core-6.4.19.tgz", + "integrity": "sha512-55LOQ/h/kf1jMhjN85t/pIEdIwWEG9yV7bdwv3niVvmoypCxyyjn9/QNK0RKYAeDSUtdm6FVoJ6k5CpxWz2d8w==", "dev": true, - "license": "MIT", "dependencies": { - "is-obj": "^2.0.0" + "@storybook/core-client": "6.4.19", + "@storybook/core-server": "6.4.19" }, - "engines": { - "node": ">=8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "@storybook/builder-webpack5": "6.4.19", + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0", + "webpack": "*" + }, + "peerDependenciesMeta": { + "@storybook/builder-webpack5": { + "optional": true + }, + "typescript": { + "optional": true + } } }, - "node_modules/conventional-changelog-jshint/node_modules/is-obj": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "node_modules/@storybook/core-client": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-6.4.19.tgz", + "integrity": "sha512-rQHRZjhArPleE7/S8ZUolgzwY+hC0smSKX/3PQxO2GcebDjnJj6+iSV3h+aSMHMmTdoCQvjYw9aBpT8scuRe+A==", + "dev": true, + "dependencies": { + "@storybook/addons": "6.4.19", + "@storybook/channel-postmessage": "6.4.19", + "@storybook/channel-websocket": "6.4.19", + "@storybook/client-api": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/preview-web": "6.4.19", + "@storybook/store": "6.4.19", + "@storybook/ui": "6.4.19", + "airbnb-js-shims": "^2.2.1", + "ansi-to-html": "^0.6.11", + "core-js": "^3.8.2", + "global": "^4.4.0", + "lodash": "^4.17.21", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7", + "ts-dedent": "^2.0.0", + "unfetch": "^4.2.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0", + "webpack": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/conventional-changelog-preset-loader": { - "version": "2.3.4", + "node_modules/@storybook/core-client/node_modules/qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", "dev": true, - "license": "MIT", + "dependencies": { + "side-channel": "^1.0.4" + }, "engines": { - "node": ">=10" + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/conventional-changelog-writer": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "compare-func": "^2.0.0", - "conventional-commits-filter": "^2.0.7", - "dateformat": "^3.0.0", - "handlebars": "^4.7.6", - "json-stringify-safe": "^5.0.1", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "semver": "^6.0.0", - "split": "^1.0.0", - "through2": "^4.0.0" + "node_modules/@storybook/core-common": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.4.19.tgz", + "integrity": "sha512-X1pJJkO48DFxl6iyEemIKqRkJ7j9/cBh3BRBUr+xZHXBvnD0GKDXIocwh0PjSxSC6XSu3UCQnqtKi3PbjRl8Dg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.10", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-decorators": "^7.12.12", + "@babel/plugin-proposal-export-default-from": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.7", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.12", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/preset-env": "^7.12.11", + "@babel/preset-react": "^7.12.10", + "@babel/preset-typescript": "^7.12.7", + "@babel/register": "^7.12.1", + "@storybook/node-logger": "6.4.19", + "@storybook/semver": "^7.3.2", + "@types/node": "^14.0.10", + "@types/pretty-hrtime": "^1.0.0", + "babel-loader": "^8.0.0", + "babel-plugin-macros": "^3.0.1", + "babel-plugin-polyfill-corejs3": "^0.1.0", + "chalk": "^4.1.0", + "core-js": "^3.8.2", + "express": "^4.17.1", + "file-system-cache": "^1.0.5", + "find-up": "^5.0.0", + "fork-ts-checker-webpack-plugin": "^6.0.4", + "fs-extra": "^9.0.1", + "glob": "^7.1.6", + "handlebars": "^4.7.7", + "interpret": "^2.2.0", + "json5": "^2.1.3", + "lazy-universal-dotenv": "^3.0.1", + "picomatch": "^2.3.0", + "pkg-dir": "^5.0.0", + "pretty-hrtime": "^1.0.3", + "resolve-from": "^5.0.0", + "slash": "^3.0.0", + "telejson": "^5.3.2", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2", + "webpack": "4" }, - "bin": { - "conventional-changelog-writer": "cli.js" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" }, - "engines": { - "node": ">=10" + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/conventional-changelog-writer/node_modules/compare-func": { - "version": "2.0.0", + "node_modules/@storybook/core-common/node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz", + "integrity": "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==", "dev": true, - "license": "MIT", "dependencies": { - "array-ify": "^1.0.0", - "dot-prop": "^5.1.0" + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0-0" } }, - "node_modules/conventional-changelog-writer/node_modules/dateformat": { - "version": "3.0.3", + "node_modules/@storybook/core-common/node_modules/@types/node": { + "version": "14.18.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.12.tgz", + "integrity": "sha512-q4jlIR71hUpWTnGhXWcakgkZeHa3CCjcQcnuzU8M891BAWA2jHiziiWEPEkdS5pFsz7H9HJiy8BrK7tBRNrY7A==", + "dev": true + }, + "node_modules/@storybook/core-common/node_modules/@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", "dev": true, - "license": "MIT", - "engines": { - "node": "*" + "dependencies": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" } }, - "node_modules/conventional-changelog-writer/node_modules/dot-prop": { - "version": "5.3.0", + "node_modules/@storybook/core-common/node_modules/@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", + "dev": true + }, + "node_modules/@storybook/core-common/node_modules/@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", + "dev": true + }, + "node_modules/@storybook/core-common/node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "dev": true + }, + "node_modules/@storybook/core-common/node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", "dev": true, - "license": "MIT", "dependencies": { - "is-obj": "^2.0.0" - }, - "engines": { - "node": ">=8" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" } }, - "node_modules/conventional-changelog-writer/node_modules/find-up": { - "version": "4.1.0", + "node_modules/@storybook/core-common/node_modules/@webassemblyjs/ieee754": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", "dev": true, - "license": "MIT", "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" + "@xtuc/ieee754": "^1.2.0" } }, - "node_modules/conventional-changelog-writer/node_modules/hosted-git-info": { - "version": "4.0.2", + "node_modules/@storybook/core-common/node_modules/@webassemblyjs/leb128": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", "dev": true, - "license": "ISC", "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" + "@xtuc/long": "4.2.2" } }, - "node_modules/conventional-changelog-writer/node_modules/is-obj": { - "version": "2.0.0", + "node_modules/@storybook/core-common/node_modules/@webassemblyjs/utf8": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", + "dev": true + }, + "node_modules/@storybook/core-common/node_modules/@webassemblyjs/wasm-edit": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" } }, - "node_modules/conventional-changelog-writer/node_modules/locate-path": { - "version": "5.0.0", + "node_modules/@storybook/core-common/node_modules/@webassemblyjs/wasm-gen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", "dev": true, - "license": "MIT", "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" } }, - "node_modules/conventional-changelog-writer/node_modules/meow": { - "version": "8.1.2", + "node_modules/@storybook/core-common/node_modules/@webassemblyjs/wasm-opt": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", "dev": true, - "license": "MIT", "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" } }, - "node_modules/conventional-changelog-writer/node_modules/meow/node_modules/type-fest": { - "version": "0.18.1", + "node_modules/@storybook/core-common/node_modules/@webassemblyjs/wasm-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" } }, - "node_modules/conventional-changelog-writer/node_modules/normalize-package-data": { - "version": "3.0.2", + "node_modules/@storybook/core-common/node_modules/@webassemblyjs/wast-printer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { - "hosted-git-info": "^4.0.1", - "resolve": "^1.20.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - }, - "engines": { - "node": ">=10" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" } }, - "node_modules/conventional-changelog-writer/node_modules/normalize-package-data/node_modules/semver": { - "version": "7.3.5", + "node_modules/@storybook/core-common/node_modules/acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { - "semver": "bin/semver.js" + "acorn": "bin/acorn" }, "engines": { - "node": ">=10" + "node": ">=0.4.0" } }, - "node_modules/conventional-changelog-writer/node_modules/p-limit": { - "version": "2.3.0", + "node_modules/@storybook/core-common/node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz", + "integrity": "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==", "dev": true, - "license": "MIT", "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" + "@babel/helper-define-polyfill-provider": "^0.1.5", + "core-js-compat": "^3.8.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/conventional-changelog-writer/node_modules/p-locate": { - "version": "4.1.0", + "node_modules/@storybook/core-common/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, - "license": "MIT", "dependencies": { - "p-limit": "^2.2.0" + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/conventional-changelog-writer/node_modules/path-exists": { - "version": "4.0.0", + "node_modules/@storybook/core-common/node_modules/cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", "dev": true, - "license": "MIT", + "dependencies": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "node_modules/@storybook/core-common/node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "node_modules/@storybook/core-common/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/@storybook/core-common/node_modules/eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + }, "engines": { - "node": ">=8" + "node": ">=4.0.0" } }, - "node_modules/conventional-changelog-writer/node_modules/read-pkg": { - "version": "5.2.0", + "node_modules/@storybook/core-common/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, - "license": "MIT", "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/conventional-changelog-writer/node_modules/read-pkg-up": { - "version": "7.0.1", + "node_modules/@storybook/core-common/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, - "license": "MIT", "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/conventional-changelog-writer/node_modules/read-pkg/node_modules/hosted-git-info": { - "version": "2.8.9", - "dev": true, - "license": "ISC" - }, - "node_modules/conventional-changelog-writer/node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", + "node_modules/@storybook/core-common/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" } }, - "node_modules/conventional-changelog-writer/node_modules/read-pkg/node_modules/semver": { - "version": "5.7.1", + "node_modules/@storybook/core-common/node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/conventional-changelog-writer/node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", + "node_modules/@storybook/core-common/node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/@storybook/core-common/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, - "license": "(MIT OR CC0-1.0)", + "dependencies": { + "is-plain-object": "^2.0.4" + }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/conventional-changelog-writer/node_modules/readable-stream": { - "version": "3.6.0", + "node_modules/@storybook/core-common/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, - "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "kind-of": "^3.0.2" }, "engines": { - "node": ">= 6" + "node": ">=0.10.0" } }, - "node_modules/conventional-changelog-writer/node_modules/semver": { - "version": "6.3.0", + "node_modules/@storybook/core-common/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/conventional-changelog-writer/node_modules/through2": { - "version": "4.0.2", + "node_modules/@storybook/core-common/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, - "license": "MIT", "dependencies": { - "readable-stream": "3" + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/conventional-changelog-writer/node_modules/yargs-parser": { - "version": "20.2.7", + "node_modules/@storybook/core-common/node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", "dev": true, - "license": "ISC", "engines": { - "node": ">=10" + "node": ">=4" } }, - "node_modules/conventional-commit-types": { - "version": "3.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/conventional-commits-filter": { - "version": "2.0.7", + "node_modules/@storybook/core-common/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true, - "license": "MIT", - "dependencies": { - "lodash.ismatch": "^4.4.0", - "modify-values": "^1.0.0" - }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/conventional-commits-parser": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz", - "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==", + "node_modules/@storybook/core-common/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, "dependencies": { - "is-text-path": "^1.0.1", - "JSONStream": "^1.0.4", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "split2": "^3.0.0", - "through2": "^4.0.0" - }, - "bin": { - "conventional-commits-parser": "cli.js" + "universalify": "^2.0.0" }, - "engines": { - "node": ">=10" + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/conventional-commits-parser/node_modules/find-up": { - "version": "4.1.0", + "node_modules/@storybook/core-common/node_modules/loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": ">=4.3.0 <5.0.0 || >=5.10" } }, - "node_modules/conventional-commits-parser/node_modules/hosted-git-info": { - "version": "4.0.2", + "node_modules/@storybook/core-common/node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", "dev": true, - "license": "ISC", "dependencies": { - "lru-cache": "^6.0.0" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" }, "engines": { - "node": ">=10" + "node": ">=4.0.0" } }, - "node_modules/conventional-commits-parser/node_modules/locate-path": { - "version": "5.0.0", + "node_modules/@storybook/core-common/node_modules/loader-utils/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "dev": true, - "license": "MIT", "dependencies": { - "p-locate": "^4.1.0" + "minimist": "^1.2.0" }, - "engines": { - "node": ">=8" + "bin": { + "json5": "lib/cli.js" } }, - "node_modules/conventional-commits-parser/node_modules/meow": { - "version": "8.1.2", + "node_modules/@storybook/core-common/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, - "license": "MIT", "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" + "p-locate": "^5.0.0" }, "engines": { "node": ">=10" @@ -5655,1218 +7261,1855 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/conventional-commits-parser/node_modules/meow/node_modules/type-fest": { - "version": "0.18.1", + "node_modules/@storybook/core-common/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "yallist": "^3.0.2" } }, - "node_modules/conventional-commits-parser/node_modules/normalize-package-data": { - "version": "3.0.2", + "node_modules/@storybook/core-common/node_modules/memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", "dev": true, - "license": "BSD-2-Clause", "dependencies": { - "hosted-git-info": "^4.0.1", - "resolve": "^1.20.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - }, - "engines": { - "node": ">=10" + "errno": "^0.1.3", + "readable-stream": "^2.0.1" } }, - "node_modules/conventional-commits-parser/node_modules/p-limit": { - "version": "2.3.0", + "node_modules/@storybook/core-common/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dev": true, - "license": "MIT", "dependencies": { - "p-try": "^2.0.0" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/conventional-commits-parser/node_modules/p-locate": { - "version": "4.1.0", + "node_modules/@storybook/core-common/node_modules/micromatch/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "dev": true, - "license": "MIT", "dependencies": { - "p-limit": "^2.2.0" + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/conventional-commits-parser/node_modules/path-exists": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } + "node_modules/@storybook/core-common/node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true }, - "node_modules/conventional-commits-parser/node_modules/read-pkg": { - "version": "5.2.0", + "node_modules/@storybook/core-common/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, - "license": "MIT", "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" + "minimist": "^1.2.6" }, - "engines": { - "node": ">=8" + "bin": { + "mkdirp": "bin/cmd.js" } }, - "node_modules/conventional-commits-parser/node_modules/read-pkg-up": { - "version": "7.0.1", + "node_modules/@storybook/core-common/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, - "license": "MIT", "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" + "p-limit": "^3.0.2" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/conventional-commits-parser/node_modules/read-pkg/node_modules/hosted-git-info": { - "version": "2.8.9", + "node_modules/@storybook/core-common/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, - "license": "ISC" + "engines": { + "node": ">=8" + } }, - "node_modules/conventional-commits-parser/node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", + "node_modules/@storybook/core-common/node_modules/pkg-dir": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", + "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "find-up": "^5.0.0" + }, + "engines": { + "node": ">=10" } }, - "node_modules/conventional-commits-parser/node_modules/read-pkg/node_modules/semver": { - "version": "5.7.1", + "node_modules/@storybook/core-common/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, - "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, "bin": { - "semver": "bin/semver" + "rimraf": "bin.js" } }, - "node_modules/conventional-commits-parser/node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", + "node_modules/@storybook/core-common/node_modules/schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", "dev": true, - "license": "(MIT OR CC0-1.0)", + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + }, "engines": { - "node": ">=8" + "node": ">= 4" } }, - "node_modules/conventional-commits-parser/node_modules/readable-stream": { - "version": "3.6.0", + "node_modules/@storybook/core-common/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/conventional-commits-parser/node_modules/through2": { - "version": "4.0.2", + "node_modules/@storybook/core-common/node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", "dev": true, - "license": "MIT", "dependencies": { - "readable-stream": "3" + "randombytes": "^2.1.0" } }, - "node_modules/conventional-commits-parser/node_modules/yargs-parser": { - "version": "20.2.7", + "node_modules/@storybook/core-common/node_modules/ssri": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" + "dependencies": { + "figgy-pudding": "^3.5.1" } }, - "node_modules/conventional-recommended-bump": { - "version": "6.1.0", + "node_modules/@storybook/core-common/node_modules/terser": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", "dev": true, - "license": "MIT", "dependencies": { - "concat-stream": "^2.0.0", - "conventional-changelog-preset-loader": "^2.3.4", - "conventional-commits-filter": "^2.0.7", - "conventional-commits-parser": "^3.2.0", - "git-raw-commits": "^2.0.8", - "git-semver-tags": "^4.1.1", - "meow": "^8.0.0", - "q": "^1.5.1" + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" }, "bin": { - "conventional-recommended-bump": "cli.js" + "terser": "bin/terser" }, "engines": { - "node": ">=10" + "node": ">=6.0.0" } }, - "node_modules/conventional-recommended-bump/node_modules/concat-stream": { - "version": "2.0.0", + "node_modules/@storybook/core-common/node_modules/terser-webpack-plugin": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", + "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", "dev": true, - "engines": [ - "node >= 6.0" - ], - "license": "MIT", "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.0.2", - "typedarray": "^0.0.6" + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + }, + "engines": { + "node": ">= 6.9.0" + }, + "peerDependencies": { + "webpack": "^4.0.0" } }, - "node_modules/conventional-recommended-bump/node_modules/dargs": { - "version": "7.0.0", + "node_modules/@storybook/core-common/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", "dev": true, - "license": "MIT", + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/conventional-recommended-bump/node_modules/find-up": { - "version": "4.1.0", + "node_modules/@storybook/core-common/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": ">= 10.0.0" } }, - "node_modules/conventional-recommended-bump/node_modules/git-raw-commits": { - "version": "2.0.10", + "node_modules/@storybook/core-common/node_modules/watchpack": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", + "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", "dev": true, - "license": "MIT", "dependencies": { - "dargs": "^7.0.0", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "split2": "^3.0.0", - "through2": "^4.0.0" + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + }, + "optionalDependencies": { + "chokidar": "^3.4.1", + "watchpack-chokidar2": "^2.0.1" + } + }, + "node_modules/@storybook/core-common/node_modules/webpack": { + "version": "4.46.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", + "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.5.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.7.4", + "webpack-sources": "^1.4.1" }, "bin": { - "git-raw-commits": "cli.js" + "webpack": "bin/webpack.js" }, "engines": { - "node": ">=10" + "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + }, + "webpack-command": { + "optional": true + } } }, - "node_modules/conventional-recommended-bump/node_modules/git-semver-tags": { - "version": "4.1.1", + "node_modules/@storybook/core-common/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "node_modules/@storybook/core-common/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/@storybook/core-events": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.4.19.tgz", + "integrity": "sha512-KICzUw6XVQUJzFSCXfvhfHAuyhn4Q5J4IZEfuZkcGJS4ODkrO6tmpdYE5Cfr+so95Nfp0ErWiLUuodBsW9/rtA==", "dev": true, - "license": "MIT", "dependencies": { - "meow": "^8.0.0", - "semver": "^6.0.0" + "core-js": "^3.8.2" }, - "bin": { - "git-semver-tags": "cli.js" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/core-server": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-6.4.19.tgz", + "integrity": "sha512-bKsUB9f7hl5ya2JXxpIrErmbDQjoH39FVbzYZWjMo4t/b7+Xyi6vYadwyWcqlpUQmis09ZaSMv8L/Tw0TuwLAA==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "^0.5.3", + "@storybook/builder-webpack4": "6.4.19", + "@storybook/core-client": "6.4.19", + "@storybook/core-common": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/csf-tools": "6.4.19", + "@storybook/manager-webpack4": "6.4.19", + "@storybook/node-logger": "6.4.19", + "@storybook/semver": "^7.3.2", + "@storybook/store": "6.4.19", + "@types/node": "^14.0.10", + "@types/node-fetch": "^2.5.7", + "@types/pretty-hrtime": "^1.0.0", + "@types/webpack": "^4.41.26", + "better-opn": "^2.1.1", + "boxen": "^5.1.2", + "chalk": "^4.1.0", + "cli-table3": "^0.6.1", + "commander": "^6.2.1", + "compression": "^1.7.4", + "core-js": "^3.8.2", + "cpy": "^8.1.2", + "detect-port": "^1.3.0", + "express": "^4.17.1", + "file-system-cache": "^1.0.5", + "fs-extra": "^9.0.1", + "globby": "^11.0.2", + "ip": "^1.1.5", + "lodash": "^4.17.21", + "node-fetch": "^2.6.1", + "pretty-hrtime": "^1.0.3", + "prompts": "^2.4.0", + "regenerator-runtime": "^0.13.7", + "serve-favicon": "^2.5.0", + "slash": "^3.0.0", + "telejson": "^5.3.3", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2", + "watchpack": "^2.2.0", + "webpack": "4", + "ws": "^8.2.3" }, - "engines": { - "node": ">=10" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "@storybook/builder-webpack5": "6.4.19", + "@storybook/manager-webpack5": "6.4.19", + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + }, + "peerDependenciesMeta": { + "@storybook/builder-webpack5": { + "optional": true + }, + "@storybook/manager-webpack5": { + "optional": true + }, + "typescript": { + "optional": true + } } }, - "node_modules/conventional-recommended-bump/node_modules/hosted-git-info": { - "version": "4.0.2", + "node_modules/@storybook/core-server/node_modules/@types/node": { + "version": "14.18.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.12.tgz", + "integrity": "sha512-q4jlIR71hUpWTnGhXWcakgkZeHa3CCjcQcnuzU8M891BAWA2jHiziiWEPEkdS5pFsz7H9HJiy8BrK7tBRNrY7A==", + "dev": true + }, + "node_modules/@storybook/core-server/node_modules/@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", "dev": true, - "license": "ISC", "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" } }, - "node_modules/conventional-recommended-bump/node_modules/locate-path": { - "version": "5.0.0", + "node_modules/@storybook/core-server/node_modules/@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", + "dev": true + }, + "node_modules/@storybook/core-server/node_modules/@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", + "dev": true + }, + "node_modules/@storybook/core-server/node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "dev": true + }, + "node_modules/@storybook/core-server/node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", "dev": true, - "license": "MIT", "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" } }, - "node_modules/conventional-recommended-bump/node_modules/meow": { - "version": "8.1.2", + "node_modules/@storybook/core-server/node_modules/@webassemblyjs/ieee754": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", "dev": true, - "license": "MIT", "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@xtuc/ieee754": "^1.2.0" } }, - "node_modules/conventional-recommended-bump/node_modules/meow/node_modules/type-fest": { - "version": "0.18.1", + "node_modules/@storybook/core-server/node_modules/@webassemblyjs/leb128": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "@xtuc/long": "4.2.2" } }, - "node_modules/conventional-recommended-bump/node_modules/normalize-package-data": { - "version": "3.0.2", + "node_modules/@storybook/core-server/node_modules/@webassemblyjs/utf8": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", + "dev": true + }, + "node_modules/@storybook/core-server/node_modules/@webassemblyjs/wasm-edit": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { - "hosted-git-info": "^4.0.1", - "resolve": "^1.20.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - }, - "engines": { - "node": ">=10" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" } }, - "node_modules/conventional-recommended-bump/node_modules/normalize-package-data/node_modules/semver": { - "version": "7.3.5", + "node_modules/@storybook/core-server/node_modules/@webassemblyjs/wasm-gen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", "dev": true, - "license": "ISC", "dependencies": { - "lru-cache": "^6.0.0" - }, + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "node_modules/@storybook/core-server/node_modules/@webassemblyjs/wasm-opt": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" + } + }, + "node_modules/@storybook/core-server/node_modules/@webassemblyjs/wasm-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "node_modules/@storybook/core-server/node_modules/@webassemblyjs/wast-printer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@storybook/core-server/node_modules/acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true, "bin": { - "semver": "bin/semver.js" + "acorn": "bin/acorn" }, "engines": { - "node": ">=10" + "node": ">=0.4.0" } }, - "node_modules/conventional-recommended-bump/node_modules/p-limit": { - "version": "2.3.0", + "node_modules/@storybook/core-server/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, - "license": "MIT", "dependencies": { - "p-try": "^2.0.0" + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/conventional-recommended-bump/node_modules/p-locate": { - "version": "4.1.0", + "node_modules/@storybook/core-server/node_modules/cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", "dev": true, - "license": "MIT", "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" } }, - "node_modules/conventional-recommended-bump/node_modules/path-exists": { - "version": "4.0.0", + "node_modules/@storybook/core-server/node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "node_modules/@storybook/core-server/node_modules/commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", "dev": true, - "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 6" } }, - "node_modules/conventional-recommended-bump/node_modules/read-pkg": { - "version": "5.2.0", + "node_modules/@storybook/core-server/node_modules/eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", "dev": true, - "license": "MIT", "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" }, "engines": { - "node": ">=8" + "node": ">=4.0.0" } }, - "node_modules/conventional-recommended-bump/node_modules/read-pkg-up": { - "version": "7.0.1", + "node_modules/@storybook/core-server/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, - "license": "MIT", "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/conventional-recommended-bump/node_modules/read-pkg/node_modules/hosted-git-info": { - "version": "2.8.9", + "node_modules/@storybook/core-server/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, - "license": "ISC" + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } }, - "node_modules/conventional-recommended-bump/node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", + "node_modules/@storybook/core-server/node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/@storybook/core-server/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/conventional-recommended-bump/node_modules/read-pkg/node_modules/semver": { - "version": "5.7.1", + "node_modules/@storybook/core-server/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/conventional-recommended-bump/node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", + "node_modules/@storybook/core-server/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, - "license": "(MIT OR CC0-1.0)", + "dependencies": { + "is-buffer": "^1.1.5" + }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/conventional-recommended-bump/node_modules/readable-stream": { - "version": "3.6.0", + "node_modules/@storybook/core-server/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, - "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "isobject": "^3.0.1" }, "engines": { - "node": ">= 6" + "node": ">=0.10.0" } }, - "node_modules/conventional-recommended-bump/node_modules/semver": { - "version": "6.3.0", + "node_modules/@storybook/core-server/node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "engines": { + "node": ">=4" } }, - "node_modules/conventional-recommended-bump/node_modules/through2": { - "version": "4.0.2", + "node_modules/@storybook/core-server/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true, - "license": "MIT", - "dependencies": { - "readable-stream": "3" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/conventional-recommended-bump/node_modules/yargs-parser": { - "version": "20.2.7", + "node_modules/@storybook/core-server/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" } }, - "node_modules/convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "node_modules/@storybook/core-server/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, "dependencies": { - "safe-buffer": "~5.1.1" + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/cookie": { - "version": "0.4.1", - "license": "MIT", + "node_modules/@storybook/core-server/node_modules/loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "dev": true, "engines": { - "node": ">= 0.6" + "node": ">=4.3.0 <5.0.0 || >=5.10" } }, - "node_modules/cookie-parser": { - "version": "1.4.6", - "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz", - "integrity": "sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==", + "node_modules/@storybook/core-server/node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, "dependencies": { - "cookie": "0.4.1", - "cookie-signature": "1.0.6" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" }, "engines": { - "node": ">= 0.8.0" + "node": ">=4.0.0" } }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "license": "MIT" - }, - "node_modules/cookiejar": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.3.tgz", - "integrity": "sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ==" + "node_modules/@storybook/core-server/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } }, - "node_modules/core-util-is": { - "version": "1.0.2", - "license": "MIT" + "node_modules/@storybook/core-server/node_modules/memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "dependencies": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } }, - "node_modules/cors": { - "version": "2.8.5", - "license": "MIT", + "node_modules/@storybook/core-server/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, "dependencies": { - "object-assign": "^4", - "vary": "^1" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" }, "engines": { - "node": ">= 0.10" + "node": ">=0.10.0" } }, - "node_modules/cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "node_modules/@storybook/core-server/node_modules/micromatch/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "dev": true, "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/crc-32": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.1.tgz", - "integrity": "sha512-Dn/xm/1vFFgs3nfrpEVScHoIslO9NZRITWGz/1E/St6u4xw99vfZzVkW0OSnzx2h9egej9xwMCEut6sqwokM/w==", + "node_modules/@storybook/core-server/node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "node_modules/@storybook/core-server/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, "dependencies": { - "exit-on-epipe": "~1.0.1", - "printj": "~1.3.1" + "minimist": "^1.2.6" }, "bin": { - "crc32": "bin/crc32.njs" - }, - "engines": { - "node": ">=0.8" + "mkdirp": "bin/cmd.js" } }, - "node_modules/crc-32/node_modules/printj": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/printj/-/printj-1.3.1.tgz", - "integrity": "sha512-GA3TdL8szPK4AQ2YnOe/b+Y1jUFwmmGMMK/qbY7VcE3Z7FU8JstbKiKRzO6CIiAKPhTO8m01NoQ0V5f3jc4OGg==", + "node_modules/@storybook/core-server/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, "bin": { - "printj": "bin/printj.njs" + "rimraf": "bin.js" + } + }, + "node_modules/@storybook/core-server/node_modules/schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" }, "engines": { - "node": ">=0.8" + "node": ">= 4" } }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" + "node_modules/@storybook/core-server/node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } }, - "node_modules/cron": { - "version": "1.8.2", - "license": "MIT", + "node_modules/@storybook/core-server/node_modules/ssri": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", + "dev": true, "dependencies": { - "moment-timezone": "^0.5.x" + "figgy-pudding": "^3.5.1" } }, - "node_modules/cross-env": { - "version": "7.0.3", - "license": "MIT", + "node_modules/@storybook/core-server/node_modules/terser": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "dev": true, "dependencies": { - "cross-spawn": "^7.0.1" + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" }, "bin": { - "cross-env": "src/bin/cross-env.js", - "cross-env-shell": "src/bin/cross-env-shell.js" + "terser": "bin/terser" }, "engines": { - "node": ">=10.14", - "npm": ">=6", - "yarn": ">=1" + "node": ">=6.0.0" } }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "license": "MIT", + "node_modules/@storybook/core-server/node_modules/terser-webpack-plugin": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", + "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", + "dev": true, "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" }, "engines": { - "node": ">= 8" - } - }, - "node_modules/crypto-random-string": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-3.3.1.tgz", - "integrity": "sha512-5j88ECEn6h17UePrLi6pn1JcLtAiANa3KExyr9y9Z5vo2mv56Gh3I4Aja/B9P9uyMwyxNHAHWv+nE72f30T5Dg==", - "dependencies": { - "type-fest": "^0.8.1" + "node": ">= 6.9.0" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "webpack": "^4.0.0" } }, - "node_modules/cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "node_modules/@storybook/core-server/node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, - "node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "node_modules/@storybook/core-server/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", "dev": true, "dependencies": { - "cssom": "~0.3.6" + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - }, - "node_modules/currently-unhandled": { - "version": "0.4.1", + "node_modules/@storybook/core-server/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true, - "license": "MIT", - "dependencies": { - "array-find-index": "^1.0.1" + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@storybook/core-server/node_modules/webpack": { + "version": "4.46.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", + "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.5.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.7.4", + "webpack-sources": "^1.4.1" + }, + "bin": { + "webpack": "bin/webpack.js" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + }, + "webpack-command": { + "optional": true + } } }, - "node_modules/cz-conventional-changelog": { - "version": "3.3.0", + "node_modules/@storybook/core-server/node_modules/webpack/node_modules/watchpack": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", + "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", "dev": true, - "license": "MIT", "dependencies": { - "chalk": "^2.4.1", - "commitizen": "^4.0.3", - "conventional-commit-types": "^3.0.0", - "lodash.map": "^4.5.1", - "longest": "^2.0.1", - "word-wrap": "^1.0.3" + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" }, + "optionalDependencies": { + "chokidar": "^3.4.1", + "watchpack-chokidar2": "^2.0.1" + } + }, + "node_modules/@storybook/core-server/node_modules/ws": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "dev": true, "engines": { - "node": ">= 10" + "node": ">=10.0.0" }, - "optionalDependencies": { - "@commitlint/load": ">6.1.1" + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, - "node_modules/cz-conventional-changelog/node_modules/ansi-styles": { - "version": "3.2.1", + "node_modules/@storybook/core-server/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "node_modules/@storybook/core-server/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/@storybook/csf": { + "version": "0.0.2--canary.87bc651.0", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.2--canary.87bc651.0.tgz", + "integrity": "sha512-ajk1Uxa+rBpFQHKrCcTmJyQBXZ5slfwHVEaKlkuFaW77it8RgbPJp/ccna3sgoi8oZ7FkkOyvv1Ve4SmwFqRqw==", "dev": true, - "license": "MIT", "dependencies": { - "color-convert": "^1.9.0" + "lodash": "^4.17.15" + } + }, + "node_modules/@storybook/csf-tools": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-6.4.19.tgz", + "integrity": "sha512-gf/zRhGoAVsFwSyV2tc+jeJfZQkxF6QsaZgbUSe24/IUvGFCT/PS/jZq1qy7dECAwrTOfykgu8juyBtj6WhWyw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.10", + "@babel/generator": "^7.12.11", + "@babel/parser": "^7.12.11", + "@babel/plugin-transform-react-jsx": "^7.12.12", + "@babel/preset-env": "^7.12.11", + "@babel/traverse": "^7.12.11", + "@babel/types": "^7.12.11", + "@mdx-js/mdx": "^1.6.22", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "core-js": "^3.8.2", + "fs-extra": "^9.0.1", + "global": "^4.4.0", + "js-string-escape": "^1.0.1", + "lodash": "^4.17.21", + "prettier": ">=2.2.1 <=2.3.0", + "regenerator-runtime": "^0.13.7", + "ts-dedent": "^2.0.0" }, - "engines": { - "node": ">=4" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/cz-conventional-changelog/node_modules/chalk": { - "version": "2.4.2", + "node_modules/@storybook/csf-tools/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, - "license": "MIT", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": ">=4" + "node": ">=10" } }, - "node_modules/cz-conventional-changelog/node_modules/color-convert": { - "version": "1.9.3", + "node_modules/@storybook/csf-tools/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, - "license": "MIT", "dependencies": { - "color-name": "1.1.3" + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/cz-conventional-changelog/node_modules/color-name": { - "version": "1.1.3", + "node_modules/@storybook/csf-tools/node_modules/prettier": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.0.tgz", + "integrity": "sha512-kXtO4s0Lz/DW/IJ9QdWhAf7/NmPWQXkFr/r/WkR3vyI+0v8amTDxiaQSLzs8NBlytfLWX/7uQUMIW677yLKl4w==", "dev": true, - "license": "MIT" + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + } }, - "node_modules/cz-conventional-changelog/node_modules/escape-string-regexp": { - "version": "1.0.5", + "node_modules/@storybook/csf-tools/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true, - "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": ">= 10.0.0" } }, - "node_modules/cz-conventional-changelog/node_modules/has-flag": { - "version": "3.0.0", + "node_modules/@storybook/manager-webpack4": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/manager-webpack4/-/manager-webpack4-6.4.19.tgz", + "integrity": "sha512-R8ugZjTYqXvlc6gDOcw909L65sIleOmIJLZR+N6/H85MivGXHu39jOwONqB7tVACufRty4FNecn8tEiQL2SAKA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.10", + "@babel/plugin-transform-template-literals": "^7.12.1", + "@babel/preset-react": "^7.12.10", + "@storybook/addons": "6.4.19", + "@storybook/core-client": "6.4.19", + "@storybook/core-common": "6.4.19", + "@storybook/node-logger": "6.4.19", + "@storybook/theming": "6.4.19", + "@storybook/ui": "6.4.19", + "@types/node": "^14.0.10", + "@types/webpack": "^4.41.26", + "babel-loader": "^8.0.0", + "case-sensitive-paths-webpack-plugin": "^2.3.0", + "chalk": "^4.1.0", + "core-js": "^3.8.2", + "css-loader": "^3.6.0", + "express": "^4.17.1", + "file-loader": "^6.2.0", + "file-system-cache": "^1.0.5", + "find-up": "^5.0.0", + "fs-extra": "^9.0.1", + "html-webpack-plugin": "^4.0.0", + "node-fetch": "^2.6.1", + "pnp-webpack-plugin": "1.6.4", + "read-pkg-up": "^7.0.1", + "regenerator-runtime": "^0.13.7", + "resolve-from": "^5.0.0", + "style-loader": "^1.3.0", + "telejson": "^5.3.2", + "terser-webpack-plugin": "^4.2.3", + "ts-dedent": "^2.0.0", + "url-loader": "^4.1.1", + "util-deprecate": "^1.0.2", + "webpack": "4", + "webpack-dev-middleware": "^3.7.3", + "webpack-virtual-modules": "^0.2.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@storybook/manager-webpack4/node_modules/@types/html-minifier-terser": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.1.2.tgz", + "integrity": "sha512-h4lTMgMJctJybDp8CQrxTUiiYmedihHWkjnF/8Pxseu2S6Nlfcy8kwboQ8yejh456rP2yWoEVm1sS/FVsfM48w==", + "dev": true + }, + "node_modules/@storybook/manager-webpack4/node_modules/@types/node": { + "version": "14.18.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.12.tgz", + "integrity": "sha512-q4jlIR71hUpWTnGhXWcakgkZeHa3CCjcQcnuzU8M891BAWA2jHiziiWEPEkdS5pFsz7H9HJiy8BrK7tBRNrY7A==", + "dev": true + }, + "node_modules/@storybook/manager-webpack4/node_modules/@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" + "dependencies": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" } }, - "node_modules/cz-conventional-changelog/node_modules/supports-color": { - "version": "5.5.0", + "node_modules/@storybook/manager-webpack4/node_modules/@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", + "dev": true + }, + "node_modules/@storybook/manager-webpack4/node_modules/@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", + "dev": true + }, + "node_modules/@storybook/manager-webpack4/node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "dev": true + }, + "node_modules/@storybook/manager-webpack4/node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", "dev": true, - "license": "MIT", "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" } }, - "node_modules/data-uri-to-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz", - "integrity": "sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==", - "engines": { - "node": ">= 6" + "node_modules/@storybook/manager-webpack4/node_modules/@webassemblyjs/ieee754": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" } }, - "node_modules/data-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "node_modules/@storybook/manager-webpack4/node_modules/@webassemblyjs/leb128": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", "dev": true, "dependencies": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" - }, - "engines": { - "node": ">=10" + "@xtuc/long": "4.2.2" } }, - "node_modules/date-and-time": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/date-and-time/-/date-and-time-2.1.2.tgz", - "integrity": "sha512-YlQUtuqYGPR58I7jzx4TIjknN9wCKjwewiylIp+P4xMuO23mlZje3Qe9gYCKp/6ncbeNpU8ZnPdhQNZnVphveQ==" + "node_modules/@storybook/manager-webpack4/node_modules/@webassemblyjs/utf8": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", + "dev": true }, - "node_modules/dateformat": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", - "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", - "engines": { - "node": "*" + "node_modules/@storybook/manager-webpack4/node_modules/@webassemblyjs/wasm-edit": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" } }, - "node_modules/db-errors": { - "version": "0.2.3", - "license": "MIT" + "node_modules/@storybook/manager-webpack4/node_modules/@webassemblyjs/wasm-gen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } }, - "node_modules/debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "node_modules/@storybook/manager-webpack4/node_modules/@webassemblyjs/wasm-opt": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", + "dev": true, "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" } }, - "node_modules/decamelize": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-5.0.1.tgz", - "integrity": "sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node_modules/@storybook/manager-webpack4/node_modules/@webassemblyjs/wasm-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" } }, - "node_modules/decamelize-keys": { - "version": "1.1.0", + "node_modules/@storybook/manager-webpack4/node_modules/@webassemblyjs/wast-printer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", "dev": true, - "license": "MIT", "dependencies": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@storybook/manager-webpack4/node_modules/acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true, + "bin": { + "acorn": "bin/acorn" }, "engines": { - "node": ">=0.10.0" + "node": ">=0.4.0" } }, - "node_modules/decamelize-keys/node_modules/decamelize": { - "version": "1.2.0", + "node_modules/@storybook/manager-webpack4/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/decamelize-keys/node_modules/map-obj": { - "version": "1.0.1", + "node_modules/@storybook/manager-webpack4/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, - "license": "MIT", + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, "engines": { "node": ">=0.10.0" } }, - "node_modules/decimal.js": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", - "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", + "node_modules/@storybook/manager-webpack4/node_modules/cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dev": true, + "dependencies": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "node_modules/@storybook/manager-webpack4/node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", "dev": true }, - "node_modules/decompress-response": { - "version": "3.3.0", + "node_modules/@storybook/manager-webpack4/node_modules/clean-css": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz", + "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", "dev": true, - "license": "MIT", "dependencies": { - "mimic-response": "^1.0.0" + "source-map": "~0.6.0" }, "engines": { - "node": ">=4" + "node": ">= 4.0" } }, - "node_modules/dedent": { - "version": "0.7.0", - "dev": true, - "license": "MIT" - }, - "node_modules/deep-extend": { - "version": "0.6.0", + "node_modules/@storybook/manager-webpack4/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", "dev": true, - "license": "MIT", "engines": { - "node": ">=4.0.0" + "node": ">= 6" } }, - "node_modules/deep-is": { - "version": "0.1.3", - "license": "MIT" - }, - "node_modules/deepmerge": { - "version": "4.2.2", - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "node_modules/@storybook/manager-webpack4/node_modules/css-select": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.2.1.tgz", + "integrity": "sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^5.1.0", + "domhandler": "^4.3.0", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/defer-to-connect": { - "version": "1.1.3", + "node_modules/@storybook/manager-webpack4/node_modules/css-what": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", + "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", "dev": true, - "license": "MIT" + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } }, - "node_modules/define-properties": { - "version": "1.1.3", + "node_modules/@storybook/manager-webpack4/node_modules/eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", "dev": true, - "license": "MIT", "dependencies": { - "object-keys": "^1.0.12" + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" }, "engines": { - "node": ">= 0.4" + "node": ">=4.0.0" } }, - "node_modules/degenerator": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-3.0.2.tgz", - "integrity": "sha512-c0mef3SNQo56t6urUU6tdQAs+ThoD0o9B9MJ8HEt7NQcGEILCRFqQb7ZbP9JAv+QF1Ky5plydhMR/IrqWDm+TQ==", + "node_modules/@storybook/manager-webpack4/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, "dependencies": { - "ast-types": "^0.13.2", - "escodegen": "^1.8.1", - "esprima": "^4.0.0", - "vm2": "^3.9.8" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" }, "engines": { - "node": ">= 6" + "node": ">=0.10.0" } }, - "node_modules/degenerator/node_modules/escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "node_modules/@storybook/manager-webpack4/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=4.0" + "node": ">=10" }, - "optionalDependencies": { - "source-map": "~0.6.1" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/degenerator/node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "node_modules/@storybook/manager-webpack4/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">=10" } }, - "node_modules/degenerator/node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "node_modules/@storybook/manager-webpack4/node_modules/html-minifier-terser": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", + "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==", + "dev": true, "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" + "camel-case": "^4.1.1", + "clean-css": "^4.2.3", + "commander": "^4.1.1", + "he": "^1.2.0", + "param-case": "^3.0.3", + "relateurl": "^0.2.7", + "terser": "^4.6.3" + }, + "bin": { + "html-minifier-terser": "cli.js" }, "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/degenerator/node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "engines": { - "node": ">= 0.8.0" + "node": ">=6" } }, - "node_modules/degenerator/node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "node_modules/@storybook/manager-webpack4/node_modules/html-webpack-plugin": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.5.2.tgz", + "integrity": "sha512-q5oYdzjKUIPQVjOosjgvCHQOv9Ett9CYYHlgvJeXG0qQvdSojnBq4vAdQBwn1+yGveAwHCoe/rMR86ozX3+c2A==", + "dev": true, "dependencies": { - "prelude-ls": "~1.1.2" + "@types/html-minifier-terser": "^5.0.0", + "@types/tapable": "^1.0.5", + "@types/webpack": "^4.41.8", + "html-minifier-terser": "^5.0.1", + "loader-utils": "^1.2.3", + "lodash": "^4.17.20", + "pretty-error": "^2.1.1", + "tapable": "^1.1.3", + "util.promisify": "1.0.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">=6.9" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/del": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", - "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", + "node_modules/@storybook/manager-webpack4/node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/@storybook/manager-webpack4/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, "dependencies": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" + "is-plain-object": "^2.0.4" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "license": "MIT", + "node_modules/@storybook/manager-webpack4/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, "engines": { - "node": ">=0.4.0" + "node": ">=0.10.0" } }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "dev": true - }, - "node_modules/depd": { - "version": "1.1.2", - "license": "MIT", + "node_modules/@storybook/manager-webpack4/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, "engines": { - "node": ">= 0.6" + "node": ">=0.10.0" } }, - "node_modules/deprecation": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", - "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", - "dev": true - }, - "node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" - }, - "node_modules/detect-file": { - "version": "1.0.0", + "node_modules/@storybook/manager-webpack4/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, - "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, "engines": { "node": ">=0.10.0" } }, - "node_modules/detect-indent": { - "version": "6.0.0", + "node_modules/@storybook/manager-webpack4/node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", "dev": true, - "license": "MIT", "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/detect-newline": { - "version": "3.1.0", + "node_modules/@storybook/manager-webpack4/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true, - "license": "MIT", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/dezalgo": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz", - "integrity": "sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=", + "node_modules/@storybook/manager-webpack4/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "dev": true, "dependencies": { - "asap": "^2.0.0", - "wrappy": "1" + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" } }, - "node_modules/dicer": { - "version": "0.3.0", + "node_modules/@storybook/manager-webpack4/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, "dependencies": { - "streamsearch": "0.1.2" + "universalify": "^2.0.0" }, - "engines": { - "node": ">=4.5.0" + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "node_modules/@storybook/manager-webpack4/node_modules/loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "dev": true, "engines": { - "node": ">=0.3.1" + "node": ">=4.3.0 <5.0.0 || >=5.10" } }, - "node_modules/diff-match-patch": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.5.tgz", - "integrity": "sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==" - }, - "node_modules/diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "node_modules/@storybook/manager-webpack4/node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=4.0.0" } }, - "node_modules/dir-glob": { - "version": "3.0.1", - "license": "MIT", + "node_modules/@storybook/manager-webpack4/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, "dependencies": { - "path-type": "^4.0.0" + "p-locate": "^5.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/discontinuous-range": { - "version": "1.0.0", - "license": "MIT" + "node_modules/@storybook/manager-webpack4/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } }, - "node_modules/dlv": { - "version": "1.1.3", + "node_modules/@storybook/manager-webpack4/node_modules/memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", "dev": true, - "license": "MIT" + "dependencies": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } }, - "node_modules/doctrine": { - "version": "3.0.0", + "node_modules/@storybook/manager-webpack4/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dev": true, - "license": "Apache-2.0", "dependencies": { - "esutils": "^2.0.2" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" }, "engines": { - "node": ">=6.0.0" + "node": ">=0.10.0" } }, - "node_modules/dom-serializer": { - "version": "1.3.2", - "license": "MIT", + "node_modules/@storybook/manager-webpack4/node_modules/micromatch/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/domelementtype": { - "version": "2.2.0", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "BSD-2-Clause" + "node_modules/@storybook/manager-webpack4/node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true }, - "node_modules/domexception": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", - "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "node_modules/@storybook/manager-webpack4/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, "dependencies": { - "webidl-conversions": "^5.0.0" + "minimist": "^1.2.6" }, - "engines": { - "node": ">=8" + "bin": { + "mkdirp": "bin/cmd.js" } }, - "node_modules/domexception/node_modules/webidl-conversions": { + "node_modules/@storybook/manager-webpack4/node_modules/p-locate": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/domhandler": { - "version": "4.2.0", - "license": "BSD-2-Clause", "dependencies": { - "domelementtype": "^2.2.0" + "p-limit": "^3.0.2" }, "engines": { - "node": ">= 4" + "node": ">=10" }, "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/domutils": { - "version": "2.6.0", - "license": "BSD-2-Clause", + "node_modules/@storybook/manager-webpack4/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@storybook/manager-webpack4/node_modules/pretty-error": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz", + "integrity": "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==", + "dev": true, "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" + "lodash": "^4.17.20", + "renderkid": "^2.0.4" } }, - "node_modules/dotenv": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.0.tgz", - "integrity": "sha512-qD9WU0MPM4SWLPJy/r2Be+2WgQj8plChsyrCNQzW/0WjvcJQiKQJ9mH3ZgB3fxbUUxgc/11ZJ0Fi5KiimWGz2Q==", + "node_modules/@storybook/manager-webpack4/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, "engines": { - "node": ">=12" + "node": ">=8" } }, - "node_modules/dotgitignore": { - "version": "2.1.0", + "node_modules/@storybook/manager-webpack4/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, - "license": "ISC", "dependencies": { - "find-up": "^3.0.0", - "minimatch": "^3.0.4" + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" }, "engines": { - "node": ">=6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/dotgitignore/node_modules/find-up": { - "version": "3.0.0", + "node_modules/@storybook/manager-webpack4/node_modules/read-pkg-up/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, - "license": "MIT", "dependencies": { - "locate-path": "^3.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/dotgitignore/node_modules/locate-path": { - "version": "3.0.0", + "node_modules/@storybook/manager-webpack4/node_modules/read-pkg-up/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, - "license": "MIT", "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "p-locate": "^4.1.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/dotgitignore/node_modules/p-limit": { + "node_modules/@storybook/manager-webpack4/node_modules/read-pkg-up/node_modules/p-limit": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, - "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -6877,886 +9120,1181 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/dotgitignore/node_modules/p-locate": { - "version": "3.0.0", + "node_modules/@storybook/manager-webpack4/node_modules/read-pkg-up/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, - "license": "MIT", "dependencies": { - "p-limit": "^2.0.0" + "p-limit": "^2.2.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "node_modules/@storybook/manager-webpack4/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", "dev": true, - "dependencies": { - "readable-stream": "^2.0.2" + "engines": { + "node": ">=8" } }, - "node_modules/duplexer3": { - "version": "0.1.4", + "node_modules/@storybook/manager-webpack4/node_modules/renderkid": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.7.tgz", + "integrity": "sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==", "dev": true, - "license": "BSD-3-Clause" + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^3.0.1" + } }, - "node_modules/duplexify": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz", - "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==", + "node_modules/@storybook/manager-webpack4/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, "dependencies": { - "end-of-stream": "^1.4.1", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1", - "stream-shift": "^1.0.0" + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" } }, - "node_modules/duplexify/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "node_modules/@storybook/manager-webpack4/node_modules/schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" }, "engines": { - "node": ">= 6" + "node": ">= 4" } }, - "node_modules/ecdsa-sig-formatter": { - "version": "1.0.11", - "license": "Apache-2.0", + "node_modules/@storybook/manager-webpack4/node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, "dependencies": { - "safe-buffer": "^5.0.1" + "randombytes": "^2.1.0" } }, - "node_modules/ee-first": { - "version": "1.1.1", - "license": "MIT" - }, - "node_modules/electron-to-chromium": { - "version": "1.3.864", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.864.tgz", - "integrity": "sha512-v4rbad8GO6/yVI92WOeU9Wgxc4NA0n4f6P1FvZTY+jyY7JHEhw3bduYu60v3Q1h81Cg6eo4ApZrFPuycwd5hGw==", - "dev": true + "node_modules/@storybook/manager-webpack4/node_modules/ssri": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", + "dev": true, + "dependencies": { + "figgy-pudding": "^3.5.1" + } }, - "node_modules/email-regex": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/email-regex/-/email-regex-4.0.0.tgz", - "integrity": "sha512-OxR2NqoYS3ZikqOkju2krRTyxngwjJ5Wh4yalpTqbBnUOr+LLwwjY2x5Sksruw6TieyQDswE5Pc83Eh6RQj3GA==", + "node_modules/@storybook/manager-webpack4/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/emittery": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", - "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", + "node_modules/@storybook/manager-webpack4/node_modules/terser": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", "dev": true, - "engines": { - "node": ">=10" + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=6.0.0" } }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "node_modules/@storybook/manager-webpack4/node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, - "node_modules/enabled": { - "version": "2.0.0", - "license": "MIT" + "node_modules/@storybook/manager-webpack4/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/encodeurl": { - "version": "1.0.2", - "license": "MIT", + "node_modules/@storybook/manager-webpack4/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, "engines": { - "node": ">= 0.8" + "node": ">= 10.0.0" } }, - "node_modules/encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "optional": true, + "node_modules/@storybook/manager-webpack4/node_modules/watchpack": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", + "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", + "dev": true, "dependencies": { - "iconv-lite": "^0.6.2" + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + }, + "optionalDependencies": { + "chokidar": "^3.4.1", + "watchpack-chokidar2": "^2.0.1" + } + }, + "node_modules/@storybook/manager-webpack4/node_modules/webpack": { + "version": "4.46.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", + "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.5.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.7.4", + "webpack-sources": "^1.4.1" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + }, + "webpack-command": { + "optional": true + } } }, - "node_modules/encoding/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "optional": true, + "node_modules/@storybook/manager-webpack4/node_modules/webpack/node_modules/terser-webpack-plugin": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", + "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", + "dev": true, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 6.9.0" + }, + "peerDependencies": { + "webpack": "^4.0.0" } }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "license": "MIT", + "node_modules/@storybook/manager-webpack4/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "node_modules/@storybook/manager-webpack4/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/@storybook/node-logger": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-6.4.19.tgz", + "integrity": "sha512-hO2Aar3PgPnPtNq2fVgiuGlqo3EEVR6TKVBXMq7foL3tN2k4BQFKLDHbm5qZQQntyYKurKsRUGKPJFPuI1ov/w==", + "dev": true, "dependencies": { - "once": "^1.4.0" + "@types/npmlog": "^4.1.2", + "chalk": "^4.1.0", + "core-js": "^3.8.2", + "npmlog": "^5.0.1", + "pretty-hrtime": "^1.0.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/enquirer": { - "version": "2.3.6", + "node_modules/@storybook/node-logger/node_modules/are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", "dev": true, - "license": "MIT", "dependencies": { - "ansi-colors": "^4.1.1" + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" }, "engines": { - "node": ">=8.6" - } - }, - "node_modules/ent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", - "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=" - }, - "node_modules/entities": { - "version": "2.2.0", - "license": "BSD-2-Clause", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "node": ">=10" } }, - "node_modules/env-ci": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-5.5.0.tgz", - "integrity": "sha512-o0JdWIbOLP+WJKIUt36hz1ImQQFuN92nhsfTkHHap+J8CiI8WgGpH/a9jEGHh4/TU5BUUGjlnKXNoDb57+ne+A==", + "node_modules/@storybook/node-logger/node_modules/gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", "dev": true, "dependencies": { - "execa": "^5.0.0", - "fromentries": "^1.3.2", - "java-properties": "^1.0.0" + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" }, "engines": { - "node": ">=10.17" + "node": ">=10" } }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "node_modules/@storybook/node-logger/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/err-code": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "dev": true + "node_modules/@storybook/node-logger/node_modules/npmlog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "dev": true, + "dependencies": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } }, - "node_modules/error-ex": { - "version": "1.3.2", + "node_modules/@storybook/node-logger/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, - "license": "MIT", "dependencies": { - "is-arrayish": "^0.2.1" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" } }, - "node_modules/es-abstract": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", - "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", + "node_modules/@storybook/node-logger/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.1", - "is-string": "^1.0.7", - "is-weakref": "^1.0.1", - "object-inspect": "^1.11.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=8" + } + }, + "node_modules/@storybook/preview-web": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/preview-web/-/preview-web-6.4.19.tgz", + "integrity": "sha512-jqltoBv5j7lvnxEfV9w8dLX9ASWGuvgz97yg8Yo5FqkftEwrHJenyvMGcTgDJKJPorF+wiz/9aIqnmd3LCAcZQ==", + "dev": true, + "dependencies": { + "@storybook/addons": "6.4.19", + "@storybook/channel-postmessage": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/store": "6.4.19", + "ansi-to-html": "^0.6.11", + "core-js": "^3.8.2", + "global": "^4.4.0", + "lodash": "^4.17.21", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "unfetch": "^4.2.0", + "util-deprecate": "^1.0.2" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" } }, - "node_modules/es-to-primitive": { - "version": "1.2.1", + "node_modules/@storybook/preview-web/node_modules/qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", "dev": true, - "license": "MIT", "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "side-channel": "^1.0.4" }, "engines": { - "node": ">= 0.4" + "node": ">=0.6" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/escalade": { - "version": "3.1.1", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-goat": { - "version": "2.1.1", + "node_modules/@storybook/router": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.4.19.tgz", + "integrity": "sha512-KWWwIzuyeEIWVezkCihwY2A76Il9tUNg0I410g9qT7NrEsKyqXGRYOijWub7c1GGyNjLqz0jtrrehtixMcJkuA==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "@storybook/client-logger": "6.4.19", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "history": "5.0.0", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "react-router": "^6.0.0", + "react-router-dom": "^6.0.0", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" } }, - "node_modules/escape-html": { - "version": "1.0.3", - "license": "MIT" - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "license": "MIT", + "node_modules/@storybook/router/node_modules/qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, "engines": { - "node": ">=10" + "node": ">=0.6" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "node_modules/@storybook/semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@storybook/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-SWeszlsiPsMI0Ps0jVNtH64cI5c0UF3f7KgjVKJoNP30crQ6wUSddY2hsdeczZXEKVJGEn50Q60flcGsQGIcrg==", "dev": true, "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" + "core-js": "^3.6.5", + "find-up": "^4.1.0" }, "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" + "semver": "bin/semver.js" }, "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" + "node": ">=10" } }, - "node_modules/escodegen/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "node_modules/@storybook/semver/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, "engines": { - "node": ">=4.0" + "node": ">=8" } }, - "node_modules/escodegen/node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "node_modules/@storybook/semver/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" + "p-locate": "^4.1.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">=8" } }, - "node_modules/escodegen/node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "node_modules/@storybook/semver/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" + "p-try": "^2.0.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/escodegen/node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "node_modules/@storybook/semver/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, "engines": { - "node": ">= 0.8.0" + "node": ">=8" } }, - "node_modules/escodegen/node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "node_modules/@storybook/semver/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2" - }, "engines": { - "node": ">= 0.8.0" + "node": ">=8" } }, - "node_modules/eslint": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.11.0.tgz", - "integrity": "sha512-/KRpd9mIRg2raGxHRGwW9ZywYNAClZrHjdueHcrVDuO3a6bj83eoTirCCk0M0yPwOjWYKHwRVRid+xK4F/GHgA==", + "node_modules/@storybook/store": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/store/-/store-6.4.19.tgz", + "integrity": "sha512-N9/ZjemRHGfT3InPIbqQqc6snkcfnf3Qh9oOr0smbfaVGJol//KOX65kzzobtzFcid0WxtTDZ3HmgFVH+GvuhQ==", "dev": true, "dependencies": { - "@eslint/eslintrc": "^1.2.1", - "@humanwhocodes/config-array": "^0.9.2", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", + "@storybook/addons": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.6.0", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "global": "^4.4.0", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "regenerator-runtime": "^0.13.7", + "slash": "^3.0.0", + "stable": "^0.1.8", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" }, - "bin": { - "eslint": "bin/eslint.js" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + } + }, + "node_modules/@storybook/theming": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.4.19.tgz", + "integrity": "sha512-V4pWmTvAxmbHR6B3jA4hPkaxZPyExHvCToy7b76DpUTpuHihijNDMAn85KhOQYIeL9q14zP/aiz899tOHsOidg==", + "dev": true, + "dependencies": { + "@emotion/core": "^10.1.1", + "@emotion/is-prop-valid": "^0.8.6", + "@emotion/styled": "^10.0.27", + "@storybook/client-logger": "6.4.19", + "core-js": "^3.8.2", + "deep-object-diff": "^1.1.0", + "emotion-theming": "^10.0.27", + "global": "^4.4.0", + "memoizerific": "^1.11.3", + "polished": "^4.0.5", + "resolve-from": "^5.0.0", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + } + }, + "node_modules/@storybook/ui": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.4.19.tgz", + "integrity": "sha512-gFwdn5LA2U6oQ4bfUFLyHZnNasGQ01YVdwjbi+l6yjmnckBNtZfJoVTZ1rzGUbxSE9rK48InJRU+latTsr7xAg==", + "dev": true, + "dependencies": { + "@emotion/core": "^10.1.1", + "@storybook/addons": "6.4.19", + "@storybook/api": "6.4.19", + "@storybook/channels": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/components": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/router": "6.4.19", + "@storybook/semver": "^7.3.2", + "@storybook/theming": "6.4.19", + "copy-to-clipboard": "^3.3.1", + "core-js": "^3.8.2", + "core-js-pure": "^3.8.2", + "downshift": "^6.0.15", + "emotion-theming": "^10.0.27", + "fuse.js": "^3.6.1", + "global": "^4.4.0", + "lodash": "^4.17.21", + "markdown-to-jsx": "^7.1.3", + "memoizerific": "^1.11.3", + "polished": "^4.0.5", + "qs": "^6.10.0", + "react-draggable": "^4.4.3", + "react-helmet-async": "^1.0.7", + "react-sizeme": "^3.0.1", + "regenerator-runtime": "^0.13.7", + "resolve-from": "^5.0.0", + "store2": "^2.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + } + }, + "node_modules/@storybook/ui/node_modules/qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=0.6" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-config-prettier": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", - "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "node_modules/@storybook/vue3": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/vue3/-/vue3-6.4.19.tgz", + "integrity": "sha512-ocW2haoDOXudK3XHC7raBjq9k9gPsApiyQc4dPnjcF8sXmC3WZg6CYSPt0o00UMDmeDL0MDW336fw94jy6+LfA==", "dev": true, + "dependencies": { + "@storybook/addons": "6.4.19", + "@storybook/core": "6.4.19", + "@storybook/core-common": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/store": "6.4.19", + "@types/webpack-env": "^1.16.0", + "core-js": "^3.8.2", + "global": "^4.4.0", + "react": "16.14.0", + "react-dom": "16.14.0", + "read-pkg-up": "^7.0.1", + "regenerator-runtime": "^0.13.7", + "ts-dedent": "^2.0.0", + "ts-loader": "^8.0.14", + "vue-docgen-api": "^4.38.0", + "vue-docgen-loader": "^1.5.0", + "vue-loader": "^16.0.0", + "webpack": "4" + }, "bin": { - "eslint-config-prettier": "bin/cli.js" + "build-storybook": "bin/build.js", + "start-storybook": "bin/index.js", + "storybook-server": "bin/index.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "eslint": ">=7.0.0" + "@babel/core": "*", + "@vue/compiler-sfc": "^3.0.0", + "babel-loader": "^7.0.0 || ^8.0.0", + "vue": "^3.0.0" } }, - "node_modules/eslint-config-standard": { - "version": "17.0.0-1", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.0.0-1.tgz", - "integrity": "sha512-aqRG58dqoBNfOLN+PsitasxmW+W9Os4oQrx081B16T4E4WogsSbpUL6hnKSnyv35sSRYA2XjBtKMOrUboL6jgw==", + "node_modules/@storybook/vue3/node_modules/@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "peerDependencies": { - "eslint": "^8.0.1", - "eslint-plugin-import": "^2.25.2", - "eslint-plugin-n": "^14.0.0", - "eslint-plugin-promise": "^6.0.0" + "dependencies": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" } }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", - "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "node_modules/@storybook/vue3/node_modules/@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", + "dev": true + }, + "node_modules/@storybook/vue3/node_modules/@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", + "dev": true + }, + "node_modules/@storybook/vue3/node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "dev": true + }, + "node_modules/@storybook/vue3/node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", "dev": true, "dependencies": { - "debug": "^3.2.7", - "resolve": "^1.20.0" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" } }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/@storybook/vue3/node_modules/@webassemblyjs/ieee754": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", "dev": true, "dependencies": { - "ms": "^2.1.1" + "@xtuc/ieee754": "^1.2.0" } }, - "node_modules/eslint-module-utils": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.2.tgz", - "integrity": "sha512-zquepFnWCY2ISMFwD/DqzaM++H+7PDzOpUvotJWm/y1BAFt5R4oeULgdrTejKqLkz7MA/tgstsUMNYc7wNdTrg==", + "node_modules/@storybook/vue3/node_modules/@webassemblyjs/leb128": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", "dev": true, "dependencies": { - "debug": "^3.2.7", - "find-up": "^2.1.0" - }, - "engines": { - "node": ">=4" + "@xtuc/long": "4.2.2" } }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/@storybook/vue3/node_modules/@webassemblyjs/utf8": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", + "dev": true + }, + "node_modules/@storybook/vue3/node_modules/@webassemblyjs/wasm-edit": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", "dev": true, "dependencies": { - "ms": "^2.1.1" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" } }, - "node_modules/eslint-plugin-es": { - "version": "3.0.1", + "node_modules/@storybook/vue3/node_modules/@webassemblyjs/wasm-gen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", "dev": true, - "license": "MIT", "dependencies": { - "eslint-utils": "^2.0.0", - "regexpp": "^3.0.0" - }, - "engines": { - "node": ">=8.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=4.19.1" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" } }, - "node_modules/eslint-plugin-import": { - "version": "2.25.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz", - "integrity": "sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA==", + "node_modules/@storybook/vue3/node_modules/@webassemblyjs/wasm-opt": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", "dev": true, "dependencies": { - "array-includes": "^3.1.4", - "array.prototype.flat": "^1.2.5", - "debug": "^2.6.9", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.2", - "has": "^1.0.3", - "is-core-module": "^2.8.0", - "is-glob": "^4.0.3", - "minimatch": "^3.0.4", - "object.values": "^1.1.5", - "resolve": "^1.20.0", - "tsconfig-paths": "^3.12.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" } }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "2.6.9", + "node_modules/@storybook/vue3/node_modules/@webassemblyjs/wasm-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", "dev": true, - "license": "MIT", "dependencies": { - "ms": "2.0.0" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" } }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", + "node_modules/@storybook/vue3/node_modules/@webassemblyjs/wast-printer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", "dev": true, - "license": "Apache-2.0", "dependencies": { - "esutils": "^2.0.2" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@storybook/vue3/node_modules/acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/@storybook/vue3/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-import/node_modules/ms": { - "version": "2.0.0", + "node_modules/@storybook/vue3/node_modules/cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", "dev": true, - "license": "MIT" + "dependencies": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } }, - "node_modules/eslint-plugin-jest": { - "version": "26.1.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-26.1.1.tgz", - "integrity": "sha512-HRKOuPi5ADhza4ZBK5ufyNXy28bXXkib87w+pQqdvBhSTsamndh6sIAKPAUl8y0/n9jSWBdTPslrwtKWqkp8dA==", + "node_modules/@storybook/vue3/node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "node_modules/@storybook/vue3/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/@storybook/vue3/node_modules/eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", "dev": true, "dependencies": { - "@typescript-eslint/utils": "^5.10.0" + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - }, - "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "@typescript-eslint/eslint-plugin": { - "optional": true - }, - "jest": { - "optional": true - } + "node": ">=4.0.0" } }, - "node_modules/eslint-plugin-n": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-14.0.0.tgz", - "integrity": "sha512-mNwplPLsbaKhHyA0fa/cy8j+oF6bF6l81hzBTWa6JOvPcMNAuIogk2ih6d9tYvWYzyUG+7ZFeChqbzdFpg2QrQ==", + "node_modules/@storybook/vue3/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, - "peer": true, "dependencies": { - "eslint-plugin-es": "^4.1.0", - "eslint-utils": "^3.0.0", - "ignore": "^5.1.1", - "is-core-module": "^2.3.0", - "minimatch": "^3.0.4", - "resolve": "^1.10.1", - "semver": "^6.1.0" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" }, "engines": { - "node": ">=12.22.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=7.0.0" + "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-n/node_modules/eslint-plugin-es": { + "node_modules/@storybook/vue3/node_modules/find-up": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz", - "integrity": "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, - "peer": true, "dependencies": { - "eslint-utils": "^2.0.0", - "regexpp": "^3.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=8.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=4.19.1" + "node": ">=8" } }, - "node_modules/eslint-plugin-n/node_modules/eslint-plugin-es/node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "node_modules/@storybook/vue3/node_modules/hash-sum": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz", + "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==", + "dev": true + }, + "node_modules/@storybook/vue3/node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/@storybook/vue3/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, - "peer": true, "dependencies": { - "eslint-visitor-keys": "^1.1.0" + "is-plain-object": "^2.0.4" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" + "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-n/node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "node_modules/@storybook/vue3/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, - "peer": true, + "dependencies": { + "kind-of": "^3.0.2" + }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-n/node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "node_modules/@storybook/vue3/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, - "peer": true, "dependencies": { - "eslint-visitor-keys": "^2.0.0" + "is-buffer": "^1.1.5" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" + "node": ">=0.10.0" + } + }, + "node_modules/@storybook/vue3/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" }, - "peerDependencies": { - "eslint": ">=5" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-n/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "node_modules/@storybook/vue3/node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", "dev": true, - "peer": true, - "bin": { - "semver": "bin/semver.js" + "engines": { + "node": ">=4" } }, - "node_modules/eslint-plugin-node": { - "version": "11.1.0", + "node_modules/@storybook/vue3/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true, - "license": "MIT", - "dependencies": { - "eslint-plugin-es": "^3.0.0", - "eslint-utils": "^2.0.0", - "ignore": "^5.1.1", - "minimatch": "^3.0.4", - "resolve": "^1.10.1", - "semver": "^6.1.0" - }, "engines": { - "node": ">=8.10.0" - }, - "peerDependencies": { - "eslint": ">=5.16.0" + "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-node/node_modules/semver": { - "version": "6.3.0", + "node_modules/@storybook/vue3/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "dev": true, - "license": "ISC", + "dependencies": { + "minimist": "^1.2.0" + }, "bin": { - "semver": "bin/semver.js" + "json5": "lib/cli.js" } }, - "node_modules/eslint-plugin-promise": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.0.0.tgz", - "integrity": "sha512-7GPezalm5Bfi/E22PnQxDWH2iW9GTvAlUNTztemeHb6c1BniSyoeTrM87JkC0wYdi6aQrZX9p2qEiAno8aTcbw==", + "node_modules/@storybook/vue3/node_modules/loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", "dev": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "node": ">=4.3.0 <5.0.0 || >=5.10" } }, - "node_modules/eslint-plugin-standard": { + "node_modules/@storybook/vue3/node_modules/locate-path": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "peerDependencies": { - "eslint": ">=5.0.0" + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/eslint-plugin-tsdoc": { - "version": "0.2.14", + "node_modules/@storybook/vue3/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, - "license": "MIT", "dependencies": { - "@microsoft/tsdoc": "0.13.2", - "@microsoft/tsdoc-config": "0.15.2" + "yallist": "^3.0.2" } }, - "node_modules/eslint-scope": { - "version": "5.1.1", + "node_modules/@storybook/vue3/node_modules/memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", "dev": true, - "license": "BSD-2-Clause", "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "node_modules/@storybook/vue3/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" }, "engines": { - "node": ">=8.0.0" + "node": ">=0.10.0" } }, - "node_modules/eslint-utils": { - "version": "2.1.0", + "node_modules/@storybook/vue3/node_modules/micromatch/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "dev": true, - "license": "MIT", "dependencies": { - "eslint-visitor-keys": "^1.1.0" + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/eslint/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "node_modules/@storybook/vue3/node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", "dev": true }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "node_modules/@storybook/vue3/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" + "minimist": "^1.2.6" }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "bin": { + "mkdirp": "bin/cmd.js" } }, - "node_modules/eslint/node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "node_modules/@storybook/vue3/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "dependencies": { - "eslint-visitor-keys": "^2.0.0" + "p-try": "^2.0.0" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + "node": ">=6" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "node_modules/@storybook/vue3/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "node_modules/@storybook/vue3/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=8" } }, - "node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "node_modules/@storybook/vue3/node_modules/react": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", + "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", "dev": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + }, "engines": { - "node": ">=4.0" + "node": ">=0.10.0" } }, - "node_modules/eslint/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "node_modules/@storybook/vue3/node_modules/react-dom": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", + "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", "dev": true, "dependencies": { - "is-glob": "^4.0.3" + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.1" }, - "engines": { - "node": ">=10.13.0" + "peerDependencies": { + "react": "^16.14.0" } }, - "node_modules/eslint/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "node_modules/@storybook/vue3/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, "dependencies": { - "argparse": "^2.0.1" + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">=8" } }, - "node_modules/eslint/node_modules/strip-json-comments": { - "version": "3.1.1", + "node_modules/@storybook/vue3/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, - "license": "MIT", + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, "engines": { "node": ">=8" }, @@ -7764,2139 +10302,2338 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/esm": { - "version": "3.2.25", - "license": "MIT", + "node_modules/@storybook/vue3/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/espree": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", - "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", + "node_modules/@storybook/vue3/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, "dependencies": { - "acorn": "^8.7.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^3.3.0" + "glob": "^7.1.3" }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "bin": { + "rimraf": "bin.js" } }, - "node_modules/espree/node_modules/acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "node_modules/@storybook/vue3/node_modules/scheduler": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", "dev": true, - "bin": { - "acorn": "bin/acorn" + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "node_modules/@storybook/vue3/node_modules/schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" }, "engines": { - "node": ">=0.4.0" + "node": ">= 4" } }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "node_modules/@storybook/vue3/node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "dependencies": { + "randombytes": "^2.1.0" } }, - "node_modules/esprima": { - "version": "4.0.1", - "license": "BSD-2-Clause", + "node_modules/@storybook/vue3/node_modules/ssri": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", + "dev": true, + "dependencies": { + "figgy-pudding": "^3.5.1" + } + }, + "node_modules/@storybook/vue3/node_modules/terser": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "dev": true, + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" + "terser": "bin/terser" }, "engines": { - "node": ">=4" + "node": ">=6.0.0" } }, - "node_modules/esquery": { - "version": "1.4.0", + "node_modules/@storybook/vue3/node_modules/terser-webpack-plugin": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", + "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { - "estraverse": "^5.1.0" + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" }, "engines": { - "node": ">=0.10" + "node": ">= 6.9.0" + }, + "peerDependencies": { + "webpack": "^4.0.0" } }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.2.0", + "node_modules/@storybook/vue3/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", "dev": true, - "license": "BSD-2-Clause", + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, "engines": { - "node": ">=4.0" + "node": ">=0.10.0" } }, - "node_modules/esrecurse": { - "version": "4.3.0", + "node_modules/@storybook/vue3/node_modules/vue-loader": { + "version": "16.8.3", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.8.3.tgz", + "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { - "estraverse": "^5.2.0" + "chalk": "^4.1.0", + "hash-sum": "^2.0.0", + "loader-utils": "^2.0.0" }, - "engines": { - "node": ">=4.0" + "peerDependencies": { + "webpack": "^4.1.0 || ^5.0.0-0" } }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.2.0", + "node_modules/@storybook/vue3/node_modules/watchpack": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", + "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", "dev": true, - "license": "BSD-2-Clause", + "dependencies": { + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + }, + "optionalDependencies": { + "chokidar": "^3.4.1", + "watchpack-chokidar2": "^2.0.1" + } + }, + "node_modules/@storybook/vue3/node_modules/webpack": { + "version": "4.46.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", + "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.5.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.7.4", + "webpack-sources": "^1.4.1" + }, + "bin": { + "webpack": "bin/webpack.js" + }, "engines": { - "node": ">=4.0" + "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + }, + "webpack-command": { + "optional": true + } } }, - "node_modules/estraverse": { - "version": "4.3.0", - "license": "BSD-2-Clause", + "node_modules/@storybook/vue3/node_modules/webpack/node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, "engines": { - "node": ">=4.0" + "node": ">=4.0.0" } }, - "node_modules/esutils": { - "version": "2.0.3", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } + "node_modules/@storybook/vue3/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "engines": { - "node": ">= 0.6" - } + "node_modules/@storybook/vue3/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "node_modules/@szmarczak/http-timer": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "defer-to-connect": "^1.0.1" + }, "engines": { "node": ">=6" } }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "license": "MIT" - }, - "node_modules/events": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "license": "MIT", "engines": { - "node": ">=0.4.x" + "node": ">= 6" } }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, + "node_modules/@transloadit/prettier-bytes": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/@transloadit/prettier-bytes/-/prettier-bytes-0.0.7.tgz", + "integrity": "sha512-VeJbUb0wEKbcwaSlj5n+LscBl9IPgLPkHVGBkh00cztv6X4L/TJXK58LzFuBKX7/GAfiGhIwH67YTLTlzvIzBA==", + "dev": true + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", + "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==" + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", + "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==" + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", + "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==" + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", + "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==" + }, + "node_modules/@turf/bbox": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-6.5.0.tgz", + "integrity": "sha512-RBbLaao5hXTYyyg577iuMtDB8ehxMlUqHEJiMs8jT1GHkFhr6sYre3lmLsPeYEi/ZKj5TP5tt7fkzNdJ4GIVyw==", "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" + "@turf/helpers": "^6.5.0", + "@turf/meta": "^6.5.0" }, "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "url": "https://opencollective.com/turf" } }, - "node_modules/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", - "dev": true, - "engines": { - "node": ">= 0.8.0" + "node_modules/@turf/center": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/center/-/center-6.5.0.tgz", + "integrity": "sha512-T8KtMTfSATWcAX088rEDKjyvQCBkUsLnK/Txb6/8WUXIeOZyHu42G7MkdkHRoHtwieLdduDdmPLFyTdG5/e7ZQ==", + "dependencies": { + "@turf/bbox": "^6.5.0", + "@turf/helpers": "^6.5.0" + }, + "funding": { + "url": "https://opencollective.com/turf" } }, - "node_modules/exit-on-epipe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz", - "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==", - "engines": { - "node": ">=0.8" + "node_modules/@turf/helpers": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.5.0.tgz", + "integrity": "sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==", + "funding": { + "url": "https://opencollective.com/turf" } }, - "node_modules/expand-tilde": { - "version": "2.0.2", - "dev": true, - "license": "MIT", + "node_modules/@turf/intersect": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.5.0.tgz", + "integrity": "sha512-2legGJeKrfFkzntcd4GouPugoqPUjexPZnOvfez+3SfIMrHvulw8qV8u7pfVyn2Yqs53yoVCEjS5sEpvQ5YRQg==", "dependencies": { - "homedir-polyfill": "^1.0.1" + "@turf/helpers": "^6.5.0", + "@turf/invariant": "^6.5.0", + "polygon-clipping": "^0.15.3" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://opencollective.com/turf" } }, - "node_modules/expect": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", - "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", - "dev": true, + "node_modules/@turf/invariant": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.5.0.tgz", + "integrity": "sha512-Wv8PRNCtPD31UVbdJE/KVAWKe7l6US+lJItRR/HOEW3eh+U/JwRCSUl/KZ7bmjM/C+zLNoreM2TU6OoLACs4eg==", "dependencies": { - "@jest/types": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1" + "@turf/helpers": "^6.5.0" }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "funding": { + "url": "https://opencollective.com/turf" } }, - "node_modules/express": { - "version": "4.17.3", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz", - "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==", + "node_modules/@turf/meta": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-6.5.0.tgz", + "integrity": "sha512-RrArvtsV0vdsCBegoBtOalgdSOfkBrTJ07VkpiCnq/491W67hnMWmDu7e6Ztw0C3WldRYTXkg3SumfdzZxLBHA==", "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.19.2", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.4.2", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.9.7", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.17.2", - "serve-static": "1.14.2", - "setprototypeof": "1.2.0", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" + "@turf/helpers": "^6.5.0" }, - "engines": { - "node": ">= 0.10.0" + "funding": { + "url": "https://opencollective.com/turf" } }, - "node_modules/express-graphql": { - "version": "0.12.0", - "license": "MIT", + "node_modules/@types/accepts": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==", "dependencies": { - "accepts": "^1.3.7", - "content-type": "^1.0.4", - "http-errors": "1.8.0", - "raw-body": "^2.4.1" - }, - "engines": { - "node": ">= 10.x" - }, - "peerDependencies": { - "graphql": "^14.7.0 || ^15.3.0" + "@types/node": "*" } }, - "node_modules/express-graphql/node_modules/http-errors": { - "version": "1.8.0", - "license": "MIT", + "node_modules/@types/babel__core": { + "version": "7.1.18", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.18.tgz", + "integrity": "sha512-S7unDjm/C7z2A2R9NzfKCK1I+BAALDtxEmsJBwlB3EzNfb929ykjL++1CK9LO++EIp2fQrC8O+BwjKvz6UeDyQ==", + "dev": true, "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, - "engines": { - "node": ">= 0.6" + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" } }, - "node_modules/express-jwt": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/express-jwt/-/express-jwt-6.1.1.tgz", - "integrity": "sha512-m8gkY04v5jtiFZn6bYQINYX/DVXq1DVb5nIW7H8l87qJ4BBvtQKFRpxyRE31odct7OPfHdT+B8678zJHhlMrpw==", + "node_modules/@types/babel__generator": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "dev": true, "dependencies": { - "async": "^1.5.0", - "express-unless": "^1.0.0", - "jsonwebtoken": "^8.1.0", - "lodash": "^4.17.21" - }, - "engines": { - "node": ">= 8.0.0" + "@babel/types": "^7.0.0" } }, - "node_modules/express-unless": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/express-unless/-/express-unless-1.0.0.tgz", - "integrity": "sha512-zXSSClWBPfcSYjg0hcQNompkFN/MxQQ53eyrzm9BYgik2ut2I7PxAf2foVqBRMYCwWaZx/aWodi+uk76npdSAw==" - }, - "node_modules/express/node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "engines": { - "node": ">= 0.6" + "node_modules/@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" } }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "license": "MIT", + "node_modules/@types/babel__traverse": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz", + "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==", + "dev": true, "dependencies": { - "ms": "2.0.0" + "@babel/types": "^7.3.0" } }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "license": "MIT" - }, - "node_modules/express/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "node_modules/external-editor": { - "version": "3.1.0", - "dev": true, + "node_modules/@types/basic-auth": { + "version": "1.1.3", "license": "MIT", "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" + "@types/node": "*" } }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", + "node_modules/@types/bcryptjs": { + "version": "2.4.2", "license": "MIT" }, - "node_modules/fast-glob": { - "version": "3.2.5", + "node_modules/@types/body-parser": { + "version": "1.19.0", "license": "MIT", "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.0", - "merge2": "^1.3.0", - "micromatch": "^4.0.2", - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8" + "@types/connect": "*", + "@types/node": "*" } }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", + "node_modules/@types/color-convert": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/color-convert/-/color-convert-2.0.0.tgz", + "integrity": "sha512-m7GG7IKKGuJUXvkZ1qqG3ChccdIM/qBBo913z+Xft0nKCX4hAU/IxKwZBU4cpRZ7GS5kV4vOblUkILtSShCPXQ==", "dev": true, - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "license": "MIT" + "dependencies": { + "@types/color-name": "*" + } }, - "node_modules/fast-memoize": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.5.2.tgz", - "integrity": "sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw==", + "node_modules/@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", "dev": true }, - "node_modules/fast-safe-stringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" - }, - "node_modules/fast-text-encoding": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.3.tgz", - "integrity": "sha512-dtm4QZH9nZtcDt8qJiOH9fcQd1NAgi+K1O2DbE6GG1PPCK/BWfOH3idCTRQ4ImXRUOyopDEgDEnVEE7Y/2Wrig==" - }, - "node_modules/fast-url-parser": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", - "integrity": "sha1-9K8+qfNNiicc9YrSs3WfQx8LMY0=", - "dev": true, + "node_modules/@types/compression": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@types/compression/-/compression-1.7.2.tgz", + "integrity": "sha512-lwEL4M/uAGWngWFLSG87ZDr2kLrbuR8p7X+QZB1OQlT+qkHsCPDVFnHPyXf4Vyl4yDDorNY+mAhosxkCvppatg==", "dependencies": { - "punycode": "^1.3.2" + "@types/express": "*" } }, - "node_modules/fast-url-parser/node_modules/punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - }, - "node_modules/fast-xml-parser": { - "version": "3.19.0", + "node_modules/@types/connect": { + "version": "3.4.34", "license": "MIT", - "bin": { - "xml2js": "cli.js" - }, - "funding": { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" + "dependencies": { + "@types/node": "*" } }, - "node_modules/fastq": { - "version": "1.11.0", - "license": "ISC", + "node_modules/@types/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-0mPF08jn9zYI0n0Q/Pnz7C4kThdSt+6LD4amsrYDDpgBfrVWa3TcCOxKX1zkGgYniGagRv8heN2cbh+CAn+uuQ==" + }, + "node_modules/@types/cookie-parser": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@types/cookie-parser/-/cookie-parser-1.4.2.tgz", + "integrity": "sha512-uwcY8m6SDQqciHsqcKDGbo10GdasYsPCYkH3hVegj9qAah6pX5HivOnOuI3WYmyQMnOATV39zv/Ybs0bC/6iVg==", "dependencies": { - "reusify": "^1.0.4" + "@types/express": "*" } }, - "node_modules/fb-watchman": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", - "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "node_modules/@types/cookiejar": { + "version": "2.1.2", "dev": true, + "license": "MIT" + }, + "node_modules/@types/cookies": { + "version": "0.7.7", + "resolved": "https://registry.npmjs.org/@types/cookies/-/cookies-0.7.7.tgz", + "integrity": "sha512-h7BcvPUogWbKCzBR2lY4oqaZbO3jXZksexYJVFvkrFeLgbZjQkU4x8pRq6eg2MHXQhY0McQdqmmsxRWlVAHooA==", "dependencies": { - "bser": "2.1.1" + "@types/connect": "*", + "@types/express": "*", + "@types/keygrip": "*", + "@types/node": "*" } }, - "node_modules/fecha": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.1.tgz", - "integrity": "sha512-MMMQ0ludy/nBs1/o0zVOiKTpG7qMbonKUzjJgQFEuvq6INZ1OraKPRAWkBq5vlKLOUMpmNYG1JoN3oDPUQ9m3Q==" + "node_modules/@types/cors": { + "version": "2.8.12", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", + "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==" }, - "node_modules/figgy-pudding": { - "version": "3.5.2", - "dev": true, - "license": "ISC" + "node_modules/@types/cron": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/@types/cron/-/cron-1.7.3.tgz", + "integrity": "sha512-iPmUXyIJG1Js+ldPYhOQcYU3kCAQ2FWrSkm1FJPoii2eYSn6wEW6onPukNTT0bfiflexNSRPl6KWmAIqS+36YA==", + "dependencies": { + "@types/node": "*", + "moment": ">=2.14.0" + } }, - "node_modules/figures": { - "version": "2.0.0", + "node_modules/@types/dateformat": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/dateformat/-/dateformat-5.0.0.tgz", + "integrity": "sha512-SZg4JdHIWHQGEokbYGZSDvo5wA4TLYPXaqhigs/wH+REDOejcJzgH+qyY+HtEUtWOZxEUkbhbdYPqQDiEgrXeA==" + }, + "node_modules/@types/eslint": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", + "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=4" + "@types/estree": "*", + "@types/json-schema": "*" } }, - "node_modules/figures/node_modules/escape-string-regexp": { - "version": "1.0.5", + "node_modules/@types/eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" + "peer": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" } }, - "node_modules/file-entry-cache": { - "version": "6.0.1", + "node_modules/@types/eslint-visitor-keys": { + "version": "1.0.0", "dev": true, - "license": "MIT", + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "node_modules/@types/express": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" } }, - "node_modules/file-uri-to-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-2.0.0.tgz", - "integrity": "sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg==", - "engines": { - "node": ">= 6" + "node_modules/@types/express-jwt": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@types/express-jwt/-/express-jwt-6.0.4.tgz", + "integrity": "sha512-I53KRQ9D0eTA6hVCN9S73iOeprKS3JNWK+Cp2mDPB6uOIkTVpkgSkX394kHQzb5cd0U02I0adRmsMxHk+zX8tA==", + "dependencies": { + "@types/express": "*", + "@types/express-unless": "*" } }, - "node_modules/fill-range": { - "version": "7.0.1", - "license": "MIT", + "node_modules/@types/express-serve-static-core": { + "version": "4.17.28", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", + "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" } }, - "node_modules/finalhandler": { - "version": "1.1.2", + "node_modules/@types/express-unless": { + "version": "0.5.1", "license": "MIT", "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" + "@types/express": "*" } }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "license": "MIT", + "node_modules/@types/fs-capacitor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/fs-capacitor/-/fs-capacitor-2.0.0.tgz", + "integrity": "sha512-FKVPOCFbhCvZxpVAMhdBdTfVfXUpsh15wFHgqOKxh9N9vzWZVuWCSijZ5T4U34XYNnuj2oduh6xcs1i+LPI+BQ==", "dependencies": { - "ms": "2.0.0" + "@types/node": "*" } }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "license": "MIT" + "node_modules/@types/geojson": { + "version": "7946.0.8", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.8.tgz", + "integrity": "sha512-1rkryxURpr6aWP7R786/UQOkJ3PcpQiWkAXBmdWc7ryFWqN6a4xfK7BtjXvFBKO9LjQ+MWQSWxYeZX1OApnArA==" }, - "node_modules/find-node-modules": { - "version": "2.1.2", + "node_modules/@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", "dev": true, - "license": "MIT", "dependencies": { - "findup-sync": "^4.0.0", - "merge": "^2.1.0" + "@types/minimatch": "*", + "@types/node": "*" } }, - "node_modules/find-root": { - "version": "1.1.0", + "node_modules/@types/graceful-fs": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", + "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", "dev": true, - "license": "MIT" + "dependencies": { + "@types/node": "*" + } }, - "node_modules/find-up": { - "version": "2.1.0", - "dev": true, + "node_modules/@types/graphql-type-json": { + "version": "0.3.2", "license": "MIT", "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" + "graphql": "^14.5.3" } }, - "node_modules/find-versions": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-4.0.0.tgz", - "integrity": "sha512-wgpWy002tA+wgmO27buH/9KzyEOQnKsG/R0yrcjPT9BOFm0zRBVQbZ95nRGXWMywS8YR5knRbpohio0bcJABxQ==", - "dev": true, + "node_modules/@types/graphql-type-json/node_modules/graphql": { + "version": "14.7.0", + "license": "MIT", "dependencies": { - "semver-regex": "^3.1.2" + "iterall": "^1.2.2" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 6.x" } }, - "node_modules/find-versions/node_modules/semver-regex": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-3.1.3.tgz", - "integrity": "sha512-Aqi54Mk9uYTjVexLnR67rTyBusmwd04cLkHy9hNvk3+G3nT2Oyg7E0l4XVbOaNwIvQ3hHeYxGcyEy+mKreyBFQ==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node_modules/@types/graphql-upload": { + "version": "8.0.11", + "resolved": "https://registry.npmjs.org/@types/graphql-upload/-/graphql-upload-8.0.11.tgz", + "integrity": "sha512-AE8RWANHutpsQt945lQZKlkq0V/zBxU5R0xhKLZN3KkBMlW95/5uJzk01HUl8gbDkG7hGl8l8lJKbi91k0UnPw==", + "dependencies": { + "@types/express": "*", + "@types/fs-capacitor": "*", + "@types/koa": "*", + "graphql": "0.13.1 - 16" } }, - "node_modules/findup-sync": { - "version": "4.0.0", + "node_modules/@types/hast": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.4.tgz", + "integrity": "sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==", "dev": true, - "license": "MIT", "dependencies": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^4.0.2", - "resolve-dir": "^1.0.1" - }, - "engines": { - "node": ">= 8" + "@types/unist": "*" } }, - "node_modules/flat-cache": { - "version": "3.0.4", - "dev": true, - "license": "MIT", + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "dev": true + }, + "node_modules/@types/http-assert": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.3.tgz", + "integrity": "sha512-FyAOrDuQmBi8/or3ns4rwPno7/9tJTijVW6aQQjK02+kOQ8zmoNg2XJtAuQhvQcy1ASJq38wirX5//9J1EqoUA==" + }, + "node_modules/@types/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-e+2rjEwK6KDaNOm5Aa9wNGgyS9oSZU/4pfSMMPYNOfjvFI0WVXm29+ITRFr6aKDvvKo7uU1jV68MW4ScsfDi7Q==" + }, + "node_modules/@types/http-proxy": { + "version": "1.17.8", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.8.tgz", + "integrity": "sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA==", "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" + "@types/node": "*" } }, - "node_modules/flatted": { - "version": "3.1.1", - "dev": true, - "license": "ISC" + "node_modules/@types/is-function": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/is-function/-/is-function-1.0.1.tgz", + "integrity": "sha512-A79HEEiwXTFtfY+Bcbo58M2GRYzCr9itHWzbzHVFNEYCcoU/MMGwYYf721gBrnhpj1s6RGVVha/IgNFnR0Iw/Q==", + "dev": true }, - "node_modules/fn.name": { - "version": "1.1.0", + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.3", + "dev": true, "license": "MIT" }, - "node_modules/form-data": { - "version": "3.0.1", + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", + "dev": true, "license": "MIT", "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" + "@types/istanbul-lib-coverage": "*" } }, - "node_modules/formidable": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz", - "integrity": "sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ==", - "deprecated": "Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau", - "funding": { - "url": "https://ko-fi.com/tunnckoCore/commissions" + "node_modules/@types/istanbul-reports": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-report": "*" } }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "engines": { - "node": ">= 0.6" + "node_modules/@types/jest": { + "version": "27.4.1", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.4.1.tgz", + "integrity": "sha512-23iPJADSmicDVrWk+HT58LMJtzLAnB2AgIzplQuq/bSrGaxCrlvRFjGbXmamnnk/mAmCdLStiGqggu28ocUyiw==", + "dependencies": { + "jest-matcher-utils": "^27.0.0", + "pretty-format": "^27.0.0" } }, - "node_modules/fp-and-or": { - "version": "0.1.3", + "node_modules/@types/jest-specific-snapshot": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@types/jest-specific-snapshot/-/jest-specific-snapshot-0.5.5.tgz", + "integrity": "sha512-AaPPw2tE8ewfjD6qGLkEd4DOfM6pPOK7ob/RSOe1Z8Oo70r9Jgo0SlWyfxslPAOvLfQukQtiVPm6DcnjSoZU5A==", "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" + "dependencies": { + "@types/jest": "*" } }, - "node_modules/frac": { - "version": "1.1.2", - "license": "Apache-2.0", - "engines": { - "node": ">=0.8" + "node_modules/@types/json-schema": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "dev": true + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "dev": true + }, + "node_modules/@types/jsonwebtoken": { + "version": "8.5.8", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.8.tgz", + "integrity": "sha512-zm6xBQpFDIDM6o9r6HSgDeIcLy82TKWctCXEPbJJcXb5AKmi5BNNdLXneixK4lplX3PqIVcwLBCGE/kAGnlD4A==", + "dependencies": { + "@types/node": "*" } }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "engines": { - "node": ">= 0.6" + "node_modules/@types/keygrip": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.2.tgz", + "integrity": "sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw==" + }, + "node_modules/@types/koa": { + "version": "2.13.4", + "resolved": "https://registry.npmjs.org/@types/koa/-/koa-2.13.4.tgz", + "integrity": "sha512-dfHYMfU+z/vKtQB7NUrthdAEiSvnLebvBjwHtfFmpZmB7em2N3WVQdHgnFq+xvyVgxW5jKDmjWfLD3lw4g4uTw==", + "dependencies": { + "@types/accepts": "*", + "@types/content-disposition": "*", + "@types/cookies": "*", + "@types/http-assert": "*", + "@types/http-errors": "*", + "@types/keygrip": "*", + "@types/koa-compose": "*", + "@types/node": "*" } }, - "node_modules/from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "dev": true, + "node_modules/@types/koa-compose": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/@types/koa-compose/-/koa-compose-3.2.5.tgz", + "integrity": "sha512-B8nG/OoE1ORZqCkBVsup/AKcvjdgoHnfi4pZMn5UwAPCbhk/96xyv284eBYW8JlQbQ7zDmnpFr68I/40mFoIBQ==", "dependencies": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" + "@types/koa": "*" } }, - "node_modules/fromentries": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", - "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", + "node_modules/@types/leaflet": { + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/@types/leaflet/-/leaflet-1.7.9.tgz", + "integrity": "sha512-H8vPgD49HKzqM41ArHGZM70g/tfhp8W+JcPxfnF+5H/Xvp+xiP+KQOUNWU8U89fqS1Jj3cpRY/+nbnaHFzwnFA==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] + "dependencies": { + "@types/geojson": "*" + } }, - "node_modules/fs-access": { - "version": "1.0.1", + "node_modules/@types/leaflet.markercluster": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@types/leaflet.markercluster/-/leaflet.markercluster-1.4.6.tgz", + "integrity": "sha512-MD+bUDzxHznY0zOlSBUAMNQUGB2+xpJPKrR2MNEoBAAKa3QTKJJySBtCqWyGLvYNNO+Cdyc2c64aF2IFwe4fcQ==", "dev": true, - "license": "MIT", "dependencies": { - "null-check": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "@types/leaflet": "*" } }, - "node_modules/fs-capacitor": { - "version": "6.2.0", - "license": "MIT", - "engines": { - "node": ">=10" + "node_modules/@types/mdast": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz", + "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==", + "dev": true, + "dependencies": { + "@types/unist": "*" } }, - "node_modules/fs-extra": { - "version": "8.1.0", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } + "node_modules/@types/mime": { + "version": "1.3.2", + "license": "MIT" }, - "node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "node_modules/@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true + }, + "node_modules/@types/minimist": { + "version": "1.2.1", "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "17.0.21", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.21.tgz", + "integrity": "sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ==" + }, + "node_modules/@types/node-fetch": { + "version": "2.5.12", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.12.tgz", + "integrity": "sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw==", "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" + "@types/node": "*", + "form-data": "^3.0.0" } }, - "node_modules/fs.realpath": { - "version": "1.0.0", + "node_modules/@types/node-mailjet": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/@types/node-mailjet/-/node-mailjet-3.3.8.tgz", + "integrity": "sha512-bjrj7FOG5bVGpV1RovUF1JydGngW/TIrbGDTiId41v9ak3rwzGm4OVmPzjjKbqjECCD8toRXOdyTz28rkH5OlA==" + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.0", "dev": true, - "license": "ISC" + "license": "MIT" }, - "node_modules/fsevents": { - "version": "2.3.2", + "node_modules/@types/npmlog": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@types/npmlog/-/npmlog-4.1.4.tgz", + "integrity": "sha512-WKG4gTr8przEZBiJ5r3s8ZIAoMXNbOgQ+j/d5O4X3x6kZJRLNvyUJuUK/KoG3+8BaOHPhp2m7WC6JKKeovDSzQ==", + "dev": true + }, + "node_modules/@types/overlayscrollbars": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@types/overlayscrollbars/-/overlayscrollbars-1.12.1.tgz", + "integrity": "sha512-V25YHbSoKQN35UasHf0EKD9U2vcmexRSp78qa8UglxFH8H3D+adEa9zGZwrqpH4TdvqeMrgMqVqsLB4woAryrQ==", + "dev": true + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } + "license": "MIT" }, - "node_modules/ftp": { - "version": "0.3.10", - "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", - "integrity": "sha1-kZfYYa2BQvPmPVqDv+TFn3MwiF0=", + "node_modules/@types/parse5": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-5.0.3.tgz", + "integrity": "sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==", + "dev": true + }, + "node_modules/@types/pg": { + "version": "8.6.5", + "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.6.5.tgz", + "integrity": "sha512-tOkGtAqRVkHa/PVZicq67zuujI4Oorfglsr2IbKofDwBSysnaqSx7W1mDqFqdkGE6Fbgh+PZAl0r/BWON/mozw==", "dependencies": { - "readable-stream": "1.1.x", - "xregexp": "2.0.0" - }, - "engines": { - "node": ">=0.8.0" + "@types/node": "*", + "pg-protocol": "*", + "pg-types": "^2.2.0" } }, - "node_modules/ftp/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + "node_modules/@types/prettier": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.4.tgz", + "integrity": "sha512-ReVR2rLTV1kvtlWFyuot+d1pkpG2Fw/XKE3PDAdj57rbM97ttSp9JZ2UsP+2EHTylra9cUf6JA7tGwW1INzUrA==", + "dev": true }, - "node_modules/ftp/node_modules/readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } + "node_modules/@types/pretty-hrtime": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/pretty-hrtime/-/pretty-hrtime-1.0.1.tgz", + "integrity": "sha512-VjID5MJb1eGKthz2qUerWT8+R4b9N+CHvGCzg9fn4kWZgaF9AhdYikQio3R7wV8YY1NsQKPaCwKz1Yff+aHNUQ==", + "dev": true }, - "node_modules/ftp/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + "node_modules/@types/proj4": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/@types/proj4/-/proj4-2.5.2.tgz", + "integrity": "sha512-/Nmfn9p08yaYw6xo5f2b0L+2oHk2kZeOkp5v+4VCeNfq+ETlLQbmHmC97/pjDIEZy8jxwz7pdPpwNzDHM5cuJw==" }, - "node_modules/function-bind": { - "version": "1.1.1", + "node_modules/@types/prop-types": { + "version": "15.7.4", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz", + "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==", + "dev": true + }, + "node_modules/@types/qs": { + "version": "6.9.6", "license": "MIT" }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "dev": true, + "node_modules/@types/range-parser": { + "version": "1.2.3", "license": "MIT" }, - "node_modules/gauge": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.3.tgz", - "integrity": "sha512-ICw1DhAwMtb22rYFwEHgJcx1JCwJGv3x6G0OQUq56Nge+H4Q8JEwr8iveS0XFlsUNSI67F5ffMGK25bK4Pmskw==", + "node_modules/@types/react": { + "version": "17.0.42", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.42.tgz", + "integrity": "sha512-nuab3x3CpJ7VFeNA+3HTUuEkvClYHXqWtWd7Ud6AZYW7Z3NH9WKtgU+tFB0ZLcHq+niB/HnzLcaZPqMJ95+k5Q==", "dev": true, "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" - } - }, - "node_modules/gauge/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" } }, - "node_modules/gauge/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/@types/react-syntax-highlighter": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/@types/react-syntax-highlighter/-/react-syntax-highlighter-11.0.5.tgz", + "integrity": "sha512-VIOi9i2Oj5XsmWWoB72p3KlZoEbdRAcechJa8Ztebw7bDl2YmR+odxIqhtJGp1q2EozHs02US+gzxJ9nuf56qg==", "dev": true, "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" + "@types/react": "*" } }, - "node_modules/gaxios": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-4.3.2.tgz", - "integrity": "sha512-T+ap6GM6UZ0c4E6yb1y/hy2UB6hTrqhglp3XfmU9qbLCGRYhLVV5aRPpC4EmoG8N8zOnkYCgoBz+ScvGAARY6Q==", + "node_modules/@types/react/node_modules/csstype": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.11.tgz", + "integrity": "sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==", + "dev": true + }, + "node_modules/@types/retry": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", + "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==", + "dev": true + }, + "node_modules/@types/scheduler": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", + "dev": true + }, + "node_modules/@types/serve-static": { + "version": "1.13.9", + "license": "MIT", "dependencies": { - "abort-controller": "^3.0.0", - "extend": "^3.0.2", - "https-proxy-agent": "^5.0.0", - "is-stream": "^2.0.0", - "node-fetch": "^2.6.1" - }, - "engines": { - "node": ">=10" + "@types/mime": "^1", + "@types/node": "*" } }, - "node_modules/gcp-metadata": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.3.1.tgz", - "integrity": "sha512-x850LS5N7V1F3UcV7PoupzGsyD6iVwTVvsh3tbXfkctZnBnjW5yu5z1/3k3SehF7TyoTIe78rJs02GMMy+LF+A==", + "node_modules/@types/shpjs": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@types/shpjs/-/shpjs-3.4.1.tgz", + "integrity": "sha512-xdJ65Zp2wslzyKKAid+PPl7Hxz5+eFS7W5G42RfryoJRk2u0CA+5jtX3wBgZhmz1s/mGX0PWzmKCBYTYgRsELg==", "dependencies": { - "gaxios": "^4.0.0", - "json-bigint": "^1.0.0" - }, - "engines": { - "node": ">=10" + "@types/geojson": "*", + "@types/node": "*" } }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "node_modules/@types/source-list-map": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz", + "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==", + "dev": true + }, + "node_modules/@types/sql-formatter": { + "version": "2.3.0", + "license": "MIT" + }, + "node_modules/@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true + }, + "node_modules/@types/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-FKjsOVbC6B7bdSB5CuzyHCkK69I=", + "dev": true + }, + "node_modules/@types/strip-json-comments": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz", + "integrity": "sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==", + "dev": true + }, + "node_modules/@types/superagent": { + "version": "4.1.11", "dev": true, - "engines": { - "node": ">=6.9.0" + "license": "MIT", + "dependencies": { + "@types/cookiejar": "*", + "@types/node": "*" } }, - "node_modules/geojson-rewind": { - "version": "0.3.1", - "license": "ISC", + "node_modules/@types/supertest": { + "version": "2.0.11", + "dev": true, + "license": "MIT", "dependencies": { - "@mapbox/geojson-area": "0.2.2", - "concat-stream": "~1.6.0", - "minimist": "1.2.0", - "sharkdown": "^0.1.0" - }, - "bin": { - "geojson-rewind": "geojson-rewind" + "@types/superagent": "*" } }, - "node_modules/geojson-rewind/node_modules/minimist": { - "version": "1.2.0", - "license": "MIT" + "node_modules/@types/tapable": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.8.tgz", + "integrity": "sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ==", + "dev": true }, - "node_modules/get-caller-file": { - "version": "2.0.5", + "node_modules/@types/uglify-js": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.13.1.tgz", + "integrity": "sha512-O3MmRAk6ZuAKa9CHgg0Pr0+lUOqoMLpc9AS4R8ano2auvsg7IE8syF3Xh/NPr26TWklxYcqoEEFdzLLs1fV9PQ==", "dev": true, - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" + "dependencies": { + "source-map": "^0.6.1" } }, - "node_modules/get-intrinsic": { - "version": "1.1.1", + "node_modules/@types/unist": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", + "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==", + "dev": true + }, + "node_modules/@types/webpack": { + "version": "4.41.32", + "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.32.tgz", + "integrity": "sha512-cb+0ioil/7oz5//7tZUSwbrSAN/NWHrQylz5cW8G0dWTcF/g+/dSdMlKVZspBYuMAN1+WnwHrkxiRrLcwd0Heg==", "dev": true, - "license": "MIT", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@types/node": "*", + "@types/tapable": "^1", + "@types/uglify-js": "*", + "@types/webpack-sources": "*", + "anymatch": "^3.0.0", + "source-map": "^0.6.0" } }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, - "engines": { - "node": ">=8.0.0" - } + "node_modules/@types/webpack-env": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.16.3.tgz", + "integrity": "sha512-9gtOPPkfyNoEqCQgx4qJKkuNm/x0R2hKR7fdl7zvTJyHnIisuE/LfvXOsYWL0o3qq6uiBnKZNNNzi3l0y/X+xw==", + "dev": true }, - "node_modules/get-pkg-repo": { - "version": "1.4.0", + "node_modules/@types/webpack-sources": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-3.2.0.tgz", + "integrity": "sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg==", "dev": true, - "license": "MIT", "dependencies": { - "hosted-git-info": "^2.1.4", - "meow": "^3.3.0", - "normalize-package-data": "^2.3.0", - "parse-github-repo-url": "^1.3.0", - "through2": "^2.0.0" - }, - "bin": { - "get-pkg-repo": "cli.js" + "@types/node": "*", + "@types/source-list-map": "*", + "source-map": "^0.7.3" } }, - "node_modules/get-pkg-repo/node_modules/camelcase": { - "version": "2.1.1", + "node_modules/@types/webpack-sources/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", "dev": true, - "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, - "node_modules/get-pkg-repo/node_modules/camelcase-keys": { - "version": "2.1.0", + "node_modules/@types/yargs": { + "version": "16.0.2", "dev": true, "license": "MIT", "dependencies": { - "camelcase": "^2.0.0", - "map-obj": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "@types/yargs-parser": "*" } }, - "node_modules/get-pkg-repo/node_modules/decamelize": { - "version": "1.2.0", + "node_modules/@types/yargs-parser": { + "version": "20.2.0", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } + "license": "MIT" }, - "node_modules/get-pkg-repo/node_modules/find-up": { - "version": "1.1.2", + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.15.0.tgz", + "integrity": "sha512-u6Db5JfF0Esn3tiAKELvoU5TpXVSkOpZ78cEGn/wXtT2RVqs2vkt4ge6N8cRCyw7YVKhmmLDbwI2pg92mlv7cA==", "dev": true, - "license": "MIT", "dependencies": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" + "@typescript-eslint/scope-manager": "5.15.0", + "@typescript-eslint/type-utils": "5.15.0", + "@typescript-eslint/utils": "5.15.0", + "debug": "^4.3.2", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.1.8", + "regexpp": "^3.2.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" }, "engines": { - "node": ">=0.10.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/get-pkg-repo/node_modules/get-stdin": { - "version": "4.0.1", + "node_modules/@typescript-eslint/parser": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.15.0.tgz", + "integrity": "sha512-NGAYP/+RDM2sVfmKiKOCgJYPstAO40vPAgACoWPO/+yoYKSgAXIFaBKsV8P0Cc7fwKgvj27SjRNX4L7f4/jCKQ==", "dev": true, - "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "5.15.0", + "@typescript-eslint/types": "5.15.0", + "@typescript-eslint/typescript-estree": "5.15.0", + "debug": "^4.3.2" + }, "engines": { - "node": ">=0.10.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/get-pkg-repo/node_modules/indent-string": { - "version": "2.1.0", + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.15.0.tgz", + "integrity": "sha512-EFiZcSKrHh4kWk0pZaa+YNJosvKE50EnmN4IfgjkA3bTHElPtYcd2U37QQkNTqwMCS7LXeDeZzEqnsOH8chjSg==", "dev": true, - "license": "MIT", "dependencies": { - "repeating": "^2.0.0" + "@typescript-eslint/types": "5.15.0", + "@typescript-eslint/visitor-keys": "5.15.0" }, "engines": { - "node": ">=0.10.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/get-pkg-repo/node_modules/load-json-file": { - "version": "1.1.0", + "node_modules/@typescript-eslint/type-utils": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.15.0.tgz", + "integrity": "sha512-KGeDoEQ7gHieLydujGEFLyLofipe9PIzfvA/41urz4hv+xVxPEbmMQonKSynZ0Ks2xDhJQ4VYjB3DnRiywvKDA==", "dev": true, - "license": "MIT", "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" + "@typescript-eslint/utils": "5.15.0", + "debug": "^4.3.2", + "tsutils": "^3.21.0" }, "engines": { - "node": ">=0.10.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/get-pkg-repo/node_modules/map-obj": { - "version": "1.0.1", + "node_modules/@typescript-eslint/types": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.15.0.tgz", + "integrity": "sha512-yEiTN4MDy23vvsIksrShjNwQl2vl6kJeG9YkVJXjXZnkJElzVK8nfPsWKYxcsGWG8GhurYXP4/KGj3aZAxbeOA==", "dev": true, - "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/get-pkg-repo/node_modules/meow": { - "version": "3.7.0", + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.15.0.tgz", + "integrity": "sha512-Hb0e3dGc35b75xLzixM3cSbG1sSbrTBQDfIScqdyvrfJZVEi4XWAT+UL/HMxEdrJNB8Yk28SKxPLtAhfCbBInA==", "dev": true, - "license": "MIT", "dependencies": { - "camelcase-keys": "^2.0.0", - "decamelize": "^1.1.2", - "loud-rejection": "^1.0.0", - "map-obj": "^1.0.1", - "minimist": "^1.1.3", - "normalize-package-data": "^2.3.4", - "object-assign": "^4.0.1", - "read-pkg-up": "^1.0.1", - "redent": "^1.0.0", - "trim-newlines": "^1.0.0" + "@typescript-eslint/types": "5.15.0", + "@typescript-eslint/visitor-keys": "5.15.0", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" }, "engines": { - "node": ">=0.10.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/get-pkg-repo/node_modules/parse-json": { - "version": "2.2.0", + "node_modules/@typescript-eslint/utils": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.15.0.tgz", + "integrity": "sha512-081rWu2IPKOgTOhHUk/QfxuFog8m4wxW43sXNOMSCdh578tGJ1PAaWPsj42LOa7pguh173tNlMigsbrHvh/mtA==", "dev": true, - "license": "MIT", "dependencies": { - "error-ex": "^1.2.0" + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.15.0", + "@typescript-eslint/types": "5.15.0", + "@typescript-eslint/typescript-estree": "5.15.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/get-pkg-repo/node_modules/path-exists": { - "version": "2.1.0", + "node_modules/@typescript-eslint/utils/node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, - "license": "MIT", "dependencies": { - "pinkie-promise": "^2.0.0" + "eslint-visitor-keys": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" } }, - "node_modules/get-pkg-repo/node_modules/path-type": { - "version": "1.1.0", + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.15.0.tgz", + "integrity": "sha512-+vX5FKtgvyHbmIJdxMJ2jKm9z2BIlXJiuewI8dsDYMp5LzPUcuTT78Ya5iwvQg3VqSVdmxyM8Anj1Jeq7733ZQ==", "dev": true, - "license": "MIT", "dependencies": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" + "@typescript-eslint/types": "5.15.0", + "eslint-visitor-keys": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/get-pkg-repo/node_modules/read-pkg": { - "version": "1.1.0", + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", "dev": true, - "license": "MIT", - "dependencies": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - }, "engines": { - "node": ">=0.10.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/get-pkg-repo/node_modules/read-pkg-up": { - "version": "1.0.1", + "node_modules/@uppy/companion-client": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@uppy/companion-client/-/companion-client-2.0.5.tgz", + "integrity": "sha512-yAeYbpQ+yHcklKVbkRy83V1Zv/0kvaTDTHaBvaaPmLtcKgeZE3pUjEI/7v2sTxvCVSy4cRjd9TRSXSSl5UCnuQ==", "dev": true, - "license": "MIT", "dependencies": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "@uppy/utils": "^4.0.5", + "namespace-emitter": "^2.0.1" } }, - "node_modules/get-pkg-repo/node_modules/redent": { - "version": "1.0.0", + "node_modules/@uppy/core": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@uppy/core/-/core-2.1.6.tgz", + "integrity": "sha512-WTGthAAHMfB6uAtISbu+7jYh4opnBWHSf7A0jsPdREwXc4hrhC/z9lbejZfSLkVDXdbNwpWWH38EgOGCNQb5MQ==", "dev": true, - "license": "MIT", "dependencies": { - "indent-string": "^2.1.0", - "strip-indent": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" + "@transloadit/prettier-bytes": "0.0.7", + "@uppy/store-default": "^2.0.3", + "@uppy/utils": "^4.0.5", + "lodash.throttle": "^4.1.1", + "mime-match": "^1.0.2", + "namespace-emitter": "^2.0.1", + "nanoid": "^3.1.25", + "preact": "^10.5.13" } }, - "node_modules/get-pkg-repo/node_modules/strip-bom": { - "version": "2.0.0", + "node_modules/@uppy/store-default": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@uppy/store-default/-/store-default-2.0.3.tgz", + "integrity": "sha512-2BGlN1sW0cFv4rOqTK8dfSg579S984N1HxCJxLFqeW9nWD6zd/O8Omyd85tbxGQ+FLZLTmLOm/feD0YeCBMahg==", + "dev": true + }, + "node_modules/@uppy/tus": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@uppy/tus/-/tus-2.2.0.tgz", + "integrity": "sha512-AsGEVUoPM9tE0rey+c6Sjn73iDoZkuIt6SCtobkm8LLFW/V3e86UwEPSvAX0tR4LK3P28BBt3odN57dluRD1hA==", "dev": true, - "license": "MIT", "dependencies": { - "is-utf8": "^0.2.0" + "@uppy/companion-client": "^2.0.4", + "@uppy/utils": "^4.0.5", + "tus-js-client": "^2.1.1" }, - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "@uppy/core": "^2.1.4" } }, - "node_modules/get-pkg-repo/node_modules/strip-indent": { - "version": "1.0.1", + "node_modules/@uppy/utils": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@uppy/utils/-/utils-4.0.5.tgz", + "integrity": "sha512-uRv921A69UMjuWCLSC5tKXuIVoMOROVpFstIAQv5CoiCOCXyofcWpvAqELT7qlQJ5VRWha3uF5d/Z94SNnwxew==", "dev": true, - "license": "MIT", "dependencies": { - "get-stdin": "^4.0.1" - }, - "bin": { - "strip-indent": "cli.js" - }, - "engines": { - "node": ">=0.10.0" + "lodash.throttle": "^4.1.1" } }, - "node_modules/get-pkg-repo/node_modules/trim-newlines": { - "version": "1.0.0", + "node_modules/@vitejs/plugin-vue": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-2.2.4.tgz", + "integrity": "sha512-ev9AOlp0ljCaDkFZF3JwC/pD2N4Hh+r5srl5JHM6BKg5+99jiiK0rE/XaRs3pVm1wzyKkjUy/StBSoXX5fFzcw==", "dev": true, - "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=12.0.0" + }, + "peerDependencies": { + "vite": "^2.5.10", + "vue": "^3.2.25" } }, - "node_modules/get-stdin": { - "version": "8.0.0", + "node_modules/@vue/compiler-core": { + "version": "3.2.31", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.31.tgz", + "integrity": "sha512-aKno00qoA4o+V/kR6i/pE+aP+esng5siNAVQ422TkBNM6qA4veXiZbSe8OTXHXquEi/f6Akc+nLfB4JGfe4/WQ==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "@babel/parser": "^7.16.4", + "@vue/shared": "3.2.31", + "estree-walker": "^2.0.2", + "source-map": "^0.6.1" } }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node_modules/@vue/compiler-dom": { + "version": "3.2.31", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.31.tgz", + "integrity": "sha512-60zIlFfzIDf3u91cqfqy9KhCKIJgPeqxgveH2L+87RcGU/alT6BRrk5JtUso0OibH3O7NXuNOQ0cDc9beT0wrg==", + "dev": true, + "dependencies": { + "@vue/compiler-core": "3.2.31", + "@vue/shared": "3.2.31" } }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "node_modules/@vue/compiler-sfc": { + "version": "3.2.31", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.31.tgz", + "integrity": "sha512-748adc9msSPGzXgibHiO6T7RWgfnDcVQD+VVwYgSsyyY8Ans64tALHZANrKtOzvkwznV/F4H7OAod/jIlp/dkQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@babel/parser": "^7.16.4", + "@vue/compiler-core": "3.2.31", + "@vue/compiler-dom": "3.2.31", + "@vue/compiler-ssr": "3.2.31", + "@vue/reactivity-transform": "3.2.31", + "@vue/shared": "3.2.31", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7", + "postcss": "^8.1.10", + "source-map": "^0.6.1" } }, - "node_modules/get-uri": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-3.0.2.tgz", - "integrity": "sha512-+5s0SJbGoyiJTZZ2JTpFPLMPSch72KEqGOTvQsBqg0RBWvwhWUSYZFAtz3TPW0GXJuLBJPts1E241iHg+VRfhg==", + "node_modules/@vue/compiler-ssr": { + "version": "3.2.31", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.31.tgz", + "integrity": "sha512-mjN0rqig+A8TVDnsGPYJM5dpbjlXeHUm2oZHZwGyMYiGT/F4fhJf/cXy8QpjnLQK4Y9Et4GWzHn9PS8AHUnSkw==", + "dev": true, "dependencies": { - "@tootallnate/once": "1", - "data-uri-to-buffer": "3", - "debug": "4", - "file-uri-to-path": "2", - "fs-extra": "^8.1.0", - "ftp": "^0.3.10" - }, - "engines": { - "node": ">= 6" + "@vue/compiler-dom": "3.2.31", + "@vue/shared": "3.2.31" } }, - "node_modules/getopts": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/getopts/-/getopts-2.3.0.tgz", - "integrity": "sha512-5eDf9fuSXwxBL6q5HX+dhDj+dslFGWzU5thZ9kNKUkcPtaPdatmUFKwHFrLb/uf/WpA4BHET+AX3Scl56cAjpA==" + "node_modules/@vue/devtools-api": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.1.3.tgz", + "integrity": "sha512-79InfO2xHv+WHIrH1bHXQUiQD/wMls9qBk6WVwGCbdwP7/3zINtvqPNMtmSHXsIKjvUAHc8L0ouOj6ZQQRmcXg==", + "dev": true }, - "node_modules/git-log-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/git-log-parser/-/git-log-parser-1.2.0.tgz", - "integrity": "sha1-LmpMGxP8AAKCB7p5WnrDFme5/Uo=", + "node_modules/@vue/eslint-config-prettier": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@vue/eslint-config-prettier/-/eslint-config-prettier-7.0.0.tgz", + "integrity": "sha512-/CTc6ML3Wta1tCe1gUeO0EYnVXfo3nJXsIhZ8WJr3sov+cGASr6yuiibJTL6lmIBm7GobopToOuB3B6AWyV0Iw==", "dev": true, "dependencies": { - "argv-formatter": "~1.0.0", - "spawn-error-forwarder": "~1.0.0", - "split2": "~1.0.0", - "stream-combiner2": "~1.1.1", - "through2": "~2.0.0", - "traverse": "~0.6.6" + "eslint-config-prettier": "^8.3.0", + "eslint-plugin-prettier": "^4.0.0" + }, + "peerDependencies": { + "eslint": ">= 7.28.0", + "prettier": ">= 2.0.0" } }, - "node_modules/git-log-parser/node_modules/split2": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-1.0.0.tgz", - "integrity": "sha1-UuLiIdiMdfmnP5BVbiY/+WdysxQ=", + "node_modules/@vue/reactivity": { + "version": "3.2.31", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.31.tgz", + "integrity": "sha512-HVr0l211gbhpEKYr2hYe7hRsV91uIVGFYNHj73njbARVGHQvIojkImKMaZNDdoDZOIkMsBc9a1sMqR+WZwfSCw==", "dev": true, "dependencies": { - "through2": "~2.0.0" + "@vue/shared": "3.2.31" } }, - "node_modules/git-remote-origin-url": { - "version": "2.0.0", + "node_modules/@vue/reactivity-transform": { + "version": "3.2.31", + "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.31.tgz", + "integrity": "sha512-uS4l4z/W7wXdI+Va5pgVxBJ345wyGFKvpPYtdSgvfJfX/x2Ymm6ophQlXXB6acqGHtXuBqNyyO3zVp9b1r0MOA==", "dev": true, - "license": "MIT", "dependencies": { - "gitconfiglocal": "^1.0.0", - "pify": "^2.3.0" - }, - "engines": { - "node": ">=4" + "@babel/parser": "^7.16.4", + "@vue/compiler-core": "3.2.31", + "@vue/shared": "3.2.31", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7" } }, - "node_modules/gitconfiglocal": { - "version": "1.0.0", + "node_modules/@vue/runtime-core": { + "version": "3.2.31", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.31.tgz", + "integrity": "sha512-Kcog5XmSY7VHFEMuk4+Gap8gUssYMZ2+w+cmGI6OpZWYOEIcbE0TPzzPHi+8XTzAgx1w/ZxDFcXhZeXN5eKWsA==", "dev": true, - "license": "BSD", "dependencies": { - "ini": "^1.3.2" + "@vue/reactivity": "3.2.31", + "@vue/shared": "3.2.31" } }, - "node_modules/glob": { - "version": "7.1.4", + "node_modules/@vue/runtime-dom": { + "version": "3.2.31", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.31.tgz", + "integrity": "sha512-N+o0sICVLScUjfLG7u9u5XCjvmsexAiPt17GNnaWHJUfsKed5e85/A3SWgKxzlxx2SW/Hw7RQxzxbXez9PtY3g==", "dev": true, - "license": "ISC", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" + "@vue/runtime-core": "3.2.31", + "@vue/shared": "3.2.31", + "csstype": "^2.6.8" } }, - "node_modules/glob-parent": { - "version": "5.1.2", - "license": "ISC", + "node_modules/@vue/server-renderer": { + "version": "3.2.31", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.31.tgz", + "integrity": "sha512-8CN3Zj2HyR2LQQBHZ61HexF5NReqngLT3oahyiVRfSSvak+oAvVmu8iNLSu6XR77Ili2AOpnAt1y8ywjjqtmkg==", + "dev": true, "dependencies": { - "is-glob": "^4.0.1" + "@vue/compiler-ssr": "3.2.31", + "@vue/shared": "3.2.31" }, - "engines": { - "node": ">= 6" + "peerDependencies": { + "vue": "3.2.31" } }, - "node_modules/global-dirs": { - "version": "0.1.1", + "node_modules/@vue/shared": { + "version": "3.2.31", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.31.tgz", + "integrity": "sha512-ymN2pj6zEjiKJZbrf98UM2pfDd6F2H7ksKw7NDt/ZZ1fh5Ei39X5tABugtT03ZRlWd9imccoK0hE8hpjpU7irQ==", + "dev": true + }, + "node_modules/@vue/test-utils": { + "version": "2.0.0-rc.17", + "resolved": "https://registry.npmjs.org/@vue/test-utils/-/test-utils-2.0.0-rc.17.tgz", + "integrity": "sha512-7LHZKsFRV/HqDoMVY+cJamFzgHgsrmQFalROHC5FMWrzPzd+utG5e11krj1tVsnxYufGA2ABShX4nlcHXED+zQ==", + "dev": true, + "peerDependencies": { + "vue": "^3.0.1" + } + }, + "node_modules/@vue/vue3-jest": { + "version": "27.0.0-alpha.4", + "resolved": "https://registry.npmjs.org/@vue/vue3-jest/-/vue3-jest-27.0.0-alpha.4.tgz", + "integrity": "sha512-RgEwjNvwdWmRngHqgt957fLT6riOkv/Kyl0ra8jo0Z8Dgosmu17dNqgBzLn9fTgNlTbHv4TQQdLRjczr+z2mlA==", "dev": true, - "license": "MIT", - "optional": true, "dependencies": { - "ini": "^1.3.4" + "@babel/plugin-transform-modules-commonjs": "^7.2.0", + "chalk": "^2.1.0", + "convert-source-map": "^1.6.0", + "extract-from-css": "^0.4.4", + "source-map": "0.5.6", + "tsconfig": "^7.0.0" }, - "engines": { - "node": ">=4" + "peerDependencies": { + "@babel/core": "7.x", + "babel-jest": "27.x", + "jest": "27.x", + "ts-jest": "27.x", + "typescript": ">= 3.x", + "vue": "^3.0.0-0" + }, + "peerDependenciesMeta": { + "ts-jest": { + "optional": true + }, + "typescript": { + "optional": true + } } }, - "node_modules/global-modules": { - "version": "1.0.0", + "node_modules/@vue/vue3-jest/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, - "license": "MIT", "dependencies": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" + "color-convert": "^1.9.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/global-prefix": { - "version": "1.0.2", + "node_modules/@vue/vue3-jest/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, - "license": "MIT", "dependencies": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/global-prefix/node_modules/which": { - "version": "1.3.1", + "node_modules/@vue/vue3-jest/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, - "license": "ISC", "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" + "color-name": "1.1.3" } }, - "node_modules/globals": { - "version": "13.13.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", - "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==", + "node_modules/@vue/vue3-jest/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/@vue/vue3-jest/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.8.0" } }, - "node_modules/globals/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "node_modules/@vue/vue3-jest/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, - "node_modules/globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - }, + "node_modules/@vue/vue3-jest/node_modules/source-map": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", + "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/google-auth-library": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-7.12.0.tgz", - "integrity": "sha512-RS/whvFPMoF1hQNxnoVET3DWKPBt1Xgqe2rY0k+Jn7TNhoHlwdnSe7Rlcbo2Nub3Mt2lUVz26X65aDQrWp6x8w==", + "node_modules/@vue/vue3-jest/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "dependencies": { - "arrify": "^2.0.0", - "base64-js": "^1.3.0", - "ecdsa-sig-formatter": "^1.0.11", - "fast-text-encoding": "^1.0.0", - "gaxios": "^4.0.0", - "gcp-metadata": "^4.2.0", - "gtoken": "^5.0.4", - "jws": "^4.0.0", - "lru-cache": "^6.0.0" + "has-flag": "^3.0.0" }, "engines": { - "node": ">=10" - } - }, - "node_modules/google-auth-library/node_modules/arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", - "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/google-auth-library/node_modules/jwa": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", - "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", + "node_modules/@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dev": true, + "peer": true, "dependencies": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" } }, - "node_modules/google-auth-library/node_modules/jws": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", - "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "dev": true, + "peer": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "dev": true, + "peer": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "dev": true, + "peer": true + }, + "node_modules/@webassemblyjs/helper-code-frame": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", + "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", + "dev": true, "dependencies": { - "jwa": "^2.0.0", - "safe-buffer": "^5.0.1" + "@webassemblyjs/wast-printer": "1.9.0" } }, - "node_modules/google-p12-pem": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.1.3.tgz", - "integrity": "sha512-MC0jISvzymxePDVembypNefkAQp+DRP7dBE+zNUPaIjEspIlYg0++OrsNr248V9tPbz6iqtZ7rX1hxWA5B8qBQ==", + "node_modules/@webassemblyjs/helper-code-frame/node_modules/@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "dev": true, "dependencies": { - "node-forge": "^1.0.0" - }, - "bin": { - "gp12-pem": "build/src/bin/gp12-pem.js" - }, - "engines": { - "node": ">=10" + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" } }, - "node_modules/graceful-fs": { - "version": "4.2.9", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", - "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" + "node_modules/@webassemblyjs/helper-code-frame/node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "dev": true }, - "node_modules/graphql": { - "version": "16.3.0", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.3.0.tgz", - "integrity": "sha512-xm+ANmA16BzCT5pLjuXySbQVFwH3oJctUVdy81w1sV0vBU0KgDdBGtxQOUd5zqOBk/JayAFeG8Dlmeq74rjm/A==", - "engines": { - "node": "^12.22.0 || ^14.16.0 || >=16.0.0" + "node_modules/@webassemblyjs/helper-code-frame/node_modules/@webassemblyjs/wast-printer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" } }, - "node_modules/graphql-fields": { - "version": "2.0.3", - "license": "MIT" + "node_modules/@webassemblyjs/helper-fsm": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", + "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", + "dev": true }, - "node_modules/graphql-scalars": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/graphql-scalars/-/graphql-scalars-1.15.0.tgz", - "integrity": "sha512-uLi71egHsfF+A4XmnltPYRUnvy8uBsobRjhW6aBi305gpE/v52xkuKcjygV0CqeqdvRKmFhczh9HRx1lho2MRw==", + "node_modules/@webassemblyjs/helper-module-context": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", + "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", + "dev": true, "dependencies": { - "tslib": "~2.3.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + "@webassemblyjs/ast": "1.9.0" } }, - "node_modules/graphql-type-json": { - "version": "0.3.2", - "license": "MIT", - "peerDependencies": { - "graphql": ">=0.8.0" + "node_modules/@webassemblyjs/helper-module-context/node_modules/@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" } }, - "node_modules/graphql-upload": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/graphql-upload/-/graphql-upload-13.0.0.tgz", - "integrity": "sha512-YKhx8m/uOtKu4Y1UzBFJhbBGJTlk7k4CydlUUiNrtxnwZv0WigbRHP+DVhRNKt7u7DXOtcKZeYJlGtnMXvreXA==", + "node_modules/@webassemblyjs/helper-module-context/node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dev": true, + "peer": true, "dependencies": { - "busboy": "^0.3.1", - "fs-capacitor": "^6.2.0", - "http-errors": "^1.8.1", - "object-path": "^0.11.8" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >= 16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/jaydenseric" - }, - "peerDependencies": { - "graphql": "0.13.1 - 16" + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" } }, - "node_modules/gtoken": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-5.3.2.tgz", - "integrity": "sha512-gkvEKREW7dXWF8NV8pVrKfW7WqReAmjjkMBh6lNCCGOM4ucS0r0YyXXl0r/9Yj8wcW/32ISkfc8h5mPTDbtifQ==", + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "dev": true, + "peer": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dev": true, + "peer": true, "dependencies": { - "gaxios": "^4.0.0", - "google-p12-pem": "^3.1.3", - "jws": "^4.0.0" - }, - "engines": { - "node": ">=10" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" } }, - "node_modules/gtoken/node_modules/jwa": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", - "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dev": true, + "peer": true, "dependencies": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" + "@xtuc/ieee754": "^1.2.0" } }, - "node_modules/gtoken/node_modules/jws": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", - "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dev": true, + "peer": true, "dependencies": { - "jwa": "^2.0.0", - "safe-buffer": "^5.0.1" + "@xtuc/long": "4.2.2" } }, - "node_modules/handlebars": { - "version": "4.7.7", + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", "dev": true, - "license": "MIT", + "peer": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dev": true, + "peer": true, "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" } }, - "node_modules/hard-rejection": { - "version": "2.1.0", + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" } }, - "node_modules/has": { - "version": "1.0.3", - "license": "MIT", + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dev": true, + "peer": true, "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" } }, - "node_modules/has-ansi": { - "version": "2.0.0", + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" } }, - "node_modules/has-ansi/node_modules/ansi-regex": { - "version": "2.1.1", + "node_modules/@webassemblyjs/wast-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", + "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", + "@xtuc/long": "4.2.2" } }, - "node_modules/has-bigints": { - "version": "1.0.1", + "node_modules/@webassemblyjs/wast-parser/node_modules/@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "dependencies": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" } }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } + "node_modules/@webassemblyjs/wast-parser/node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", + "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", + "dev": true }, - "node_modules/has-symbols": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "node_modules/@webassemblyjs/wast-parser/node_modules/@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", + "dev": true }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "node_modules/@webassemblyjs/wast-parser/node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "dev": true + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", "dev": true, + "peer": true, "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" } }, - "node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", "dev": true }, - "node_modules/has-yarn": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/hash-stream-validation": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/hash-stream-validation/-/hash-stream-validation-0.2.4.tgz", - "integrity": "sha512-Gjzu0Xn7IagXVkSu9cSFuK1fqzwtLwFhNhVL8IFJijRNMgUttFbBSIAzKuSIrsFMO1+g1RlsoN49zPIbwPDMGQ==" + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true }, - "node_modules/he": { - "version": "1.2.0", - "license": "MIT", - "bin": { - "he": "bin/he" - } + "node_modules/abab": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", + "dev": true }, - "node_modules/hexoid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", - "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==", + "node_modules/abbrev": { + "version": "1.1.1", "dev": true, - "engines": { - "node": ">=8" - } + "license": "ISC" }, - "node_modules/homedir-polyfill": { - "version": "1.0.3", - "dev": true, - "license": "MIT", + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", "dependencies": { - "parse-passwd": "^1.0.0" + "event-target-shim": "^5.0.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/hook-std": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hook-std/-/hook-std-2.0.0.tgz", - "integrity": "sha512-zZ6T5WcuBMIUVh49iPQS9t977t7C0l7OtHrpeMb5uk48JdflRX0NSFvCekfYNmGQETnLq9W/isMyHl69kxGi8g==", - "dev": true, - "engines": { - "node": ">=8" + "node": ">=6.5" } }, - "node_modules/hosted-git-info": { - "version": "2.8.9", - "dev": true, - "license": "ISC" - }, - "node_modules/html-encoding-sniffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", - "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", - "dev": true, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dependencies": { - "whatwg-encoding": "^1.0.5" + "mime-types": "~2.1.34", + "negotiator": "0.6.3" }, "engines": { - "node": ">=10" + "node": ">= 0.6" } }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "node_modules/html-to-text": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/html-to-text/-/html-to-text-8.1.0.tgz", - "integrity": "sha512-Z9iYAqYK2c18GswSbnxJSeMs7lyJgwR2oIkDOyOHGBbYsPsG4HvT379jj3Lcbfko8A5ceyyMHAfkmp/BiXA9/Q==", - "dependencies": { - "@selderee/plugin-htmlparser2": "^0.6.0", - "deepmerge": "^4.2.2", - "he": "^1.2.0", - "htmlparser2": "^6.1.0", - "minimist": "^1.2.5", - "selderee": "^0.6.0" - }, + "node_modules/acorn": { + "version": "7.4.1", + "dev": true, + "license": "MIT", "bin": { - "html-to-text": "bin/cli.js" + "acorn": "bin/acorn" }, "engines": { - "node": ">=10.23.2" + "node": ">=0.4.0" } }, - "node_modules/htmlparser2": { - "version": "6.1.0", - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "MIT", + "node_modules/acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dev": true, "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" } }, - "node_modules/http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", - "dev": true + "node_modules/acorn-jsx": { + "version": "5.3.1", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } }, - "node_modules/http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.1" - }, + "node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true, "engines": { - "node": ">= 0.6" + "node": ">=0.4.0" } }, - "node_modules/http-errors/node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "node_modules/add-stream": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/address": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", + "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==", + "dev": true, "engines": { - "node": ">=0.6" + "node": ">= 0.12.0" } }, - "node_modules/http-proxy-agent": { - "version": "4.0.1", - "license": "MIT", + "node_modules/adler-32": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.3.0.tgz", + "integrity": "sha512-f5nltvjl+PRUh6YNfUstRaXwJxtfnKEWhAWWlmKvh+Y3J2+98a0KKVYDEhz6NdKGqswLhjNGznxfSsZGOvOd9g==", "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" + "printj": "~1.2.2" }, "engines": { - "node": ">= 6" + "node": ">=0.8" } }, - "node_modules/https-proxy-agent": { - "version": "5.0.0", + "node_modules/agent-base": { + "version": "6.0.2", "license": "MIT", "dependencies": { - "agent-base": "6", "debug": "4" }, "engines": { - "node": ">= 6" + "node": ">= 6.0.0" } }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "node_modules/agentkeepalive": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", "dev": true, + "dependencies": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + }, "engines": { - "node": ">=10.17.0" + "node": ">= 8.0.0" } }, - "node_modules/humanize-ms": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, "dependencies": { - "ms": "^2.0.0" - } - }, - "node_modules/husky": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/husky/-/husky-7.0.4.tgz", - "integrity": "sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==", - "dev": true, - "bin": { - "husky": "lib/bin.js" + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/typicode" + "node": ">=8" } }, - "node_modules/iconv-lite": { - "version": "0.4.24", + "node_modules/airbnb-js-shims": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/airbnb-js-shims/-/airbnb-js-shims-2.2.1.tgz", + "integrity": "sha512-wJNXPH66U2xjgo1Zwyjf9EydvJ2Si94+vSdk6EERcBfB2VZkeltpqIats0cqIZMLCXP3zcyaUKGYQeIBT6XjsQ==", + "dev": true, + "dependencies": { + "array-includes": "^3.0.3", + "array.prototype.flat": "^1.2.1", + "array.prototype.flatmap": "^1.2.1", + "es5-shim": "^4.5.13", + "es6-shim": "^0.35.5", + "function.prototype.name": "^1.1.0", + "globalthis": "^1.0.0", + "object.entries": "^1.1.0", + "object.fromentries": "^2.0.0 || ^1.0.0", + "object.getownpropertydescriptors": "^2.0.3", + "object.values": "^1.1.0", + "promise.allsettled": "^1.0.0", + "promise.prototype.finally": "^3.1.0", + "string.prototype.matchall": "^4.0.0 || ^3.0.1", + "string.prototype.padend": "^3.0.0", + "string.prototype.padstart": "^3.0.0", + "symbol.prototype.description": "^1.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "dev": true, "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" - }, - "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "engines": { - "node": ">= 4" + "node_modules/ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "dev": true, + "peerDependencies": { + "ajv": ">=5.0.0" } }, - "node_modules/ignore-by-default": { - "version": "1.0.1", + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, - "license": "ISC" + "peerDependencies": { + "ajv": "^6.9.1" + } }, - "node_modules/ignore-walk": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz", - "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==", + "node_modules/ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", "dev": true, "dependencies": { - "minimatch": "^3.0.4" + "string-width": "^4.1.0" } }, - "node_modules/immediate": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" - }, - "node_modules/import-fresh": { - "version": "3.3.0", + "node_modules/ansi-align/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, - "license": "MIT", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/import-fresh/node_modules/resolve-from": { - "version": "4.0.0", + "node_modules/ansi-align/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, - "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/import-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-from/-/import-from-4.0.0.tgz", - "integrity": "sha512-P9J71vT5nLlDeV8FHs5nNxaLbrpfAV5cF5srvbZfpwpcJoM/xZR3hiv+q+SAnuSmuGbXMWud063iIMx/V/EWZQ==", + "node_modules/ansi-colors": { + "version": "4.1.1", "dev": true, + "license": "MIT", "engines": { - "node": ">=12.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, - "node_modules/import-lazy": { - "version": "2.1.0", + "node_modules/ansi-escapes": { + "version": "3.2.0", "dev": true, "license": "MIT", "engines": { "node": ">=4" } }, - "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", "dev": true, - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, + "engines": [ + "node >= 0.8.0" + ], "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "ansi-html": "bin/ansi-html" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "license": "MIT", + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "engines": { - "node": ">=0.8.19" + "node": ">=8" } }, - "node_modules/indent-string": { - "version": "4.0.0", - "dev": true, + "node_modules/ansi-styles": { + "version": "4.3.0", "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true - }, - "node_modules/inflight": { - "version": "1.0.6", + "node_modules/ansi-to-html": { + "version": "0.6.15", + "resolved": "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.6.15.tgz", + "integrity": "sha512-28ijx2aHJGdzbs+O5SNQF65r6rrKYnkuwTYm8lZlChuoJ9P1vVzIpWO20sQTqTPDXYp6NFwk326vApTtLVFXpQ==", "dev": true, - "license": "ISC", "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "entities": "^2.0.0" + }, + "bin": { + "ansi-to-html": "bin/ansi-to-html" + }, + "engines": { + "node": ">=8.0.0" } }, - "node_modules/inherits": { - "version": "2.0.4", - "license": "ISC" - }, - "node_modules/ini": { - "version": "1.3.8", - "dev": true, - "license": "ISC" + "node_modules/ansicolors": { + "version": "0.2.1", + "license": "MIT" }, - "node_modules/inquirer": { - "version": "6.5.2", + "node_modules/anymatch": { + "version": "3.1.2", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "ansi-escapes": "^3.2.0", - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.3", - "figures": "^2.0.0", - "lodash": "^4.17.12", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rxjs": "^6.4.0", - "string-width": "^2.1.0", - "strip-ansi": "^5.1.0", - "through": "^2.3.6" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" }, "engines": { - "node": ">=6.0.0" + "node": ">= 8" } }, - "node_modules/inquirer/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "node_modules/anymatch/node_modules/normalize-path": { + "version": "3.0.0", "dev": true, + "license": "MIT", "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/inquirer/node_modules/ansi-styles": { - "version": "3.2.1", + "node_modules/app-root-dir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/app-root-dir/-/app-root-dir-1.0.2.tgz", + "integrity": "sha1-OBh+wt6nV3//Az/8sSFyaS/24Rg=", + "dev": true + }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + }, + "node_modules/are-we-there-yet": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz", + "integrity": "sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw==", "dev": true, - "license": "MIT", "dependencies": { - "color-convert": "^1.9.0" + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" }, "engines": { - "node": ">=4" + "node": "^12.13.0 || ^14.15.0 || >=16" } }, - "node_modules/inquirer/node_modules/chalk": { - "version": "2.4.2", + "node_modules/are-we-there-yet/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, - "license": "MIT", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": ">=4" + "node": ">= 6" } }, - "node_modules/inquirer/node_modules/color-convert": { - "version": "1.9.3", + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" + }, + "node_modules/argparse": { + "version": "1.0.10", "dev": true, "license": "MIT", "dependencies": { - "color-name": "1.1.3" + "sprintf-js": "~1.0.2" } }, - "node_modules/inquirer/node_modules/color-name": { - "version": "1.1.3", - "dev": true, - "license": "MIT" - }, - "node_modules/inquirer/node_modules/escape-string-regexp": { - "version": "1.0.5", + "node_modules/argv": { + "version": "0.0.2", "dev": true, - "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": ">=0.6.10" } }, - "node_modules/inquirer/node_modules/has-flag": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } + "node_modules/argv-formatter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/argv-formatter/-/argv-formatter-1.0.0.tgz", + "integrity": "sha1-oMoMvCmltz6Dbuvhy/bF4OTrgvk=", + "dev": true }, - "node_modules/inquirer/node_modules/strip-ansi": { - "version": "5.2.0", + "node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^4.1.0" - }, "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/inquirer/node_modules/supports-color": { - "version": "5.5.0", + "node_modules/arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - }, "engines": { - "node": ">= 0.4" + "node": ">=0.10.0" } }, - "node_modules/interpret": { - "version": "2.2.0", + "node_modules/array-find": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-find/-/array-find-1.0.0.tgz", + "integrity": "sha1-bI4obRHtdoMn+OYuzuhzU8o+eLg=", + "dev": true + }, + "node_modules/array-find-index": { + "version": "1.0.2", + "dev": true, "license": "MIT", "engines": { - "node": ">= 0.10" + "node": ">=0.10.0" } }, - "node_modules/ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "engines": { - "node": ">= 0.10" - } + "node_modules/array-flatten": { + "version": "1.1.1", + "license": "MIT" }, - "node_modules/is-arrayish": { - "version": "0.2.1", + "node_modules/array-ify": { + "version": "1.0.0", "dev": true, "license": "MIT" }, - "node_modules/is-bigint": { - "version": "1.0.2", + "node_modules/array-includes": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", + "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", "dev": true, - "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1", + "get-intrinsic": "^1.1.1", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-binary-path": { + "node_modules/array-union": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/is-boolean-object": { - "version": "1.1.1", + "node_modules/array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.10.0" } }, - "node_modules/is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz", + "integrity": "sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0" + }, "engines": { "node": ">= 0.4" }, @@ -9904,21 +12641,35 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-core-module": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", - "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "node_modules/array.prototype.flatmap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz", + "integrity": "sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA==", + "dev": true, "dependencies": { - "has": "^1.0.3" + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-date-object": { + "node_modules/array.prototype.map": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/array.prototype.map/-/array.prototype.map-1.0.4.tgz", + "integrity": "sha512-Qds9QnX7A0qISY7JT5WuJO0NJPE9CMlC6JzHQfhpqAAQQzufVRoeH7EzUY5GcPTx72voG8LV/5eo+b8Qi8hmhA==", "dev": true, - "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "es-array-method-boxes-properly": "^1.0.0", + "is-string": "^1.0.7" + }, "engines": { "node": ">= 0.4" }, @@ -9926,1010 +12677,896 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-finite": { - "version": "1.1.0", + "node_modules/arrify": { + "version": "1.0.1", "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-fullwidth-code-point": { - "version": "2.0.0", + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true + }, + "node_modules/asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" } }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", "dev": true, - "engines": { - "node": ">=6" + "dependencies": { + "object-assign": "^4.1.1", + "util": "0.10.3" } }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "node_modules/assert-never": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/assert-never/-/assert-never-1.2.1.tgz", + "integrity": "sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==", + "dev": true + }, + "node_modules/assert/node_modules/inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "node_modules/assert/node_modules/util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" + "inherits": "2.0.1" } }, - "node_modules/is-installed-globally": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", - "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", "dev": true, - "dependencies": { - "global-dirs": "^3.0.0", - "is-path-inside": "^3.0.2" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/is-installed-globally/node_modules/global-dirs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", - "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", - "dev": true, + "node_modules/ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", "dependencies": { - "ini": "2.0.0" + "tslib": "^2.0.1" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, - "node_modules/is-installed-globally/node_modules/ini": { + "node_modules/astral-regex": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/is-lambda": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", - "dev": true + "node_modules/async": { + "version": "1.5.2", + "license": "MIT" }, - "node_modules/is-negative-zero": { - "version": "2.0.1", + "node_modules/async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", "dev": true, - "license": "MIT", + "optional": true + }, + "node_modules/async-retry": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", + "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==", + "dependencies": { + "retry": "0.13.1" + } + }, + "node_modules/async-retry/node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 4" } }, - "node_modules/is-npm": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", - "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", + "node_modules/asynckit": { + "version": "0.4.0", + "license": "MIT" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 4.0.0" } }, - "node_modules/is-number": { - "version": "7.0.0", - "license": "MIT", + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true, + "bin": { + "atob": "bin/atob.js" + }, "engines": { - "node": ">=0.12.0" + "node": ">= 4.5.0" } }, - "node_modules/is-number-object": { - "version": "1.0.5", + "node_modules/autoprefixer": { + "version": "9.8.8", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz", + "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==", "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" + "dependencies": { + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001109", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "picocolors": "^0.2.1", + "postcss": "^7.0.32", + "postcss-value-parser": "^4.1.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" } }, - "node_modules/is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "node_modules/autoprefixer/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, "engines": { - "node": ">=6" + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, + "node_modules/aws-sdk": { + "version": "2.1078.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1078.0.tgz", + "integrity": "sha512-eJuiiCE4tomYzsxqfsjERmQ1WQkNAe5RUhOXUwJbGTEfwmbiQqq/HgVYrwcMswOHoURbtKpB5SSrTLNOBuyurA==", + "dependencies": { + "buffer": "4.9.2", + "events": "1.1.1", + "ieee754": "1.1.13", + "jmespath": "0.16.0", + "querystring": "0.2.0", + "sax": "1.2.1", + "url": "0.10.3", + "uuid": "3.3.2", + "xml2js": "0.4.19" + }, "engines": { - "node": ">=8" + "node": ">= 10.0.0" } }, - "node_modules/is-plain-obj": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "node_modules/aws-sdk/node_modules/uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" } }, - "node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "node_modules/babel-core": { + "version": "7.0.0-bridge.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", + "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==", "dev": true, - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "node_modules/babel-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", + "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" }, "engines": { - "node": ">= 0.4" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "@babel/core": "^7.8.0" } }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", - "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", + "node_modules/babel-literal-to-ast": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/babel-literal-to-ast/-/babel-literal-to-ast-2.1.0.tgz", + "integrity": "sha512-CxfpQ0ysQ0bZOhlaPgcWjl79Em16Rhqc6++UAFn0A3duiXmuyhhj8yyl9PYbj0I0CyjrHovdDbp2QEKT7uIMxw==", "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-stream": { - "version": "2.0.0", - "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "@babel/parser": "^7.1.6", + "@babel/traverse": "^7.1.6", + "@babel/types": "^7.1.6" + }, + "peerDependencies": { + "@babel/core": "^7.1.2" } }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "node_modules/babel-loader": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.4.tgz", + "integrity": "sha512-8dytA3gcvPPPv4Grjhnt8b5IIiTcq/zeXOPk4iTYI0SVXcsmuGg7JtBRDp8S9X+gJfhQ8ektjXZlDu1Bb33U8A==", "dev": true, "dependencies": { - "has-tostringtag": "^1.0.0" + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" }, "engines": { - "node": ">= 0.4" + "node": ">= 8.9" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" } }, - "node_modules/is-symbol": { - "version": "1.0.4", + "node_modules/babel-loader/node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", "dev": true, - "license": "MIT", "dependencies": { - "has-symbols": "^1.0.2" + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" }, "engines": { - "node": ">= 0.4" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, - "node_modules/is-text-path": { - "version": "1.0.1", + "node_modules/babel-plugin-apply-mdx-type-prop": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/babel-plugin-apply-mdx-type-prop/-/babel-plugin-apply-mdx-type-prop-1.6.22.tgz", + "integrity": "sha512-VefL+8o+F/DfK24lPZMtJctrCVOfgbqLAGZSkxwhazQv4VxPg3Za/i40fu22KR2m8eEda+IfSOlPLUSIiLcnCQ==", "dev": true, - "license": "MIT", "dependencies": { - "text-extensions": "^1.0.0" + "@babel/helper-plugin-utils": "7.10.4", + "@mdx-js/util": "1.6.22" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "@babel/core": "^7.11.6" } }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "license": "MIT" - }, - "node_modules/is-utf8": { - "version": "0.2.1", - "dev": true, - "license": "MIT" + "node_modules/babel-plugin-apply-mdx-type-prop/node_modules/@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true }, - "node_modules/is-weakref": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", - "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", + "node_modules/babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "object.assign": "^4.1.0" } }, - "node_modules/is-windows": { - "version": "1.0.2", + "node_modules/babel-plugin-emotion": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/babel-plugin-emotion/-/babel-plugin-emotion-10.2.2.tgz", + "integrity": "sha512-SMSkGoqTbTyUTDeuVuPIWifPdUGkTk1Kf9BWRiXIOIcuyMfsdp2EjeiiFvOzX8NOBvEh/ypKYvUh2rkgAJMCLA==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "@emotion/hash": "0.8.0", + "@emotion/memoize": "0.7.4", + "@emotion/serialize": "^0.11.16", + "babel-plugin-macros": "^2.0.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^1.0.5", + "find-root": "^1.1.0", + "source-map": "^0.5.7" } }, - "node_modules/is-yarn-global": { - "version": "0.3.0", + "node_modules/babel-plugin-emotion/node_modules/babel-plugin-macros": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", + "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", "dev": true, - "license": "MIT" - }, - "node_modules/isarray": { - "version": "1.0.0", - "license": "MIT" - }, - "node_modules/isexe": { - "version": "2.0.0", - "license": "ISC" + "dependencies": { + "@babel/runtime": "^7.7.2", + "cosmiconfig": "^6.0.0", + "resolve": "^1.12.0" + } }, - "node_modules/issue-parser": { + "node_modules/babel-plugin-emotion/node_modules/cosmiconfig": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-6.0.0.tgz", - "integrity": "sha512-zKa/Dxq2lGsBIXQ7CUZWTHfvxPC2ej0KfO7fIPqLlHB9J2hJ7rGhZ5rilhuufylr4RXYPzJUeFjKxz305OsNlA==", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", "dev": true, "dependencies": { - "lodash.capitalize": "^4.2.1", - "lodash.escaperegexp": "^4.1.2", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.uniqby": "^4.7.0" + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" }, "engines": { - "node": ">=10.13" + "node": ">=8" } }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "node_modules/babel-plugin-emotion/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true, "engines": { - "node": ">=8" + "node": ">=0.8.0" } }, - "node_modules/istanbul-lib-instrument": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz", - "integrity": "sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==", + "node_modules/babel-plugin-emotion/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "node_modules/babel-plugin-extract-import-names": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.6.22.tgz", + "integrity": "sha512-yJ9BsJaISua7d8zNT7oRG1ZLBJCIdZ4PZqmH8qa9N5AK01ifk3fnkc98AXhtzE7UkfCsEumvoQWgoYLhOnJ7jQ==", "dev": true, "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" + "@babel/helper-plugin-utils": "7.10.4" }, - "engines": { - "node": ">=8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "node_modules/babel-plugin-extract-import-names/node_modules/@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + }, + "node_modules/babel-plugin-graphql-tag": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-graphql-tag/-/babel-plugin-graphql-tag-3.3.0.tgz", + "integrity": "sha512-27qfJhFJ2jQg+ktcC3cdppE2RrXZ5uiDz+39YC5lhkmftWPuJW8ET9Ehskwv7ujScZ1jSKhs5/JZKlESCkwIBg==", "dev": true, "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/parser": "^7.3.2", + "babel-literal-to-ast": "^2.1.0", + "debug": "^4.1.1" }, - "engines": { - "node": ">=10" + "peerDependencies": { + "@babel/core": "^7.0.0", + "graphql-tag": "^2.10.1" } }, - "node_modules/istanbul-reports": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", - "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", "dev": true, "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/iterall": { - "version": "1.3.0", - "license": "MIT" - }, - "node_modules/java-properties": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-1.0.2.tgz", - "integrity": "sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==", - "dev": true, - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/jest": { + "node_modules/babel-plugin-jest-hoist": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", - "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", + "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", "dev": true, "dependencies": { - "@jest/core": "^27.5.1", - "import-local": "^3.0.2", - "jest-cli": "^27.5.1" - }, - "bin": { - "jest": "bin/jest.js" + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } } }, - "node_modules/jest-changed-files": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", - "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", + "node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", "dev": true, "dependencies": { - "@jest/types": "^27.5.1", - "execa": "^5.0.0", - "throat": "^6.0.1" + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=10", + "npm": ">=6" } }, - "node_modules/jest-circus": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", - "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", + "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", "dev": true, "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "expect": "^27.5.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3", - "throat": "^6.0.1" + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.1", + "semver": "^6.1.1" }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/jest-cli": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", - "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true, - "dependencies": { - "@jest/core": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "import-local": "^3.0.2", - "jest-config": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "prompts": "^2.0.1", - "yargs": "^16.2.0" - }, "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "semver": "bin/semver.js" } }, - "node_modules/jest-config": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", - "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", + "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", "dev": true, "dependencies": { - "@babel/core": "^7.8.0", - "@jest/test-sequencer": "^27.5.1", - "@jest/types": "^27.5.1", - "babel-jest": "^27.5.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.1", - "graceful-fs": "^4.2.9", - "jest-circus": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-jasmine2": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "@babel/helper-define-polyfill-provider": "^0.3.1", + "core-js-compat": "^3.21.0" }, "peerDependencies": { - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "ts-node": { - "optional": true - } + "@babel/core": "^7.0.0-0" } }, - "node_modules/jest-config/node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", + "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "node_modules/babel-plugin-syntax-jsx": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", + "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=", + "dev": true + }, + "node_modules/babel-plugin-transform-vite-meta-env": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-vite-meta-env/-/babel-plugin-transform-vite-meta-env-1.0.3.tgz", + "integrity": "sha512-eyfuDEXrMu667TQpmctHeTlJrZA6jXYHyEJFjcM0yEa60LS/LXlOg2PBbMb8DVS+V9CnTj/j9itdlDVMcY2zEg==", + "dev": true, "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "@babel/runtime": "^7.13.9", + "@types/babel__core": "^7.1.12" } }, - "node_modules/jest-docblock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", - "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", + "node_modules/babel-plugin-transform-vite-meta-glob": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-vite-meta-glob/-/babel-plugin-transform-vite-meta-glob-1.0.3.tgz", + "integrity": "sha512-JW3VnwUjJqpj0FM0vJFxrGdxSBcHOa0j5YMvvtXYPmFshroq53nbK9dqRETgjXlMrfIz0oU/6ki+u1GdVWdNHA==", "dev": true, "dependencies": { - "detect-newline": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "@babel/runtime": "^7.13.9", + "@types/babel__core": "^7.1.12", + "glob": "^7.1.6" } }, - "node_modules/jest-each": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", - "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", + "node_modules/babel-plugin-transform-vite-meta-glob/node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "dependencies": { - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/jest-environment-jsdom": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", - "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", "dev": true, "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1", - "jsdom": "^16.6.0" + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/jest-environment-node": { + "node_modules/babel-preset-jest": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", - "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", + "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", "dev": true, "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" + "babel-plugin-jest-hoist": "^27.5.1", + "babel-preset-current-node-syntax": "^1.0.0" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node_modules/babel-preset-vite": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/babel-preset-vite/-/babel-preset-vite-1.0.4.tgz", + "integrity": "sha512-RZS/wNfEUD8aMliObxqlPw4ZR7R5OsT1G2IHd5nuUmiYKS6zemur8aZ5WPbfQwPpTPe9VEjcrxQA/6PKBWRTkg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.9", + "@types/babel__core": "^7.1.12", + "babel-plugin-transform-vite-meta-env": "1.0.3", + "babel-plugin-transform-vite-meta-glob": "1.0.3" } }, - "node_modules/jest-haste-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", - "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "node_modules/babel-walk": { + "version": "3.0.0-canary-5", + "resolved": "https://registry.npmjs.org/babel-walk/-/babel-walk-3.0.0-canary-5.tgz", + "integrity": "sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==", "dev": true, "dependencies": { - "@jest/types": "^27.5.1", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^27.5.1", - "jest-serializer": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" + "@babel/types": "^7.9.6" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" + "node": ">= 10.0.0" } }, - "node_modules/jest-jasmine2": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", - "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", + "node_modules/bail": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", + "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "expect": "^27.5.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/jest-leak-detector": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", - "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", + "node_modules/balanced-match": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", "dev": true, "dependencies": { - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" + "is-descriptor": "^1.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "node_modules/base/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-message-util/node_modules/@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", - "dev": true, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/basic-auth": { + "version": "2.0.1", + "license": "MIT", "dependencies": { - "@babel/highlight": "^7.16.7" + "safe-buffer": "5.1.2" }, "engines": { - "node": ">=6.9.0" + "node": ">= 0.8" } }, - "node_modules/jest-mock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", - "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", + "node_modules/batch-processor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/batch-processor/-/batch-processor-1.0.0.tgz", + "integrity": "sha1-dclcMrdI4IUNEMKxaPa9vpiRrOg=", + "dev": true + }, + "node_modules/bcryptjs": { + "version": "2.4.3", + "license": "MIT" + }, + "node_modules/before-after-hook": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz", + "integrity": "sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==", + "dev": true + }, + "node_modules/better-opn": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-2.1.1.tgz", + "integrity": "sha512-kIPXZS5qwyKiX/HcRvDYfmBQUa8XP17I0mYZZ0y4UhpYOSvtsLHDYqmomS+Mj20aDvD3knEiQ0ecQy2nhio3yA==", "dev": true, "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*" + "open": "^7.0.3" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">8.0.0" } }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", - "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "dev": true, "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } + "node": "*" } }, - "node_modules/jest-regex-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", - "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", - "dev": true, + "node_modules/bignumber.js": { + "version": "9.0.1", + "license": "MIT", "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "*" } }, - "node_modules/jest-resolve": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", - "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", - "slash": "^3.0.0" - }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=8" } }, - "node_modules/jest-resolve-dependencies": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", - "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", "dev": true, + "optional": true, "dependencies": { - "@jest/types": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-snapshot": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "file-uri-to-path": "1.0.0" } }, - "node_modules/jest-runner": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", - "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", + "node_modules/bindings/node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", "dev": true, - "dependencies": { - "@jest/console": "^27.5.1", - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.8.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-leak-detector": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "source-map-support": "^0.5.6", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } + "optional": true }, - "node_modules/jest-runtime": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", - "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/globals": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "execa": "^5.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } + "node_modules/bluebird": { + "version": "3.7.2", + "license": "MIT" }, - "node_modules/jest-serializer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", - "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", - "dev": true, + "node_modules/bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", + "dev": true + }, + "node_modules/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", "dependencies": { - "@types/node": "*", - "graceful-fs": "^4.2.9" + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.9.7", + "raw-body": "2.4.3", + "type-is": "~1.6.18" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">= 0.8" } }, - "node_modules/jest-snapshot": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", - "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", - "dev": true, - "dependencies": { - "@babel/core": "^7.7.2", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.0.0", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__traverse": "^7.0.4", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^27.5.1", - "graceful-fs": "^4.2.9", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", - "natural-compare": "^1.4.0", - "pretty-format": "^27.5.1", - "semver": "^7.3.2" - }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">= 0.8" } }, - "node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "dev": true, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "ms": "2.0.0" } }, - "node_modules/jest-validate": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", - "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "node_modules/bottleneck": { + "version": "2.19.5", + "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", + "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==", + "dev": true + }, + "node_modules/boxen": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", + "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", "dev": true, "dependencies": { - "@jest/types": "^27.5.1", + "ansi-align": "^3.0.0", "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", - "leven": "^3.1.0", - "pretty-format": "^27.5.1" + "chalk": "^4.1.0", + "cli-boxes": "^2.2.1", + "string-width": "^4.2.2", + "type-fest": "^0.20.2", + "widest-line": "^3.1.0", + "wrap-ansi": "^7.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-watcher": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", - "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", + "node_modules/boxen/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, - "dependencies": { - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "jest-util": "^27.5.1", - "string-length": "^4.0.1" - }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=8" } }, - "node_modules/jest-watcher/node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "node_modules/boxen/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "dependencies": { - "type-fest": "^0.21.3" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-watcher/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "node_modules/boxen/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, "engines": { "node": ">=10" @@ -10938,601 +13575,654 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "node_modules/brace-expansion": { + "version": "1.1.11", "dev": true, + "license": "MIT", "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "license": "MIT", + "dependencies": { + "fill-range": "^7.0.1" }, "engines": { - "node": ">= 10.13.0" + "node": ">=8" } }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "node_modules/browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, - "node_modules/jju": { - "version": "1.4.0", + "node_modules/browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", "dev": true, - "license": "MIT" + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } }, - "node_modules/jmespath": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz", - "integrity": "sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==", - "engines": { - "node": ">= 0.6.0" + "node_modules/browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" } }, - "node_modules/js-tokens": { - "version": "4.0.0", + "node_modules/browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", "dev": true, - "license": "MIT" + "dependencies": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } }, - "node_modules/js-yaml": { - "version": "3.14.1", + "node_modules/browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", "dev": true, - "license": "MIT", "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" } }, - "node_modules/jsdom": { - "version": "16.7.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", - "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "node_modules/browserify-sign/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, "dependencies": { - "abab": "^2.0.5", - "acorn": "^8.2.4", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", - "cssstyle": "^2.3.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.1", - "domexception": "^2.0.1", - "escodegen": "^2.0.0", - "form-data": "^3.0.0", - "html-encoding-sniffer": "^2.0.1", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^2.0.0", - "webidl-conversions": "^6.1.0", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.5.0", - "ws": "^7.4.6", - "xml-name-validator": "^3.0.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": ">=10" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } + "node": ">= 6" } }, - "node_modules/jsdom/node_modules/acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "node_modules/browserify-sign/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "dependencies": { + "pako": "~1.0.5" } }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "node_modules/browserslist": { + "version": "4.20.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz", + "integrity": "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001317", + "electron-to-chromium": "^1.4.84", + "escalade": "^3.1.1", + "node-releases": "^2.0.2", + "picocolors": "^1.0.0" + }, "bin": { - "jsesc": "bin/jsesc" + "browserslist": "cli.js" }, "engines": { - "node": ">=4" + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/json-bigint": { + "node_modules/browserslist/node_modules/picocolors": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/bs-logger": { + "version": "0.2.6", + "dev": true, "license": "MIT", "dependencies": { - "bignumber.js": "^9.0.0" + "fast-json-stable-stringify": "2.x" + }, + "engines": { + "node": ">= 6" } }, - "node_modules/json-buffer": { - "version": "3.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "dev": true, - "license": "MIT" - }, - "node_modules/json-parse-helpfulerror": { - "version": "1.0.3", + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", "dev": true, - "license": "MIT", "dependencies": { - "jju": "^1.1.0" + "node-int64": "^0.4.0" } }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "dev": true, - "license": "MIT" + "node_modules/buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } }, - "node_modules/json-stable-stringify-without-jsonify": { + "node_modules/buffer-equal-constant-time": { "version": "1.0.1", - "dev": true, - "license": "MIT" + "license": "BSD-3-Clause" }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "dev": true, - "license": "ISC" + "node_modules/buffer-from": { + "version": "1.1.1", + "license": "MIT" }, - "node_modules/json5": { - "version": "2.2.0", - "dev": true, + "node_modules/buffer-writer": { + "version": "2.0.0", "license": "MIT", - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "json5": "lib/cli.js" - }, "engines": { - "node": ">=6" + "node": ">=4" } }, - "node_modules/jsonc-parser": { + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "node_modules/builtin-status-codes": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", - "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", "dev": true }, - "node_modules/jsondiffpatch": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/jsondiffpatch/-/jsondiffpatch-0.4.1.tgz", - "integrity": "sha512-t0etAxTUk1w5MYdNOkZBZ8rvYYN5iL+2dHCCx/DpkFm/bW28M6y5nUS83D4XdZiHy35Fpaw6LBb+F88fHZnVCw==", - "dependencies": { - "chalk": "^2.3.0", - "diff-match-patch": "^1.0.0" - }, - "bin": { - "jsondiffpatch": "bin/jsondiffpatch" - }, - "engines": { - "node": ">=8.17.0" - } + "node_modules/builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", + "dev": true }, - "node_modules/jsondiffpatch/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/busboy": { + "version": "0.3.1", "dependencies": { - "color-convert": "^1.9.0" + "dicer": "0.3.0" }, "engines": { - "node": ">=4" + "node": ">=4.5.0" } }, - "node_modules/jsondiffpatch/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, + "node_modules/bytes": { + "version": "3.0.0", + "license": "MIT", "engines": { - "node": ">=4" + "node": ">= 0.8" } }, - "node_modules/jsondiffpatch/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "node_modules/cacache": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.0.1.tgz", + "integrity": "sha512-tHPtfdZDqQpZ15eaEZeLspIqS5mK5fOBDZi6AjuqaIi53QNVXH3dQv6uKT3YuUu6uxV/8pjU9in0CoJ8fgaHqw==", + "dev": true, "dependencies": { - "color-name": "1.1.3" + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.1.2", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^7.2.0", + "infer-owner": "^1.0.4", + "lru-cache": "^7.5.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.1.11", + "unique-filename": "^1.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" } }, - "node_modules/jsondiffpatch/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "node_modules/jsondiffpatch/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "node_modules/cacache/node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, "engines": { - "node": ">=0.8.0" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/jsondiffpatch/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "node_modules/cacache/node_modules/lru-cache": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.6.0.tgz", + "integrity": "sha512-zjOf6cyMI7rcN+5MtLsT4GnDjc6D9XHi8kYcsfXTqWC+yLdSiU3/jtEPX9wZE77+XLtnmdIWu3+291hkizfH+Q==", + "dev": true, "engines": { - "node": ">=4" + "node": ">=12" } }, - "node_modules/jsondiffpatch/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, "dependencies": { - "has-flag": "^3.0.0" + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" }, "engines": { - "node": ">=4" - } - }, - "node_modules/jsonfile": { - "version": "4.0.0", - "license": "MIT", - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "node": ">=0.10.0" } }, - "node_modules/jsonlines": { - "version": "0.1.1", - "dev": true, - "license": "MIT" - }, - "node_modules/jsonparse": { - "version": "1.3.1", + "node_modules/cache-base/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true, - "engines": [ - "node >= 0.2.0" - ], - "license": "MIT" + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/JSONStream": { - "version": "1.3.5", + "node_modules/cachedir": { + "version": "2.2.0", "dev": true, - "license": "(MIT OR Apache-2.0)", - "dependencies": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - }, - "bin": { - "JSONStream": "bin.js" - }, + "license": "MIT", "engines": { - "node": "*" + "node": ">=6" } }, - "node_modules/jsonwebtoken": { - "version": "8.5.1", + "node_modules/call-bind": { + "version": "1.0.2", + "dev": true, "license": "MIT", "dependencies": { - "jws": "^3.2.2", - "lodash.includes": "^4.3.0", - "lodash.isboolean": "^3.0.3", - "lodash.isinteger": "^4.0.4", - "lodash.isnumber": "^3.0.3", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.once": "^4.0.0", - "ms": "^2.1.1", - "semver": "^5.6.0" + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" }, - "engines": { - "node": ">=4", - "npm": ">=1.4.28" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jsonwebtoken/node_modules/semver": { - "version": "5.7.1", - "license": "ISC", - "bin": { - "semver": "bin/semver" - } + "node_modules/call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", + "dev": true }, - "node_modules/jszip": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.7.1.tgz", - "integrity": "sha512-ghL0tz1XG9ZEmRMcEN2vt7xabrDdqHHeykgARpmZ0BiIctWxM47Vt63ZO2dnp4QYt/xJVLLy5Zv1l/xRdh2byg==", - "dependencies": { - "lie": "~3.3.0", - "pako": "~1.0.2", - "readable-stream": "~2.3.6", - "set-immediate-shim": "~1.0.1" + "node_modules/callsites": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" } }, - "node_modules/jwa": { - "version": "1.4.1", - "license": "MIT", + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, "dependencies": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" } }, - "node_modules/jws": { - "version": "3.2.2", - "license": "MIT", - "dependencies": { - "jwa": "^1.4.1", - "safe-buffer": "^5.0.1" + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/keyv": { - "version": "3.0.0", + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", "dev": true, - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.0" + "engines": { + "node": ">= 6" } }, - "node_modules/kind-of": { - "version": "6.0.3", + "node_modules/camelcase-keys": { + "version": "6.2.2", "dev": true, "license": "MIT", + "dependencies": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/kleur": { - "version": "3.0.3", + "node_modules/camelcase-keys/node_modules/camelcase": { + "version": "5.3.1", "dev": true, "license": "MIT", "engines": { "node": ">=6" } }, - "node_modules/knex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/knex/-/knex-1.0.4.tgz", - "integrity": "sha512-cMQ81fpkVmr4ia20BtyrD3oPere/ir/Q6IGLAgcREKOzRVhMsasQ4nx1VQuDRJjqq6oK5kfcxmvWoYkHKrnuMA==", - "dependencies": { - "colorette": "2.0.16", - "commander": "^8.3.0", - "debug": "4.3.3", - "escalade": "^3.1.1", - "esm": "^3.2.25", - "getopts": "2.3.0", - "interpret": "^2.2.0", - "lodash": "^4.17.21", - "pg-connection-string": "2.5.0", - "rechoir": "^0.8.0", - "resolve-from": "^5.0.0", - "tarn": "^3.0.2", - "tildify": "2.0.0" - }, - "bin": { - "knex": "bin/cli.js" - }, - "engines": { - "node": ">=12" - }, - "peerDependenciesMeta": { - "@vscode/sqlite3": { - "optional": true - }, - "better-sqlite3": { - "optional": true - }, - "mysql": { - "optional": true - }, - "mysql2": { - "optional": true - }, - "pg": { - "optional": true - }, - "pg-native": { - "optional": true + "node_modules/camino-api": { + "resolved": "packages/api", + "link": true + }, + "node_modules/camino-ui": { + "resolved": "packages/ui", + "link": true + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001319", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001319.tgz", + "integrity": "sha512-xjlIAFHucBRSMUo1kb5D4LYgcN1M45qdKP++lhqowDpwJwGkpIRTt5qQqnhxjj1vHcI7nrJxWhCC1ATrCEBTcw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" }, - "tedious": { - "optional": true + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" } - } + ] }, - "node_modules/knex/node_modules/rechoir": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", - "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "node_modules/capture-exit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", + "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", + "dev": true, "dependencies": { - "resolve": "^1.20.0" + "rsvp": "^4.8.4" }, "engines": { - "node": ">= 10.13.0" + "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/kuler": { - "version": "2.0.0", - "license": "MIT" - }, - "node_modules/latest-version": { - "version": "5.1.0", - "dev": true, + "node_modules/cardinal": { + "version": "0.4.4", "license": "MIT", "dependencies": { - "package-json": "^6.3.0" + "ansicolors": "~0.2.1", + "redeyed": "~0.4.0" }, - "engines": { - "node": ">=8" + "bin": { + "cdl": "bin/cdl.js" } }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "node_modules/case-sensitive-paths-webpack-plugin": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", + "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==", "dev": true, "engines": { - "node": ">=6" + "node": ">=4" } }, - "node_modules/levn": { - "version": "0.4.1", + "node_modules/ccount": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz", + "integrity": "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==", "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/libnpmconfig": { - "version": "1.2.1", - "dev": true, - "license": "ISC", + "node_modules/cerbere": { + "version": "0.2.3", + "license": "AGPL-3.0-or-later", "dependencies": { - "figgy-pudding": "^3.5.1", - "find-up": "^3.0.0", - "ini": "^1.3.5" + "fast-xml-parser": "^3.17.0", + "uuid": "^8.0.0" } }, - "node_modules/libnpmconfig/node_modules/find-up": { - "version": "3.0.0", - "dev": true, - "license": "MIT", + "node_modules/cfb": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/cfb/-/cfb-1.2.1.tgz", + "integrity": "sha512-wT2ScPAFGSVy7CY+aauMezZBnNrfnaLSrxHUHdea+Td/86vrk6ZquggV+ssBR88zNs0OnBkL2+lf9q0K+zVGzQ==", "dependencies": { - "locate-path": "^3.0.0" + "adler-32": "~1.3.0", + "crc-32": "~1.2.0", + "printj": "~1.3.0" }, "engines": { - "node": ">=6" + "node": ">=0.8" } }, - "node_modules/libnpmconfig/node_modules/locate-path": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "node_modules/cfb/node_modules/printj": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/printj/-/printj-1.3.0.tgz", + "integrity": "sha512-017o8YIaz8gLhaNxRB9eBv2mWXI2CtzhPJALnQTP+OPpuUfP0RMWqr/mHCzqVeu1AQxfzSfAtAq66vKB8y7Lzg==", + "bin": { + "printj": "bin/printj.njs" }, "engines": { - "node": ">=6" + "node": ">=0.8" } }, - "node_modules/libnpmconfig/node_modules/p-limit": { - "version": "2.3.0", - "dev": true, - "license": "MIT", + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dependencies": { - "p-try": "^2.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=6" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/libnpmconfig/node_modules/p-locate": { - "version": "3.0.0", + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.0.0" - }, "engines": { - "node": ">=6" + "node": ">=10" } }, - "node_modules/lie": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", - "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "node_modules/character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", + "integrity": "sha1-x84o821LzZdE5f/CxfzeHHMmH8A=", + "dev": true, "dependencies": { - "immediate": "~3.0.5" + "is-regex": "^1.0.3" } }, - "node_modules/lilconfig": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.4.tgz", - "integrity": "sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==", + "node_modules/character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/charcodes": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/charcodes/-/charcodes-0.2.0.tgz", + "integrity": "sha512-Y4kiDb+AM4Ecy58YkuZrrSRJBDQdQ2L+NyS1vHHFtNtUjgutcZfx3yp1dAONI/oPaPmyGfCLx5CxL+zauIMyKQ==", "dev": true, "engines": { - "node": ">=10" + "node": ">=6" } }, - "node_modules/lines-and-columns": { - "version": "1.1.6", + "node_modules/chardet": { + "version": "0.7.0", "dev": true, "license": "MIT" }, - "node_modules/lint-staged": { - "version": "12.3.6", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.3.6.tgz", - "integrity": "sha512-tVNyl/HsAnplKh4oaoRNzyZLm0PE/6VaBUXvd/gA9zhYCC/+ivZwiwpoT6jOxcLzuIOjP19wW+mfOi7/Bw4c1A==", + "node_modules/chart.js": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-3.7.1.tgz", + "integrity": "sha512-8knRegQLFnPQAheZV8MjxIXc5gQEfDFD897BJgv/klO/vtIyFFmgMXrNfgrXpbTr/XbTturxRgxIXx/Y+ASJBA==", + "dev": true + }, + "node_modules/choices.js": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/choices.js/-/choices.js-10.1.0.tgz", + "integrity": "sha512-NtrFt7c7ZQEGmkWsAV+EHynJhADWoZ82JEfg1+vQ9MMKJD4Ax2rzYPxXe+Q64i0HgUgWG/XTN3gN2pB8UFFFlA==", + "dependencies": { + "deepmerge": "^4.2.2", + "fuse.js": "^6.5.3", + "redux": "^4.1.2" + } + }, + "node_modules/choices.js/node_modules/fuse.js": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-6.5.3.tgz", + "integrity": "sha512-sA5etGE7yD/pOqivZRBvUBd/NaL2sjAu6QuSaFoe1H2BrJSkH/T/UXAJ8CdXdw7DvY3Hs8CXKYkDWX7RiP5KOg==", + "engines": { + "node": ">=10" + } + }, + "node_modules/chokidar": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", + "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", "dev": true, "dependencies": { - "cli-truncate": "^3.1.0", - "colorette": "^2.0.16", - "commander": "^8.3.0", - "debug": "^4.3.3", - "execa": "^5.1.1", - "lilconfig": "2.0.4", - "listr2": "^4.0.1", - "micromatch": "^4.0.4", - "normalize-path": "^3.0.0", - "object-inspect": "^1.12.0", - "pidtree": "^0.5.0", - "string-argv": "^0.3.1", - "supports-color": "^9.2.1", - "yaml": "^1.10.2" - }, - "bin": { - "lint-staged": "bin/lint-staged.js" + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">= 8.10.0" }, - "funding": { - "url": "https://opencollective.com/lint-staged" + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/lint-staged/node_modules/normalize-path": { + "node_modules/chokidar/node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", @@ -11541,318 +14231,254 @@ "node": ">=0.10.0" } }, - "node_modules/lint-staged/node_modules/supports-color": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.2.1.tgz", - "integrity": "sha512-Obv7ycoCTG51N7y175StI9BlAXrmgZrFhZOb0/PyjHBher/NmsdBgbbQ1Inhq+gIhz6+7Gb+jWF2Vqi7Mf1xnQ==", + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", "dev": true, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "node": ">=10" } }, - "node_modules/listr2": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-4.0.4.tgz", - "integrity": "sha512-vJOm5KD6uZXjSsrwajr+mNacIjf87gWvlBEltPWLbTkslUscWAzquyK4xfe9Zd4RDgO5nnwFyV06FC+uVR+5mg==", + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", "dev": true, - "dependencies": { - "cli-truncate": "^2.1.0", - "colorette": "^2.0.16", - "log-update": "^4.0.0", - "p-map": "^4.0.0", - "rfdc": "^1.3.0", - "rxjs": "^7.5.4", - "through": "^2.3.8", - "wrap-ansi": "^7.0.0" - }, "engines": { - "node": ">=12" - }, - "peerDependencies": { - "enquirer": ">= 2.3.0 < 3" - }, - "peerDependenciesMeta": { - "enquirer": { - "optional": true - } + "node": ">=6.0" } }, - "node_modules/listr2/node_modules/cli-truncate": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", - "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "node_modules/ci-info": { + "version": "3.2.0", "dev": true, - "dependencies": { - "slice-ansi": "^3.0.0", - "string-width": "^4.2.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "license": "MIT" }, - "node_modules/listr2/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/cint": { + "version": "8.2.1", "dev": true, - "engines": { - "node": ">=8" - } + "license": "ISC" }, - "node_modules/listr2/node_modules/rxjs": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.4.tgz", - "integrity": "sha512-h5M3Hk78r6wAheJF0a5YahB1yRQKCsZ4MsGdZ5O9ETbVtjPcScGfrMmoOq7EBsCRzd4BDkvDJ7ogP8Sz5tTFiQ==", + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", "dev": true, "dependencies": { - "tslib": "^2.1.0" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, - "node_modules/listr2/node_modules/slice-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", - "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "node_modules/cjs-module-lexer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", + "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", + "dev": true + }, + "node_modules/class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", "dev": true, "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/listr2/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/class-utils/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "is-descriptor": "^0.1.0" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/load-json-file": { - "version": "4.0.0", + "node_modules/class-utils/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, - "license": "MIT", "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" + "kind-of": "^3.0.2" }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/load-json-file/node_modules/parse-json": { - "version": "4.0.0", + "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, - "license": "MIT", "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "is-buffer": "^1.1.5" }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/load-json-file/node_modules/pify": { - "version": "3.0.0", + "node_modules/class-utils/node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/class-utils/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, - "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2" + }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/load-json-file/node_modules/strip-bom": { - "version": "3.0.0", + "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, - "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/locate-path": { - "version": "2.0.0", + "node_modules/class-utils/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, - "license": "MIT", "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/lodash": { - "version": "4.17.21", - "license": "MIT" - }, - "node_modules/lodash.capitalize": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz", - "integrity": "sha1-+CbJtOKoUR2E46yinbBeGk87cqk=", - "dev": true - }, - "node_modules/lodash.deburr": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/lodash.deburr/-/lodash.deburr-4.1.0.tgz", - "integrity": "sha1-3bG7s+8HRYwBd7oH3hRCLLAz/5s=" - }, - "node_modules/lodash.escaperegexp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", - "integrity": "sha1-ZHYsSGGAglGKw99Mz11YhtriA0c=", - "dev": true - }, - "node_modules/lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", + "node_modules/class-utils/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true, - "optional": true - }, - "node_modules/lodash.includes": { - "version": "4.3.0", - "license": "MIT" - }, - "node_modules/lodash.isboolean": { - "version": "3.0.3", - "license": "MIT" - }, - "node_modules/lodash.isinteger": { - "version": "4.0.4", - "license": "MIT" + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/lodash.ismatch": { - "version": "4.4.0", + "node_modules/class-utils/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", "dev": true, - "license": "MIT" - }, - "node_modules/lodash.isnumber": { - "version": "3.0.3", - "license": "MIT" - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "license": "MIT" - }, - "node_modules/lodash.isstring": { - "version": "4.0.1", - "license": "MIT" + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/lodash.map": { - "version": "4.6.0", + "node_modules/clean-css": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.2.4.tgz", + "integrity": "sha512-nKseG8wCzEuji/4yrgM/5cthL9oTDc5UOQyFMvW/Q53oP6gLH690o1NbuTh6Y18nujr7BxlsFuS7gXLnLzKJGg==", "dev": true, - "license": "MIT" - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", - "dev": true + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } }, - "node_modules/lodash.merge": { - "version": "4.6.2", + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true, - "license": "MIT" - }, - "node_modules/lodash.once": { - "version": "4.1.1", - "license": "MIT" - }, - "node_modules/lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", - "dev": true - }, - "node_modules/lodash.uniqby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", - "integrity": "sha1-2ZwHpmnp5tJOE2Lf4mbGdhavEwI=", - "dev": true + "engines": { + "node": ">=6" + } }, - "node_modules/log-update": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", - "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "node_modules/cli-boxes": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", "dev": true, - "dependencies": { - "ansi-escapes": "^4.3.0", - "cli-cursor": "^3.1.0", - "slice-ansi": "^4.0.0", - "wrap-ansi": "^6.2.0" - }, "engines": { - "node": ">=10" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/log-update/node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "node_modules/cli-cursor": { + "version": "2.1.0", "dev": true, + "license": "MIT", "dependencies": { - "type-fest": "^0.21.3" + "restore-cursor": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=4" + } + }, + "node_modules/cli-table": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.11.tgz", + "integrity": "sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==", + "dev": true, + "dependencies": { + "colors": "1.0.3" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">= 0.2.0" } }, - "node_modules/log-update/node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "node_modules/cli-table3": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.1.tgz", + "integrity": "sha512-w0q/enDHhPLq44ovMGdQeeDLvwxwavsJX7oQGYt/LrBlYsyaxyDnp6z3QzFut/6kLLKnlcUVJLrpB7KBfgG/RA==", "dev": true, "dependencies": { - "restore-cursor": "^3.1.0" + "string-width": "^4.2.0" }, "engines": { - "node": ">=8" + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "colors": "1.4.0" } }, - "node_modules/log-update/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/cli-table3/node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", "dev": true, + "optional": true, "engines": { - "node": ">=8" + "node": ">=0.1.90" } }, - "node_modules/log-update/node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "node_modules/cli-table3/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, "engines": { "node": ">=8" } }, - "node_modules/log-update/node_modules/string-width": { + "node_modules/cli-table3/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", @@ -11866,10587 +14492,34178 @@ "node": ">=8" } }, - "node_modules/log-update/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "node_modules/cli-truncate": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", + "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", "dev": true, + "dependencies": { + "slice-ansi": "^5.0.0", + "string-width": "^5.0.0" + }, "engines": { - "node": ">=10" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/log-update/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "node_modules/cli-truncate/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/logform": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/logform/-/logform-2.4.0.tgz", - "integrity": "sha512-CPSJw4ftjf517EhXZGGvTHHkYobo7ZCc0kvwUoOYcjfR2UVrI66RHj8MCrfAdEitdmFqbu2BYdYs8FHHZSb6iw==", - "dependencies": { - "@colors/colors": "1.5.0", - "fecha": "^4.2.0", - "ms": "^2.1.1", - "safe-stable-stringify": "^2.3.1", - "triple-beam": "^1.3.0" + "node_modules/cli-truncate/node_modules/ansi-styles": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.1.0.tgz", + "integrity": "sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/loglevel": { - "version": "1.7.1", + "node_modules/cli-truncate/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/cli-truncate/node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", "dev": true, - "license": "MIT", "engines": { - "node": ">= 0.6.0" + "node": ">=12" }, "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/loglevel" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/loglevel-colored-level-prefix": { - "version": "1.0.0", + "node_modules/cli-truncate/node_modules/slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", "dev": true, - "license": "MIT", "dependencies": { - "chalk": "^1.1.3", - "loglevel": "^1.4.1" + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/loglevel-colored-level-prefix/node_modules/ansi-regex": { - "version": "2.1.1", + "node_modules/cli-truncate/node_modules/string-width": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.0.1.tgz", + "integrity": "sha512-5ohWO/M4//8lErlUUtrFy3b11GtNOuMOU0ysKCDXFcfXuuvUXu95akgj/i8ofmaGdN0hCqyl6uu9i8dS/mQp5g==", "dev": true, - "license": "MIT", + "dependencies": { + "emoji-regex": "^9.2.2", + "is-fullwidth-code-point": "^4.0.0", + "strip-ansi": "^7.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/loglevel-colored-level-prefix/node_modules/ansi-styles": { - "version": "2.2.1", + "node_modules/cli-truncate/node_modules/strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", "dev": true, - "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/loglevel-colored-level-prefix/node_modules/chalk": { - "version": "1.1.3", + "node_modules/cli-width": { + "version": "2.2.1", "dev": true, - "license": "MIT", + "license": "ISC" + }, + "node_modules/cliui": { + "version": "7.0.4", + "dev": true, + "license": "ISC", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "node_modules/loglevel-colored-level-prefix/node_modules/escape-string-regexp": { - "version": "1.0.5", + "node_modules/cliui/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", "dev": true, "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": ">=8" } }, - "node_modules/loglevel-colored-level-prefix/node_modules/strip-ansi": { - "version": "3.0.1", + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.2", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/loglevel-colored-level-prefix/node_modules/supports-color": { - "version": "2.0.0", + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", "dev": true, - "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": ">=0.8" } }, - "node_modules/longest": { - "version": "2.0.1", + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dev": true, - "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/loud-rejection": { - "version": "1.6.0", + "node_modules/clone-deep/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, - "license": "MIT", "dependencies": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" + "isobject": "^3.0.1" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/lowercase-keys": { - "version": "1.0.1", + "node_modules/clone-deep/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/lru_map": { - "version": "0.3.3", - "license": "MIT" - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "license": "ISC", + "node_modules/clone-regexp": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-1.0.1.tgz", + "integrity": "sha512-Fcij9IwRW27XedRIJnSOEupS7RVcXtObJXbcUOX93UCLqqOdRpkvzKywOOSizmEK/Is3S/RHX9dLdfo6R1Q1mw==", + "dev": true, "dependencies": { - "yallist": "^4.0.0" + "is-regexp": "^1.0.0", + "is-supported-regexp-flag": "^1.0.0" }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/lunr": { - "version": "2.3.9", + "node_modules/clone-response": { + "version": "1.0.2", "dev": true, - "license": "MIT" - }, - "node_modules/make-dir": { - "version": "3.1.0", "license": "MIT", "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "mimic-response": "^1.0.0" } }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "node_modules/clsx": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz", + "integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==", + "dev": true, + "engines": { + "node": ">=6" } }, - "node_modules/make-error": { - "version": "1.3.6", - "license": "ISC" - }, - "node_modules/make-fetch-happen": { - "version": "10.0.6", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.0.6.tgz", - "integrity": "sha512-4Gfh6lV3TLXmj7qz79hBFuvVqjYSMW6v2+sxtdX4LFQU0rK3V/txRjE0DoZb7X0IF3t9f8NO3CxPSWlvdckhVA==", - "dev": true, - "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^16.0.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.5.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^2.0.3", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.1.1", - "ssri": "^8.0.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" - } - }, - "node_modules/make-fetch-happen/node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", "dev": true, "engines": { - "node": ">= 10" + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" } }, - "node_modules/make-fetch-happen/node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "node_modules/codecov": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.8.3.tgz", + "integrity": "sha512-Y8Hw+V3HgR7V71xWH2vQ9lyS358CbGCldWlJFR0JirqoGtOoas3R3/OclRTvgUYFK29mmJICDPauVKmpqbwhOA==", "dev": true, "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" + "argv": "0.0.2", + "ignore-walk": "3.0.4", + "js-yaml": "3.14.1", + "teeny-request": "7.1.1", + "urlgrey": "1.0.0" + }, + "bin": { + "codecov": "bin/codecov" }, "engines": { - "node": ">= 6" + "node": ">=4.0" } }, - "node_modules/make-fetch-happen/node_modules/lru-cache": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.6.0.tgz", - "integrity": "sha512-zjOf6cyMI7rcN+5MtLsT4GnDjc6D9XHi8kYcsfXTqWC+yLdSiU3/jtEPX9wZE77+XLtnmdIWu3+291hkizfH+Q==", - "dev": true, + "node_modules/codepage": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/codepage/-/codepage-1.15.0.tgz", + "integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==", "engines": { - "node": ">=12" - } - }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "dependencies": { - "tmpl": "1.0.5" + "node": ">=0.8" } }, - "node_modules/map-obj": { - "version": "4.2.1", + "node_modules/collapse-white-space": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.6.tgz", + "integrity": "sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/marked": { - "version": "4.0.12", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.12.tgz", - "integrity": "sha512-hgibXWrEDNBWgGiK18j/4lkS6ihTe9sxtV4Q1OQppb/0zzyPSzoFANBa5MfsG/zgsWklmNnhm0XACZOH/0HBiQ==", + "node_modules/collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true + }, + "node_modules/collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", "dev": true, - "bin": { - "marked": "bin/marked.js" + "dependencies": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" }, "engines": { - "node": ">= 12" + "node": ">=0.10.0" } }, - "node_modules/marked-terminal": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-5.0.0.tgz", - "integrity": "sha512-26604GmGmW63ElxcXpE2xfMdbtgD/qiwIqOh/+5+uPe6NVU4bU433+wvPTfq6NZcGr16KWqwu/dzsKxg3IL2Xw==", - "dev": true, + "node_modules/color": { + "version": "3.0.0", + "license": "MIT", "dependencies": { - "ansi-escapes": "^5.0.0", - "cardinal": "^2.1.1", - "chalk": "^5.0.0", - "cli-table3": "^0.6.0", - "node-emoji": "^1.11.0", - "supports-hyperlinks": "^2.2.0" - }, - "engines": { - "node": " >=14.13.1 || >=16.0.0" - }, - "peerDependencies": { - "marked": "^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0" + "color-convert": "^1.9.1", + "color-string": "^1.5.2" } }, - "node_modules/marked-terminal/node_modules/ansi-escapes": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-5.0.0.tgz", - "integrity": "sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==", - "dev": true, + "node_modules/color-convert": { + "version": "2.0.1", + "license": "MIT", "dependencies": { - "type-fest": "^1.0.2" + "color-name": "~1.1.4" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=7.0.0" } }, - "node_modules/marked-terminal/node_modules/ansicolors": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", - "integrity": "sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk=", - "dev": true + "node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" }, - "node_modules/marked-terminal/node_modules/cardinal": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", - "integrity": "sha1-fMEFXYItISlU0HsIXeolHMe8VQU=", - "dev": true, + "node_modules/color-string": { + "version": "1.5.5", + "license": "MIT", "dependencies": { - "ansicolors": "~0.3.2", - "redeyed": "~2.1.0" - }, - "bin": { - "cdl": "bin/cdl.js" + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" } }, - "node_modules/marked-terminal/node_modules/chalk": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.0.0.tgz", - "integrity": "sha512-/duVOqst+luxCQRKEo4bNxinsOQtMP80ZYm7mMqzuh5PociNL0PvmHFvREJ9ueYL2TxlHjBcmLCdmocx9Vg+IQ==", + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", "dev": true, - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "bin": { + "color-support": "bin.js" } }, - "node_modules/marked-terminal/node_modules/redeyed": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz", - "integrity": "sha1-iYS1gV2ZyyIEacme7v/jiRPmzAs=", - "dev": true, + "node_modules/color/node_modules/color-convert": { + "version": "1.9.3", + "license": "MIT", "dependencies": { - "esprima": "~4.0.0" + "color-name": "1.1.3" } }, - "node_modules/marked-terminal/node_modules/type-fest": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "node_modules/color/node_modules/color-name": { + "version": "1.1.3", + "license": "MIT" + }, + "node_modules/colord": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.2.tgz", + "integrity": "sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ==", + "dev": true + }, + "node_modules/colorette": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==" + }, + "node_modules/colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.1.90" } }, - "node_modules/matomo-tracker": { - "version": "2.2.4", + "node_modules/colorspace": { + "version": "1.1.2", "license": "MIT", - "engines": { - "node": ">=4.2.0" + "dependencies": { + "color": "3.0.x", + "text-hex": "1.0.x" } }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", - "engines": { - "node": ">= 0.6" + "node_modules/combine-errors": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/combine-errors/-/combine-errors-3.0.3.tgz", + "integrity": "sha1-9N9nQAg+VwOjGBEQwrEFUfAD2oY=", + "dev": true, + "dependencies": { + "custom-error-instance": "2.1.1", + "lodash.uniqby": "4.5.0" } }, - "node_modules/merge": { - "version": "2.1.1", + "node_modules/combine-errors/node_modules/lodash.uniqby": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.5.0.tgz", + "integrity": "sha1-o6F7v2LutiQPSRhG6XwcTipeHiE=", "dev": true, - "license": "MIT" + "dependencies": { + "lodash._baseiteratee": "~4.7.0", + "lodash._baseuniq": "~4.6.0" + } }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "license": "MIT" + "node_modules/combined-stream": { + "version": "1.0.8", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true + "node_modules/comma-separated-tokens": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz", + "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } }, - "node_modules/merge2": { - "version": "1.4.1", - "license": "MIT", + "node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "engines": { - "node": ">= 8" + "node": ">= 12" } }, - "node_modules/methods": { - "version": "1.1.2", + "node_modules/commitizen": { + "version": "4.2.4", + "dev": true, "license": "MIT", + "dependencies": { + "cachedir": "2.2.0", + "cz-conventional-changelog": "3.2.0", + "dedent": "0.7.0", + "detect-indent": "6.0.0", + "find-node-modules": "^2.1.2", + "find-root": "1.1.0", + "fs-extra": "8.1.0", + "glob": "7.1.4", + "inquirer": "6.5.2", + "is-utf8": "^0.2.1", + "lodash": "^4.17.20", + "minimist": "1.2.5", + "strip-bom": "4.0.0", + "strip-json-comments": "3.0.1" + }, + "bin": { + "commitizen": "bin/commitizen", + "cz": "bin/git-cz", + "git-cz": "bin/git-cz" + }, "engines": { - "node": ">= 0.6" + "node": ">= 10" } }, - "node_modules/mgrs": { - "version": "1.0.0", - "license": "MIT" - }, - "node_modules/micromatch": { - "version": "4.0.4", + "node_modules/commitizen/node_modules/ansi-styles": { + "version": "3.2.1", + "dev": true, "license": "MIT", "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "color-convert": "^1.9.0" }, "engines": { - "node": ">=8.6" + "node": ">=4" } }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" + "node_modules/commitizen/node_modules/chalk": { + "version": "2.4.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "engines": { "node": ">=4" } }, - "node_modules/mime-db": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", - "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", - "engines": { - "node": ">= 0.6" + "node_modules/commitizen/node_modules/color-convert": { + "version": "1.9.3", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" } }, - "node_modules/mime-types": { - "version": "2.1.34", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", - "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "node_modules/commitizen/node_modules/color-name": { + "version": "1.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/commitizen/node_modules/cz-conventional-changelog": { + "version": "3.2.0", + "dev": true, + "license": "MIT", "dependencies": { - "mime-db": "1.51.0" + "chalk": "^2.4.1", + "commitizen": "^4.0.3", + "conventional-commit-types": "^3.0.0", + "lodash.map": "^4.5.1", + "longest": "^2.0.1", + "word-wrap": "^1.0.3" }, "engines": { - "node": ">= 0.6" + "node": ">= 10" + }, + "optionalDependencies": { + "@commitlint/load": ">6.1.1" } }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "node_modules/commitizen/node_modules/escape-string-regexp": { + "version": "1.0.5", "dev": true, + "license": "MIT", "engines": { - "node": ">=6" + "node": ">=0.8.0" } }, - "node_modules/mimic-response": { - "version": "1.0.1", + "node_modules/commitizen/node_modules/has-flag": { + "version": "3.0.0", "dev": true, "license": "MIT", "engines": { "node": ">=4" } }, - "node_modules/min-indent": { - "version": "1.0.1", + "node_modules/commitizen/node_modules/supports-color": { + "version": "5.5.0", "dev": true, "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, "engines": { "node": ">=4" } }, - "node_modules/minimatch": { - "version": "3.0.4", + "node_modules/common-tags": { + "version": "1.8.0", "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, + "license": "MIT", "engines": { - "node": "*" + "node": ">=4.0.0" } }, - "node_modules/minimist": { - "version": "1.2.5", - "license": "MIT" + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true }, - "node_modules/minimist-options": { - "version": "4.1.0", + "node_modules/compare-versions": { + "version": "3.6.0", "dev": true, + "license": "MIT" + }, + "node_modules/component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + }, + "node_modules/compressible": { + "version": "2.0.18", "license": "MIT", "dependencies": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" + "mime-db": ">= 1.43.0 < 2" }, "engines": { - "node": ">= 6" + "node": ">= 0.6" } }, - "node_modules/minipass": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", - "dev": true, + "node_modules/compression": { + "version": "1.7.4", + "license": "MIT", "dependencies": { - "yallist": "^4.0.0" + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" }, "engines": { - "node": ">=8" + "node": ">= 0.8.0" } }, - "node_modules/minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "dev": true, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "license": "MIT", "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" + "ms": "2.0.0" } }, - "node_modules/minipass-fetch": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.0.3.tgz", - "integrity": "sha512-VA+eiiUtaIvpQJXISwE3OiMvQwAWrgKb97F0aXlCS1Ahikr8fEQq8m3Hf7Kv9KT3nokuHigJKsDMB6atU04olQ==", + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/compute-scroll-into-view": { + "version": "1.0.17", + "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.17.tgz", + "integrity": "sha512-j4dx+Fb0URmzbwwMUrhqWM2BEWHdFGx+qZ9qqASHRPqvTYdqvWnHg0H1hIbcyLnvgnoNAVMlwkepyqM3DaIFUg==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", "dev": true, + "license": "MIT" + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "engines": [ + "node >= 0.8" + ], + "license": "MIT", "dependencies": { - "minipass": "^3.1.6", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" - }, - "optionalDependencies": { - "encoding": "^0.1.13" + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" } }, - "node_modules/minipass-flush": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "node_modules/condense-newlines": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/condense-newlines/-/condense-newlines-0.2.1.tgz", + "integrity": "sha1-PemFVTE5R10yUCyDsC9gaE0kxV8=", "dev": true, "dependencies": { - "minipass": "^3.0.0" + "extend-shallow": "^2.0.1", + "is-whitespace": "^0.3.0", + "kind-of": "^3.0.2" }, "engines": { - "node": ">= 8" + "node": ">=0.10.0" } }, - "node_modules/minipass-json-stream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", - "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", - "dev": true, - "dependencies": { - "jsonparse": "^1.3.1", - "minipass": "^3.0.0" - } + "node_modules/condense-newlines/node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true }, - "node_modules/minipass-pipeline": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "node_modules/condense-newlines/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "dependencies": { - "minipass": "^3.0.0" + "is-buffer": "^1.1.5" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/minipass-sized": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", - "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", "dev": true, "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" + "ini": "^1.3.4", + "proto-list": "~1.2.1" } }, - "node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, + "node_modules/configstore": { + "version": "5.0.1", + "license": "BSD-2-Clause", "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" }, "engines": { - "node": ">= 8" + "node": ">=8" } }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" + "node_modules/configstore/node_modules/dot-prop": { + "version": "5.3.0", + "license": "MIT", + "dependencies": { + "is-obj": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/modify-values": { - "version": "1.0.1", - "dev": true, + "node_modules/configstore/node_modules/is-obj": { + "version": "2.0.0", "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/moment": { - "version": "2.29.1", - "license": "MIT", + "node_modules/connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", "engines": { - "node": "*" + "node": ">=0.8" } }, - "node_modules/moment-timezone": { - "version": "0.5.33", - "license": "MIT", + "node_modules/console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "node_modules/constantinople": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-4.0.1.tgz", + "integrity": "sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==", + "dev": true, "dependencies": { - "moment": ">= 2.9.0" + "@babel/parser": "^7.6.0", + "@babel/types": "^7.6.1" + } + }, + "node_modules/constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" }, "engines": { - "node": "*" + "node": ">= 0.6" } }, - "node_modules/moo": { - "version": "0.5.1", - "license": "BSD-3-Clause" + "node_modules/content-disposition/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "node_modules/ms": { - "version": "2.1.2", - "license": "MIT" + "node_modules/content-type": { + "version": "1.0.4", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } }, - "node_modules/mute-stream": { - "version": "0.0.7", + "node_modules/conventional-changelog-atom": { + "version": "2.0.8", "dev": true, - "license": "ISC" + "license": "ISC", + "dependencies": { + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } }, - "node_modules/natural-compare": { - "version": "1.4.0", + "node_modules/conventional-changelog-codemirror": { + "version": "2.0.8", "dev": true, - "license": "MIT" - }, - "node_modules/nearley": { - "version": "2.20.1", - "license": "MIT", + "license": "ISC", "dependencies": { - "commander": "^2.19.0", - "moo": "^0.5.0", - "railroad-diagrams": "^1.0.0", - "randexp": "0.4.6" - }, - "bin": { - "nearley-railroad": "bin/nearley-railroad.js", - "nearley-test": "bin/nearley-test.js", - "nearley-unparse": "bin/nearley-unparse.js", - "nearleyc": "bin/nearleyc.js" + "q": "^1.5.1" }, - "funding": { - "type": "individual", - "url": "https://nearley.js.org/#give-to-nearley" + "engines": { + "node": ">=10" } }, - "node_modules/nearley/node_modules/commander": { - "version": "2.20.3", + "node_modules/conventional-changelog-config-spec": { + "version": "2.1.0", + "dev": true, "license": "MIT" }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "node_modules/conventional-changelog-conventionalcommits": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.6.1.tgz", + "integrity": "sha512-lzWJpPZhbM1R0PIzkwzGBCnAkH5RKJzJfFQZcl/D+2lsJxAwGnDKBqn/F4C1RD31GJNn8NuKWQzAZDAVXPp2Mw==", + "dev": true, + "dependencies": { + "compare-func": "^2.0.0", + "lodash": "^4.17.15", + "q": "^1.5.1" + }, "engines": { - "node": ">= 0.6" + "node": ">=10" } }, - "node_modules/neo-async": { - "version": "2.6.2", + "node_modules/conventional-changelog-conventionalcommits/node_modules/compare-func": { + "version": "2.0.0", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" + } }, - "node_modules/nerf-dart": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/nerf-dart/-/nerf-dart-1.0.0.tgz", - "integrity": "sha1-5tq3/r9a2Bbqgc9cYpxaDr3nLBo=", - "dev": true + "node_modules/conventional-changelog-conventionalcommits/node_modules/dot-prop": { + "version": "5.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } }, - "node_modules/netmask": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", - "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "node_modules/conventional-changelog-conventionalcommits/node_modules/is-obj": { + "version": "2.0.0", + "dev": true, + "license": "MIT", "engines": { - "node": ">= 0.4.0" + "node": ">=8" } }, - "node_modules/node-emoji": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", - "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", + "node_modules/conventional-changelog-ember": { + "version": "2.0.9", "dev": true, + "license": "ISC", "dependencies": { - "lodash": "^4.17.21" + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" } }, - "node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "node_modules/conventional-changelog-eslint": { + "version": "3.0.9", + "dev": true, + "license": "ISC", "dependencies": { - "whatwg-url": "^5.0.0" + "q": "^1.5.1" }, "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" + "node": ">=10" + } + }, + "node_modules/conventional-changelog-express": { + "version": "2.0.6", + "dev": true, + "license": "ISC", + "dependencies": { + "q": "^1.5.1" }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } + "engines": { + "node": ">=10" } }, - "node_modules/node-fetch/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" + "node_modules/conventional-changelog-jshint": { + "version": "2.0.9", + "dev": true, + "license": "ISC", + "dependencies": { + "compare-func": "^2.0.0", + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } }, - "node_modules/node-fetch/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" + "node_modules/conventional-changelog-jshint/node_modules/compare-func": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" + } }, - "node_modules/node-fetch/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "node_modules/conventional-changelog-jshint/node_modules/dot-prop": { + "version": "5.3.0", + "dev": true, + "license": "MIT", "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/node-forge": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.2.1.tgz", - "integrity": "sha512-Fcvtbb+zBcZXbTTVwqGA5W+MKBj56UjVRevvchv5XrcyXbmNdesfZL37nlcWOfpgHhgmxApw3tQbTr4CqNmX4w==", + "node_modules/conventional-changelog-jshint/node_modules/is-obj": { + "version": "2.0.0", + "dev": true, + "license": "MIT", "engines": { - "node": ">= 6.13.0" + "node": ">=8" } }, - "node_modules/node-gyp": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.0.0.tgz", - "integrity": "sha512-Ma6p4s+XCTPxCuAMrOA/IJRmVy16R8Sdhtwl4PrCr7IBlj4cPawF0vg/l7nOT1jPbuNS7lIRJpBSvVsXwEZuzw==", + "node_modules/conventional-changelog-preset-loader": { + "version": "2.3.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-writer": { + "version": "4.1.0", "dev": true, + "license": "MIT", "dependencies": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^10.0.3", - "nopt": "^5.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" + "compare-func": "^2.0.0", + "conventional-commits-filter": "^2.0.7", + "dateformat": "^3.0.0", + "handlebars": "^4.7.6", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "semver": "^6.0.0", + "split": "^1.0.0", + "through2": "^4.0.0" }, "bin": { - "node-gyp": "bin/node-gyp.js" + "conventional-changelog-writer": "cli.js" }, "engines": { - "node": "^12.22 || ^14.13 || >=16" + "node": ">=10" } }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", - "dev": true - }, - "node_modules/node-mailjet": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/node-mailjet/-/node-mailjet-3.3.7.tgz", - "integrity": "sha512-kwO0JlQi8MtYEc0DTgL8JeRS1ljjpNqmQ/+attDV3i4YiaCl8SoKs2gBdePWvoFtpCi8uBsfOgU5O9jE/lm2QQ==", + "node_modules/conventional-changelog-writer/node_modules/compare-func": { + "version": "2.0.0", + "dev": true, + "license": "MIT", "dependencies": { - "bluebird": "^3.5.0", - "json-bigint": "^1.0.0", - "qs": "^6.5.0", - "superagent": "^6.1.0", - "superagent-proxy": "^3.0.0" + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" } }, - "node_modules/node-releases": { - "version": "1.1.77", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.77.tgz", - "integrity": "sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ==", - "dev": true + "node_modules/conventional-changelog-writer/node_modules/dateformat": { + "version": "3.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } }, - "node_modules/nodemon": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.15.tgz", - "integrity": "sha512-gdHMNx47Gw7b3kWxJV64NI+Q5nfl0y5DgDbiVtShiwa7Z0IZ07Ll4RLFo6AjrhzMtoEZn5PDE3/c2AbVsiCkpA==", + "node_modules/conventional-changelog-writer/node_modules/dot-prop": { + "version": "5.3.0", "dev": true, - "hasInstallScript": true, + "license": "MIT", "dependencies": { - "chokidar": "^3.5.2", - "debug": "^3.2.7", - "ignore-by-default": "^1.0.1", - "minimatch": "^3.0.4", - "pstree.remy": "^1.1.8", - "semver": "^5.7.1", - "supports-color": "^5.5.0", - "touch": "^3.1.0", - "undefsafe": "^2.0.5", - "update-notifier": "^5.1.0" - }, - "bin": { - "nodemon": "bin/nodemon.js" + "is-obj": "^2.0.0" }, "engines": { - "node": ">=8.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nodemon" + "node": ">=8" } }, - "node_modules/nodemon/node_modules/debug": { - "version": "3.2.7", + "node_modules/conventional-changelog-writer/node_modules/find-up": { + "version": "4.1.0", "dev": true, "license": "MIT", "dependencies": { - "ms": "^2.1.1" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/nodemon/node_modules/has-flag": { - "version": "3.0.0", + "node_modules/conventional-changelog-writer/node_modules/hosted-git-info": { + "version": "4.0.2", "dev": true, - "license": "MIT", + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, "engines": { - "node": ">=4" + "node": ">=10" } }, - "node_modules/nodemon/node_modules/semver": { - "version": "5.7.1", + "node_modules/conventional-changelog-writer/node_modules/is-obj": { + "version": "2.0.0", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" + "license": "MIT", + "engines": { + "node": ">=8" } }, - "node_modules/nodemon/node_modules/supports-color": { - "version": "5.5.0", + "node_modules/conventional-changelog-writer/node_modules/locate-path": { + "version": "5.0.0", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^3.0.0" + "p-locate": "^4.1.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "node_modules/conventional-changelog-writer/node_modules/meow": { + "version": "8.1.2", "dev": true, + "license": "MIT", "dependencies": { - "abbrev": "1" + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" }, - "bin": { - "nopt": "bin/nopt.js" + "engines": { + "node": ">=10" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/conventional-changelog-writer/node_modules/meow/node_modules/type-fest": { + "version": "0.18.1", + "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/normalize-package-data": { - "version": "2.5.0", + "node_modules/conventional-changelog-writer/node_modules/normalize-package-data": { + "version": "3.0.2", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", + "hosted-git-info": "^4.0.1", + "resolve": "^1.20.0", + "semver": "^7.3.4", "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" } }, - "node_modules/normalize-package-data/node_modules/semver": { - "version": "5.7.1", + "node_modules/conventional-changelog-writer/node_modules/normalize-package-data/node_modules/semver": { + "version": "7.3.5", "dev": true, "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, "bin": { - "semver": "bin/semver" + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/normalize-path": { - "version": "2.1.1", + "node_modules/conventional-changelog-writer/node_modules/p-limit": { + "version": "2.3.0", + "dev": true, "license": "MIT", "dependencies": { - "remove-trailing-separator": "^1.0.1" + "p-try": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/npm/-/npm-8.3.1.tgz", - "integrity": "sha512-f552vKhT3r+PpCRnH7UferrrbcnvcFnGusN2T1mQqq/0UQd3pF1+ok4n0WahT0ZKxj10YU3b2VdhGrf39djHAA==", - "bundleDependencies": [ - "@isaacs/string-locale-compare", - "@npmcli/arborist", - "@npmcli/ci-detect", - "@npmcli/config", - "@npmcli/map-workspaces", - "@npmcli/package-json", - "@npmcli/run-script", - "abbrev", - "ansicolors", - "ansistyles", - "archy", - "cacache", - "chalk", - "chownr", - "cli-columns", - "cli-table3", - "columnify", - "fastest-levenshtein", - "glob", - "graceful-fs", - "hosted-git-info", - "ini", - "init-package-json", - "is-cidr", - "json-parse-even-better-errors", - "libnpmaccess", - "libnpmdiff", - "libnpmexec", - "libnpmfund", - "libnpmhook", - "libnpmorg", - "libnpmpack", - "libnpmpublish", - "libnpmsearch", - "libnpmteam", - "libnpmversion", - "make-fetch-happen", - "minipass", - "minipass-pipeline", - "mkdirp", - "mkdirp-infer-owner", - "ms", - "node-gyp", - "nopt", - "npm-audit-report", - "npm-install-checks", - "npm-package-arg", - "npm-pick-manifest", - "npm-profile", - "npm-registry-fetch", - "npm-user-validate", - "npmlog", - "opener", - "pacote", - "parse-conflict-json", - "proc-log", - "qrcode-terminal", - "read", - "read-package-json", - "read-package-json-fast", - "readdir-scoped-modules", - "rimraf", - "semver", - "ssri", - "tar", - "text-table", - "tiny-relative-date", - "treeverse", - "validate-npm-package-name", - "which", - "write-file-atomic" - ], + "node_modules/conventional-changelog-writer/node_modules/p-locate": { + "version": "4.1.0", "dev": true, + "license": "MIT", "dependencies": { - "@isaacs/string-locale-compare": "*", - "@npmcli/arborist": "*", - "@npmcli/ci-detect": "*", - "@npmcli/config": "*", - "@npmcli/map-workspaces": "*", - "@npmcli/package-json": "*", - "@npmcli/run-script": "*", - "abbrev": "*", - "ansicolors": "*", - "ansistyles": "*", - "archy": "*", - "cacache": "*", - "chalk": "*", - "chownr": "*", - "cli-columns": "*", - "cli-table3": "*", - "columnify": "*", - "fastest-levenshtein": "*", - "glob": "*", - "graceful-fs": "*", - "hosted-git-info": "*", - "ini": "*", - "init-package-json": "*", - "is-cidr": "*", - "json-parse-even-better-errors": "*", - "libnpmaccess": "*", - "libnpmdiff": "*", - "libnpmexec": "*", - "libnpmfund": "*", - "libnpmhook": "*", - "libnpmorg": "*", - "libnpmpack": "*", - "libnpmpublish": "*", - "libnpmsearch": "*", - "libnpmteam": "*", - "libnpmversion": "*", - "make-fetch-happen": "*", - "minipass": "*", - "minipass-pipeline": "*", - "mkdirp": "*", - "mkdirp-infer-owner": "*", - "ms": "*", - "node-gyp": "*", - "nopt": "*", - "npm-audit-report": "*", - "npm-install-checks": "*", - "npm-package-arg": "*", - "npm-pick-manifest": "*", - "npm-profile": "*", - "npm-registry-fetch": "*", - "npm-user-validate": "*", - "npmlog": "*", - "opener": "*", - "pacote": "*", - "parse-conflict-json": "*", - "proc-log": "*", - "qrcode-terminal": "*", - "read": "*", - "read-package-json": "*", - "read-package-json-fast": "*", - "readdir-scoped-modules": "*", - "rimraf": "*", - "semver": "*", - "ssri": "*", - "tar": "*", - "text-table": "*", - "tiny-relative-date": "*", - "treeverse": "*", - "validate-npm-package-name": "*", - "which": "*", - "write-file-atomic": "*" - }, - "bin": { - "npm": "bin/npm-cli.js", - "npx": "bin/npx-cli.js" + "p-limit": "^2.2.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": ">=8" } }, - "node_modules/npm-bundled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", - "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", + "node_modules/conventional-changelog-writer/node_modules/path-exists": { + "version": "4.0.0", "dev": true, - "dependencies": { - "npm-normalize-package-bin": "^1.0.1" + "license": "MIT", + "engines": { + "node": ">=8" } }, - "node_modules/npm-check-updates": { - "version": "12.5.3", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-12.5.3.tgz", - "integrity": "sha512-siFg/+Un+j4tLA6GJCnk6hz2YU4Yc5bftDnOoiSRLKL6NeAS3FScB32mtKNBtITMJf2nsoZSr8vH+wdUGeP19g==", + "node_modules/conventional-changelog-writer/node_modules/read-pkg": { + "version": "5.2.0", "dev": true, + "license": "MIT", "dependencies": { - "chalk": "^4.1.2", - "cint": "^8.2.1", - "cli-table": "^0.3.11", - "commander": "^9.0.0", - "fast-memoize": "^2.5.2", - "find-up": "5.0.0", - "fp-and-or": "^0.1.3", - "get-stdin": "^8.0.0", - "globby": "^11.0.4", - "hosted-git-info": "^4.1.0", - "json-parse-helpfulerror": "^1.0.3", - "jsonlines": "^0.1.1", - "libnpmconfig": "^1.2.1", - "lodash": "^4.17.21", - "minimatch": "^5.0.1", - "p-map": "^4.0.0", - "pacote": "^13.0.3", - "parse-github-url": "^1.0.2", - "progress": "^2.0.3", - "prompts": "^2.4.2", - "rc-config-loader": "^4.0.0", - "remote-git-tags": "^3.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "semver-utils": "^1.1.4", - "source-map-support": "^0.5.21", - "spawn-please": "^1.0.0", - "update-notifier": "^5.1.0", - "yaml": "^1.10.2" + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" }, - "bin": { - "ncu": "build/src/bin/cli.js", - "npm-check-updates": "build/src/bin/cli.js" + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-changelog-writer/node_modules/read-pkg-up": { + "version": "7.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" }, "engines": { - "node": ">=12" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm-check-updates/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/conventional-changelog-writer/node_modules/read-pkg/node_modules/hosted-git-info": { + "version": "2.8.9", + "dev": true, + "license": "ISC" + }, + "node_modules/conventional-changelog-writer/node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "balanced-match": "^1.0.0" + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, - "node_modules/npm-check-updates/node_modules/commander": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.0.0.tgz", - "integrity": "sha512-JJfP2saEKbQqvW+FI93OYUB4ByV5cizMpFMiiJI8xDbBvQvSkIk0VvQdn1CZ8mqAO8Loq2h0gYTYtDFUZUeERw==", + "node_modules/conventional-changelog-writer/node_modules/read-pkg/node_modules/semver": { + "version": "5.7.1", "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/conventional-changelog-writer/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { - "node": "^12.20.0 || >=14" + "node": ">=8" } }, - "node_modules/npm-check-updates/node_modules/find-up": { - "version": "5.0.0", + "node_modules/conventional-changelog-writer/node_modules/readable-stream": { + "version": "3.6.0", "dev": true, "license": "MIT", "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 6" } }, - "node_modules/npm-check-updates/node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "node_modules/conventional-changelog-writer/node_modules/semver": { + "version": "6.3.0", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/npm-check-updates/node_modules/locate-path": { - "version": "6.0.0", + "node_modules/conventional-changelog-writer/node_modules/through2": { + "version": "4.0.2", "dev": true, "license": "MIT", "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "readable-stream": "3" } }, - "node_modules/npm-check-updates/node_modules/minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "node_modules/conventional-commit-types": { + "version": "3.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/conventional-commits-filter": { + "version": "2.0.7", "dev": true, + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" + "lodash.ismatch": "^4.4.0", + "modify-values": "^1.0.0" }, "engines": { "node": ">=10" } }, - "node_modules/npm-check-updates/node_modules/p-locate": { - "version": "5.0.0", + "node_modules/conventional-commits-parser": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz", + "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==", "dev": true, - "license": "MIT", "dependencies": { - "p-limit": "^3.0.2" + "is-text-path": "^1.0.1", + "JSONStream": "^1.0.4", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + }, + "bin": { + "conventional-commits-parser": "cli.js" }, "engines": { "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm-check-updates/node_modules/path-exists": { - "version": "4.0.0", + "node_modules/conventional-commits-parser/node_modules/find-up": { + "version": "4.1.0", "dev": true, "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, "engines": { "node": ">=8" } }, - "node_modules/npm-install-checks": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-4.0.0.tgz", - "integrity": "sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==", + "node_modules/conventional-commits-parser/node_modules/hosted-git-info": { + "version": "4.0.2", "dev": true, + "license": "ISC", "dependencies": { - "semver": "^7.1.1" + "lru-cache": "^6.0.0" }, "engines": { "node": ">=10" } }, - "node_modules/npm-normalize-package-bin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", - "dev": true - }, - "node_modules/npm-package-arg": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.0.1.tgz", - "integrity": "sha512-Xs9wznfEAmZAR61qsYH3iN24V/qMYYkvAR5CRQNMvC6PjN2fHtO8y9XP/xdp5K+Icx+u1wMBMgWRPCmAEChSog==", + "node_modules/conventional-commits-parser/node_modules/locate-path": { + "version": "5.0.0", "dev": true, + "license": "MIT", "dependencies": { - "hosted-git-info": "^5.0.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^3.0.0" + "p-locate": "^4.1.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": ">=8" } }, - "node_modules/npm-package-arg/node_modules/hosted-git-info": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.0.0.tgz", - "integrity": "sha512-rRnjWu0Bxj+nIfUOkz0695C0H6tRrN5iYIzYejb0tDEefe2AekHu/U5Kn9pEie5vsJqpNQU02az7TGSH3qpz4Q==", + "node_modules/conventional-commits-parser/node_modules/meow": { + "version": "8.1.2", "dev": true, + "license": "MIT", "dependencies": { - "lru-cache": "^7.5.1" + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm-package-arg/node_modules/lru-cache": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.6.0.tgz", - "integrity": "sha512-zjOf6cyMI7rcN+5MtLsT4GnDjc6D9XHi8kYcsfXTqWC+yLdSiU3/jtEPX9wZE77+XLtnmdIWu3+291hkizfH+Q==", + "node_modules/conventional-commits-parser/node_modules/meow/node_modules/type-fest": { + "version": "0.18.1", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=12" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm-packlist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-4.0.0.tgz", - "integrity": "sha512-gL6XC/iw9YSmqArmZOGSkyy+yIZf2f7uH0p4Vmxef/irn73vd9/rDkCtvm+a9rh/QK2xGYfCAMOghM06ymzC0A==", + "node_modules/conventional-commits-parser/node_modules/normalize-package-data": { + "version": "3.0.2", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "glob": "^7.2.0", - "ignore-walk": "^4.0.1", - "npm-bundled": "^1.1.2", - "npm-normalize-package-bin": "^1.0.1" - }, - "bin": { - "npm-packlist": "bin/index.js" + "hosted-git-info": "^4.0.1", + "resolve": "^1.20.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": ">=10" } }, - "node_modules/npm-packlist/node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "node_modules/conventional-commits-parser/node_modules/p-limit": { + "version": "2.3.0", "dev": true, + "license": "MIT", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "p-try": "^2.0.0" }, "engines": { - "node": "*" + "node": ">=6" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm-packlist/node_modules/ignore-walk": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-4.0.1.tgz", - "integrity": "sha512-rzDQLaW4jQbh2YrOFlJdCtX8qgJTehFRYiUB2r1osqTeDzV/3+Jh8fz1oAPzUThf3iku8Ds4IDqawI5d8mUiQw==", + "node_modules/conventional-commits-parser/node_modules/p-locate": { + "version": "4.1.0", "dev": true, + "license": "MIT", "dependencies": { - "minimatch": "^3.0.4" + "p-limit": "^2.2.0" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/npm-pick-manifest": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-7.0.0.tgz", - "integrity": "sha512-njM1AcdioFaKd0JSGtLO09YA1WRwctjGQJbnHGmKS+u+uwP8oFvtZtOQWPYdxrnY5eJud3wn8OpH4sEIx6+GEQ==", + "node_modules/conventional-commits-parser/node_modules/path-exists": { + "version": "4.0.0", "dev": true, - "dependencies": { - "npm-install-checks": "^4.0.0", - "npm-normalize-package-bin": "^1.0.1", - "npm-package-arg": "^9.0.0", - "semver": "^7.3.5" - }, + "license": "MIT", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": ">=8" } }, - "node_modules/npm-registry-fetch": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.0.1.tgz", - "integrity": "sha512-Ak+LXVtSrCLOdscFW/apUw67OPNph8waHsPKM9UOJosL7i59EF5XoSWQMEsXEOeifM9Bb4/2+WrQC4t/pd8DGg==", + "node_modules/conventional-commits-parser/node_modules/read-pkg": { + "version": "5.2.0", "dev": true, + "license": "MIT", "dependencies": { - "make-fetch-happen": "^10.0.3", - "minipass": "^3.1.6", - "minipass-fetch": "^2.0.1", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^9.0.0", - "proc-log": "^2.0.0" + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": ">=8" } }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "node_modules/conventional-commits-parser/node_modules/read-pkg-up": { + "version": "7.0.1", "dev": true, + "license": "MIT", "dependencies": { - "path-key": "^3.0.0" + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/@gar/promisify": { - "version": "1.1.2", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/@isaacs/string-locale-compare": { - "version": "1.1.0", + "node_modules/conventional-commits-parser/node_modules/read-pkg/node_modules/hosted-git-info": { + "version": "2.8.9", "dev": true, - "inBundle": true, "license": "ISC" }, - "node_modules/npm/node_modules/@npmcli/arborist": { - "version": "4.2.0", + "node_modules/conventional-commits-parser/node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/map-workspaces": "^2.0.0", - "@npmcli/metavuln-calculator": "^2.0.0", - "@npmcli/move-file": "^1.1.0", - "@npmcli/name-from-folder": "^1.0.1", - "@npmcli/node-gyp": "^1.0.3", - "@npmcli/package-json": "^1.0.1", - "@npmcli/run-script": "^2.0.0", - "bin-links": "^2.3.0", - "cacache": "^15.0.3", - "common-ancestor-path": "^1.0.1", - "json-parse-even-better-errors": "^2.3.1", - "json-stringify-nice": "^1.1.4", - "mkdirp": "^1.0.4", - "mkdirp-infer-owner": "^2.0.0", - "npm-install-checks": "^4.0.0", - "npm-package-arg": "^8.1.5", - "npm-pick-manifest": "^6.1.0", - "npm-registry-fetch": "^11.0.0", - "pacote": "^12.0.2", - "parse-conflict-json": "^2.0.1", - "proc-log": "^1.0.0", - "promise-all-reject-late": "^1.0.0", - "promise-call-limit": "^1.0.1", - "read-package-json-fast": "^2.0.2", - "readdir-scoped-modules": "^1.1.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "ssri": "^8.0.1", - "treeverse": "^1.0.4", - "walk-up-path": "^1.0.0" - }, - "bin": { - "arborist": "bin/index.js" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" - } - }, - "node_modules/npm/node_modules/@npmcli/ci-detect": { - "version": "1.4.0", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/@npmcli/config": { - "version": "2.4.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "ini": "^2.0.0", - "mkdirp-infer-owner": "^2.0.0", - "nopt": "^5.0.0", - "semver": "^7.3.4", - "walk-up-path": "^1.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/@npmcli/disparity-colors": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "ansi-styles": "^4.3.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/@npmcli/fs": { - "version": "1.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", + "license": "BSD-2-Clause", "dependencies": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, - "node_modules/npm/node_modules/@npmcli/git": { - "version": "2.1.0", + "node_modules/conventional-commits-parser/node_modules/read-pkg/node_modules/semver": { + "version": "5.7.1", "dev": true, - "inBundle": true, "license": "ISC", - "dependencies": { - "@npmcli/promise-spawn": "^1.3.2", - "lru-cache": "^6.0.0", - "mkdirp": "^1.0.4", - "npm-pick-manifest": "^6.1.1", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^2.0.2" + "bin": { + "semver": "bin/semver" } }, - "node_modules/npm/node_modules/@npmcli/installed-package-contents": { - "version": "1.0.7", + "node_modules/conventional-commits-parser/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" - }, - "bin": { - "installed-package-contents": "index.js" - }, + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">= 10" + "node": ">=8" } }, - "node_modules/npm/node_modules/@npmcli/map-workspaces": { - "version": "2.0.0", + "node_modules/conventional-commits-parser/node_modules/readable-stream": { + "version": "3.6.0", "dev": true, - "inBundle": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "@npmcli/name-from-folder": "^1.0.1", - "glob": "^7.1.6", - "minimatch": "^3.0.4", - "read-package-json-fast": "^2.0.1" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": ">= 6" } }, - "node_modules/npm/node_modules/@npmcli/metavuln-calculator": { - "version": "2.0.0", + "node_modules/conventional-commits-parser/node_modules/through2": { + "version": "4.0.2", "dev": true, - "inBundle": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "cacache": "^15.0.5", - "json-parse-even-better-errors": "^2.3.1", - "pacote": "^12.0.0", - "semver": "^7.3.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "readable-stream": "3" } }, - "node_modules/npm/node_modules/@npmcli/move-file": { - "version": "1.1.2", + "node_modules/conventional-recommended-bump": { + "version": "6.1.0", "dev": true, - "inBundle": true, "license": "MIT", "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" + "concat-stream": "^2.0.0", + "conventional-changelog-preset-loader": "^2.3.4", + "conventional-commits-filter": "^2.0.7", + "conventional-commits-parser": "^3.2.0", + "git-raw-commits": "^2.0.8", + "git-semver-tags": "^4.1.1", + "meow": "^8.0.0", + "q": "^1.5.1" + }, + "bin": { + "conventional-recommended-bump": "cli.js" }, "engines": { "node": ">=10" } }, - "node_modules/npm/node_modules/@npmcli/name-from-folder": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/@npmcli/node-gyp": { - "version": "1.0.3", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/@npmcli/package-json": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "json-parse-even-better-errors": "^2.3.1" - } - }, - "node_modules/npm/node_modules/@npmcli/promise-spawn": { - "version": "1.3.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "infer-owner": "^1.0.4" - } - }, - "node_modules/npm/node_modules/@npmcli/run-script": { + "node_modules/conventional-recommended-bump/node_modules/concat-stream": { "version": "2.0.0", "dev": true, - "inBundle": true, - "license": "ISC", + "engines": [ + "node >= 6.0" + ], + "license": "MIT", "dependencies": { - "@npmcli/node-gyp": "^1.0.2", - "@npmcli/promise-spawn": "^1.3.2", - "node-gyp": "^8.2.0", - "read-package-json-fast": "^2.0.1" + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" } }, - "node_modules/npm/node_modules/@tootallnate/once": { - "version": "1.1.2", + "node_modules/conventional-recommended-bump/node_modules/dargs": { + "version": "7.0.0", "dev": true, - "inBundle": true, "license": "MIT", "engines": { - "node": ">= 6" + "node": ">=8" } }, - "node_modules/npm/node_modules/abbrev": { - "version": "1.1.1", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/agent-base": { - "version": "6.0.2", + "node_modules/conventional-recommended-bump/node_modules/find-up": { + "version": "4.1.0", "dev": true, - "inBundle": true, "license": "MIT", "dependencies": { - "debug": "4" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">= 6.0.0" + "node": ">=8" } }, - "node_modules/npm/node_modules/agentkeepalive": { - "version": "4.2.0", + "node_modules/conventional-recommended-bump/node_modules/git-raw-commits": { + "version": "2.0.10", "dev": true, - "inBundle": true, "license": "MIT", "dependencies": { - "debug": "^4.1.0", - "depd": "^1.1.2", - "humanize-ms": "^1.2.1" + "dargs": "^7.0.0", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" }, - "engines": { - "node": ">= 8.0.0" - } - }, - "node_modules/npm/node_modules/aggregate-error": { - "version": "3.1.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" + "bin": { + "git-raw-commits": "cli.js" }, "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/ansi-regex": { - "version": "2.1.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/npm/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/conventional-recommended-bump/node_modules/git-semver-tags": { + "version": "4.1.1", "dev": true, - "inBundle": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" + "meow": "^8.0.0", + "semver": "^6.0.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/npm/node_modules/ansicolors": { - "version": "0.3.2", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/ansistyles": { - "version": "0.1.3", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/aproba": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/archy": { - "version": "1.0.0", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/are-we-there-yet": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" + "bin": { + "git-semver-tags": "cli.js" }, "engines": { "node": ">=10" } }, - "node_modules/npm/node_modules/asap": { - "version": "2.0.6", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/balanced-match": { - "version": "1.0.2", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/bin-links": { - "version": "2.3.0", + "node_modules/conventional-recommended-bump/node_modules/hosted-git-info": { + "version": "4.0.2", "dev": true, - "inBundle": true, "license": "ISC", "dependencies": { - "cmd-shim": "^4.0.1", - "mkdirp-infer-owner": "^2.0.0", - "npm-normalize-package-bin": "^1.0.0", - "read-cmd-shim": "^2.0.0", - "rimraf": "^3.0.0", - "write-file-atomic": "^3.0.3" + "lru-cache": "^6.0.0" }, "engines": { "node": ">=10" } }, - "node_modules/npm/node_modules/binary-extensions": { - "version": "2.2.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/brace-expansion": { - "version": "1.1.11", + "node_modules/conventional-recommended-bump/node_modules/locate-path": { + "version": "5.0.0", "dev": true, - "inBundle": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/npm/node_modules/builtins": { - "version": "1.0.3", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/cacache": { - "version": "15.3.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" + "p-locate": "^4.1.0" }, "engines": { - "node": ">= 10" + "node": ">=8" } }, - "node_modules/npm/node_modules/chalk": { - "version": "4.1.2", + "node_modules/conventional-recommended-bump/node_modules/meow": { + "version": "8.1.2", "dev": true, - "inBundle": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/chownr": { - "version": "2.0.0", + "node_modules/conventional-recommended-bump/node_modules/meow/node_modules/type-fest": { + "version": "0.18.1", "dev": true, - "inBundle": true, - "license": "ISC", + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/cidr-regex": { - "version": "3.1.1", + "node_modules/conventional-recommended-bump/node_modules/normalize-package-data": { + "version": "3.0.2", "dev": true, - "inBundle": true, "license": "BSD-2-Clause", "dependencies": { - "ip-regex": "^4.1.0" + "hosted-git-info": "^4.0.1", + "resolve": "^1.20.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" }, "engines": { "node": ">=10" } }, - "node_modules/npm/node_modules/clean-stack": { - "version": "2.2.0", + "node_modules/conventional-recommended-bump/node_modules/normalize-package-data/node_modules/semver": { + "version": "7.3.5", "dev": true, - "inBundle": true, - "license": "MIT", + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, "engines": { - "node": ">=6" + "node": ">=10" } }, - "node_modules/npm/node_modules/cli-columns": { - "version": "4.0.0", + "node_modules/conventional-recommended-bump/node_modules/p-limit": { + "version": "2.3.0", "dev": true, - "inBundle": true, "license": "MIT", "dependencies": { - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" + "p-try": "^2.0.0" }, "engines": { - "node": ">= 10" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/cli-columns/node_modules/ansi-regex": { - "version": "5.0.1", + "node_modules/conventional-recommended-bump/node_modules/p-locate": { + "version": "4.1.0", "dev": true, - "inBundle": true, "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, "engines": { "node": ">=8" } }, - "node_modules/npm/node_modules/cli-columns/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", + "node_modules/conventional-recommended-bump/node_modules/path-exists": { + "version": "4.0.0", "dev": true, - "inBundle": true, "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/npm/node_modules/cli-columns/node_modules/string-width": { - "version": "4.2.3", + "node_modules/conventional-recommended-bump/node_modules/read-pkg": { + "version": "5.2.0", "dev": true, - "inBundle": true, "license": "MIT", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" }, "engines": { "node": ">=8" } }, - "node_modules/npm/node_modules/cli-columns/node_modules/strip-ansi": { - "version": "6.0.1", + "node_modules/conventional-recommended-bump/node_modules/read-pkg-up": { + "version": "7.0.1", "dev": true, - "inBundle": true, "license": "MIT", "dependencies": { - "ansi-regex": "^5.0.1" + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/cli-table3": { - "version": "0.6.0", + "node_modules/conventional-recommended-bump/node_modules/read-pkg/node_modules/hosted-git-info": { + "version": "2.8.9", "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "object-assign": "^4.1.0", - "string-width": "^4.2.0" - }, - "engines": { - "node": "10.* || >= 12.*" - }, - "optionalDependencies": { - "colors": "^1.1.2" + "license": "ISC" + }, + "node_modules/conventional-recommended-bump/node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, - "node_modules/npm/node_modules/cli-table3/node_modules/ansi-regex": { - "version": "5.0.0", + "node_modules/conventional-recommended-bump/node_modules/read-pkg/node_modules/semver": { + "version": "5.7.1", "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" + "license": "ISC", + "bin": { + "semver": "bin/semver" } }, - "node_modules/npm/node_modules/cli-table3/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", + "node_modules/conventional-recommended-bump/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", "dev": true, - "inBundle": true, - "license": "MIT", + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=8" } }, - "node_modules/npm/node_modules/cli-table3/node_modules/string-width": { - "version": "4.2.2", + "node_modules/conventional-recommended-bump/node_modules/readable-stream": { + "version": "3.6.0", "dev": true, - "inBundle": true, "license": "MIT", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": ">=8" + "node": ">= 6" } }, - "node_modules/npm/node_modules/cli-table3/node_modules/strip-ansi": { - "version": "6.0.0", + "node_modules/conventional-recommended-bump/node_modules/semver": { + "version": "6.3.0", "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.0" - }, - "engines": { - "node": ">=8" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/npm/node_modules/clone": { - "version": "1.0.4", + "node_modules/conventional-recommended-bump/node_modules/through2": { + "version": "4.0.2", "dev": true, - "inBundle": true, "license": "MIT", - "engines": { - "node": ">=0.8" + "dependencies": { + "readable-stream": "3" } }, - "node_modules/npm/node_modules/cmd-shim": { - "version": "4.1.0", + "node_modules/convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", "dev": true, - "inBundle": true, - "license": "ISC", "dependencies": { - "mkdirp-infer-owner": "^2.0.0" - }, - "engines": { - "node": ">=10" + "safe-buffer": "~5.1.1" } }, - "node_modules/npm/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "inBundle": true, + "node_modules/cookie": { + "version": "0.4.1", "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-parser": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz", + "integrity": "sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==", "dependencies": { - "color-name": "~1.1.4" + "cookie": "0.4.1", + "cookie-signature": "1.0.6" }, "engines": { - "node": ">=7.0.0" + "node": ">= 0.8.0" } }, - "node_modules/npm/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "inBundle": true, + "node_modules/cookie-signature": { + "version": "1.0.6", "license": "MIT" }, - "node_modules/npm/node_modules/color-support": { - "version": "1.1.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "bin": { - "color-support": "bin.js" - } - }, - "node_modules/npm/node_modules/colors": { - "version": "1.4.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.1.90" - } + "node_modules/cookiejar": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.3.tgz", + "integrity": "sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ==" }, - "node_modules/npm/node_modules/columnify": { - "version": "1.5.4", + "node_modules/copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", "dev": true, - "inBundle": true, - "license": "MIT", "dependencies": { - "strip-ansi": "^3.0.0", - "wcwidth": "^1.0.0" + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" } }, - "node_modules/npm/node_modules/common-ancestor-path": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/concat-map": { - "version": "0.0.1", - "dev": true, - "inBundle": true, - "license": "MIT" + "node_modules/copy-concurrently/node_modules/aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true }, - "node_modules/npm/node_modules/console-control-strings": { - "version": "1.1.0", - "dev": true, - "inBundle": true, - "license": "ISC" + "node_modules/copy-concurrently/node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true }, - "node_modules/npm/node_modules/debug": { - "version": "4.3.2", + "node_modules/copy-concurrently/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, - "inBundle": true, - "license": "MIT", "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" + "minimist": "^1.2.6" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "bin": { + "mkdirp": "bin/cmd.js" } }, - "node_modules/npm/node_modules/debug/node_modules/ms": { - "version": "2.1.2", + "node_modules/copy-concurrently/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, - "inBundle": true, - "license": "MIT" + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } }, - "node_modules/npm/node_modules/debuglog": { - "version": "1.0.1", + "node_modules/copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", "dev": true, - "inBundle": true, - "license": "MIT", "engines": { - "node": "*" + "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/defaults": { - "version": "1.0.3", + "node_modules/copy-to-clipboard": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz", + "integrity": "sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw==", "dev": true, - "inBundle": true, - "license": "MIT", "dependencies": { - "clone": "^1.0.2" + "toggle-selection": "^1.0.6" } }, - "node_modules/npm/node_modules/delegates": { - "version": "1.0.0", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/depd": { - "version": "1.1.2", + "node_modules/core-js": { + "version": "3.21.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.21.1.tgz", + "integrity": "sha512-FRq5b/VMrWlrmCzwRrpDYNxyHP9BcAZC+xHJaqTgIE5091ZV1NTmyh0sGOg5XqpnHvR0svdy0sv1gWA1zmhxig==", "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" } }, - "node_modules/npm/node_modules/dezalgo": { - "version": "1.0.3", + "node_modules/core-js-compat": { + "version": "3.21.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.21.1.tgz", + "integrity": "sha512-gbgX5AUvMb8gwxC7FLVWYT7Kkgu/y7+h/h1X43yJkNqhlK2fuYyQimqvKGNZFAY6CKii/GFKJ2cp/1/42TN36g==", "dev": true, - "inBundle": true, - "license": "ISC", "dependencies": { - "asap": "^2.0.0", - "wrappy": "1" + "browserslist": "^4.19.1", + "semver": "7.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" } }, - "node_modules/npm/node_modules/diff": { - "version": "5.0.0", + "node_modules/core-js-compat/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", "dev": true, - "inBundle": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/npm/node_modules/emoji-regex": { - "version": "8.0.0", + "node_modules/core-js-pure": { + "version": "3.21.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.21.1.tgz", + "integrity": "sha512-12VZfFIu+wyVbBebyHmRTuEE/tZrB4tJToWcwAMcsp3h4+sHR+fMJWbKpYiCRWlhFBq+KNyO8rIV9rTkeVmznQ==", "dev": true, - "inBundle": true, + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.2", "license": "MIT" }, - "node_modules/npm/node_modules/encoding": { - "version": "0.1.13", - "dev": true, - "inBundle": true, + "node_modules/cors": { + "version": "2.8.5", "license": "MIT", - "optional": true, "dependencies": { - "iconv-lite": "^0.6.2" + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" } }, - "node_modules/npm/node_modules/env-paths": { - "version": "2.2.1", + "node_modules/cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", "dev": true, - "inBundle": true, - "license": "MIT", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, "engines": { - "node": ">=6" + "node": ">=10" } }, - "node_modules/npm/node_modules/err-code": { - "version": "2.0.3", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/fastest-levenshtein": { - "version": "1.0.12", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/fs-minipass": { - "version": "2.1.0", + "node_modules/cp-file": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-7.0.0.tgz", + "integrity": "sha512-0Cbj7gyvFVApzpK/uhCtQ/9kE9UnYpxMzaq5nQQC/Dh4iaj5fxp7iEFIullrYwzj8nf0qnsI1Qsx34hAeAebvw==", "dev": true, - "inBundle": true, - "license": "ISC", "dependencies": { - "minipass": "^3.0.0" + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "nested-error-stacks": "^2.0.0", + "p-event": "^4.1.0" }, "engines": { - "node": ">= 8" + "node": ">=8" } }, - "node_modules/npm/node_modules/fs.realpath": { - "version": "1.0.0", + "node_modules/cpy": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/cpy/-/cpy-8.1.2.tgz", + "integrity": "sha512-dmC4mUesv0OYH2kNFEidtf/skUwv4zePmGeepjyyJ0qTo5+8KhA1o99oIAwVVLzQMAeDJml74d6wPPKb6EZUTg==", "dev": true, - "inBundle": true, - "license": "ISC" + "dependencies": { + "arrify": "^2.0.1", + "cp-file": "^7.0.0", + "globby": "^9.2.0", + "has-glob": "^1.0.0", + "junk": "^3.1.0", + "nested-error-stacks": "^2.1.0", + "p-all": "^2.1.0", + "p-filter": "^2.1.0", + "p-map": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/npm/node_modules/function-bind": { - "version": "1.1.1", + "node_modules/cpy/node_modules/@nodelib/fs.stat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", + "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", "dev": true, - "inBundle": true, - "license": "MIT" + "engines": { + "node": ">= 6" + } }, - "node_modules/npm/node_modules/gauge": { - "version": "4.0.0", + "node_modules/cpy/node_modules/array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", "dev": true, - "inBundle": true, - "license": "ISC", "dependencies": { - "ansi-regex": "^5.0.1", - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.2", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.2" + "array-uniq": "^1.0.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/gauge/node_modules/ansi-regex": { - "version": "5.0.1", + "node_modules/cpy/node_modules/arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", "dev": true, - "inBundle": true, - "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/npm/node_modules/gauge/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", + "node_modules/cpy/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, - "inBundle": true, - "license": "MIT", + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/gauge/node_modules/string-width": { - "version": "4.2.3", + "node_modules/cpy/node_modules/dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", "dev": true, - "inBundle": true, - "license": "MIT", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "path-type": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/npm/node_modules/gauge/node_modules/strip-ansi": { - "version": "6.0.1", + "node_modules/cpy/node_modules/fast-glob": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", + "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", "dev": true, - "inBundle": true, - "license": "MIT", "dependencies": { - "ansi-regex": "^5.0.1" + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" }, "engines": { - "node": ">=8" + "node": ">=4.0.0" } }, - "node_modules/npm/node_modules/glob": { - "version": "7.2.0", + "node_modules/cpy/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, - "inBundle": true, - "license": "ISC", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" }, "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/graceful-fs": { - "version": "4.2.8", + "node_modules/cpy/node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "dev": true, - "inBundle": true, - "license": "ISC" + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } }, - "node_modules/npm/node_modules/has": { - "version": "1.0.3", + "node_modules/cpy/node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", "dev": true, - "inBundle": true, - "license": "MIT", "dependencies": { - "function-bind": "^1.1.1" + "is-extglob": "^2.1.0" }, "engines": { - "node": ">= 0.4.0" + "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/cpy/node_modules/globby": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", + "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", "dev": true, - "inBundle": true, - "license": "MIT", + "dependencies": { + "@types/glob": "^7.1.1", + "array-union": "^1.0.2", + "dir-glob": "^2.2.2", + "fast-glob": "^2.2.6", + "glob": "^7.1.3", + "ignore": "^4.0.3", + "pify": "^4.0.1", + "slash": "^2.0.0" + }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/npm/node_modules/has-unicode": { - "version": "2.0.1", + "node_modules/cpy/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true, - "inBundle": true, - "license": "ISC" + "engines": { + "node": ">= 4" + } }, - "node_modules/npm/node_modules/hosted-git-info": { - "version": "4.1.0", + "node_modules/cpy/node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/cpy/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, - "inBundle": true, - "license": "ISC", "dependencies": { - "lru-cache": "^6.0.0" + "is-plain-object": "^2.0.4" }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/http-cache-semantics": { - "version": "4.1.0", + "node_modules/cpy/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, - "inBundle": true, - "license": "BSD-2-Clause" + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/npm/node_modules/http-proxy-agent": { - "version": "4.0.1", + "node_modules/cpy/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, - "inBundle": true, - "license": "MIT", "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" + "is-buffer": "^1.1.5" }, "engines": { - "node": ">= 6" + "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/https-proxy-agent": { - "version": "5.0.0", + "node_modules/cpy/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, - "inBundle": true, - "license": "MIT", "dependencies": { - "agent-base": "6", - "debug": "4" + "isobject": "^3.0.1" }, "engines": { - "node": ">= 6" + "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/humanize-ms": { - "version": "1.2.1", + "node_modules/cpy/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "ms": "^2.0.0" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/iconv-lite": { - "version": "0.6.3", + "node_modules/cpy/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/ignore-walk": { - "version": "4.0.1", + "node_modules/cpy/node_modules/micromatch/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "dev": true, - "inBundle": true, - "license": "ISC", "dependencies": { - "minimatch": "^3.0.4" + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/imurmurhash": { - "version": "0.1.4", + "node_modules/cpy/node_modules/p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", "dev": true, - "inBundle": true, - "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, "engines": { - "node": ">=0.8.19" + "node": ">=8" } }, - "node_modules/npm/node_modules/indent-string": { - "version": "4.0.0", + "node_modules/cpy/node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "dev": true, - "inBundle": true, - "license": "MIT", + "dependencies": { + "pify": "^3.0.0" + }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/npm/node_modules/infer-owner": { - "version": "1.0.4", + "node_modules/cpy/node_modules/path-type/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "dev": true, - "inBundle": true, - "license": "ISC" + "engines": { + "node": ">=4" + } }, - "node_modules/npm/node_modules/inflight": { - "version": "1.0.6", + "node_modules/cpy/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "engines": { + "node": ">=6" } }, - "node_modules/npm/node_modules/inherits": { - "version": "2.0.4", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/ini": { + "node_modules/cpy/node_modules/slash": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", "dev": true, - "inBundle": true, - "license": "ISC", "engines": { - "node": ">=10" + "node": ">=6" } }, - "node_modules/npm/node_modules/init-package-json": { - "version": "2.0.5", + "node_modules/cpy/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", "dev": true, - "inBundle": true, - "license": "ISC", "dependencies": { - "npm-package-arg": "^8.1.5", - "promzard": "^0.3.0", - "read": "~1.0.1", - "read-package-json": "^4.1.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4", - "validate-npm-package-name": "^3.0.0" + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" }, "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/ip": { - "version": "1.1.5", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/ip-regex": { - "version": "4.3.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/is-cidr": { - "version": "4.0.2", - "dev": true, - "inBundle": true, - "license": "BSD-2-Clause", + "node_modules/crc-32": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.1.tgz", + "integrity": "sha512-Dn/xm/1vFFgs3nfrpEVScHoIslO9NZRITWGz/1E/St6u4xw99vfZzVkW0OSnzx2h9egej9xwMCEut6sqwokM/w==", "dependencies": { - "cidr-regex": "^3.1.1" + "exit-on-epipe": "~1.0.1", + "printj": "~1.3.1" + }, + "bin": { + "crc32": "bin/crc32.njs" }, "engines": { - "node": ">=10" + "node": ">=0.8" } }, - "node_modules/npm/node_modules/is-core-module": { - "version": "2.8.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "has": "^1.0.3" + "node_modules/crc-32/node_modules/printj": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/printj/-/printj-1.3.1.tgz", + "integrity": "sha512-GA3TdL8szPK4AQ2YnOe/b+Y1jUFwmmGMMK/qbY7VcE3Z7FU8JstbKiKRzO6CIiAKPhTO8m01NoQ0V5f3jc4OGg==", + "bin": { + "printj": "bin/printj.njs" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/npm/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", "engines": { - "node": ">=4" + "node": ">=0.8" } }, - "node_modules/npm/node_modules/is-lambda": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/is-typedarray": { - "version": "1.0.0", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/isexe": { - "version": "2.0.0", + "node_modules/create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", "dev": true, - "inBundle": true, - "license": "ISC" + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } }, - "node_modules/npm/node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "dev": true, - "inBundle": true, - "license": "MIT" + "node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true }, - "node_modules/npm/node_modules/json-stringify-nice": { - "version": "1.1.4", + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", "dev": true, - "inBundle": true, - "license": "ISC", - "funding": { - "url": "https://github.com/sponsors/isaacs" + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" } }, - "node_modules/npm/node_modules/jsonparse": { - "version": "1.3.1", + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "dev": true, - "engines": [ - "node >= 0.2.0" - ], - "inBundle": true, - "license": "MIT" + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } }, - "node_modules/npm/node_modules/just-diff": { - "version": "5.0.1", - "dev": true, - "inBundle": true, - "license": "MIT" + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" }, - "node_modules/npm/node_modules/just-diff-apply": { - "version": "4.0.1", - "dev": true, - "inBundle": true, - "license": "MIT" + "node_modules/cron": { + "version": "1.8.2", + "license": "MIT", + "dependencies": { + "moment-timezone": "^0.5.x" + } }, - "node_modules/npm/node_modules/libnpmaccess": { - "version": "5.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", + "node_modules/cross-env": { + "version": "7.0.3", + "license": "MIT", "dependencies": { - "aproba": "^2.0.0", - "minipass": "^3.1.1", - "npm-package-arg": "^8.1.2", - "npm-registry-fetch": "^11.0.0" + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" } }, - "node_modules/npm/node_modules/libnpmdiff": { - "version": "3.0.0", + "node_modules/cross-fetch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", "dev": true, - "inBundle": true, - "license": "ISC", "dependencies": { - "@npmcli/disparity-colors": "^1.0.1", - "@npmcli/installed-package-contents": "^1.0.7", - "binary-extensions": "^2.2.0", - "diff": "^5.0.0", - "minimatch": "^3.0.4", - "npm-package-arg": "^8.1.4", - "pacote": "^12.0.0", - "tar": "^6.1.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node-fetch": "2.6.7" } }, - "node_modules/npm/node_modules/libnpmexec": { - "version": "3.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", + "node_modules/cross-spawn": { + "version": "7.0.3", + "license": "MIT", "dependencies": { - "@npmcli/arborist": "^4.0.0", - "@npmcli/ci-detect": "^1.3.0", - "@npmcli/run-script": "^2.0.0", - "chalk": "^4.1.0", - "mkdirp-infer-owner": "^2.0.0", - "npm-package-arg": "^8.1.2", - "pacote": "^12.0.0", - "proc-log": "^1.0.0", - "read": "^1.0.7", - "read-package-json-fast": "^2.0.2", - "walk-up-path": "^1.0.0" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": ">= 8" } }, - "node_modules/npm/node_modules/libnpmfund": { - "version": "2.0.2", + "node_modules/crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", "dev": true, - "inBundle": true, - "license": "ISC", "dependencies": { - "@npmcli/arborist": "^4.0.0" + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": "*" } }, - "node_modules/npm/node_modules/libnpmhook": { - "version": "7.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", + "node_modules/crypto-random-string": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-3.3.1.tgz", + "integrity": "sha512-5j88ECEn6h17UePrLi6pn1JcLtAiANa3KExyr9y9Z5vo2mv56Gh3I4Aja/B9P9uyMwyxNHAHWv+nE72f30T5Dg==", "dependencies": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^11.0.0" + "type-fest": "^0.8.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": ">=8" } }, - "node_modules/npm/node_modules/libnpmorg": { - "version": "3.0.0", + "node_modules/css": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", + "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", "dev": true, - "inBundle": true, - "license": "ISC", "dependencies": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^11.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.0" } }, - "node_modules/npm/node_modules/libnpmpack": { - "version": "3.0.1", + "node_modules/css-blank-pseudo": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz", + "integrity": "sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==", "dev": true, - "inBundle": true, - "license": "ISC", "dependencies": { - "@npmcli/run-script": "^2.0.0", - "npm-package-arg": "^8.1.0", - "pacote": "^12.0.0" + "postcss-selector-parser": "^6.0.9" + }, + "bin": { + "css-blank-pseudo": "dist/cli.cjs" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" } }, - "node_modules/npm/node_modules/libnpmpublish": { - "version": "5.0.0", + "node_modules/css-functions-list": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.0.1.tgz", + "integrity": "sha512-PriDuifDt4u4rkDgnqRCLnjfMatufLmWNfQnGCq34xZwpY3oabwhB9SqRBmuvWUgndbemCFlKqg+nO7C2q0SBw==", "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "normalize-package-data": "^3.0.2", - "npm-package-arg": "^8.1.2", - "npm-registry-fetch": "^11.0.0", - "semver": "^7.1.3", - "ssri": "^8.0.1" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": ">=12.22" } }, - "node_modules/npm/node_modules/libnpmsearch": { - "version": "4.0.0", + "node_modules/css-has-pseudo": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz", + "integrity": "sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==", "dev": true, - "inBundle": true, - "license": "ISC", "dependencies": { - "npm-registry-fetch": "^11.0.0" + "postcss-selector-parser": "^6.0.9" + }, + "bin": { + "css-has-pseudo": "dist/cli.cjs" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" } }, - "node_modules/npm/node_modules/libnpmteam": { - "version": "3.0.0", + "node_modules/css-loader": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.6.0.tgz", + "integrity": "sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ==", "dev": true, - "inBundle": true, - "license": "ISC", "dependencies": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^11.0.0" + "camelcase": "^5.3.1", + "cssesc": "^3.0.0", + "icss-utils": "^4.1.1", + "loader-utils": "^1.2.3", + "normalize-path": "^3.0.0", + "postcss": "^7.0.32", + "postcss-modules-extract-imports": "^2.0.0", + "postcss-modules-local-by-default": "^3.0.2", + "postcss-modules-scope": "^2.2.0", + "postcss-modules-values": "^3.0.0", + "postcss-value-parser": "^4.1.0", + "schema-utils": "^2.7.0", + "semver": "^6.3.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/npm/node_modules/libnpmversion": { - "version": "2.0.2", + "node_modules/css-loader/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/git": "^2.0.7", - "@npmcli/run-script": "^2.0.0", - "json-parse-even-better-errors": "^2.3.1", - "semver": "^7.3.5", - "stringify-package": "^1.0.1" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": ">=6" } }, - "node_modules/npm/node_modules/lru-cache": { - "version": "6.0.0", + "node_modules/css-loader/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "dev": true, - "inBundle": true, - "license": "ISC", "dependencies": { - "yallist": "^4.0.0" + "minimist": "^1.2.0" }, - "engines": { - "node": ">=10" + "bin": { + "json5": "lib/cli.js" } }, - "node_modules/npm/node_modules/make-fetch-happen": { - "version": "9.1.0", + "node_modules/css-loader/node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", "dev": true, - "inBundle": true, - "license": "ISC", "dependencies": { - "agentkeepalive": "^4.1.3", - "cacache": "^15.2.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^6.0.0", - "minipass": "^3.1.3", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^1.3.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.2", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.0.0", - "ssri": "^8.0.0" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" }, "engines": { - "node": ">= 10" + "node": ">=4.0.0" } }, - "node_modules/npm/node_modules/minimatch": { - "version": "3.0.4", + "node_modules/css-loader/node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, "engines": { - "node": "*" + "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/minipass": { - "version": "3.1.6", + "node_modules/css-loader/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, - "inBundle": true, - "license": "ISC", "dependencies": { - "yallist": "^4.0.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" }, "engines": { - "node": ">=8" + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, - "node_modules/npm/node_modules/minipass-collect": { - "version": "1.0.2", + "node_modules/css-loader/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/npm/node_modules/minipass-fetch": { - "version": "1.4.1", + "node_modules/css-prefers-color-scheme": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz", + "integrity": "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==", "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "minipass": "^3.1.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.0.0" + "bin": { + "css-prefers-color-scheme": "dist/cli.cjs" }, "engines": { - "node": ">=8" + "node": "^12 || ^14 || >=16" }, - "optionalDependencies": { - "encoding": "^0.1.12" + "peerDependencies": { + "postcss": "^8.4" } }, - "node_modules/npm/node_modules/minipass-flush": { - "version": "1.0.5", + "node_modules/css-select": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-3.1.2.tgz", + "integrity": "sha512-qmss1EihSuBNWNNhHjxzxSfJoFBM/lERB/Q4EnsJQQC62R2evJDW481091oAdOr9uh46/0n4nrg0It5cAnj1RA==", "dev": true, - "inBundle": true, - "license": "ISC", "dependencies": { - "minipass": "^3.0.0" + "boolbase": "^1.0.0", + "css-what": "^4.0.0", + "domhandler": "^4.0.0", + "domutils": "^2.4.3", + "nth-check": "^2.0.0" }, - "engines": { - "node": ">= 8" + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/npm/node_modules/minipass-json-stream": { - "version": "1.0.1", + "node_modules/css-unit-converter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.2.tgz", + "integrity": "sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA==", + "dev": true + }, + "node_modules/css-what": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-4.0.0.tgz", + "integrity": "sha512-teijzG7kwYfNVsUh2H/YN62xW3KK9YhXEgSlbxMlcyjPNvdKJqFx5lrwlJgoFP1ZHlB89iGDlo/JyshKeRhv5A==", "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "jsonparse": "^1.3.1", - "minipass": "^3.0.0" + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/npm/node_modules/minipass-pipeline": { - "version": "1.2.4", + "node_modules/cssdb": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-6.5.0.tgz", + "integrity": "sha512-Rh7AAopF2ckPXe/VBcoUS9JrCZNSyc60+KpgE6X25vpVxA32TmiqvExjkfhwP4wGSb6Xe8Z/JIyGqwgx/zZYFA==", + "dev": true + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" + "bin": { + "cssesc": "bin/cssesc" }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/npm/node_modules/minipass-sized": { - "version": "1.0.3", + "node_modules/cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", "dev": true, - "inBundle": true, - "license": "ISC", "dependencies": { - "minipass": "^3.0.0" + "cssom": "~0.3.6" }, "engines": { "node": ">=8" } }, - "node_modules/npm/node_modules/minizlib": { - "version": "2.1.2", + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "node_modules/csstype": { + "version": "2.6.20", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.20.tgz", + "integrity": "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==", + "dev": true + }, + "node_modules/currently-unhandled": { + "version": "0.4.1", "dev": true, - "inBundle": true, "license": "MIT", "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" + "array-find-index": "^1.0.1" }, "engines": { - "node": ">= 8" + "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/mkdirp": { - "version": "1.0.4", + "node_modules/custom-error-instance": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/custom-error-instance/-/custom-error-instance-2.1.1.tgz", + "integrity": "sha1-PPY5FIemYppiR+sMoM4ACBt+Nho=", + "dev": true + }, + "node_modules/cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "dev": true + }, + "node_modules/cz-conventional-changelog": { + "version": "3.3.0", "dev": true, - "inBundle": true, "license": "MIT", - "bin": { - "mkdirp": "bin/cmd.js" + "dependencies": { + "chalk": "^2.4.1", + "commitizen": "^4.0.3", + "conventional-commit-types": "^3.0.0", + "lodash.map": "^4.5.1", + "longest": "^2.0.1", + "word-wrap": "^1.0.3" }, "engines": { - "node": ">=10" + "node": ">= 10" + }, + "optionalDependencies": { + "@commitlint/load": ">6.1.1" } }, - "node_modules/npm/node_modules/mkdirp-infer-owner": { - "version": "2.0.0", + "node_modules/cz-conventional-changelog/node_modules/ansi-styles": { + "version": "3.2.1", "dev": true, - "inBundle": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "chownr": "^2.0.0", - "infer-owner": "^1.0.4", - "mkdirp": "^1.0.3" + "color-convert": "^1.9.0" }, "engines": { - "node": ">=10" + "node": ">=4" } }, - "node_modules/npm/node_modules/ms": { - "version": "2.1.3", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/mute-stream": { - "version": "0.0.8", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/negotiator": { - "version": "0.6.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/npm/node_modules/node-gyp": { - "version": "8.4.1", + "node_modules/cz-conventional-changelog/node_modules/chalk": { + "version": "2.4.2", "dev": true, - "inBundle": true, "license": "MIT", "dependencies": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^9.1.0", - "nopt": "^5.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "engines": { - "node": ">= 10.12.0" + "node": ">=4" } }, - "node_modules/npm/node_modules/nopt": { - "version": "5.0.0", + "node_modules/cz-conventional-changelog/node_modules/color-convert": { + "version": "1.9.3", "dev": true, - "inBundle": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": ">=6" + "color-name": "1.1.3" } }, - "node_modules/npm/node_modules/normalize-package-data": { - "version": "3.0.3", + "node_modules/cz-conventional-changelog/node_modules/color-name": { + "version": "1.1.3", "dev": true, - "inBundle": true, - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - }, - "engines": { - "node": ">=10" - } + "license": "MIT" }, - "node_modules/npm/node_modules/npm-audit-report": { - "version": "2.1.5", + "node_modules/cz-conventional-changelog/node_modules/escape-string-regexp": { + "version": "1.0.5", "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "chalk": "^4.0.0" - }, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=0.8.0" } }, - "node_modules/npm/node_modules/npm-bundled": { - "version": "1.1.2", + "node_modules/cz-conventional-changelog/node_modules/has-flag": { + "version": "3.0.0", "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-normalize-package-bin": "^1.0.1" + "license": "MIT", + "engines": { + "node": ">=4" } }, - "node_modules/npm/node_modules/npm-install-checks": { - "version": "4.0.0", + "node_modules/cz-conventional-changelog/node_modules/supports-color": { + "version": "5.5.0", "dev": true, - "inBundle": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "semver": "^7.1.1" + "has-flag": "^3.0.0" }, "engines": { - "node": ">=10" + "node": ">=4" } }, - "node_modules/npm/node_modules/npm-normalize-package-bin": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/npm-package-arg": { - "version": "8.1.5", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "hosted-git-info": "^4.0.1", - "semver": "^7.3.4", - "validate-npm-package-name": "^3.0.0" - }, + "node_modules/data-uri-to-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz", + "integrity": "sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==", "engines": { - "node": ">=10" + "node": ">= 6" } }, - "node_modules/npm/node_modules/npm-packlist": { - "version": "3.0.0", + "node_modules/data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", "dev": true, - "inBundle": true, - "license": "ISC", "dependencies": { - "glob": "^7.1.6", - "ignore-walk": "^4.0.1", - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" - }, - "bin": { - "npm-packlist": "bin/index.js" + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" }, "engines": { "node": ">=10" } }, - "node_modules/npm/node_modules/npm-pick-manifest": { - "version": "6.1.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-install-checks": "^4.0.0", - "npm-normalize-package-bin": "^1.0.1", - "npm-package-arg": "^8.1.2", - "semver": "^7.3.4" + "node_modules/date-and-time": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/date-and-time/-/date-and-time-2.1.2.tgz", + "integrity": "sha512-YlQUtuqYGPR58I7jzx4TIjknN9wCKjwewiylIp+P4xMuO23mlZje3Qe9gYCKp/6ncbeNpU8ZnPdhQNZnVphveQ==" + }, + "node_modules/dateformat": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", + "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", + "engines": { + "node": "*" } }, - "node_modules/npm/node_modules/npm-profile": { - "version": "5.0.4", - "dev": true, - "inBundle": true, - "license": "ISC", + "node_modules/db-errors": { + "version": "0.2.3", + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", "dependencies": { - "npm-registry-fetch": "^11.0.0" + "ms": "2.1.2" }, "engines": { - "node": ">=10" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/npm/node_modules/npm-registry-fetch": { - "version": "11.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "make-fetch-happen": "^9.0.1", - "minipass": "^3.1.3", - "minipass-fetch": "^1.3.0", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.0.0", - "npm-package-arg": "^8.0.0" - }, + "node_modules/decamelize": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-5.0.1.tgz", + "integrity": "sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==", "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/npm-user-validate": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "BSD-2-Clause" - }, - "node_modules/npm/node_modules/npmlog": { - "version": "6.0.0", + "node_modules/decamelize-keys": { + "version": "1.1.0", "dev": true, - "inBundle": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "are-we-there-yet": "^2.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.0", - "set-blocking": "^2.0.0" + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/object-assign": { - "version": "4.1.1", + "node_modules/decamelize-keys/node_modules/decamelize": { + "version": "1.2.0", "dev": true, - "inBundle": true, "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/once": { - "version": "1.4.0", + "node_modules/decamelize-keys/node_modules/map-obj": { + "version": "1.0.1", "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/opener": { - "version": "1.5.2", - "dev": true, - "inBundle": true, - "license": "(WTFPL OR MIT)", - "bin": { - "opener": "bin/opener-bin.js" - } + "node_modules/decimal.js": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", + "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", + "dev": true }, - "node_modules/npm/node_modules/p-map": { - "version": "4.0.0", + "node_modules/decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "aggregate-error": "^3.0.0" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10" } }, - "node_modules/npm/node_modules/pacote": { - "version": "12.0.2", + "node_modules/decompress-response": { + "version": "3.3.0", "dev": true, - "inBundle": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "@npmcli/git": "^2.1.0", - "@npmcli/installed-package-contents": "^1.0.6", - "@npmcli/promise-spawn": "^1.2.0", - "@npmcli/run-script": "^2.0.0", - "cacache": "^15.0.5", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "infer-owner": "^1.0.4", - "minipass": "^3.1.3", - "mkdirp": "^1.0.3", - "npm-package-arg": "^8.0.1", - "npm-packlist": "^3.0.0", - "npm-pick-manifest": "^6.0.0", - "npm-registry-fetch": "^11.0.0", - "promise-retry": "^2.0.1", - "read-package-json-fast": "^2.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.1.0" - }, - "bin": { - "pacote": "lib/bin.js" + "mimic-response": "^1.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": ">=4" } }, - "node_modules/npm/node_modules/parse-conflict-json": { - "version": "2.0.1", + "node_modules/dedent": { + "version": "0.7.0", "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "json-parse-even-better-errors": "^2.3.1", - "just-diff": "^5.0.1", - "just-diff-apply": "^4.0.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" - } + "license": "MIT" }, - "node_modules/npm/node_modules/path-is-absolute": { - "version": "1.0.1", + "node_modules/deep-extend": { + "version": "0.6.0", "dev": true, - "inBundle": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=4.0.0" } }, - "node_modules/npm/node_modules/proc-log": { - "version": "1.0.0", - "dev": true, - "inBundle": true, - "license": "ISC" + "node_modules/deep-is": { + "version": "0.1.3", + "license": "MIT" }, - "node_modules/npm/node_modules/promise-all-reject-late": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "funding": { - "url": "https://github.com/sponsors/isaacs" - } + "node_modules/deep-object-diff": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/deep-object-diff/-/deep-object-diff-1.1.7.tgz", + "integrity": "sha512-QkgBca0mL08P6HiOjoqvmm6xOAl2W6CT2+34Ljhg0OeFan8cwlcdq8jrLKsBBuUFAZLsN5b6y491KdKEoSo9lg==", + "dev": true }, - "node_modules/npm/node_modules/promise-call-limit": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node_modules/deepmerge": { + "version": "4.2.2", + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/promise-inflight": { - "version": "1.0.1", + "node_modules/defer-to-connect": { + "version": "1.1.3", "dev": true, - "inBundle": true, - "license": "ISC" + "license": "MIT" }, - "node_modules/npm/node_modules/promise-retry": { - "version": "2.0.1", + "node_modules/define-properties": { + "version": "1.1.3", "dev": true, - "inBundle": true, "license": "MIT", "dependencies": { - "err-code": "^2.0.2", - "retry": "^0.12.0" + "object-keys": "^1.0.12" }, "engines": { - "node": ">=10" + "node": ">= 0.4" } }, - "node_modules/npm/node_modules/promzard": { - "version": "0.3.0", + "node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", "dev": true, - "inBundle": true, - "license": "ISC", "dependencies": { - "read": "1" + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/qrcode-terminal": { - "version": "0.12.0", + "node_modules/define-property/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true, - "inBundle": true, - "bin": { - "qrcode-terminal": "bin/qrcode-terminal.js" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/read": { - "version": "1.0.7", - "dev": true, - "inBundle": true, - "license": "ISC", + "node_modules/degenerator": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-3.0.2.tgz", + "integrity": "sha512-c0mef3SNQo56t6urUU6tdQAs+ThoD0o9B9MJ8HEt7NQcGEILCRFqQb7ZbP9JAv+QF1Ky5plydhMR/IrqWDm+TQ==", "dependencies": { - "mute-stream": "~0.0.4" + "ast-types": "^0.13.2", + "escodegen": "^1.8.1", + "esprima": "^4.0.0", + "vm2": "^3.9.8" }, "engines": { - "node": ">=0.8" + "node": ">= 6" } }, - "node_modules/npm/node_modules/read-cmd-shim": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/read-package-json": { - "version": "4.1.1", - "dev": true, - "inBundle": true, - "license": "ISC", + "node_modules/degenerator/node_modules/escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", "dependencies": { - "glob": "^7.1.1", - "json-parse-even-better-errors": "^2.3.0", - "normalize-package-data": "^3.0.0", - "npm-normalize-package-bin": "^1.0.0" + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" }, "engines": { - "node": ">=10" + "node": ">=4.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" } }, - "node_modules/npm/node_modules/read-package-json-fast": { - "version": "2.0.3", - "dev": true, - "inBundle": true, - "license": "ISC", + "node_modules/degenerator/node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", "dependencies": { - "json-parse-even-better-errors": "^2.3.0", - "npm-normalize-package-bin": "^1.0.1" + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" }, "engines": { - "node": ">=10" + "node": ">= 0.8.0" } }, - "node_modules/npm/node_modules/readable-stream": { - "version": "3.6.0", - "dev": true, - "inBundle": true, - "license": "MIT", + "node_modules/degenerator/node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" }, "engines": { - "node": ">= 6" + "node": ">= 0.8.0" } }, - "node_modules/npm/node_modules/readdir-scoped-modules": { - "version": "1.1.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "debuglog": "^1.0.1", - "dezalgo": "^1.0.0", - "graceful-fs": "^4.1.2", - "once": "^1.3.0" + "node_modules/degenerator/node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "engines": { + "node": ">= 0.8.0" } }, - "node_modules/npm/node_modules/retry": { - "version": "0.12.0", - "dev": true, - "inBundle": true, - "license": "MIT", + "node_modules/degenerator/node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dependencies": { + "prelude-ls": "~1.1.2" + }, "engines": { - "node": ">= 4" + "node": ">= 0.8.0" } }, - "node_modules/npm/node_modules/rimraf": { - "version": "3.0.2", + "node_modules/del": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", + "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", "dev": true, - "inBundle": true, - "license": "ISC", "dependencies": { - "glob": "^7.1.3" + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" }, - "bin": { - "rimraf": "bin.js" + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/safe-buffer": { - "version": "5.2.1", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "MIT" + "node_modules/delayed-stream": { + "version": "1.0.0", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } }, - "node_modules/npm/node_modules/safer-buffer": { - "version": "2.1.2", - "dev": true, - "inBundle": true, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "node_modules/depd": { + "version": "1.1.2", "license": "MIT", - "optional": true + "engines": { + "node": ">= 0.6" + } }, - "node_modules/npm/node_modules/semver": { - "version": "7.3.5", + "node_modules/deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "dev": true + }, + "node_modules/des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", "dev": true, - "inBundle": true, - "license": "ISC", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" } }, - "node_modules/npm/node_modules/set-blocking": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "ISC" + "node_modules/destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" }, - "node_modules/npm/node_modules/signal-exit": { - "version": "3.0.6", + "node_modules/detab": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detab/-/detab-2.0.4.tgz", + "integrity": "sha512-8zdsQA5bIkoRECvCrNKPla84lyoR7DSAyf7p0YgXzBO9PDJx8KntPUay7NS6yp+KdxdVtiE5SpHKtbp2ZQyA9g==", "dev": true, - "inBundle": true, - "license": "ISC" + "dependencies": { + "repeat-string": "^1.5.4" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } }, - "node_modules/npm/node_modules/smart-buffer": { - "version": "4.2.0", + "node_modules/detect-file": { + "version": "1.0.0", "dev": true, - "inBundle": true, "license": "MIT", "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" + "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/socks": { - "version": "2.6.1", + "node_modules/detect-indent": { + "version": "6.0.0", "dev": true, - "inBundle": true, "license": "MIT", - "dependencies": { - "ip": "^1.1.5", - "smart-buffer": "^4.1.0" - }, "engines": { - "node": ">= 10.13.0", - "npm": ">= 3.0.0" + "node": ">=8" } }, - "node_modules/npm/node_modules/socks-proxy-agent": { - "version": "6.1.0", + "node_modules/detect-newline": { + "version": "3.1.0", "dev": true, - "inBundle": true, "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-port": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.3.0.tgz", + "integrity": "sha512-E+B1gzkl2gqxt1IhUzwjrxBKRqx1UzC3WLONHinn8S3T6lwV/agVCyitiFOsGJ/eYuEUBvD71MZHy3Pv1G9doQ==", + "dev": true, "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.1", - "socks": "^2.6.1" + "address": "^1.0.1", + "debug": "^2.6.0" + }, + "bin": { + "detect": "bin/detect-port", + "detect-port": "bin/detect-port" }, "engines": { - "node": ">= 10" + "node": ">= 4.2.1" } }, - "node_modules/npm/node_modules/spdx-correct": { - "version": "3.1.1", + "node_modules/detect-port/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, - "inBundle": true, - "license": "Apache-2.0", "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" + "ms": "2.0.0" } }, - "node_modules/npm/node_modules/spdx-exceptions": { - "version": "2.3.0", - "dev": true, - "inBundle": true, - "license": "CC-BY-3.0" + "node_modules/detect-port/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true }, - "node_modules/npm/node_modules/spdx-expression-parse": { - "version": "3.0.1", + "node_modules/dezalgo": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz", + "integrity": "sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=", "dev": true, - "inBundle": true, - "license": "MIT", "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "asap": "^2.0.0", + "wrappy": "1" } }, - "node_modules/npm/node_modules/spdx-license-ids": { - "version": "3.0.10", - "dev": true, - "inBundle": true, - "license": "CC0-1.0" - }, - "node_modules/npm/node_modules/ssri": { - "version": "8.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", + "node_modules/dicer": { + "version": "0.3.0", "dependencies": { - "minipass": "^3.1.1" + "streamsearch": "0.1.2" }, "engines": { - "node": ">= 8" + "node": ">=4.5.0" } }, - "node_modules/npm/node_modules/string_decoder": { - "version": "1.3.0", + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/diff-match-patch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.5.tgz", + "integrity": "sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==" + }, + "node_modules/diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", "dev": true, - "inBundle": true, - "license": "MIT", "dependencies": { - "safe-buffer": "~5.2.0" + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" } }, - "node_modules/npm/node_modules/string-width": { - "version": "2.1.1", - "dev": true, - "inBundle": true, + "node_modules/diffie-hellman/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/dir-glob": { + "version": "3.0.1", "license": "MIT", "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "path-type": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/npm/node_modules/string-width/node_modules/ansi-regex": { - "version": "3.0.0", + "node_modules/discontinuous-range": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/dlv": { + "version": "1.1.3", "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=4" - } + "license": "MIT" }, - "node_modules/npm/node_modules/string-width/node_modules/strip-ansi": { - "version": "4.0.0", + "node_modules/doctrine": { + "version": "3.0.0", "dev": true, - "inBundle": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "ansi-regex": "^3.0.0" + "esutils": "^2.0.2" }, "engines": { - "node": ">=4" + "node": ">=6.0.0" } }, - "node_modules/npm/node_modules/stringify-package": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "ISC" + "node_modules/doctypes": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", + "integrity": "sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=", + "dev": true }, - "node_modules/npm/node_modules/strip-ansi": { - "version": "3.0.1", + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", "dev": true, - "inBundle": true, + "dependencies": { + "utila": "~0.4" + } + }, + "node_modules/dom-serializer": { + "version": "1.3.2", "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", + "dev": true + }, + "node_modules/domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=0.4", + "npm": ">=1.2" } }, - "node_modules/npm/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/domelementtype": { + "version": "2.2.0", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", "dev": true, - "inBundle": true, - "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "webidl-conversions": "^5.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/npm/node_modules/tar": { - "version": "6.1.11", + "node_modules/domexception/node_modules/webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", "dev": true, - "inBundle": true, - "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" + "domelementtype": "^2.2.0" }, "engines": { - "node": ">= 10" + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" } }, - "node_modules/npm/node_modules/text-table": { - "version": "0.2.0", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/tiny-relative-date": { - "version": "1.3.0", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/treeverse": { - "version": "1.0.4", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "dev": true, - "inBundle": true, - "license": "MIT", + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", "dependencies": { - "is-typedarray": "^1.0.0" + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" } }, - "node_modules/npm/node_modules/unique-filename": { - "version": "1.1.1", + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", "dev": true, - "inBundle": true, - "license": "ISC", "dependencies": { - "unique-slug": "^2.0.0" + "no-case": "^3.0.4", + "tslib": "^2.0.3" } }, - "node_modules/npm/node_modules/unique-slug": { - "version": "2.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4" + "node_modules/dotenv": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.0.tgz", + "integrity": "sha512-qD9WU0MPM4SWLPJy/r2Be+2WgQj8plChsyrCNQzW/0WjvcJQiKQJ9mH3ZgB3fxbUUxgc/11ZJ0Fi5KiimWGz2Q==", + "engines": { + "node": ">=12" } }, - "node_modules/npm/node_modules/util-deprecate": { - "version": "1.0.2", - "dev": true, - "inBundle": true, - "license": "MIT" + "node_modules/dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "dev": true }, - "node_modules/npm/node_modules/validate-npm-package-license": { - "version": "3.0.4", + "node_modules/dotgitignore": { + "version": "2.1.0", "dev": true, - "inBundle": true, - "license": "Apache-2.0", + "license": "ISC", "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" + "find-up": "^3.0.0", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=6" } }, - "node_modules/npm/node_modules/validate-npm-package-name": { + "node_modules/dotgitignore/node_modules/find-up": { "version": "3.0.0", "dev": true, - "inBundle": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "builtins": "^1.0.3" + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "node_modules/npm/node_modules/walk-up-path": { - "version": "1.0.0", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/wcwidth": { - "version": "1.0.1", + "node_modules/dotgitignore/node_modules/locate-path": { + "version": "3.0.0", "dev": true, - "inBundle": true, "license": "MIT", "dependencies": { - "defaults": "^1.0.3" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "node_modules/npm/node_modules/which": { - "version": "2.0.2", + "node_modules/dotgitignore/node_modules/p-limit": { + "version": "2.3.0", "dev": true, - "inBundle": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" + "p-try": "^2.0.0" }, "engines": { - "node": ">= 8" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/wide-align": { - "version": "1.1.3", + "node_modules/dotgitignore/node_modules/p-locate": { + "version": "3.0.0", "dev": true, - "inBundle": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "string-width": "^1.0.2 || 2" + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" } }, - "node_modules/npm/node_modules/wrappy": { - "version": "1.0.2", + "node_modules/downshift": { + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/downshift/-/downshift-6.1.7.tgz", + "integrity": "sha512-cVprZg/9Lvj/uhYRxELzlu1aezRcgPWBjTvspiGTVEU64gF5pRdSRKFVLcxqsZC637cLAGMbL40JavEfWnqgNg==", "dev": true, - "inBundle": true, - "license": "ISC" + "dependencies": { + "@babel/runtime": "^7.14.8", + "compute-scroll-into-view": "^1.0.17", + "prop-types": "^15.7.2", + "react-is": "^17.0.2", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "react": ">=16.12.0" + } }, - "node_modules/npm/node_modules/write-file-atomic": { - "version": "3.0.3", + "node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", "dev": true, - "inBundle": true, - "license": "ISC", "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" + "readable-stream": "^2.0.2" } }, - "node_modules/npm/node_modules/yallist": { - "version": "4.0.0", + "node_modules/duplexer3": { + "version": "0.1.4", "dev": true, - "inBundle": true, - "license": "ISC" + "license": "BSD-3-Clause" }, - "node_modules/npmlog": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.1.tgz", - "integrity": "sha512-BTHDvY6nrRHuRfyjt1MAufLxYdVXZfd099H4+i1f0lPywNQyI4foeNXJRObB/uy+TYqUW0vAD9gbdSOXPst7Eg==", - "dev": true, + "node_modules/duplexify": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz", + "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==", "dependencies": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.0", - "set-blocking": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "end-of-stream": "^1.4.1", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1", + "stream-shift": "^1.0.0" } }, - "node_modules/null-check": { - "version": "1.0.0", - "dev": true, - "license": "MIT", + "node_modules/duplexify/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, - "node_modules/nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/editorconfig": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", + "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", + "dev": true, + "dependencies": { + "commander": "^2.19.0", + "lru-cache": "^4.1.5", + "semver": "^5.6.0", + "sigmund": "^1.0.1" + }, + "bin": { + "editorconfig": "bin/editorconfig" + } + }, + "node_modules/editorconfig/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, - "node_modules/object-assign": { - "version": "4.1.1", - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "node_modules/editorconfig/node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" } }, - "node_modules/object-inspect": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", - "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "node_modules/editorconfig/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "bin": { + "semver": "bin/semver" } }, - "node_modules/object-keys": { + "node_modules/editorconfig/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "node_modules/ee-first": { "version": "1.1.1", + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.4.90", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.90.tgz", + "integrity": "sha512-ZwKgSA0mQMyEhz+NR0F8dRzkrCLeHLzLkjx/CWf16+zV85hQ6meXPQbKanvhnpkYb7b2uJNj+enQJ/N877ND4Q==", + "dev": true + }, + "node_modules/element-resize-detector": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/element-resize-detector/-/element-resize-detector-1.2.4.tgz", + "integrity": "sha512-Fl5Ftk6WwXE0wqCgNoseKWndjzZlDCwuPTcoVZfCP9R3EHQF8qUtr3YUPNETegRBOKqQKPW3n4kiIWngGi8tKg==", "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" + "dependencies": { + "batch-processor": "1.0.0" } }, - "node_modules/object-path": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.8.tgz", - "integrity": "sha512-YJjNZrlXJFM42wTBn6zgOJVar9KFJvzx6sTWDte8sWZF//cnjl0BxHNpfZx+ZffXX63A9q0b1zsFiBX4g4X5KA==", + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dev": true, + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/email-regex": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/email-regex/-/email-regex-4.0.0.tgz", + "integrity": "sha512-OxR2NqoYS3ZikqOkju2krRTyxngwjJ5Wh4yalpTqbBnUOr+LLwwjY2x5Sksruw6TieyQDswE5Pc83Eh6RQj3GA==", "engines": { - "node": ">= 10.12.0" + "node": ">=8" } }, - "node_modules/object.assign": { - "version": "4.1.2", + "node_modules/email-validator": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/email-validator/-/email-validator-2.0.4.tgz", + "integrity": "sha512-gYCwo7kh5S3IDyZPLZf6hSS0MnZT8QmJFqYvbqlDZSbwdZlY6QZWxJ4i/6UhITOJ4XzyI647Bm2MXKCLqnJ4nQ==", "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">4.0" } }, - "node_modules/object.values": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", - "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "node_modules/emittery": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", + "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sindresorhus/emittery?sponsor=1" } }, - "node_modules/objection": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/objection/-/objection-3.0.1.tgz", - "integrity": "sha512-rqNnyQE+C55UHjdpTOJEKQHJGZ/BGtBBtgxdUpKG4DQXRUmqxfmgS/MhPWxB9Pw0mLSVLEltr6soD4c0Sddy0Q==", - "dependencies": { - "ajv": "^8.6.2", - "db-errors": "^0.2.3" - }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "knex": ">=0.95.0" + "node": ">= 4" } }, - "node_modules/objection/node_modules/ajv": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.7.1.tgz", - "integrity": "sha512-gPpOObTO1QjbnN1sVMjJcp1TF9nggMfO4MBR5uQl6ZVTOaEPq5i4oq/6R9q2alMMPB3eg53wFv1RuJBLuxf3Hw==", + "node_modules/emotion-theming": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/emotion-theming/-/emotion-theming-10.3.0.tgz", + "integrity": "sha512-mXiD2Oj7N9b6+h/dC6oLf9hwxbtKHQjoIqtodEyL8CpkN4F3V4IK/BT4D0C7zSs4BBFOu4UlPJbvvBLa88SGEA==", + "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "@babel/runtime": "^7.5.5", + "@emotion/weak-memoize": "0.2.5", + "hoist-non-react-statics": "^3.3.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "peerDependencies": { + "@emotion/core": "^10.0.27", + "react": ">=16.3.0" } }, - "node_modules/objection/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, - "node_modules/on-finished": { - "version": "2.3.0", - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } + "node_modules/enabled": { + "version": "2.0.0", + "license": "MIT" }, - "node_modules/on-headers": { + "node_modules/encodeurl": { "version": "1.0.2", "license": "MIT", "engines": { "node": ">= 0.8" } }, - "node_modules/once": { - "version": "1.4.0", - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/one-time": { - "version": "1.0.0", - "license": "MIT", + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "optional": true, "dependencies": { - "fn.name": "1.x.x" + "iconv-lite": "^0.6.2" } }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "optional": true, "dependencies": { - "mimic-fn": "^2.1.0" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/onigasm": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/onigasm/-/onigasm-2.2.5.tgz", - "integrity": "sha512-F+th54mPc0l1lp1ZcFMyL/jTs2Tlq4SqIHKIXGZOR/VkHkF9A7Fr5rRr5+ZG/lWeRsyrClLYRq7s/yFQ/XhWCA==", - "dev": true, + "node_modules/end-of-stream": { + "version": "1.4.4", + "license": "MIT", "dependencies": { - "lru-cache": "^5.1.1" + "once": "^1.4.0" } }, - "node_modules/onigasm/node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "node_modules/enhanced-resolve": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", "dev": true, "dependencies": { - "yallist": "^3.0.2" + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/onigasm/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/optionator": { - "version": "0.9.1", + "node_modules/enquirer": { + "version": "2.3.6", "dev": true, "license": "MIT", "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "ansi-colors": "^4.1.1" }, "engines": { - "node": ">= 0.8.0" + "node": ">=8.6" } }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } + "node_modules/ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=" }, - "node_modules/p-each-series": { + "node_modules/entities": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", - "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==", - "dev": true, - "engines": { - "node": ">=8" - }, + "license": "BSD-2-Clause", "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/p-filter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-2.1.0.tgz", - "integrity": "sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==", + "node_modules/env-ci": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-5.5.0.tgz", + "integrity": "sha512-o0JdWIbOLP+WJKIUt36hz1ImQQFuN92nhsfTkHHap+J8CiI8WgGpH/a9jEGHh4/TU5BUUGjlnKXNoDb57+ne+A==", "dev": true, "dependencies": { - "p-map": "^2.0.0" + "execa": "^5.0.0", + "fromentries": "^1.3.2", + "java-properties": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">=10.17" } }, - "node_modules/p-filter/node_modules/p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true, "engines": { "node": ">=6" } }, - "node_modules/p-finally": { - "version": "1.0.0", - "license": "MIT", - "engines": { - "node": ">=4" - } + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true }, - "node_modules/p-limit": { - "version": "3.1.0", - "license": "MIT", + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" + "prr": "~1.0.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "bin": { + "errno": "cli.js" } }, - "node_modules/p-locate": { - "version": "2.0.0", + "node_modules/error-ex": { + "version": "1.3.2", "dev": true, "license": "MIT", "dependencies": { - "p-limit": "^1.1.0" - }, - "engines": { - "node": ">=4" + "is-arrayish": "^0.2.1" } }, - "node_modules/p-locate/node_modules/p-limit": { - "version": "1.3.0", + "node_modules/es-abstract": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", "dev": true, - "license": "MIT", "dependencies": { - "p-try": "^1.0.0" + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.1" }, "engines": { - "node": ">=4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/p-locate/node_modules/p-try": { + "node_modules/es-array-method-boxes-properly": { "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", + "dev": true }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "node_modules/es-get-iterator": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz", + "integrity": "sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==", "dev": true, "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.0", + "has-symbols": "^1.0.1", + "is-arguments": "^1.1.0", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.5", + "isarray": "^2.0.5" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/p-queue": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", - "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", + "node_modules/es-get-iterator/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true, + "peer": true + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "dev": true, + "license": "MIT", "dependencies": { - "eventemitter3": "^4.0.4", - "p-timeout": "^3.2.0" + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-queue/node_modules/p-timeout": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", - "dependencies": { - "p-finally": "^1.0.0" - }, - "engines": { - "node": ">=8" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/p-reduce": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz", - "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==", + "node_modules/es5-shim": { + "version": "4.6.5", + "resolved": "https://registry.npmjs.org/es5-shim/-/es5-shim-4.6.5.tgz", + "integrity": "sha512-vfQ4UAai8szn0sAubCy97xnZ4sJVDD1gt/Grn736hg8D7540wemIb1YPrYZSTqlM2H69EQX1or4HU/tSwRTI3w==", "dev": true, "engines": { - "node": ">=8" + "node": ">=0.4.0" } }, - "node_modules/p-retry": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", - "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", + "node_modules/es6-shim": { + "version": "0.35.6", + "resolved": "https://registry.npmjs.org/es6-shim/-/es6-shim-0.35.6.tgz", + "integrity": "sha512-EmTr31wppcaIAgblChZiuN/l9Y7DPyw8Xtbg7fIVngn6zMW+IEBJDJngeKC3x6wr0V/vcA2wqeFnaw1bFJbDdA==", + "dev": true + }, + "node_modules/esbuild": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.27.tgz", + "integrity": "sha512-MZQt5SywZS3hA9fXnMhR22dv0oPGh6QtjJRIYbgL1AeqAoQZE+Qn5ppGYQAoHv/vq827flj4tIJ79Mrdiwk46Q==", "dev": true, - "dependencies": { - "@types/retry": "^0.12.0", - "retry": "^0.13.1" + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" }, "engines": { - "node": ">=8" - } - }, - "node_modules/p-retry/node_modules/retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "node": ">=12" + }, + "optionalDependencies": { + "esbuild-android-64": "0.14.27", + "esbuild-android-arm64": "0.14.27", + "esbuild-darwin-64": "0.14.27", + "esbuild-darwin-arm64": "0.14.27", + "esbuild-freebsd-64": "0.14.27", + "esbuild-freebsd-arm64": "0.14.27", + "esbuild-linux-32": "0.14.27", + "esbuild-linux-64": "0.14.27", + "esbuild-linux-arm": "0.14.27", + "esbuild-linux-arm64": "0.14.27", + "esbuild-linux-mips64le": "0.14.27", + "esbuild-linux-ppc64le": "0.14.27", + "esbuild-linux-riscv64": "0.14.27", + "esbuild-linux-s390x": "0.14.27", + "esbuild-netbsd-64": "0.14.27", + "esbuild-openbsd-64": "0.14.27", + "esbuild-sunos-64": "0.14.27", + "esbuild-windows-32": "0.14.27", + "esbuild-windows-64": "0.14.27", + "esbuild-windows-arm64": "0.14.27" + } + }, + "node_modules/esbuild-android-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.27.tgz", + "integrity": "sha512-LuEd4uPuj/16Y8j6kqy3Z2E9vNY9logfq8Tq+oTE2PZVuNs3M1kj5Qd4O95ee66yDGb3isaOCV7sOLDwtMfGaQ==", + "cpu": [ + "x64" + ], "dev": true, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">= 4" + "node": ">=12" } }, - "node_modules/p-try": { - "version": "2.2.0", + "node_modules/esbuild-android-arm64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.27.tgz", + "integrity": "sha512-E8Ktwwa6vX8q7QeJmg8yepBYXaee50OdQS3BFtEHKrzbV45H4foMOeEE7uqdjGQZFBap5VAqo7pvjlyA92wznQ==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=6" + "node": ">=12" } }, - "node_modules/pac-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-5.0.0.tgz", - "integrity": "sha512-CcFG3ZtnxO8McDigozwE3AqAw15zDvGH+OjXO4kzf7IkEKkQ4gxQ+3sdF50WmhQ4P/bVusXcqNE2S3XrNURwzQ==", - "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4", - "get-uri": "3", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "5", - "pac-resolver": "^5.0.0", - "raw-body": "^2.2.0", - "socks-proxy-agent": "5" - }, + "node_modules/esbuild-darwin-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.27.tgz", + "integrity": "sha512-czw/kXl/1ZdenPWfw9jDc5iuIYxqUxgQ/Q+hRd4/3udyGGVI31r29LCViN2bAJgGvQkqyLGVcG03PJPEXQ5i2g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">= 8" + "node": ">=12" } }, - "node_modules/pac-proxy-agent/node_modules/socks-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz", - "integrity": "sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ==", - "dependencies": { - "agent-base": "^6.0.2", - "debug": "4", - "socks": "^2.3.3" - }, + "node_modules/esbuild-darwin-arm64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.27.tgz", + "integrity": "sha512-BEsv2U2U4o672oV8+xpXNxN9bgqRCtddQC6WBh4YhXKDcSZcdNh7+6nS+DM2vu7qWIWNA4JbRG24LUUYXysimQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">= 6" + "node": ">=12" } }, - "node_modules/pac-resolver": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-5.0.0.tgz", - "integrity": "sha512-H+/A6KitiHNNW+bxBKREk2MCGSxljfqRX76NjummWEYIat7ldVXRU3dhRIE3iXZ0nvGBk6smv3nntxKkzRL8NA==", - "dependencies": { - "degenerator": "^3.0.1", - "ip": "^1.1.5", - "netmask": "^2.0.1" - }, + "node_modules/esbuild-freebsd-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.27.tgz", + "integrity": "sha512-7FeiFPGBo+ga+kOkDxtPmdPZdayrSzsV9pmfHxcyLKxu+3oTcajeZlOO1y9HW+t5aFZPiv7czOHM4KNd0tNwCA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">= 8" + "node": ">=12" } }, - "node_modules/package-json": { - "version": "6.5.0", + "node_modules/esbuild-freebsd-arm64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.27.tgz", + "integrity": "sha512-8CK3++foRZJluOWXpllG5zwAVlxtv36NpHfsbWS7TYlD8S+QruXltKlXToc/5ZNzBK++l6rvRKELu/puCLc7jA==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "got": "^9.6.0", - "registry-auth-token": "^4.0.0", - "registry-url": "^5.0.0", - "semver": "^6.2.0" - }, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/package-json/node_modules/@sindresorhus/is": { - "version": "0.14.0", + "node_modules/esbuild-linux-32": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.27.tgz", + "integrity": "sha512-qhNYIcT+EsYSBClZ5QhLzFzV5iVsP1YsITqblSaztr3+ZJUI+GoK8aXHyzKd7/CKKuK93cxEMJPpfi1dfsOfdw==", + "cpu": [ + "ia32" + ], "dev": true, - "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6" + "node": ">=12" } }, - "node_modules/package-json/node_modules/cacheable-request": { - "version": "6.1.0", + "node_modules/esbuild-linux-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.27.tgz", + "integrity": "sha512-ESjck9+EsHoTaKWlFKJpPZRN26uiav5gkI16RuI8WBxUdLrrAlYuYSndxxKgEn1csd968BX/8yQZATYf/9+/qg==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/package-json/node_modules/cacheable-request/node_modules/get-stream": { - "version": "5.2.0", + "node_modules/esbuild-linux-arm": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.27.tgz", + "integrity": "sha512-JnnmgUBdqLQO9hoNZQqNHFWlNpSX82vzB3rYuCJMhtkuaWQEmQz6Lec1UIxJdC38ifEghNTBsF9bbe8dFilnCw==", + "cpu": [ + "arm" + ], "dev": true, - "license": "MIT", - "dependencies": { - "pump": "^3.0.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12" } }, - "node_modules/package-json/node_modules/cacheable-request/node_modules/lowercase-keys": { - "version": "2.0.0", + "node_modules/esbuild-linux-arm64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.27.tgz", + "integrity": "sha512-no6Mi17eV2tHlJnqBHRLekpZ2/VYx+NfGxKcBE/2xOMYwctsanCaXxw4zapvNrGE9X38vefVXLz6YCF8b1EHiQ==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/package-json/node_modules/get-stream": { - "version": "4.1.0", + "node_modules/esbuild-linux-mips64le": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.27.tgz", + "integrity": "sha512-NolWP2uOvIJpbwpsDbwfeExZOY1bZNlWE/kVfkzLMsSgqeVcl5YMen/cedRe9mKnpfLli+i0uSp7N+fkKNU27A==", + "cpu": [ + "mips64el" + ], "dev": true, - "license": "MIT", - "dependencies": { - "pump": "^3.0.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6" + "node": ">=12" } }, - "node_modules/package-json/node_modules/got": { - "version": "9.6.0", + "node_modules/esbuild-linux-ppc64le": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.27.tgz", + "integrity": "sha512-/7dTjDvXMdRKmsSxKXeWyonuGgblnYDn0MI1xDC7J1VQXny8k1qgNp6VmrlsawwnsymSUUiThhkJsI+rx0taNA==", + "cpu": [ + "ppc64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8.6" + "node": ">=12" } }, - "node_modules/package-json/node_modules/normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", + "node_modules/esbuild-linux-riscv64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.27.tgz", + "integrity": "sha512-D+aFiUzOJG13RhrSmZgrcFaF4UUHpqj7XSKrIiCXIj1dkIkFqdrmqMSOtSs78dOtObWiOrFCDDzB24UyeEiNGg==", + "cpu": [ + "riscv64" + ], "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/package-json/node_modules/p-cancelable": { - "version": "1.1.0", + "node_modules/esbuild-linux-s390x": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.27.tgz", + "integrity": "sha512-CD/D4tj0U4UQjELkdNlZhQ8nDHU5rBn6NGp47Hiz0Y7/akAY5i0oGadhEIg0WCY/HYVXFb3CsSPPwaKcTOW3bg==", + "cpu": [ + "s390x" + ], "dev": true, - "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6" - } - }, - "node_modules/package-json/node_modules/semver": { - "version": "6.3.0", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "node": ">=12" } }, - "node_modules/packet-reader": { - "version": "1.0.0", - "license": "MIT" - }, - "node_modules/pacote": { - "version": "13.0.5", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.0.5.tgz", - "integrity": "sha512-6CYfot3/rUAn3qqzF2d/jrrXm5HlBtvaSgfmg0VtOUAdJ8fbSq21BJwftMGArkL71yXHIbUJ7Bt5B04547HELA==", + "node_modules/esbuild-netbsd-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.27.tgz", + "integrity": "sha512-h3mAld69SrO1VoaMpYl3a5FNdGRE/Nqc+E8VtHOag4tyBwhCQXxtvDDOAKOUQexBGca0IuR6UayQ4ntSX5ij1Q==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@npmcli/git": "^3.0.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/promise-spawn": "^1.2.0", - "@npmcli/run-script": "^3.0.1", - "cacache": "^16.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "infer-owner": "^1.0.4", - "minipass": "^3.1.6", - "mkdirp": "^1.0.4", - "npm-package-arg": "^9.0.0", - "npm-packlist": "^4.0.0", - "npm-pick-manifest": "^7.0.0", - "npm-registry-fetch": "^13.0.1", - "proc-log": "^2.0.0", - "promise-retry": "^2.0.1", - "read-package-json": "^5.0.0", - "read-package-json-fast": "^2.0.3", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.1.11" - }, - "bin": { - "pacote": "lib/bin.js" - }, + "optional": true, + "os": [ + "netbsd" + ], "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": ">=12" } }, - "node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" - }, - "node_modules/parent-module": { - "version": "1.0.1", + "node_modules/esbuild-openbsd-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.27.tgz", + "integrity": "sha512-xwSje6qIZaDHXWoPpIgvL+7fC6WeubHHv18tusLYMwL+Z6bEa4Pbfs5IWDtQdHkArtfxEkIZz77944z8MgDxGw==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" - }, + "optional": true, + "os": [ + "openbsd" + ], "engines": { - "node": ">=6" + "node": ">=12" } }, - "node_modules/parse-github-repo-url": { - "version": "1.4.1", - "dev": true, - "license": "MIT" - }, - "node_modules/parse-github-url": { - "version": "1.0.2", + "node_modules/esbuild-sunos-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.27.tgz", + "integrity": "sha512-/nBVpWIDjYiyMhuqIqbXXsxBc58cBVH9uztAOIfWShStxq9BNBik92oPQPJ57nzWXRNKQUEFWr4Q98utDWz7jg==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT", - "bin": { - "parse-github-url": "cli.js" - }, + "optional": true, + "os": [ + "sunos" + ], "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/parse-json": { - "version": "5.2.0", + "node_modules/esbuild-windows-32": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.27.tgz", + "integrity": "sha512-Q9/zEjhZJ4trtWhFWIZvS/7RUzzi8rvkoaS9oiizkHTTKd8UxFwn/Mm2OywsAfYymgUYm8+y2b+BKTNEFxUekw==", + "cpu": [ + "ia32" + ], "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12" } }, - "node_modules/parse-passwd": { - "version": "1.0.0", + "node_modules/esbuild-windows-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.27.tgz", + "integrity": "sha512-b3y3vTSl5aEhWHK66ngtiS/c6byLf6y/ZBvODH1YkBM+MGtVL6jN38FdHUsZasCz9gFwYs/lJMVY9u7GL6wfYg==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "node_modules/parsedbf": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/parsedbf/-/parsedbf-1.1.1.tgz", - "integrity": "sha512-jndFmhcrzSAGCMccM4za+3bIRxqV6L2doQjYN8Xgz0kZUpyBT5I8Gs6Y6hL5GcO2rih9OBkPcLlx2uBoLi8R8Q==", - "dependencies": { - "iconv-lite": "^0.4.15", - "text-encoding-polyfill": "^0.6.7" - } - }, - "node_modules/parseley": { - "version": "0.7.0", - "license": "MIT", - "dependencies": { - "moo": "^0.5.1", - "nearley": "^2.20.1" - }, - "funding": { - "url": "https://ko-fi.com/killymxi" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">= 0.8" + "node": ">=12" } }, - "node_modules/path-exists": { - "version": "3.0.0", + "node_modules/esbuild-windows-arm64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.27.tgz", + "integrity": "sha512-I/reTxr6TFMcR5qbIkwRGvldMIaiBu2+MP0LlD7sOlNXrfqIl9uNjsuxFPGEG4IRomjfQ5q8WT+xlF/ySVkqKg==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=4" + "node": ">=12" } }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "dev": true, + "node_modules/escalade": { + "version": "3.1.1", "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/path-key": { - "version": "3.1.1", + "node_modules/escape-goat": { + "version": "2.1.1", + "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "node_modules/path-to-regexp": { - "version": "0.1.7", + "node_modules/escape-html": { + "version": "1.0.3", "license": "MIT" }, - "node_modules/path-type": { + "node_modules/escape-string-regexp": { "version": "4.0.0", "license": "MIT", "engines": { - "node": ">=8" - } - }, - "node_modules/pg": { - "version": "8.7.3", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.7.3.tgz", - "integrity": "sha512-HPmH4GH4H3AOprDJOazoIcpI49XFsHCe8xlrjHkWiapdbHK+HLtbm/GQzXYAZwmPju/kzKhjaSfMACG+8cgJcw==", - "dependencies": { - "buffer-writer": "2.0.0", - "packet-reader": "1.0.0", - "pg-connection-string": "^2.5.0", - "pg-pool": "^3.5.1", - "pg-protocol": "^1.5.0", - "pg-types": "^2.1.0", - "pgpass": "1.x" - }, - "engines": { - "node": ">= 8.0.0" - }, - "peerDependencies": { - "pg-native": ">=2.0.0" + "node": ">=10" }, - "peerDependenciesMeta": { - "pg-native": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pg-connection-string": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz", - "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==" - }, - "node_modules/pg-escape": { - "version": "0.2.0", + "node_modules/escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", "dev": true, - "license": "MIT" - }, - "node_modules/pg-int8": { - "version": "1.0.1", - "license": "ISC", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/pg-pool": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.5.1.tgz", - "integrity": "sha512-6iCR0wVrro6OOHFsyavV+i6KYL4lVNyYAB9RD18w66xSzN+d8b66HiwuP30Gp1SH5O9T82fckkzsRjlrhD0ioQ==", - "peerDependencies": { - "pg": ">=8.0" - } - }, - "node_modules/pg-protocol": { - "version": "1.5.0", - "license": "MIT" - }, - "node_modules/pg-types": { - "version": "2.2.0", - "license": "MIT", - "dependencies": { - "pg-int8": "1.0.1", - "postgres-array": "~2.0.0", - "postgres-bytea": "~1.0.0", - "postgres-date": "~1.0.4", - "postgres-interval": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pgpass": { - "version": "1.0.4", - "license": "MIT", "dependencies": { - "split2": "^3.1.1" - } - }, - "node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.2.3", - "license": "MIT", - "engines": { - "node": ">=8.6" + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pidtree": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.5.0.tgz", - "integrity": "sha512-9nxspIM7OpZuhBxPg73Zvyq7j1QMPMPsGKTqRc2XOaFQauDvoNz9fM1Wdkjmeo7l9GXOZiRs97sPkuayl39wjA==", - "dev": true, "bin": { - "pidtree": "bin/pidtree.js" + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" }, "engines": { - "node": ">=0.10" + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" } }, - "node_modules/pify": { - "version": "2.3.0", + "node_modules/escodegen/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=4.0" } }, - "node_modules/pinkie": { - "version": "2.0.4", + "node_modules/escodegen/node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", "dev": true, - "license": "MIT", + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.8.0" } }, - "node_modules/pinkie-promise": { - "version": "2.0.1", + "node_modules/escodegen/node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", "dev": true, - "license": "MIT", "dependencies": { - "pinkie": "^2.0.0" + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.8.0" } }, - "node_modules/pirates": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.4.tgz", - "integrity": "sha512-ZIrVPH+A52Dw84R0L3/VS9Op04PuQ2SEoJL6bkshmiTic/HldyW9Tf7oH5mhJZBK7NmDx27vSMrYEXPXclpDKw==", + "node_modules/escodegen/node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", "dev": true, "engines": { - "node": ">= 6" + "node": ">= 0.8.0" } }, - "node_modules/pkg-conf": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", - "integrity": "sha1-ISZRTKbyq/69FoWW3xi6V4Z/AFg=", + "node_modules/escodegen/node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", "dev": true, "dependencies": { - "find-up": "^2.0.0", - "load-json-file": "^4.0.0" + "prelude-ls": "~1.1.2" }, "engines": { - "node": ">=4" + "node": ">= 0.8.0" } }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "node_modules/eslint": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.11.0.tgz", + "integrity": "sha512-/KRpd9mIRg2raGxHRGwW9ZywYNAClZrHjdueHcrVDuO3a6bj83eoTirCCk0M0yPwOjWYKHwRVRid+xK4F/GHgA==", "dev": true, "dependencies": { - "find-up": "^4.0.0" + "@eslint/eslintrc": "^1.2.1", + "@humanwhocodes/config-array": "^0.9.2", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^6.0.1", + "globals": "^13.6.0", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" }, "engines": { - "node": ">=8" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/eslint-config-prettier": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "bin": { + "eslint-config-prettier": "bin/cli.js" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "eslint": ">=7.0.0" } }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" + "node_modules/eslint-config-standard": { + "version": "17.0.0-1", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.0.0-1.tgz", + "integrity": "sha512-aqRG58dqoBNfOLN+PsitasxmW+W9Os4oQrx081B16T4E4WogsSbpUL6hnKSnyv35sSRYA2XjBtKMOrUboL6jgw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "peerDependencies": { + "eslint": "^8.0.1", + "eslint-plugin-import": "^2.25.2", + "eslint-plugin-n": "^14.0.0", + "eslint-plugin-promise": "^6.0.0" } }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/eslint-import-resolver-node": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", + "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", "dev": true, "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "debug": "^3.2.7", + "resolve": "^1.20.0" } }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" + "ms": "^2.1.1" } }, - "node_modules/pkg-dir/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "node_modules/eslint-import-resolver-webpack": { + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-webpack/-/eslint-import-resolver-webpack-0.13.2.tgz", + "integrity": "sha512-XodIPyg1OgE2h5BDErz3WJoK7lawxKTJNhgPNafRST6csC/MZC+L5P6kKqsZGRInpbgc02s/WZMrb4uGJzcuRg==", "dev": true, + "dependencies": { + "array-find": "^1.0.0", + "debug": "^3.2.7", + "enhanced-resolve": "^0.9.1", + "find-root": "^1.1.0", + "has": "^1.0.3", + "interpret": "^1.4.0", + "is-core-module": "^2.7.0", + "is-regex": "^1.1.4", + "lodash": "^4.17.21", + "resolve": "^1.20.0", + "semver": "^5.7.1" + }, "engines": { - "node": ">=8" + "node": ">= 6" + }, + "peerDependencies": { + "eslint-plugin-import": ">=1.4.0", + "webpack": ">=1.11.0" } }, - "node_modules/polygon-clipping": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.3.tgz", - "integrity": "sha512-ho0Xx5DLkgxRx/+n4O74XyJ67DcyN3Tu9bGYKsnTukGAW6ssnuak6Mwcyb1wHy9MZc9xsUWqIoiazkZB5weECg==", + "node_modules/eslint-import-resolver-webpack/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, "dependencies": { - "splaytree": "^3.1.0" + "ms": "^2.1.1" } }, - "node_modules/postgres-array": { - "version": "2.0.0", - "license": "MIT", + "node_modules/eslint-import-resolver-webpack/node_modules/enhanced-resolve": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz", + "integrity": "sha1-TW5omzcl+GCQknzMhs2fFjW4ni4=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.2.0", + "tapable": "^0.1.8" + }, "engines": { - "node": ">=4" + "node": ">=0.6" } }, - "node_modules/postgres-bytea": { - "version": "1.0.0", - "license": "MIT", + "node_modules/eslint-import-resolver-webpack/node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">= 0.10" } }, - "node_modules/postgres-date": { - "version": "1.0.7", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } + "node_modules/eslint-import-resolver-webpack/node_modules/memory-fs": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.2.0.tgz", + "integrity": "sha1-8rslNovBIeORwlIN6Slpyu4KApA=", + "dev": true }, - "node_modules/postgres-interval": { - "version": "1.2.0", - "license": "MIT", - "dependencies": { - "xtend": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" + "node_modules/eslint-import-resolver-webpack/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" } }, - "node_modules/prelude-ls": { - "version": "1.2.1", + "node_modules/eslint-import-resolver-webpack/node_modules/tapable": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.1.10.tgz", + "integrity": "sha1-KcNXB8K3DlDQdIK10gLo7URtr9Q=", "dev": true, - "license": "MIT", "engines": { - "node": ">= 0.8.0" + "node": ">=0.6" } }, - "node_modules/prepend-http": { - "version": "2.0.0", + "node_modules/eslint-module-utils": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.2.tgz", + "integrity": "sha512-zquepFnWCY2ISMFwD/DqzaM++H+7PDzOpUvotJWm/y1BAFt5R4oeULgdrTejKqLkz7MA/tgstsUMNYc7wNdTrg==", "dev": true, - "license": "MIT", + "dependencies": { + "debug": "^3.2.7", + "find-up": "^2.1.0" + }, "engines": { "node": ">=4" } }, - "node_modules/prettier": { - "version": "2.3.0", + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, - "license": "MIT", - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" + "dependencies": { + "ms": "^2.1.1" } }, - "node_modules/prettier-eslint": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/prettier-eslint/-/prettier-eslint-13.0.0.tgz", - "integrity": "sha512-P5K31qWgUOQCtJL/3tpvEe28KfP49qbr6MTVEXC7I2k7ci55bP3YDr+glhyCdhIzxGCVp2f8eobfQ5so52RIIA==", + "node_modules/eslint-plugin-es": { + "version": "3.0.1", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/parser": "^3.0.0", - "common-tags": "^1.4.0", - "dlv": "^1.1.0", - "eslint": "^7.9.0", - "indent-string": "^4.0.0", - "lodash.merge": "^4.6.0", - "loglevel-colored-level-prefix": "^1.0.0", - "prettier": "^2.0.0", - "pretty-format": "^23.0.1", - "require-relative": "^0.8.7", - "typescript": "^3.9.3", - "vue-eslint-parser": "~7.1.0" + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" }, "engines": { - "node": ">=10.0.0" + "node": ">=8.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=4.19.1" } }, - "node_modules/prettier-eslint/node_modules/@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "node_modules/eslint-plugin-import": { + "version": "2.25.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz", + "integrity": "sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA==", "dev": true, "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", + "array-includes": "^3.1.4", + "array.prototype.flat": "^1.2.5", + "debug": "^2.6.9", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-module-utils": "^2.7.2", + "has": "^1.0.3", + "is-core-module": "^2.8.0", + "is-glob": "^4.0.3", "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" + "object.values": "^1.1.5", + "resolve": "^1.20.0", + "tsconfig-paths": "^3.12.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" } }, - "node_modules/prettier-eslint/node_modules/@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "2.6.9", "dev": true, + "license": "MIT", "dependencies": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=10.10.0" + "ms": "2.0.0" } }, - "node_modules/prettier-eslint/node_modules/@typescript-eslint/experimental-utils": { - "version": "3.10.1", + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@types/json-schema": "^7.0.3", - "@typescript-eslint/types": "3.10.1", - "@typescript-eslint/typescript-estree": "3.10.1", - "eslint-scope": "^5.0.0", - "eslint-utils": "^2.0.0" + "esutils": "^2.0.2" }, "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" + "node": ">=0.10.0" } }, - "node_modules/prettier-eslint/node_modules/@typescript-eslint/parser": { - "version": "3.10.1", + "node_modules/eslint-plugin-import/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint-plugin-jest": { + "version": "26.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-26.1.1.tgz", + "integrity": "sha512-HRKOuPi5ADhza4ZBK5ufyNXy28bXXkib87w+pQqdvBhSTsamndh6sIAKPAUl8y0/n9jSWBdTPslrwtKWqkp8dA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { - "@types/eslint-visitor-keys": "^1.0.0", - "@typescript-eslint/experimental-utils": "3.10.1", - "@typescript-eslint/types": "3.10.1", - "@typescript-eslint/typescript-estree": "3.10.1", - "eslint-visitor-keys": "^1.1.0" + "@typescript-eslint/utils": "^5.10.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" }, "peerDependencies": { - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + "@typescript-eslint/eslint-plugin": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { - "typescript": { + "@typescript-eslint/eslint-plugin": { + "optional": true + }, + "jest": { "optional": true } } }, - "node_modules/prettier-eslint/node_modules/@typescript-eslint/types": { - "version": "3.10.1", + "node_modules/eslint-plugin-n": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-14.0.0.tgz", + "integrity": "sha512-mNwplPLsbaKhHyA0fa/cy8j+oF6bF6l81hzBTWa6JOvPcMNAuIogk2ih6d9tYvWYzyUG+7ZFeChqbzdFpg2QrQ==", "dev": true, - "license": "MIT", + "peer": true, + "dependencies": { + "eslint-plugin-es": "^4.1.0", + "eslint-utils": "^3.0.0", + "ignore": "^5.1.1", + "is-core-module": "^2.3.0", + "minimatch": "^3.0.4", + "resolve": "^1.10.1", + "semver": "^6.1.0" + }, "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + "node": ">=12.22.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=7.0.0" } }, - "node_modules/prettier-eslint/node_modules/@typescript-eslint/typescript-estree": { - "version": "3.10.1", + "node_modules/eslint-plugin-n/node_modules/eslint-plugin-es": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz", + "integrity": "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==", "dev": true, - "license": "BSD-2-Clause", + "peer": true, "dependencies": { - "@typescript-eslint/types": "3.10.1", - "@typescript-eslint/visitor-keys": "3.10.1", - "debug": "^4.1.1", - "glob": "^7.1.6", - "is-glob": "^4.0.1", - "lodash": "^4.17.15", - "semver": "^7.3.2", - "tsutils": "^3.17.1" + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=8.10.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://github.com/sponsors/mysticatea" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "peerDependencies": { + "eslint": ">=4.19.1" } }, - "node_modules/prettier-eslint/node_modules/@typescript-eslint/visitor-keys": { - "version": "3.10.1", + "node_modules/eslint-plugin-n/node_modules/eslint-plugin-es/node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { "eslint-visitor-keys": "^1.1.0" }, "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + "node": ">=6" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://github.com/sponsors/mysticatea" } }, - "node_modules/prettier-eslint/node_modules/ansi-regex": { - "version": "3.0.0", + "node_modules/eslint-plugin-n/node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true, - "license": "MIT", + "peer": true, "engines": { "node": ">=4" } }, - "node_modules/prettier-eslint/node_modules/ansi-styles": { - "version": "3.2.1", + "node_modules/eslint-plugin-n/node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { - "color-convert": "^1.9.0" + "eslint-visitor-keys": "^2.0.0" }, "engines": { - "node": ">=4" + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" } }, - "node_modules/prettier-eslint/node_modules/color-convert": { - "version": "1.9.3", + "node_modules/eslint-plugin-n/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" + "peer": true, + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/prettier-eslint/node_modules/color-name": { - "version": "1.1.3", - "dev": true, - "license": "MIT" - }, - "node_modules/prettier-eslint/node_modules/eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "node_modules/eslint-plugin-node": { + "version": "11.1.0", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", + "eslint-plugin-es": "^3.0.0", + "eslint-utils": "^2.0.0", + "ignore": "^5.1.1", "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "bin": { - "eslint": "bin/eslint.js" + "resolve": "^1.10.1", + "semver": "^6.1.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=8.10.0" }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/prettier-eslint/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=4" + "peerDependencies": { + "eslint": ">=5.16.0" } }, - "node_modules/prettier-eslint/node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "node_modules/eslint-plugin-node/node_modules/semver": { + "version": "6.3.0", "dev": true, - "engines": { - "node": ">=10" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/prettier-eslint/node_modules/espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "node_modules/eslint-plugin-prettier": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.0.0.tgz", + "integrity": "sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ==", "dev": true, "dependencies": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" + "prettier-linter-helpers": "^1.0.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=6.0.0" + }, + "peerDependencies": { + "eslint": ">=7.28.0", + "prettier": ">=2.0.0" + }, + "peerDependenciesMeta": { + "eslint-config-prettier": { + "optional": true + } } }, - "node_modules/prettier-eslint/node_modules/glob": { - "version": "7.1.7", + "node_modules/eslint-plugin-promise": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.0.0.tgz", + "integrity": "sha512-7GPezalm5Bfi/E22PnQxDWH2iW9GTvAlUNTztemeHb6c1BniSyoeTrM87JkC0wYdi6aQrZX9p2qEiAno8aTcbw==", "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, "engines": { - "node": "*" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" } }, - "node_modules/prettier-eslint/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true, - "engines": { - "node": ">= 4" + "node_modules/eslint-plugin-standard": { + "version": "5.0.0", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "peerDependencies": { + "eslint": ">=5.0.0" } }, - "node_modules/prettier-eslint/node_modules/pretty-format": { - "version": "23.6.0", + "node_modules/eslint-plugin-tsdoc": { + "version": "0.2.14", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^3.0.0", - "ansi-styles": "^3.2.0" + "@microsoft/tsdoc": "0.13.2", + "@microsoft/tsdoc-config": "0.15.2" } }, - "node_modules/prettier-eslint/node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "node_modules/eslint-plugin-vue": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-7.20.0.tgz", + "integrity": "sha512-oVNDqzBC9h3GO+NTgWeLMhhGigy6/bQaQbHS+0z7C4YEu/qK/yxHvca/2PTZtGNPsCrHwOTgKMrwu02A9iPBmw==", "dev": true, + "dependencies": { + "eslint-utils": "^2.1.0", + "natural-compare": "^1.4.0", + "semver": "^6.3.0", + "vue-eslint-parser": "^7.10.0" + }, "engines": { - "node": ">=8" + "node": ">=8.10" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/prettier-eslint/node_modules/typescript": { - "version": "3.9.9", + "node_modules/eslint-plugin-vue/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, "engines": { - "node": ">=4.2.0" + "node": ">=4" } }, - "node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "node_modules/eslint-plugin-vue/node_modules/espree": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "dev": true, "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=6.0.0" } }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/eslint-plugin-vue/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-vue/node_modules/vue-eslint-parser": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.11.0.tgz", + "integrity": "sha512-qh3VhDLeh773wjgNTl7ss0VejY9bMMa0GoDG2fQVyDzRFdiU3L7fw74tWZDHNQXdZqxO3EveQroa9ct39D2nqg==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "eslint-scope": "^5.1.1", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.2.1", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^6.3.0" + }, "engines": { - "node": ">=10" + "node": ">=8.10" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5.0.0" } }, - "node_modules/printj": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/printj/-/printj-1.2.3.tgz", - "integrity": "sha512-sanczS6xOJOg7IKDvi4sGOUOe7c1tsEzjwlLFH/zgwx/uyImVM9/rgBkc8AfiQa/Vg54nRd8mkm9yI7WV/O+WA==", - "bin": { - "printj": "bin/printj.njs" + "node_modules/eslint-scope": { + "version": "5.1.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" }, "engines": { - "node": ">=0.8" + "node": ">=8.0.0" } }, - "node_modules/proc-log": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.0.tgz", - "integrity": "sha512-I/35MfCX2H8jBUhKN8JB8nmqvQo/nKdrBodBY7L3RhDSPPyvOHwLYNmPuhwuJq7a7C3vgFKWGQM+ecPStcvOHA==", + "node_modules/eslint-utils": { + "version": "2.1.0", "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" } }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "license": "MIT" - }, - "node_modules/progress": { - "version": "2.0.3", + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "1.3.0", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "engines": { - "node": ">=0.4.0" + "node": ">=4" } }, - "node_modules/proj4": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/proj4/-/proj4-2.8.0.tgz", - "integrity": "sha512-baC+YcD4xsSqJ+CpCZljj2gcQDhlKb+J+Zjv/2KSBwWNjk4M0pafgQsE+mWurd84tflMIsP+7j7mtIpFDHzQfQ==", - "dependencies": { - "mgrs": "1.0.0", - "wkt-parser": "^1.3.1" + "node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10" } }, - "node_modules/promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "node_modules/eslint/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, - "node_modules/promise-retry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", - "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", "dev": true, "dependencies": { - "err-code": "^2.0.2", - "retry": "^0.12.0" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": ">=10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "node_modules/eslint/node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" + "eslint-visitor-keys": "^2.0.0" }, "engines": { - "node": ">= 6" + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" } }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, + "node_modules/eslint/node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, "engines": { - "node": ">= 0.10" + "node": ">=10" } }, - "node_modules/proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-5.0.0.tgz", - "integrity": "sha512-gkH7BkvLVkSfX9Dk27W6TyNOWWZWRilRfk1XxGNWOYJ2TuedAv1yFpCaU9QSBmBe716XOTNpYNOzhysyw8xn7g==", - "dependencies": { - "agent-base": "^6.0.0", - "debug": "4", - "http-proxy-agent": "^4.0.0", - "https-proxy-agent": "^5.0.0", - "lru-cache": "^5.1.1", - "pac-proxy-agent": "^5.0.0", - "proxy-from-env": "^1.0.0", - "socks-proxy-agent": "^5.0.0" - }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, "engines": { - "node": ">= 8" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/proxy-agent/node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dependencies": { - "yallist": "^3.0.2" + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" } }, - "node_modules/proxy-agent/node_modules/socks-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz", - "integrity": "sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ==", + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, "dependencies": { - "agent-base": "^6.0.2", - "debug": "4", - "socks": "^2.3.3" + "is-glob": "^4.0.3" }, "engines": { - "node": ">= 6" + "node": ">=10.13.0" } }, - "node_modules/proxy-agent/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, - "node_modules/psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true - }, - "node_modules/pstree.remy": { - "version": "1.1.8", + "node_modules/eslint/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, - "license": "MIT" - }, - "node_modules/pump": { - "version": "3.0.0", - "license": "MIT", "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/pumpify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-2.0.1.tgz", - "integrity": "sha512-m7KOje7jZxrmutanlkS1daj1dS6z6BgslzOXmcSEpIlCxM3VJH7lG5QLeck/6hgF6F4crFf01UtQmNsJfweTAw==", - "dependencies": { - "duplexify": "^4.1.1", - "inherits": "^2.0.3", - "pump": "^3.0.0" + "node_modules/eslint/node_modules/strip-json-comments": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/punycode": { - "version": "2.1.1", + "node_modules/esm": { + "version": "3.2.25", "license": "MIT", "engines": { "node": ">=6" } }, - "node_modules/pupa": { - "version": "2.1.1", + "node_modules/espree": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", + "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", "dev": true, - "license": "MIT", "dependencies": { - "escape-goat": "^2.0.0" + "acorn": "^8.7.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^3.3.0" }, "engines": { - "node": ">=8" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/q": { - "version": "1.5.1", + "node_modules/espree/node_modules/acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", "dev": true, - "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" + "node": ">=0.4.0" } }, - "node_modules/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "node_modules/esprima": { + "version": "4.0.1", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, "engines": { - "node": ">=0.4.x" + "node": ">=4" } }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/quick-lru": { - "version": "4.0.1", + "node_modules/esquery": { + "version": "1.4.0", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, "engines": { - "node": ">=8" + "node": ">=0.10" } }, - "node_modules/railroad-diagrams": { - "version": "1.0.0", - "license": "CC0-1.0" + "node_modules/esquery/node_modules/estraverse": { + "version": "5.2.0", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } }, - "node_modules/randexp": { - "version": "0.4.6", - "license": "MIT", + "node_modules/esrecurse": { + "version": "4.3.0", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "discontinuous-range": "1.0.0", - "ret": "~0.1.10" + "estraverse": "^5.2.0" }, "engines": { - "node": ">=0.12" + "node": ">=4.0" } }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.2.0", + "dev": true, + "license": "BSD-2-Clause", "engines": { - "node": ">= 0.6" + "node": ">=4.0" } }, - "node_modules/raw-body": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz", - "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "1.8.1", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, + "node_modules/estraverse": { + "version": "4.3.0", + "license": "BSD-2-Clause", "engines": { - "node": ">= 0.8" + "node": ">=4.0" } }, - "node_modules/raw-body/node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "node_modules/esutils": { + "version": "2.0.3", + "license": "BSD-2-Clause", "engines": { - "node": ">= 0.8" + "node": ">=0.10.0" } }, - "node_modules/rc": { - "version": "1.2.8", - "dev": true, - "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "engines": { + "node": ">= 0.6" } }, - "node_modules/rc-config-loader": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.1.1", - "js-yaml": "^4.0.0", - "json5": "^2.1.2", - "require-from-string": "^2.0.2" + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "engines": { + "node": ">=6" } }, - "node_modules/rc-config-loader/node_modules/argparse": { - "version": "2.0.1", - "dev": true, - "license": "Python-2.0" + "node_modules/eventemitter3": { + "version": "4.0.7", + "license": "MIT" }, - "node_modules/rc-config-loader/node_modules/js-yaml": { - "version": "4.1.0", + "node_modules/events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", "dev": true, - "license": "MIT", "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" } }, - "node_modules/rc/node_modules/strip-json-comments": { - "version": "2.0.1", + "node_modules/exec-sh": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz", + "integrity": "sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==", + "dev": true + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, - "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" - }, - "node_modules/read-package-json": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.0.tgz", - "integrity": "sha512-1cjk2MV5ONDMn34uxSID3X8NY7VKsXfJnjbcVdFMvHEnJOBzU6MJ7/3yg6QFVZDq5/1yFNrKBUK9kGnonyGP2Q==", + "node_modules/execall": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execall/-/execall-1.0.0.tgz", + "integrity": "sha1-c9CQTjlbPKsGWLCNCewlMH8pu3M=", "dev": true, "dependencies": { - "glob": "^7.2.0", - "json-parse-even-better-errors": "^2.3.1", - "normalize-package-data": "^4.0.0", - "npm-normalize-package-bin": "^1.0.1" + "clone-regexp": "^1.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": ">=0.10.0" } }, - "node_modules/read-package-json-fast": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", - "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", "dev": true, - "dependencies": { - "json-parse-even-better-errors": "^2.3.0", - "npm-normalize-package-bin": "^1.0.1" - }, "engines": { - "node": ">=10" + "node": ">= 0.8.0" } }, - "node_modules/read-package-json/node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "node_modules/exit-on-epipe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz", + "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=0.10.0" } }, - "node_modules/read-package-json/node_modules/hosted-git-info": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.0.0.tgz", - "integrity": "sha512-rRnjWu0Bxj+nIfUOkz0695C0H6tRrN5iYIzYejb0tDEefe2AekHu/U5Kn9pEie5vsJqpNQU02az7TGSH3qpz4Q==", + "node_modules/expand-brackets/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "dependencies": { - "lru-cache": "^7.5.1" + "ms": "2.0.0" + } + }, + "node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": ">=0.10.0" } }, - "node_modules/read-package-json/node_modules/lru-cache": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.6.0.tgz", - "integrity": "sha512-zjOf6cyMI7rcN+5MtLsT4GnDjc6D9XHi8kYcsfXTqWC+yLdSiU3/jtEPX9wZE77+XLtnmdIWu3+291hkizfH+Q==", + "node_modules/expand-brackets/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, "engines": { - "node": ">=12" + "node": ">=0.10.0" } }, - "node_modules/read-package-json/node_modules/normalize-package-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.0.tgz", - "integrity": "sha512-m+GL22VXJKkKbw62ZaBBjv8u6IE3UI4Mh5QakIqs3fWiKe0Xyi6L97hakwZK41/LD4R/2ly71Bayx0NLMwLA/g==", + "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "dependencies": { - "hosted-git-info": "^5.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" + "is-buffer": "^1.1.5" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": ">=0.10.0" } }, - "node_modules/read-pkg": { - "version": "3.0.0", + "node_modules/expand-brackets/node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/expand-brackets/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, - "license": "MIT", "dependencies": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" + "kind-of": "^3.0.2" }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/read-pkg-up": { - "version": "3.0.0", + "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, - "license": "MIT", "dependencies": { - "find-up": "^2.0.0", - "read-pkg": "^3.0.0" + "is-buffer": "^1.1.5" }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/read-pkg/node_modules/path-type": { - "version": "3.0.0", + "node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, - "license": "MIT", "dependencies": { - "pify": "^3.0.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/read-pkg/node_modules/pify": { - "version": "3.0.0", + "node_modules/expand-brackets/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", "dev": true, - "license": "MIT", "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/readable-stream": { - "version": "2.3.7", + "node_modules/expand-brackets/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/expand-tilde": { + "version": "2.0.2", + "dev": true, "license": "MIT", "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "node_modules/expect": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", "dev": true, "dependencies": { - "picomatch": "^2.2.1" + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" }, "engines": { - "node": ">=8.10.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/rechoir": { - "version": "0.6.2", - "dev": true, + "node_modules/express": { + "version": "4.17.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz", + "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==", "dependencies": { - "resolve": "^1.1.6" + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.19.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.4.2", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.9.7", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.17.2", + "serve-static": "1.14.2", + "setprototypeof": "1.2.0", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" }, "engines": { - "node": ">= 0.10" + "node": ">= 0.10.0" } }, - "node_modules/redent": { - "version": "3.0.0", - "dev": true, + "node_modules/express-graphql": { + "version": "0.12.0", "license": "MIT", "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" + "accepts": "^1.3.7", + "content-type": "^1.0.4", + "http-errors": "1.8.0", + "raw-body": "^2.4.1" }, "engines": { - "node": ">=8" + "node": ">= 10.x" + }, + "peerDependencies": { + "graphql": "^14.7.0 || ^15.3.0" } }, - "node_modules/redeyed": { - "version": "0.4.4", + "node_modules/express-graphql/node_modules/http-errors": { + "version": "1.8.0", "license": "MIT", "dependencies": { - "esprima": "~1.0.4" + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "engines": { + "node": ">= 0.6" } }, - "node_modules/redeyed/node_modules/esprima": { - "version": "1.0.4", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" + "node_modules/express-jwt": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/express-jwt/-/express-jwt-6.1.1.tgz", + "integrity": "sha512-m8gkY04v5jtiFZn6bYQINYX/DVXq1DVb5nIW7H8l87qJ4BBvtQKFRpxyRE31odct7OPfHdT+B8678zJHhlMrpw==", + "dependencies": { + "async": "^1.5.0", + "express-unless": "^1.0.0", + "jsonwebtoken": "^8.1.0", + "lodash": "^4.17.21" }, "engines": { - "node": ">=0.4.0" + "node": ">= 8.0.0" } }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, + "node_modules/express-unless": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/express-unless/-/express-unless-1.0.0.tgz", + "integrity": "sha512-zXSSClWBPfcSYjg0hcQNompkFN/MxQQ53eyrzm9BYgik2ut2I7PxAf2foVqBRMYCwWaZx/aWodi+uk76npdSAw==" + }, + "node_modules/express/node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" + "node": ">= 0.6" } }, - "node_modules/registry-auth-token": { - "version": "4.2.1", - "dev": true, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", "license": "MIT", "dependencies": { - "rc": "^1.2.8" - }, - "engines": { - "node": ">=6.0.0" + "ms": "2.0.0" } }, - "node_modules/registry-url": { - "version": "5.1.0", + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/express/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, - "license": "MIT", "dependencies": { - "rc": "^1.2.8" + "is-extendable": "^0.1.0" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/remote-git-tags": { - "version": "3.0.0", + "node_modules/external-editor": { + "version": "3.1.0", "dev": true, "license": "MIT", + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/remove-trailing-separator": { - "version": "1.1.0", - "license": "ISC" - }, - "node_modules/repeating": { - "version": "2.0.1", + "node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, - "license": "MIT", "dependencies": { - "is-finite": "^1.0.0" + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/require-directory": { - "version": "2.1.1", + "node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, - "license": "MIT", + "dependencies": { + "is-descriptor": "^1.0.0" + }, "engines": { "node": ">=0.10.0" } }, - "node_modules/require-from-string": { - "version": "2.0.2", - "license": "MIT", + "node_modules/extract-files": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/extract-files/-/extract-files-11.0.0.tgz", + "integrity": "sha512-FuoE1qtbJ4bBVvv94CC7s0oTnKUGvQs+Rjf1L2SJFfS+HTVVjhPFtehPdQ0JiGPqVNfSSZvL5yzHHQq2Z4WNhQ==", + "dev": true, "engines": { - "node": ">=0.10.0" + "node": "^12.20 || >= 14.13" + }, + "funding": { + "url": "https://github.com/sponsors/jaydenseric" } }, - "node_modules/require-relative": { - "version": "0.8.7", + "node_modules/extract-from-css": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/extract-from-css/-/extract-from-css-0.4.4.tgz", + "integrity": "sha1-HqffLnx8brmSL6COitrqSG9vj5I=", "dev": true, - "license": "MIT" - }, - "node_modules/resolve": { - "version": "1.20.0", - "license": "MIT", "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "css": "^2.1.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=0.10.0", + "npm": ">=2.0.0" } }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "license": "MIT" + }, + "node_modules/fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", "dependencies": { - "resolve-from": "^5.0.0" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" }, "engines": { - "node": ">=8" + "node": ">=8.6.0" } }, - "node_modules/resolve-dir": { - "version": "1.0.1", + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "license": "MIT" + }, + "node_modules/fast-memoize": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.5.2.tgz", + "integrity": "sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw==", + "dev": true + }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" + }, + "node_modules/fast-text-encoding": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.3.tgz", + "integrity": "sha512-dtm4QZH9nZtcDt8qJiOH9fcQd1NAgi+K1O2DbE6GG1PPCK/BWfOH3idCTRQ4ImXRUOyopDEgDEnVEE7Y/2Wrig==" + }, + "node_modules/fast-url-parser": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", + "integrity": "sha1-9K8+qfNNiicc9YrSs3WfQx8LMY0=", "dev": true, - "license": "MIT", "dependencies": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "punycode": "^1.3.2" } }, - "node_modules/resolve-from": { - "version": "5.0.0", + "node_modules/fast-url-parser/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "node_modules/fast-xml-parser": { + "version": "3.19.0", "license": "MIT", - "engines": { - "node": ">=8" + "bin": { + "xml2js": "cli.js" + }, + "funding": { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" } }, - "node_modules/resolve-global": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "optional": true, + "node_modules/fastest-levenshtein": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.11.0", + "license": "ISC", "dependencies": { - "global-dirs": "^0.1.1" - }, - "engines": { - "node": ">=8" + "reusify": "^1.0.4" } }, - "node_modules/resolve.exports": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", - "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", + "node_modules/fault": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz", + "integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==", "dev": true, - "engines": { - "node": ">=10" + "dependencies": { + "format": "^0.2.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/responselike": { - "version": "1.0.2", + "node_modules/fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", "dev": true, - "license": "MIT", "dependencies": { - "lowercase-keys": "^1.0.0" + "bser": "2.1.1" } }, - "node_modules/restore-cursor": { + "node_modules/fecha": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.1.tgz", + "integrity": "sha512-MMMQ0ludy/nBs1/o0zVOiKTpG7qMbonKUzjJgQFEuvq6INZ1OraKPRAWkBq5vlKLOUMpmNYG1JoN3oDPUQ9m3Q==" + }, + "node_modules/figgy-pudding": { + "version": "3.5.2", + "dev": true, + "license": "ISC" + }, + "node_modules/figures": { "version": "2.0.0", "dev": true, "license": "MIT", "dependencies": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" + "escape-string-regexp": "^1.0.5" }, "engines": { "node": ">=4" } }, - "node_modules/restore-cursor/node_modules/mimic-fn": { - "version": "1.2.0", + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">=0.8.0" } }, - "node_modules/restore-cursor/node_modules/onetime": { - "version": "2.0.1", - "dev": true, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "dev": true, "license": "MIT", "dependencies": { - "mimic-fn": "^1.0.0" + "flat-cache": "^3.0.4" }, "engines": { - "node": ">=4" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/ret": { - "version": "0.1.15", - "license": "MIT", + "node_modules/file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, "engines": { - "node": ">=0.12" + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "node_modules/file-loader/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, "engines": { - "node": ">= 4" + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/retry-request": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-4.2.2.tgz", - "integrity": "sha512-xA93uxUD/rogV7BV59agW/JHPGXeREMWiZc9jhcwY4YdZ7QOtC7qbomYg0n4wyk2lJhggjvKvhNX8wln/Aldhg==", + "node_modules/file-saver": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz", + "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==", + "dev": true + }, + "node_modules/file-system-cache": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/file-system-cache/-/file-system-cache-1.0.5.tgz", + "integrity": "sha1-hCWbNqK7uNPW6xAh0xMv/mTP/08=", + "dev": true, "dependencies": { - "debug": "^4.1.1", - "extend": "^3.0.2" - }, - "engines": { - "node": ">=8.10.0" + "bluebird": "^3.3.5", + "fs-extra": "^0.30.0", + "ramda": "^0.21.0" } }, - "node_modules/reusify": { - "version": "1.0.4", - "license": "MIT", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" + "node_modules/file-system-cache/node_modules/fs-extra": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0", + "path-is-absolute": "^1.0.0", + "rimraf": "^2.2.8" } }, - "node_modules/rfdc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", - "dev": true + "node_modules/file-system-cache/node_modules/jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } }, - "node_modules/rimraf": { - "version": "3.0.2", + "node_modules/file-system-cache/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, - "license": "ISC", "dependencies": { "glob": "^7.1.3" }, "bin": { "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/run-async": { - "version": "2.4.1", - "dev": true, - "license": "MIT", + "node_modules/file-uri-to-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-2.0.0.tgz", + "integrity": "sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg==", "engines": { - "node": ">=0.12.0" + "node": ">= 6" } }, - "node_modules/run-parallel": { - "version": "1.2.0", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], + "node_modules/fill-range": { + "version": "7.0.1", "license": "MIT", "dependencies": { - "queue-microtask": "^1.2.2" + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/rxjs": { - "version": "6.6.7", - "dev": true, - "license": "Apache-2.0", + "node_modules/finalhandler": { + "version": "1.1.2", + "license": "MIT", "dependencies": { - "tslib": "^1.9.0" + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" }, "engines": { - "npm": ">=2.0.0" + "node": ">= 0.8" } }, - "node_modules/rxjs/node_modules/tslib": { - "version": "1.14.1", - "dev": true, - "license": "0BSD" - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "license": "MIT" - }, - "node_modules/safe-stable-stringify": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.3.1.tgz", - "integrity": "sha512-kYBSfT+troD9cDA85VDnHZ1rpHC50O0g1e6WlGHVCz/g+JS+9WKLj+XwFYyR8UbrZN8ll9HUpDAAddY58MGisg==", - "engines": { - "node": ">=10" + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" } }, - "node_modules/safer-buffer": { - "version": "2.1.2", + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", "license": "MIT" }, - "node_modules/sax": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", - "integrity": "sha1-e45lYZCyKOgaZq6nSEgNgozS03o=" - }, - "node_modules/saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "node_modules/find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", "dev": true, "dependencies": { - "xmlchars": "^2.2.0" + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" }, "engines": { - "node": ">=10" + "node": ">=6" } }, - "node_modules/selderee": { - "version": "0.6.0", - "license": "MIT", + "node_modules/find-cache-dir/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, "dependencies": { - "parseley": "^0.7.0" + "locate-path": "^3.0.0" }, - "funding": { - "url": "https://ko-fi.com/killymxi" + "engines": { + "node": ">=6" } }, - "node_modules/semantic-release": { - "version": "19.0.2", - "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-19.0.2.tgz", - "integrity": "sha512-7tPonjZxukKECmClhsfyMKDt0GR38feIC2HxgyYaBi+9tDySBLjK/zYDLhh+m6yjnHIJa9eBTKYE7k63ZQcYbw==", + "node_modules/find-cache-dir/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, "dependencies": { - "@semantic-release/commit-analyzer": "^9.0.2", - "@semantic-release/error": "^3.0.0", - "@semantic-release/github": "^8.0.0", - "@semantic-release/npm": "^9.0.0", - "@semantic-release/release-notes-generator": "^10.0.0", - "aggregate-error": "^3.0.0", - "cosmiconfig": "^7.0.0", - "debug": "^4.0.0", - "env-ci": "^5.0.0", - "execa": "^5.0.0", - "figures": "^3.0.0", - "find-versions": "^4.0.0", - "get-stream": "^6.0.0", - "git-log-parser": "^1.2.0", - "hook-std": "^2.0.0", - "hosted-git-info": "^4.0.0", - "lodash": "^4.17.21", - "marked": "^4.0.10", - "marked-terminal": "^5.0.0", - "micromatch": "^4.0.2", - "p-each-series": "^2.1.0", - "p-reduce": "^2.0.0", - "read-pkg-up": "^7.0.0", - "resolve-from": "^5.0.0", - "semver": "^7.3.2", - "semver-diff": "^3.1.1", - "signale": "^1.2.1", - "yargs": "^16.2.0" - }, - "bin": { - "semantic-release": "bin/semantic-release.js" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" }, "engines": { - "node": ">=16 || ^14.17" + "node": ">=6" } }, - "node_modules/semantic-release/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "node_modules/find-cache-dir/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, "engines": { - "node": ">=0.8.0" + "node": ">=6" } }, - "node_modules/semantic-release/node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "node_modules/find-cache-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "dependencies": { - "escape-string-regexp": "^1.0.5" + "p-try": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semantic-release/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/find-cache-dir/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "p-limit": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/semantic-release/node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "node_modules/find-cache-dir/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "engines": { - "node": ">=10" + "node": ">=6" } }, - "node_modules/semantic-release/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "node_modules/find-cache-dir/node_modules/pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", "dev": true, "dependencies": { - "p-locate": "^4.1.0" + "find-up": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/semantic-release/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/find-cache-dir/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "bin": { + "semver": "bin/semver" } }, - "node_modules/semantic-release/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/find-node-modules": { + "version": "2.1.2", "dev": true, + "license": "MIT", "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" + "findup-sync": "^4.0.0", + "merge": "^2.1.0" } }, - "node_modules/semantic-release/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "node_modules/find-root": { + "version": "1.1.0", "dev": true, - "engines": { - "node": ">=8" - } + "license": "MIT" }, - "node_modules/semantic-release/node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "node_modules/find-up": { + "version": "2.1.0", "dev": true, + "license": "MIT", "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" + "locate-path": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/semantic-release/node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "node_modules/find-versions": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-4.0.0.tgz", + "integrity": "sha512-wgpWy002tA+wgmO27buH/9KzyEOQnKsG/R0yrcjPT9BOFm0zRBVQbZ95nRGXWMywS8YR5knRbpohio0bcJABxQ==", "dev": true, "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" + "semver-regex": "^3.1.2" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semantic-release/node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "node_modules/find-versions/node_modules/semver-regex": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-3.1.3.tgz", + "integrity": "sha512-Aqi54Mk9uYTjVexLnR67rTyBusmwd04cLkHy9hNvk3+G3nT2Oyg7E0l4XVbOaNwIvQ3hHeYxGcyEy+mKreyBFQ==", "dev": true, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semver": { - "version": "7.3.5", - "license": "ISC", + "node_modules/findup-sync": { + "version": "4.0.0", + "dev": true, + "license": "MIT", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^4.0.2", + "resolve-dir": "^1.0.1" }, "engines": { - "node": ">=10" + "node": ">= 8" } }, - "node_modules/semver-diff": { - "version": "3.1.1", + "node_modules/flat-cache": { + "version": "3.0.4", "dev": true, "license": "MIT", "dependencies": { - "semver": "^6.3.0" + "flatted": "^3.1.0", + "rimraf": "^3.0.2" }, "engines": { - "node": ">=8" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/semver-diff/node_modules/semver": { - "version": "6.3.0", + "node_modules/flatted": { + "version": "3.1.1", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } + "license": "ISC" }, - "node_modules/semver-utils": { - "version": "1.1.4", - "dev": true, - "license": "APACHEv2" + "node_modules/flatten": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", + "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==", + "deprecated": "flatten is deprecated in favor of utility frameworks such as lodash.", + "dev": true }, - "node_modules/send": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", - "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", - "dependencies": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "1.8.1", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, + "node_modules/flow-parser": { + "version": "0.174.1", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.174.1.tgz", + "integrity": "sha512-nDMOvlFR+4doLpB3OJpseHZ7uEr3ENptlF6qMas/kzQmNcLzMwfQeFX0gGJ/+em7UdldB/nGsk55tDTOvjbCuw==", + "dev": true, "engines": { - "node": ">= 0.8.0" + "node": ">=0.4.0" } }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, "dependencies": { - "ms": "2.0.0" + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" } }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + "node_modules/fn.name": { + "version": "1.1.0", + "license": "MIT" }, - "node_modules/serve-static": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", - "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.2" - }, + "node_modules/follow-redirects": { + "version": "1.14.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", + "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], "engines": { - "node": ">= 0.8.0" + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } } }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "node_modules/set-immediate-shim": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", - "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "node_modules/sharkdown": { - "version": "0.1.1", - "license": "BSD-2-Clause", + "node_modules/fork-ts-checker-webpack-plugin": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.0.tgz", + "integrity": "sha512-cS178Y+xxtIjEUorcHddKS7yCMlrDPV31mt47blKKRfMd70Kxu5xruAFE2o9sDY6wVC5deuob/u/alD04YYHnw==", + "dev": true, "dependencies": { - "cardinal": "~0.4.2", - "minimist": "0.0.5", - "split": "~0.2.10" + "@babel/code-frame": "^7.8.3", + "@types/json-schema": "^7.0.5", + "chalk": "^4.1.0", + "chokidar": "^3.4.2", + "cosmiconfig": "^6.0.0", + "deepmerge": "^4.2.2", + "fs-extra": "^9.0.0", + "glob": "^7.1.6", + "memfs": "^3.1.2", + "minimatch": "^3.0.4", + "schema-utils": "2.7.0", + "semver": "^7.3.2", + "tapable": "^1.0.0" }, - "bin": { - "sharkdown": "sharkdown" + "engines": { + "node": ">=10", + "yarn": ">=1.0.0" + }, + "peerDependencies": { + "eslint": ">= 6", + "typescript": ">= 2.7", + "vue-template-compiler": "*", + "webpack": ">= 4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + } } }, - "node_modules/sharkdown/node_modules/minimist": { - "version": "0.0.5", - "license": "MIT" - }, - "node_modules/sharkdown/node_modules/split": { - "version": "0.2.10", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dev": true, "dependencies": { - "through": "2" + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" }, "engines": { - "node": "*" + "node": ">=8" } }, - "node_modules/shebang-command": { - "version": "2.0.0", - "license": "MIT", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, "dependencies": { - "shebang-regex": "^3.0.0" + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "license": "MIT", - "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/shelljs": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", - "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "dependencies": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - }, - "bin": { - "shjs": "bin/shjs" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=4" - } - }, - "node_modules/shelljs/node_modules/interpret": { - "version": "1.4.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/shiki": { - "version": "0.9.12", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.9.12.tgz", - "integrity": "sha512-VXcROdldv0/Qu0w2XvzU4IrvTeBNs/Kj/FCmtcEXGz7Tic/veQzliJj6tEiAgoKianhQstpYmbPDStHU5Opqcw==", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, "dependencies": { - "jsonc-parser": "^3.0.0", - "onigasm": "^2.2.5", - "vscode-textmate": "5.2.0" - } - }, - "node_modules/shpjs": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/shpjs/-/shpjs-4.0.2.tgz", - "integrity": "sha512-yiyc7FyOCnVeF6UiJmKMxg5P/x0MQIUnH3m+OhFb2eic39WZo40b7jxh+zkhj309kA2Hh2t5La+kFv8Im94C3g==", - "dependencies": { - "jszip": "^3.5.0", - "lie": "^3.0.1", - "lru-cache": "^2.7.0", - "parsedbf": "^1.1.0", - "proj4": "^2.1.4" + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/shpjs/node_modules/lru-cache": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", - "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=" - }, - "node_modules/side-channel": { - "version": "1.0.4", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", "dev": true, - "license": "MIT", "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" + }, + "engines": { + "node": ">= 8.9.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - }, - "node_modules/signale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/signale/-/signale-1.4.0.tgz", - "integrity": "sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w==", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true, - "dependencies": { - "chalk": "^2.3.2", - "figures": "^2.0.0", - "pkg-conf": "^2.1.0" - }, "engines": { - "node": ">=6" + "node": ">= 10.0.0" } }, - "node_modules/signale/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, + "node_modules/form-data": { + "version": "3.0.1", + "license": "MIT", "dependencies": { - "color-convert": "^1.9.0" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" }, "engines": { - "node": ">=4" + "node": ">= 6" } }, - "node_modules/signale/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/format": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", + "integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=", "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, "engines": { - "node": ">=4" + "node": ">=0.4.x" } }, - "node_modules/signale/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" + "node_modules/formidable": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz", + "integrity": "sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ==", + "deprecated": "Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau", + "funding": { + "url": "https://ko-fi.com/tunnckoCore/commissions" } }, - "node_modules/signale/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } }, - "node_modules/signale/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "node_modules/fp-and-or": { + "version": "0.1.3", "dev": true, + "license": "ISC", "engines": { - "node": ">=0.8.0" + "node": ">=10" } }, - "node_modules/signale/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "node_modules/frac": { + "version": "1.1.2", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/fraction.js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", "dev": true, "engines": { - "node": ">=4" + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://www.patreon.com/infusion" } }, - "node_modules/signale/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", "dev": true, "dependencies": { - "has-flag": "^3.0.0" + "map-cache": "^0.2.2" }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/simple-swizzle": { - "version": "0.2.2", - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.3.1" + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "engines": { + "node": ">= 0.6" } }, - "node_modules/simple-swizzle/node_modules/is-arrayish": { - "version": "0.3.2", - "license": "MIT" - }, - "node_modules/sisteransi": { - "version": "1.0.5", + "node_modules/from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", "dev": true, - "license": "MIT" - }, - "node_modules/slash": { - "version": "3.0.0", - "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" } }, - "node_modules/slice-ansi": { - "version": "4.0.0", + "node_modules/fromentries": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", + "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/fs-access": { + "version": "1.0.1", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" + "null-check": "^1.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" + "node": ">=0.10.0" } }, - "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "dev": true, + "node_modules/fs-capacitor": { + "version": "6.2.0", "license": "MIT", "engines": { - "node": ">=8" - } - }, - "node_modules/smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" + "node": ">=10" } }, - "node_modules/snakeize": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/snakeize/-/snakeize-0.1.0.tgz", - "integrity": "sha1-EMCI2LWOsHazIpu1oE4jLOEmQi0=" - }, - "node_modules/socks": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", - "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", + "node_modules/fs-extra": { + "version": "8.1.0", + "license": "MIT", "dependencies": { - "ip": "^1.1.5", - "smart-buffer": "^4.2.0" + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" }, "engines": { - "node": ">= 10.13.0", - "npm": ">= 3.0.0" + "node": ">=6 <7 || >=8" } }, - "node_modules/socks-proxy-agent": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz", - "integrity": "sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==", + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dev": true, "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.1", - "socks": "^2.6.1" + "minipass": "^3.0.0" }, "engines": { - "node": ">= 10" + "node": ">= 8" } }, - "node_modules/source-map": { - "version": "0.6.1", - "devOptional": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } + "node_modules/fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", + "dev": true }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "node_modules/fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", "dev": true, "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" } }, - "node_modules/spawn-error-forwarder": { + "node_modules/fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/spawn-error-forwarder/-/spawn-error-forwarder-1.0.0.tgz", - "integrity": "sha1-Gv2Uc46ZmwNG17n8NzvlXgdXcCk=", - "dev": true + "dev": true, + "license": "ISC" }, - "node_modules/spawn-please": { - "version": "1.0.0", + "node_modules/fsevents": { + "version": "2.3.2", "dev": true, - "license": "ISC", + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=10" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/spdx-correct": { - "version": "3.1.1", - "dev": true, - "license": "Apache-2.0", + "node_modules/ftp": { + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", + "integrity": "sha1-kZfYYa2BQvPmPVqDv+TFn3MwiF0=", "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" + "readable-stream": "1.1.x", + "xregexp": "2.0.0" + }, + "engines": { + "node": ">=0.8.0" } }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "dev": true, - "license": "CC-BY-3.0" + "node_modules/ftp/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "dev": true, - "license": "MIT", + "node_modules/ftp/node_modules/readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" } }, - "node_modules/spdx-license-ids": { - "version": "3.0.8", - "dev": true, - "license": "CC0-1.0" + "node_modules/ftp/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" }, - "node_modules/splaytree": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.0.tgz", - "integrity": "sha512-gvUGR7xnOy0fLKTCxDeUZYgU/I1Tdf8M/lM1Qrf8L2TIOR5ipZjGk02uYcdv0o2x7WjVRgpm3iS2clLyuVAt0Q==" + "node_modules/function-bind": { + "version": "1.1.1", + "license": "MIT" }, - "node_modules/split": { - "version": "1.0.1", + "node_modules/function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", "dev": true, - "license": "MIT", "dependencies": { - "through": "2" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" }, "engines": { - "node": "*" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/split2": { - "version": "3.2.2", - "license": "ISC", - "dependencies": { - "readable-stream": "^3.0.0" - } + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "dev": true, + "license": "MIT" }, - "node_modules/split2/node_modules/readable-stream": { - "version": "3.6.0", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" + "node_modules/functions-have-names": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.2.tgz", + "integrity": "sha512-bLgc3asbWdwPbx2mNk2S49kmJCuQeu0nfmaOgbs8WIyzzkw3r4htszdIi9Q9EMezDPTYuJx2wvjZ/EwgAthpnA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/sprintf-js": { - "version": "1.0.3", + "node_modules/fuse.js": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-3.6.1.tgz", + "integrity": "sha512-hT9yh/tiinkmirKrlv4KWOjztdoZo1mx9Qh4KvWqC7isoXwdUY3PNWUxceF4/qO9R6riA2C29jdTOeQOIROjgw==", "dev": true, - "license": "BSD-3-Clause" + "engines": { + "node": ">=6" + } }, - "node_modules/sql-formatter": { - "version": "4.0.2", + "node_modules/gauge": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.3.tgz", + "integrity": "sha512-ICw1DhAwMtb22rYFwEHgJcx1JCwJGv3x6G0OQUq56Nge+H4Q8JEwr8iveS0XFlsUNSI67F5ffMGK25bK4Pmskw==", "dev": true, - "license": "MIT", "dependencies": { - "argparse": "^2.0.1" + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" }, - "bin": { - "sql-formatter": "bin/sqlfmt.js" + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" } }, - "node_modules/sql-formatter/node_modules/argparse": { - "version": "2.0.1", + "node_modules/gauge/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, - "license": "Python-2.0" - }, - "node_modules/ssf": { - "version": "0.11.2", - "license": "Apache-2.0", - "dependencies": { - "frac": "~1.1.2" - }, "engines": { - "node": ">=0.8" + "node": ">=8" } }, - "node_modules/ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "node_modules/gauge/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "dependencies": { - "minipass": "^3.1.1" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">= 8" + "node": ">=8" } }, - "node_modules/stack-trace": { - "version": "0.0.10", - "license": "MIT", + "node_modules/gaxios": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-4.3.2.tgz", + "integrity": "sha512-T+ap6GM6UZ0c4E6yb1y/hy2UB6hTrqhglp3XfmU9qbLCGRYhLVV5aRPpC4EmoG8N8zOnkYCgoBz+ScvGAARY6Q==", + "dependencies": { + "abort-controller": "^3.0.0", + "extend": "^3.0.2", + "https-proxy-agent": "^5.0.0", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.1" + }, "engines": { - "node": "*" + "node": ">=10" } }, - "node_modules/stack-utils": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", - "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", - "dev": true, + "node_modules/gcp-metadata": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.3.1.tgz", + "integrity": "sha512-x850LS5N7V1F3UcV7PoupzGsyD6iVwTVvsh3tbXfkctZnBnjW5yu5z1/3k3SehF7TyoTIe78rJs02GMMy+LF+A==", "dependencies": { - "escape-string-regexp": "^2.0.0" + "gaxios": "^4.0.0", + "json-bigint": "^1.0.0" }, "engines": { "node": ">=10" } }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, "engines": { - "node": ">=8" + "node": ">=6.9.0" } }, - "node_modules/standard-version": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/standard-version/-/standard-version-9.3.2.tgz", - "integrity": "sha512-u1rfKP4o4ew7Yjbfycv80aNMN2feTiqseAhUhrrx2XtdQGmu7gucpziXe68Z4YfHVqlxVEzo4aUA0Iu3VQOTgQ==", - "dev": true, + "node_modules/geojson-rewind": { + "version": "0.3.1", + "license": "ISC", "dependencies": { - "chalk": "^2.4.2", - "conventional-changelog": "3.1.24", - "conventional-changelog-config-spec": "2.1.0", - "conventional-changelog-conventionalcommits": "4.6.1", - "conventional-recommended-bump": "6.1.0", - "detect-indent": "^6.0.0", - "detect-newline": "^3.1.0", - "dotgitignore": "^2.1.0", - "figures": "^3.1.0", - "find-up": "^5.0.0", - "fs-access": "^1.0.1", - "git-semver-tags": "^4.0.0", - "semver": "^7.1.1", - "stringify-package": "^1.0.1", - "yargs": "^16.0.0" + "@mapbox/geojson-area": "0.2.2", + "concat-stream": "~1.6.0", + "minimist": "1.2.0", + "sharkdown": "^0.1.0" }, "bin": { - "standard-version": "bin/cli.js" - }, - "engines": { - "node": ">=10" + "geojson-rewind": "geojson-rewind" } }, - "node_modules/standard-version/node_modules/ansi-styles": { - "version": "3.2.1", + "node_modules/geojson-rewind/node_modules/minimist": { + "version": "1.2.0", + "license": "MIT" + }, + "node_modules/get-caller-file": { + "version": "2.0.5", "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, + "license": "ISC", "engines": { - "node": ">=4" + "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/standard-version/node_modules/chalk": { - "version": "2.4.2", + "node_modules/get-intrinsic": { + "version": "1.1.1", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" }, - "engines": { - "node": ">=4" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/standard-version/node_modules/color-convert": { - "version": "1.9.3", + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" + "engines": { + "node": ">=8.0.0" } }, - "node_modules/standard-version/node_modules/color-name": { - "version": "1.1.3", - "dev": true, - "license": "MIT" - }, - "node_modules/standard-version/node_modules/compare-func": { - "version": "2.0.0", + "node_modules/get-pkg-repo": { + "version": "1.4.0", "dev": true, "license": "MIT", "dependencies": { - "array-ify": "^1.0.0", - "dot-prop": "^5.1.0" + "hosted-git-info": "^2.1.4", + "meow": "^3.3.0", + "normalize-package-data": "^2.3.0", + "parse-github-repo-url": "^1.3.0", + "through2": "^2.0.0" + }, + "bin": { + "get-pkg-repo": "cli.js" } }, - "node_modules/standard-version/node_modules/conventional-changelog": { - "version": "3.1.24", + "node_modules/get-pkg-repo/node_modules/camelcase": { + "version": "2.1.1", "dev": true, "license": "MIT", - "dependencies": { - "conventional-changelog-angular": "^5.0.12", - "conventional-changelog-atom": "^2.0.8", - "conventional-changelog-codemirror": "^2.0.8", - "conventional-changelog-conventionalcommits": "^4.5.0", - "conventional-changelog-core": "^4.2.1", - "conventional-changelog-ember": "^2.0.9", - "conventional-changelog-eslint": "^3.0.9", - "conventional-changelog-express": "^2.0.6", - "conventional-changelog-jquery": "^3.0.11", - "conventional-changelog-jshint": "^2.0.9", - "conventional-changelog-preset-loader": "^2.3.4" - }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/standard-version/node_modules/conventional-changelog-angular": { - "version": "5.0.12", + "node_modules/get-pkg-repo/node_modules/camelcase-keys": { + "version": "2.1.0", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "compare-func": "^2.0.0", - "q": "^1.5.1" + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/standard-version/node_modules/conventional-changelog-core": { - "version": "4.2.2", + "node_modules/get-pkg-repo/node_modules/decamelize": { + "version": "1.2.0", "dev": true, "license": "MIT", - "dependencies": { - "add-stream": "^1.0.0", - "conventional-changelog-writer": "^4.0.18", - "conventional-commits-parser": "^3.2.0", - "dateformat": "^3.0.0", - "get-pkg-repo": "^1.0.0", - "git-raw-commits": "^2.0.8", - "git-remote-origin-url": "^2.0.0", - "git-semver-tags": "^4.1.1", - "lodash": "^4.17.15", - "normalize-package-data": "^3.0.0", - "q": "^1.5.1", - "read-pkg": "^3.0.0", - "read-pkg-up": "^3.0.0", - "shelljs": "^0.8.3", - "through2": "^4.0.0" - }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/standard-version/node_modules/conventional-changelog-jquery": { - "version": "3.0.11", + "node_modules/get-pkg-repo/node_modules/find-up": { + "version": "1.1.2", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "q": "^1.5.1" + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/standard-version/node_modules/dargs": { - "version": "7.0.0", + "node_modules/get-pkg-repo/node_modules/get-stdin": { + "version": "4.0.1", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/standard-version/node_modules/dateformat": { - "version": "3.0.3", + "node_modules/get-pkg-repo/node_modules/indent-string": { + "version": "2.1.0", "dev": true, "license": "MIT", + "dependencies": { + "repeating": "^2.0.0" + }, "engines": { - "node": "*" + "node": ">=0.10.0" } }, - "node_modules/standard-version/node_modules/dot-prop": { - "version": "5.3.0", + "node_modules/get-pkg-repo/node_modules/load-json-file": { + "version": "1.1.0", "dev": true, "license": "MIT", "dependencies": { - "is-obj": "^2.0.0" + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/standard-version/node_modules/escape-string-regexp": { - "version": "1.0.5", + "node_modules/get-pkg-repo/node_modules/map-obj": { + "version": "1.0.1", "dev": true, "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": ">=0.10.0" } }, - "node_modules/standard-version/node_modules/figures": { - "version": "3.2.0", + "node_modules/get-pkg-repo/node_modules/meow": { + "version": "3.7.0", "dev": true, "license": "MIT", "dependencies": { - "escape-string-regexp": "^1.0.5" + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/standard-version/node_modules/find-up": { - "version": "5.0.0", + "node_modules/get-pkg-repo/node_modules/parse-json": { + "version": "2.2.0", "dev": true, "license": "MIT", "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "error-ex": "^1.2.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/standard-version/node_modules/git-raw-commits": { - "version": "2.0.10", + "node_modules/get-pkg-repo/node_modules/path-exists": { + "version": "2.1.0", "dev": true, "license": "MIT", "dependencies": { - "dargs": "^7.0.0", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "split2": "^3.0.0", - "through2": "^4.0.0" - }, - "bin": { - "git-raw-commits": "cli.js" + "pinkie-promise": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/standard-version/node_modules/git-semver-tags": { - "version": "4.1.1", + "node_modules/get-pkg-repo/node_modules/path-type": { + "version": "1.1.0", "dev": true, "license": "MIT", "dependencies": { - "meow": "^8.0.0", - "semver": "^6.0.0" - }, - "bin": { - "git-semver-tags": "cli.js" + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" }, "engines": { - "node": ">=10" - } - }, - "node_modules/standard-version/node_modules/git-semver-tags/node_modules/semver": { - "version": "6.3.0", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "node": ">=0.10.0" } }, - "node_modules/standard-version/node_modules/has-flag": { - "version": "3.0.0", + "node_modules/get-pkg-repo/node_modules/read-pkg": { + "version": "1.1.0", "dev": true, "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/standard-version/node_modules/hosted-git-info": { - "version": "4.0.2", - "dev": true, - "license": "ISC", "dependencies": { - "lru-cache": "^6.0.0" + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/standard-version/node_modules/is-obj": { - "version": "2.0.0", + "node_modules/get-pkg-repo/node_modules/read-pkg-up": { + "version": "1.0.1", "dev": true, "license": "MIT", + "dependencies": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/standard-version/node_modules/locate-path": { - "version": "6.0.0", + "node_modules/get-pkg-repo/node_modules/redent": { + "version": "1.0.0", "dev": true, "license": "MIT", "dependencies": { - "p-locate": "^5.0.0" + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/standard-version/node_modules/meow": { - "version": "8.1.2", + "node_modules/get-pkg-repo/node_modules/strip-bom": { + "version": "2.0.0", "dev": true, "license": "MIT", "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" + "is-utf8": "^0.2.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/standard-version/node_modules/meow/node_modules/find-up": { - "version": "4.1.0", + "node_modules/get-pkg-repo/node_modules/strip-indent": { + "version": "1.0.1", "dev": true, "license": "MIT", "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "get-stdin": "^4.0.1" + }, + "bin": { + "strip-indent": "cli.js" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/standard-version/node_modules/meow/node_modules/hosted-git-info": { - "version": "2.8.9", - "dev": true, - "license": "ISC" - }, - "node_modules/standard-version/node_modules/meow/node_modules/locate-path": { - "version": "5.0.0", + "node_modules/get-pkg-repo/node_modules/trim-newlines": { + "version": "1.0.0", "dev": true, "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/standard-version/node_modules/meow/node_modules/p-limit": { - "version": "2.3.0", + "node_modules/get-stdin": { + "version": "8.0.0", "dev": true, "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" + "engines": { + "node": ">=10" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "engines": { - "node": ">=6" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/standard-version/node_modules/meow/node_modules/p-locate": { - "version": "4.1.0", + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", "dev": true, - "license": "MIT", "dependencies": { - "p-limit": "^2.2.0" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/standard-version/node_modules/meow/node_modules/read-pkg": { - "version": "5.2.0", - "dev": true, - "license": "MIT", + "node_modules/get-uri": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-3.0.2.tgz", + "integrity": "sha512-+5s0SJbGoyiJTZZ2JTpFPLMPSch72KEqGOTvQsBqg0RBWvwhWUSYZFAtz3TPW0GXJuLBJPts1E241iHg+VRfhg==", "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" + "@tootallnate/once": "1", + "data-uri-to-buffer": "3", + "debug": "4", + "file-uri-to-path": "2", + "fs-extra": "^8.1.0", + "ftp": "^0.3.10" }, "engines": { - "node": ">=8" + "node": ">= 6" } }, - "node_modules/standard-version/node_modules/meow/node_modules/read-pkg-up": { - "version": "7.0.1", + "node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/standard-version/node_modules/meow/node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", + "node_modules/getopts": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/getopts/-/getopts-2.3.0.tgz", + "integrity": "sha512-5eDf9fuSXwxBL6q5HX+dhDj+dslFGWzU5thZ9kNKUkcPtaPdatmUFKwHFrLb/uf/WpA4BHET+AX3Scl56cAjpA==" + }, + "node_modules/git-log-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/git-log-parser/-/git-log-parser-1.2.0.tgz", + "integrity": "sha1-LmpMGxP8AAKCB7p5WnrDFme5/Uo=", "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=8" + "dependencies": { + "argv-formatter": "~1.0.0", + "spawn-error-forwarder": "~1.0.0", + "split2": "~1.0.0", + "stream-combiner2": "~1.1.1", + "through2": "~2.0.0", + "traverse": "~0.6.6" } }, - "node_modules/standard-version/node_modules/meow/node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", + "node_modules/git-log-parser/node_modules/split2": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-1.0.0.tgz", + "integrity": "sha1-UuLiIdiMdfmnP5BVbiY/+WdysxQ=", "dev": true, - "license": "BSD-2-Clause", "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "through2": "~2.0.0" } }, - "node_modules/standard-version/node_modules/meow/node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", + "node_modules/git-remote-origin-url": { + "version": "2.0.0", "dev": true, - "license": "(MIT OR CC0-1.0)", + "license": "MIT", + "dependencies": { + "gitconfiglocal": "^1.0.0", + "pify": "^2.3.0" + }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/standard-version/node_modules/meow/node_modules/semver": { - "version": "5.7.1", + "node_modules/gitconfiglocal": { + "version": "1.0.0", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" + "license": "BSD", + "dependencies": { + "ini": "^1.3.2" } }, - "node_modules/standard-version/node_modules/meow/node_modules/type-fest": { - "version": "0.18.1", + "node_modules/glob": { + "version": "7.1.4", "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": "*" } }, - "node_modules/standard-version/node_modules/normalize-package-data": { - "version": "3.0.2", - "dev": true, - "license": "BSD-2-Clause", + "node_modules/glob-parent": { + "version": "5.1.2", + "license": "ISC", "dependencies": { - "hosted-git-info": "^4.0.1", - "resolve": "^1.20.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" + "is-glob": "^4.0.1" }, "engines": { - "node": ">=10" + "node": ">= 6" } }, - "node_modules/standard-version/node_modules/p-locate": { - "version": "5.0.0", + "node_modules/glob-promise": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/glob-promise/-/glob-promise-3.4.0.tgz", + "integrity": "sha512-q08RJ6O+eJn+dVanerAndJwIcumgbDdYiUT7zFQl3Wm1xD6fBKtah7H8ZJChj4wP+8C+QfeVy8xautR7rdmKEw==", "dev": true, - "license": "MIT", "dependencies": { - "p-limit": "^3.0.2" + "@types/glob": "*" }, "engines": { - "node": ">=10" + "node": ">=4" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "glob": "*" } }, - "node_modules/standard-version/node_modules/path-exists": { - "version": "4.0.0", + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "node_modules/global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "min-document": "^2.19.0", + "process": "^0.11.10" } }, - "node_modules/standard-version/node_modules/readable-stream": { - "version": "3.6.0", + "node_modules/global-dirs": { + "version": "0.1.1", "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "ini": "^1.3.4" }, "engines": { - "node": ">= 6" + "node": ">=4" } }, - "node_modules/standard-version/node_modules/supports-color": { - "version": "5.5.0", + "node_modules/global-modules": { + "version": "1.0.0", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^3.0.0" + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/standard-version/node_modules/through2": { - "version": "4.0.2", + "node_modules/global-prefix": { + "version": "1.0.2", "dev": true, "license": "MIT", "dependencies": { - "readable-stream": "3" + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/standard-version/node_modules/yargs-parser": { - "version": "20.2.7", + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", "dev": true, "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/globals": { + "version": "13.13.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", + "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, "engines": { - "node": ">=10" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/statuses": { - "version": "1.5.0", - "license": "MIT", + "node_modules/globals/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, "engines": { - "node": ">= 0.6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/stream-combiner2": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", - "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", + "node_modules/globalthis": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.2.tgz", + "integrity": "sha512-ZQnSFO1la8P7auIOQECnm0sSuoMeaSq0EEdXMBFF2QJO4uNcwbyhSgG3MruWNbFTqCLmxVwGOl7LZ9kASvHdeQ==", "dev": true, "dependencies": { - "duplexer2": "~0.1.0", - "readable-stream": "^2.0.2" + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/stream-events": { - "version": "1.0.5", - "license": "MIT", + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dependencies": { - "stubs": "^3.0.0" + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" + "node_modules/globjoin": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", + "integrity": "sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=", + "dev": true }, - "node_modules/streamsearch": { - "version": "0.1.2", + "node_modules/google-auth-library": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-7.12.0.tgz", + "integrity": "sha512-RS/whvFPMoF1hQNxnoVET3DWKPBt1Xgqe2rY0k+Jn7TNhoHlwdnSe7Rlcbo2Nub3Mt2lUVz26X65aDQrWp6x8w==", + "dependencies": { + "arrify": "^2.0.0", + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "fast-text-encoding": "^1.0.0", + "gaxios": "^4.0.0", + "gcp-metadata": "^4.2.0", + "gtoken": "^5.0.4", + "jws": "^4.0.0", + "lru-cache": "^6.0.0" + }, "engines": { - "node": ">=0.8.0" + "node": ">=10" } }, - "node_modules/string_decoder": { - "version": "1.1.1", - "license": "MIT", + "node_modules/google-auth-library/node_modules/arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "engines": { + "node": ">=8" + } + }, + "node_modules/google-auth-library/node_modules/jwa": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", + "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", "dependencies": { - "safe-buffer": "~5.1.0" + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" } }, - "node_modules/string-argv": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", - "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", - "dev": true, - "engines": { - "node": ">=0.6.19" + "node_modules/google-auth-library/node_modules/jws": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", + "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", + "dependencies": { + "jwa": "^2.0.0", + "safe-buffer": "^5.0.1" } }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, + "node_modules/google-p12-pem": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.1.3.tgz", + "integrity": "sha512-MC0jISvzymxePDVembypNefkAQp+DRP7dBE+zNUPaIjEspIlYg0++OrsNr248V9tPbz6iqtZ7rX1hxWA5B8qBQ==", "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" + "node-forge": "^1.0.0" + }, + "bin": { + "gp12-pem": "build/src/bin/gp12-pem.js" }, "engines": { "node": ">=10" } }, - "node_modules/string-width": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, + "node_modules/graceful-fs": { + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" + }, + "node_modules/graphql": { + "version": "16.3.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.3.0.tgz", + "integrity": "sha512-xm+ANmA16BzCT5pLjuXySbQVFwH3oJctUVdy81w1sV0vBU0KgDdBGtxQOUd5zqOBk/JayAFeG8Dlmeq74rjm/A==", "engines": { - "node": ">=4" + "node": "^12.22.0 || ^14.16.0 || >=16.0.0" } }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "3.0.0", + "node_modules/graphql-fields": { + "version": "2.0.3", + "license": "MIT" + }, + "node_modules/graphql-react": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/graphql-react/-/graphql-react-15.0.0.tgz", + "integrity": "sha512-isqUWv7nLioxHT09LlZN6RWCvWBVkJUN27RCvoQ8BpflnmxkB0u03/XFQK90+5Y78/G3mdqrcA1J9hGX2V1Xkg==", "dev": true, - "license": "MIT", + "dependencies": { + "extract-files": "^11.0.0", + "isobject": "^4.0.0", + "react-waterfall-render": "^2.0.0" + }, "engines": { - "node": ">=4" + "node": "^12.20 || >= 14.13" + }, + "funding": { + "url": "https://github.com/sponsors/jaydenseric" + }, + "peerDependencies": { + "react": "16.14 - 17", + "react-dom": "16.14 - 17" } }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "4.0.0", - "dev": true, - "license": "MIT", + "node_modules/graphql-scalars": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/graphql-scalars/-/graphql-scalars-1.15.0.tgz", + "integrity": "sha512-uLi71egHsfF+A4XmnltPYRUnvy8uBsobRjhW6aBi305gpE/v52xkuKcjygV0CqeqdvRKmFhczh9HRx1lho2MRw==", "dependencies": { - "ansi-regex": "^3.0.0" + "tslib": "~2.3.0" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/string.prototype.trimend": { - "version": "1.0.4", + "node_modules/graphql-tag": { + "version": "2.12.6", + "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", + "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", "dev": true, - "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "tslib": "^2.1.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.4", - "dev": true, + "node_modules/graphql-type-json": { + "version": "0.3.2", "license": "MIT", + "peerDependencies": { + "graphql": ">=0.8.0" + } + }, + "node_modules/graphql-upload": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/graphql-upload/-/graphql-upload-13.0.0.tgz", + "integrity": "sha512-YKhx8m/uOtKu4Y1UzBFJhbBGJTlk7k4CydlUUiNrtxnwZv0WigbRHP+DVhRNKt7u7DXOtcKZeYJlGtnMXvreXA==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "busboy": "^0.3.1", + "fs-capacitor": "^6.2.0", + "http-errors": "^1.8.1", + "object-path": "^0.11.8" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >= 16.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/jaydenseric" + }, + "peerDependencies": { + "graphql": "0.13.1 - 16" } }, - "node_modules/stringify-package": { - "version": "1.0.1", - "dev": true, - "license": "ISC" - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, + "node_modules/gtoken": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-5.3.2.tgz", + "integrity": "sha512-gkvEKREW7dXWF8NV8pVrKfW7WqReAmjjkMBh6lNCCGOM4ucS0r0YyXXl0r/9Yj8wcW/32ISkfc8h5mPTDbtifQ==", "dependencies": { - "ansi-regex": "^5.0.1" + "gaxios": "^4.0.0", + "google-p12-pem": "^3.1.3", + "jws": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/strip-bom": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "node_modules/gtoken/node_modules/jwa": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", + "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" } }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "engines": { - "node": ">=6" + "node_modules/gtoken/node_modules/jws": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", + "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", + "dependencies": { + "jwa": "^2.0.0", + "safe-buffer": "^5.0.1" } }, - "node_modules/strip-indent": { - "version": "3.0.0", + "node_modules/handlebars": { + "version": "4.7.7", "dev": true, "license": "MIT", "dependencies": { - "min-indent": "^1.0.0" + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" }, "engines": { - "node": ">=8" + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" } }, - "node_modules/strip-json-comments": { - "version": "3.0.1", + "node_modules/hard-rejection": { + "version": "2.1.0", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/stubs": { - "version": "3.0.0", - "license": "MIT" - }, - "node_modules/superagent": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-6.1.0.tgz", - "integrity": "sha512-OUDHEssirmplo3F+1HWKUrUjvnQuA+nZI6i/JJBdXb5eq9IyEQwPyPpqND+SSsxf6TygpBEkUjISVRN4/VOpeg==", - "deprecated": "Please upgrade to v7.0.2+ of superagent. We have fixed numerous issues with streams, form-data, attach(), filesystem errors not bubbling up (ENOENT on attach()), and all tests are now passing. See the releases tab for more information at <https://github.com/visionmedia/superagent/releases>.", + "node_modules/has": { + "version": "1.0.3", + "license": "MIT", "dependencies": { - "component-emitter": "^1.3.0", - "cookiejar": "^2.1.2", - "debug": "^4.1.1", - "fast-safe-stringify": "^2.0.7", - "form-data": "^3.0.0", - "formidable": "^1.2.2", - "methods": "^1.1.2", - "mime": "^2.4.6", - "qs": "^6.9.4", - "readable-stream": "^3.6.0", - "semver": "^7.3.2" + "function-bind": "^1.1.1" }, "engines": { - "node": ">= 7.0.0" + "node": ">= 0.4.0" } }, - "node_modules/superagent-proxy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/superagent-proxy/-/superagent-proxy-3.0.0.tgz", - "integrity": "sha512-wAlRInOeDFyd9pyonrkJspdRAxdLrcsZ6aSnS+8+nu4x1aXbz6FWSTT9M6Ibze+eG60szlL7JA8wEIV7bPWuyQ==", + "node_modules/has-ansi": { + "version": "2.0.0", + "dev": true, + "license": "MIT", "dependencies": { - "debug": "^4.3.2", - "proxy-agent": "^5.0.0" + "ansi-regex": "^2.0.0" }, "engines": { - "node": ">=6" - }, - "peerDependencies": { - "superagent": ">= 0.15.4 || 1 || 2 || 3" + "node": ">=0.10.0" } }, - "node_modules/superagent/node_modules/mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "bin": { - "mime": "cli.js" - }, + "node_modules/has-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "dev": true, + "license": "MIT", "engines": { - "node": ">=4.0.0" + "node": ">=0.10.0" } }, - "node_modules/superagent/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, + "node_modules/has-bigints": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "engines": { - "node": ">= 6" + "node": ">=8" } }, - "node_modules/supertest": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.2.2.tgz", - "integrity": "sha512-wCw9WhAtKJsBvh07RaS+/By91NNE0Wh0DN19/hWPlBOU8tAfOtbZoVSV4xXeoKoxgPx0rx2y+y+8660XtE7jzg==", + "node_modules/has-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-glob/-/has-glob-1.0.0.tgz", + "integrity": "sha1-mqqe7b/7G6OZCnsAEPtnjuAIEgc=", "dev": true, "dependencies": { - "methods": "^1.1.2", - "superagent": "^7.1.0" + "is-glob": "^3.0.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=0.10.0" } }, - "node_modules/supertest/node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "node_modules/has-glob/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", "dev": true, "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "is-extglob": "^2.1.0" }, "engines": { - "node": ">= 6" + "node": ">=0.10.0" } }, - "node_modules/supertest/node_modules/formidable": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.0.1.tgz", - "integrity": "sha512-rjTMNbp2BpfQShhFbR3Ruk3qk2y9jKpvMW78nJgx8QKtxjDVrwbZG+wvDOmVbifHyOUOQJXxqEy6r0faRrPzTQ==", + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true, - "dependencies": { - "dezalgo": "1.0.3", - "hexoid": "1.0.0", - "once": "1.4.0", - "qs": "6.9.3" + "engines": { + "node": ">= 0.4" }, "funding": { - "url": "https://ko-fi.com/tunnckoCore/commissions" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/supertest/node_modules/formidable/node_modules/qs": { - "version": "6.9.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.3.tgz", - "integrity": "sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw==", + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, "engines": { - "node": ">=0.6" + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/supertest/node_modules/mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "node_modules/has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", "dev": true, - "bin": { - "mime": "cli.js" + "dependencies": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" }, "engines": { - "node": ">=4.0.0" + "node": ">=0.10.0" } }, - "node_modules/supertest/node_modules/qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "node_modules/has-value/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true, - "dependencies": { - "side-channel": "^1.0.4" - }, "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.10.0" } }, - "node_modules/supertest/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "node_modules/has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", "dev": true, "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "is-number": "^3.0.0", + "kind-of": "^4.0.0" }, "engines": { - "node": ">= 6" + "node": ">=0.10.0" } }, - "node_modules/supertest/node_modules/superagent": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-7.1.1.tgz", - "integrity": "sha512-CQ2weSS6M+doIwwYFoMatklhRbx6sVNdB99OEJ5czcP3cng76Ljqus694knFWgOj3RkrtxZqIgpe6vhe0J7QWQ==", + "node_modules/has-values/node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/has-values/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "dependencies": { - "component-emitter": "^1.3.0", - "cookiejar": "^2.1.3", - "debug": "^4.3.3", - "fast-safe-stringify": "^2.1.1", - "form-data": "^4.0.0", - "formidable": "^2.0.1", - "methods": "^1.1.2", - "mime": "^2.5.0", - "qs": "^6.10.1", - "readable-stream": "^3.6.0", - "semver": "^7.3.5" + "kind-of": "^3.0.2" }, "engines": { - "node": ">=6.4.0 <13 || >=14" + "node": ">=0.10.0" } }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "is-buffer": "^1.1.5" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/supports-hyperlinks": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", - "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "dependencies": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" + "is-buffer": "^1.1.5" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true + "node_modules/has-yarn": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "node_modules/table": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.0.tgz", - "integrity": "sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==", + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", "dev": true, "dependencies": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" }, "engines": { - "node": ">=10.0.0" + "node": ">=4" } }, - "node_modules/table/node_modules/ajv": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz", - "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", + "node_modules/hash-base/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">= 6" } }, - "node_modules/table/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/hash-base/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true, - "engines": { - "node": ">=8" - } + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "node_modules/table/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "node_modules/hash-stream-validation": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/hash-stream-validation/-/hash-stream-validation-0.2.4.tgz", + "integrity": "sha512-Gjzu0Xn7IagXVkSu9cSFuK1fqzwtLwFhNhVL8IFJijRNMgUttFbBSIAzKuSIrsFMO1+g1RlsoN49zPIbwPDMGQ==" + }, + "node_modules/hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", "dev": true }, - "node_modules/table/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", "dev": true, "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" } }, - "node_modules/tar": { - "version": "6.1.11", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "node_modules/hast-to-hyperscript": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz", + "integrity": "sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA==", "dev": true, "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" + "@types/unist": "^2.0.3", + "comma-separated-tokens": "^1.0.0", + "property-information": "^5.3.0", + "space-separated-tokens": "^1.0.0", + "style-to-object": "^0.3.0", + "unist-util-is": "^4.0.0", + "web-namespaces": "^1.0.0" }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/tarn": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/tarn/-/tarn-3.0.2.tgz", - "integrity": "sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ==", - "engines": { - "node": ">=8.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/teeny-request": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-7.1.1.tgz", - "integrity": "sha512-iwY6rkW5DDGq8hE2YgNQlKbptYpY5Nn2xecjQiNjOXWbKzPGUfmeUBCSQbbr306d7Z7U2N0TPl+/SwYRfua1Dg==", + "node_modules/hast-util-from-parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-6.0.1.tgz", + "integrity": "sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA==", + "dev": true, "dependencies": { - "http-proxy-agent": "^4.0.0", - "https-proxy-agent": "^5.0.0", - "node-fetch": "^2.6.1", - "stream-events": "^1.0.5", - "uuid": "^8.0.0" + "@types/parse5": "^5.0.0", + "hastscript": "^6.0.0", + "property-information": "^5.0.0", + "vfile": "^4.0.0", + "vfile-location": "^3.2.0", + "web-namespaces": "^1.0.0" }, - "engines": { - "node": ">=10" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/temp-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", - "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "node_modules/hast-util-parse-selector": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz", + "integrity": "sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==", "dev": true, - "engines": { - "node": ">=8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/tempy": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-1.0.1.tgz", - "integrity": "sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w==", + "node_modules/hast-util-raw": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-6.0.1.tgz", + "integrity": "sha512-ZMuiYA+UF7BXBtsTBNcLBF5HzXzkyE6MLzJnL605LKE8GJylNjGc4jjxazAHUtcwT5/CEt6afRKViYB4X66dig==", "dev": true, "dependencies": { - "del": "^6.0.0", - "is-stream": "^2.0.0", - "temp-dir": "^2.0.0", - "type-fest": "^0.16.0", - "unique-string": "^2.0.0" - }, - "engines": { - "node": ">=10" + "@types/hast": "^2.0.0", + "hast-util-from-parse5": "^6.0.0", + "hast-util-to-parse5": "^6.0.0", + "html-void-elements": "^1.0.0", + "parse5": "^6.0.0", + "unist-util-position": "^3.0.0", + "vfile": "^4.0.0", + "web-namespaces": "^1.0.0", + "xtend": "^4.0.0", + "zwitch": "^1.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/tempy/node_modules/type-fest": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", - "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", + "node_modules/hast-util-to-parse5": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-6.0.0.tgz", + "integrity": "sha512-Lu5m6Lgm/fWuz8eWnrKezHtVY83JeRGaNQ2kn9aJgqaxvVkFCZQBEhgodZUDUvoodgyROHDb3r5IxAEdl6suJQ==", "dev": true, - "engines": { - "node": ">=10" + "dependencies": { + "hast-to-hyperscript": "^9.0.0", + "property-information": "^5.0.0", + "web-namespaces": "^1.0.0", + "xtend": "^4.0.0", + "zwitch": "^1.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "node_modules/hastscript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz", + "integrity": "sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==", "dev": true, "dependencies": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" - }, - "engines": { - "node": ">=8" + "@types/hast": "^2.0.0", + "comma-separated-tokens": "^1.0.0", + "hast-util-parse-selector": "^2.0.0", + "property-information": "^5.0.0", + "space-separated-tokens": "^1.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/terminal-link/node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "node_modules/he": { + "version": "1.2.0", + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, + "node_modules/hexoid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", + "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==", "dev": true, - "dependencies": { - "type-fest": "^0.21.3" - }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/terminal-link/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "node_modules/highlight.js": { + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "*" } }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "node_modules/history": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.0.0.tgz", + "integrity": "sha512-3NyRMKIiFSJmIPdq7FxkNMJkQ7ZEtVblOQ38VtKaA0zZMW1Eo6Q6W8oDKEflr1kNNTItSnk4JMCO1deeSgbLLg==", "dev": true, "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" + "@babel/runtime": "^7.7.6" } }, - "node_modules/text-encoding-polyfill": { - "version": "0.6.7", - "resolved": "https://registry.npmjs.org/text-encoding-polyfill/-/text-encoding-polyfill-0.6.7.tgz", - "integrity": "sha512-/DZ1XJqhbqRkCop6s9ZFu8JrFRwmVuHg4quIRm+ziFkR3N3ec6ck6yBvJ1GYeEQZhLVwRW0rZE+C3SSJpy0RTg==" - }, - "node_modules/text-extensions": { - "version": "1.9.0", + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10" + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" } }, - "node_modules/text-hex": { - "version": "1.0.0", - "license": "MIT" - }, - "node_modules/text-table": { - "version": "0.2.0", + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", "dev": true, - "license": "MIT" + "dependencies": { + "react-is": "^16.7.0" + } }, - "node_modules/throat": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", - "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", + "node_modules/hoist-non-react-statics/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", "dev": true }, - "node_modules/through": { - "version": "2.3.8", - "license": "MIT" - }, - "node_modules/through2": { - "version": "2.0.5", + "node_modules/homedir-polyfill": { + "version": "1.0.3", "dev": true, "license": "MIT", "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" + "parse-passwd": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/tildify": { + "node_modules/hook-std": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/hook-std/-/hook-std-2.0.0.tgz", + "integrity": "sha512-zZ6T5WcuBMIUVh49iPQS9t977t7C0l7OtHrpeMb5uk48JdflRX0NSFvCekfYNmGQETnLq9W/isMyHl69kxGi8g==", + "dev": true, "engines": { "node": ">=8" } }, - "node_modules/tmp": { - "version": "0.0.33", + "node_modules/hosted-git-info": { + "version": "2.8.9", + "dev": true, + "license": "ISC" + }, + "node_modules/html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", "dev": true, - "license": "MIT", "dependencies": { - "os-tmpdir": "~1.0.2" + "whatwg-encoding": "^1.0.5" }, "engines": { - "node": ">=0.6.0" + "node": ">=10" } }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "node_modules/html-entities": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz", + "integrity": "sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==", "dev": true }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", "dev": true, + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, "engines": { - "node": ">=4" + "node": ">=12" } }, - "node_modules/to-readable-stream": { - "version": "1.0.0", + "node_modules/html-tags": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.1.0.tgz", + "integrity": "sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==", "dev": true, - "license": "MIT", "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "license": "MIT", + "node_modules/html-to-text": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/html-to-text/-/html-to-text-8.1.0.tgz", + "integrity": "sha512-Z9iYAqYK2c18GswSbnxJSeMs7lyJgwR2oIkDOyOHGBbYsPsG4HvT379jj3Lcbfko8A5ceyyMHAfkmp/BiXA9/Q==", "dependencies": { - "is-number": "^7.0.0" + "@selderee/plugin-htmlparser2": "^0.6.0", + "deepmerge": "^4.2.2", + "he": "^1.2.0", + "htmlparser2": "^6.1.0", + "minimist": "^1.2.5", + "selderee": "^0.6.0" + }, + "bin": { + "html-to-text": "bin/cli.js" }, "engines": { - "node": ">=8.0" + "node": ">=10.23.2" } }, - "node_modules/toidentifier": { - "version": "1.0.0", - "license": "MIT", - "engines": { - "node": ">=0.6" + "node_modules/html-void-elements": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-1.0.5.tgz", + "integrity": "sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/touch": { - "version": "3.1.0", + "node_modules/html-webpack-plugin": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", + "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", "dev": true, - "license": "ISC", "dependencies": { - "nopt": "~1.0.10" + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" }, - "bin": { - "nodetouch": "bin/nodetouch.js" + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "webpack": "^5.20.0" } }, - "node_modules/touch/node_modules/nopt": { - "version": "1.0.10", + "node_modules/html-webpack-plugin/node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/htmlparser2": { + "version": "6.1.0", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], "license": "MIT", "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" } }, - "node_modules/tough-cookie": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", - "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", - "dev": true, + "node_modules/http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true + }, + "node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.1.2" + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" }, "engines": { - "node": ">=6" + "node": ">= 0.6" } }, - "node_modules/tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "dev": true, + "node_modules/http-errors/node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "dependencies": { - "punycode": "^2.1.1" + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">=8.0.0" } }, - "node_modules/traverse": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", - "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=", - "dev": true - }, - "node_modules/trim-newlines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", - "dev": true, + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "license": "MIT", + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, "engines": { - "node": ">=8" + "node": ">= 6" } }, - "node_modules/triple-beam": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", - "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==" - }, - "node_modules/ts-jest": { - "version": "27.1.3", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.3.tgz", - "integrity": "sha512-6Nlura7s6uM9BVUAoqLH7JHyMXjz8gluryjpPXxr3IxZdAXnU6FhjvVLHFtfd1vsE1p8zD1OJfskkc0jhTSnkA==", - "dev": true, + "node_modules/http-proxy-middleware": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.4.tgz", + "integrity": "sha512-m/4FxX17SUvz4lJ5WPXOHDUuCwIqXLfLHs1s0uZ3oYjhoXlx9csYxaOa0ElDEJ+h8Q4iJ1s+lTMbiCa4EXIJqg==", "dependencies": { - "bs-logger": "0.x", - "fast-json-stable-stringify": "2.x", - "jest-util": "^27.0.0", - "json5": "2.x", - "lodash.memoize": "4.x", - "make-error": "1.x", - "semver": "7.x", - "yargs-parser": "20.x" - }, - "bin": { - "ts-jest": "cli.js" + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=12.0.0" }, "peerDependencies": { - "@babel/core": ">=7.0.0-beta.0 <8", - "@types/jest": "^27.0.0", - "babel-jest": ">=27.0.0 <28", - "esbuild": "~0.14.0", - "jest": "^27.0.0", - "typescript": ">=3.8 <5.0" + "@types/express": "^4.17.13" }, "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "@types/jest": { - "optional": true - }, - "babel-jest": { - "optional": true - }, - "esbuild": { + "@types/express": { "optional": true } } }, - "node_modules/ts-jest/node_modules/yargs-parser": { - "version": "20.2.7", - "dev": true, - "license": "ISC", + "node_modules/http-proxy-middleware/node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", "engines": { "node": ">=10" - } - }, - "node_modules/ts-node": { - "version": "10.7.0", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.7.0.tgz", - "integrity": "sha512-TbIGS4xgJoX2i3do417KSaep1uRAW/Lu+WAL2doDHC0D6ummjirVOXU5/7aiZotbQ5p1Zp9tP7U6cYhA0O7M8A==", - "dependencies": { - "@cspotcode/source-map-support": "0.7.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.0", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ts-node/node_modules/acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", - "bin": { - "acorn": "bin/acorn" + "node_modules/https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "node_modules/https-proxy-agent": { + "version": "5.0.0", + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" }, "engines": { - "node": ">=0.4.0" + "node": ">= 6" } }, - "node_modules/ts-node/node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, "engines": { - "node": ">=0.4.0" + "node": ">=10.17.0" } }, - "node_modules/tsconfig-paths": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz", - "integrity": "sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==", + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", "dev": true, "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.0", - "strip-bom": "^3.0.0" + "ms": "^2.0.0" } }, - "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "node_modules/husky": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/husky/-/husky-7.0.4.tgz", + "integrity": "sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==", "dev": true, + "bin": { + "husky": "lib/bin.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "license": "MIT", "dependencies": { - "minimist": "^1.2.0" + "safer-buffer": ">= 2.1.2 < 3" }, - "bin": { - "json5": "lib/cli.js" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/tsconfig-paths/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "node_modules/icss-utils": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", + "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", "dev": true, + "dependencies": { + "postcss": "^7.0.14" + }, "engines": { - "node": ">=4" + "node": ">= 6" } }, - "node_modules/tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" - }, - "node_modules/tsutils": { - "version": "3.21.0", + "node_modules/icss-utils/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, - "license": "MIT", "dependencies": { - "tslib": "^1.8.1" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" }, "engines": { - "node": ">= 6" + "node": ">=6.0.0" }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", + "node_modules/ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + }, + "node_modules/iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/ignore-by-default": { + "version": "1.0.1", "dev": true, - "license": "0BSD" + "license": "ISC" }, - "node_modules/tus-node-server": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/tus-node-server/-/tus-node-server-0.5.2.tgz", - "integrity": "sha512-R+tzYO29beg8YNhEekzxtuScP5+IbNUPOM69S4Pc8+xJkCVHuX8VsfPuEzFkpLATLRi4qGi0cKrpIyfQWiVfaA==", + "node_modules/ignore-walk": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz", + "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==", + "dev": true, "dependencies": { - "@google-cloud/storage": "^5.18.1", - "aws-sdk": "^2.1064.0", - "configstore": "^5.0.1", - "debug": "^4.3.3" - }, - "engines": { - "node": ">=10.0" + "minimatch": "^3.0.4" } }, - "node_modules/type-check": { - "version": "0.4.0", + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" + }, + "node_modules/import-fresh": { + "version": "3.3.0", "dev": true, "license": "MIT", "dependencies": { - "prelude-ls": "^1.2.1" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, - "node_modules/type-fest": { - "version": "0.8.1", - "license": "(MIT OR CC0-1.0)", + "node_modules/import-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-4.0.0.tgz", + "integrity": "sha512-P9J71vT5nLlDeV8FHs5nNxaLbrpfAV5cF5srvbZfpwpcJoM/xZR3hiv+q+SAnuSmuGbXMWud063iIMx/V/EWZQ==", + "dev": true, "engines": { - "node": ">=8" - } - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" + "node": ">=12.2" }, - "engines": { - "node": ">= 0.6" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/typedarray": { - "version": "0.0.6", - "license": "MIT" - }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", + "node_modules/import-lazy": { + "version": "2.1.0", + "dev": true, "license": "MIT", - "dependencies": { - "is-typedarray": "^1.0.0" + "engines": { + "node": ">=4" } }, - "node_modules/typedoc": { - "version": "0.21.10", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.21.10.tgz", - "integrity": "sha512-Y0wYIehkjkPfsp3pv86fp3WPHUcOf8pnQUDLwG1PqSccUSqdsv7Pz1Gd5WrTJvXQB2wO1mKlZ8qW8qMiopKyjA==", + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", "dev": true, "dependencies": { - "glob": "^7.1.7", - "handlebars": "^4.7.7", - "lunr": "^2.3.9", - "marked": "^4.0.10", - "minimatch": "^3.0.0", - "progress": "^2.0.3", - "shiki": "^0.9.8", - "typedoc-default-themes": "^0.12.10" + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" }, "bin": { - "typedoc": "bin/typedoc" + "import-local-fixture": "fixtures/cli.js" }, "engines": { - "node": ">= 12.10.0" + "node": ">=8" }, - "peerDependencies": { - "typescript": "4.0.x || 4.1.x || 4.2.x || 4.3.x || 4.4.x" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/typedoc-default-themes": { - "version": "0.12.10", - "resolved": "https://registry.npmjs.org/typedoc-default-themes/-/typedoc-default-themes-0.12.10.tgz", - "integrity": "sha512-fIS001cAYHkyQPidWXmHuhs8usjP5XVJjWB8oZGqkTowZaz3v7g3KDZeeqE82FBrmkAnIBOY3jgy7lnPnqATbA==", - "dev": true, + "node_modules/imurmurhash": { + "version": "0.1.4", + "license": "MIT", "engines": { - "node": ">= 8" + "node": ">=0.8.19" } }, - "node_modules/typedoc-plugin-pages-fork": { - "version": "0.0.1", + "node_modules/indent-string": { + "version": "4.0.0", "dev": true, "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "node_modules/inflight": { + "version": "1.0.6", + "dev": true, + "license": "ISC", "dependencies": { - "compare-versions": "^3.6.0", - "typedoc-default-themes": "^0.10.1" + "once": "^1.3.0", + "wrappy": "1" } }, - "node_modules/typedoc-plugin-pages-fork/node_modules/typedoc-default-themes": { - "version": "0.10.2", + "node_modules/inherits": { + "version": "2.0.4", + "license": "ISC" + }, + "node_modules/ini": { + "version": "1.3.8", "dev": true, - "license": "Apache-2.0", + "license": "ISC" + }, + "node_modules/inline-style-parser": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", + "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==", + "dev": true + }, + "node_modules/inquirer": { + "version": "6.5.2", + "dev": true, + "license": "MIT", "dependencies": { - "lunr": "^2.3.8" + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^2.0.0", + "lodash": "^4.17.12", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" }, "engines": { - "node": ">= 8" + "node": ">=6.0.0" } }, - "node_modules/typedoc-plugin-sourcefile-url": { - "version": "1.0.6", + "node_modules/inquirer/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", "dev": true, - "license": "MIT", - "peerDependencies": { - "typedoc": ">=0.16.0" + "engines": { + "node": ">=6" } }, - "node_modules/typedoc/node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "node_modules/inquirer/node_modules/ansi-styles": { + "version": "3.2.1", "dev": true, + "license": "MIT", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "color-convert": "^1.9.0" }, "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=4" } }, - "node_modules/typescript": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.2.tgz", - "integrity": "sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg==", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" + "node_modules/inquirer/node_modules/chalk": { + "version": "2.4.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "engines": { - "node": ">=4.2.0" + "node": ">=4" } }, - "node_modules/uglify-js": { - "version": "3.13.7", + "node_modules/inquirer/node_modules/color-convert": { + "version": "1.9.3", "dev": true, - "license": "BSD-2-Clause", - "optional": true, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/inquirer/node_modules/color-name": { + "version": "1.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/inquirer/node_modules/escape-string-regexp": { + "version": "1.0.5", + "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.0" } }, - "node_modules/unbox-primitive": { - "version": "1.0.1", + "node_modules/inquirer/node_modules/has-flag": { + "version": "3.0.0", "dev": true, "license": "MIT", - "dependencies": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=4" } }, - "node_modules/undefsafe": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", - "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", - "dev": true - }, - "node_modules/unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "node_modules/inquirer/node_modules/strip-ansi": { + "version": "5.2.0", "dev": true, + "license": "MIT", "dependencies": { - "unique-slug": "^2.0.0" + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" } }, - "node_modules/unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "node_modules/inquirer/node_modules/supports-color": { + "version": "5.5.0", "dev": true, + "license": "MIT", "dependencies": { - "imurmurhash": "^0.1.4" + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/unique-string": { - "version": "2.0.0", - "license": "MIT", + "node_modules/internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, "dependencies": { - "crypto-random-string": "^2.0.0" + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" }, "engines": { - "node": ">=8" + "node": ">= 0.4" } }, - "node_modules/unique-string/node_modules/crypto-random-string": { - "version": "2.0.0", + "node_modules/interpret": { + "version": "2.2.0", "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 0.10" } }, - "node_modules/universal-user-agent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", - "dev": true + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "dependencies": { + "loose-envify": "^1.0.0" + } }, - "node_modules/universalify": { - "version": "0.1.2", - "license": "MIT", + "node_modules/ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", "engines": { - "node": ">= 4.0.0" + "node": ">= 0.10" } }, - "node_modules/unixify": { + "node_modules/is-accessor-descriptor": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, "dependencies": { - "normalize-path": "^2.1.1" + "kind-of": "^6.0.0" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/unpipe": { - "version": "1.0.0", - "license": "MIT", - "engines": { - "node": ">= 0.8" + "node_modules/is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/update-notifier": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", - "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", + "node_modules/is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", "dev": true, "dependencies": { - "boxen": "^5.0.0", - "chalk": "^4.1.0", - "configstore": "^5.0.1", - "has-yarn": "^2.1.0", - "import-lazy": "^2.1.0", - "is-ci": "^2.0.0", - "is-installed-globally": "^0.4.0", - "is-npm": "^5.0.0", - "is-yarn-global": "^0.3.0", - "latest-version": "^5.1.0", - "pupa": "^2.1.1", - "semver": "^7.3.4", - "semver-diff": "^3.1.1", - "xdg-basedir": "^4.0.0" - }, - "engines": { - "node": ">=10" + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" }, "funding": { - "url": "https://github.com/yeoman/update-notifier?sponsor=1" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/update-notifier/node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, - "node_modules/update-notifier/node_modules/is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", "dev": true, "dependencies": { - "ci-info": "^2.0.0" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, - "bin": { - "is-ci": "bin.js" + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/uri-js": { - "version": "4.4.1", - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" + "node_modules/is-arrayish": { + "version": "0.2.1", + "dev": true, + "license": "MIT" + }, + "node_modules/is-bigint": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/url": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", - "integrity": "sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ=", + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, "dependencies": { - "punycode": "1.3.2", - "querystring": "0.2.0" + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/url-join": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", - "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", - "dev": true - }, - "node_modules/url-parse-lax": { - "version": "3.0.0", + "node_modules/is-boolean-object": { + "version": "1.1.1", "dev": true, "license": "MIT", "dependencies": { - "prepend-http": "^2.0.0" + "call-bind": "^1.0.2" }, "engines": { - "node": ">=4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/url/node_modules/punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" - }, - "node_modules/urlgrey": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/urlgrey/-/urlgrey-1.0.0.tgz", - "integrity": "sha512-hJfIzMPJmI9IlLkby8QrsCykQ+SXDeO2W5Q9QTW3QpqZVTx4a/K7p8/5q+/isD8vsbVaFgql/gvAoQCRQ2Cb5w==", + "node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", "dev": true, - "dependencies": { - "fast-url-parser": "^1.1.3" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "engines": { + "node": ">=4" } }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "license": "MIT" - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "license": "MIT", + "node_modules/is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "dev": true, "engines": { - "node": ">= 0.4.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/uuid": { - "version": "8.3.2", - "license": "MIT", + "node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "dependencies": { + "ci-info": "^2.0.0" + }, "bin": { - "uuid": "dist/bin/uuid" + "is-ci": "bin.js" } }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "dev": true, - "license": "MIT" + "node_modules/is-ci/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.0.tgz", - "integrity": "sha512-mpSYqfsFvASnSn5qMiwrr4VKfumbPyONLCOPmsR3A6pTY/r0+tSaVbgPWSAIuzbk3lCTa+FForeTiO+wBQGkjA==" + "node_modules/is-core-module": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", + "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/v8-to-istanbul": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", - "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", + "node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0", - "source-map": "^0.7.3" + "kind-of": "^6.0.0" }, "engines": { - "node": ">=10.12.0" + "node": ">=0.10.0" } }, - "node_modules/v8-to-istanbul/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "node_modules/is-date-object": { + "version": "1.0.4", "dev": true, + "license": "MIT", "engines": { - "node": ">= 8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", + "node_modules/is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", "dev": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/validate-npm-package-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", - "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", + "node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "dependencies": { - "builtins": "^1.0.3" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/value-or-promise": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.11.tgz", - "integrity": "sha512-41BrgH+dIbCFXClcSapVs5M6GkENd3gQOJpEfPDNa71LsUGMXDL0jMWpI/Rh7WhX+Aalfz2TTS3Zt5pUsbnhLg==", + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, "engines": { - "node": ">=12" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/vary": { - "version": "1.1.2", - "license": "MIT", - "engines": { - "node": ">= 0.8" + "node_modules/is-dom": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-dom/-/is-dom-1.1.0.tgz", + "integrity": "sha512-u82f6mvhYxRPKpw8V1N0W8ce1xXwOrQtgGcxl6UCL5zBmZu3is/18K0rR7uFCnMDuAsS/3W54mGL4vsaFUQlEQ==", + "dev": true, + "dependencies": { + "is-object": "^1.0.1", + "is-window": "^1.0.2" } }, - "node_modules/vm2": { - "version": "3.9.8", - "resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.8.tgz", - "integrity": "sha512-/1PYg/BwdKzMPo8maOZ0heT7DLI0DAFTm7YQaz/Lim9oIaFZsJs3EdtalvXuBfZwczNwsYhju75NW4d6E+4q+w==", + "node_modules/is-expression": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-4.0.0.tgz", + "integrity": "sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==", + "dev": true, "dependencies": { - "acorn": "^8.7.0", - "acorn-walk": "^8.2.0" - }, - "bin": { - "vm2": "bin/vm2" - }, - "engines": { - "node": ">=6.0" + "acorn": "^7.1.1", + "object-assign": "^4.1.1" } }, - "node_modules/vm2/node_modules/acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", - "bin": { - "acorn": "bin/acorn" - }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true, "engines": { - "node": ">=0.4.0" + "node": ">=0.10.0" } }, - "node_modules/vm2/node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "node_modules/is-extglob": { + "version": "2.1.1", + "license": "MIT", "engines": { - "node": ">=0.4.0" + "node": ">=0.10.0" } }, - "node_modules/vscode-textmate": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-5.2.0.tgz", - "integrity": "sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==", - "dev": true - }, - "node_modules/vue-eslint-parser": { - "version": "7.1.1", + "node_modules/is-finite": { + "version": "1.1.0", "dev": true, "license": "MIT", - "dependencies": { - "debug": "^4.1.1", - "eslint-scope": "^5.0.0", - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.2.1", - "esquery": "^1.0.1", - "lodash": "^4.17.15" - }, "engines": { - "node": ">=8.10" + "node": ">=0.10.0" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5.0.0" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/vue-eslint-parser/node_modules/eslint-visitor-keys": { - "version": "1.3.0", + "node_modules/is-fullwidth-code-point": { + "version": "2.0.0", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "engines": { "node": ">=4" } }, - "node_modules/vue-eslint-parser/node_modules/espree": { - "version": "6.2.1", + "node_modules/is-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==", + "dev": true + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", "dev": true, - "license": "BSD-2-Clause", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dependencies": { - "acorn": "^7.1.1", - "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.1.0" + "is-extglob": "^2.1.1" }, "engines": { - "node": ">=6.0.0" + "node": ">=0.10.0" } }, - "node_modules/w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "node_modules/is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", "dev": true, - "dependencies": { - "browser-process-hrtime": "^1.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/w3c-xmlserializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", - "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "node_modules/is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", "dev": true, "dependencies": { - "xml-name-validator": "^3.0.0" + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "node_modules/is-installed-globally/node_modules/global-dirs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", + "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", "dev": true, "dependencies": { - "makeerror": "1.0.12" + "ini": "2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "node_modules/is-installed-globally/node_modules/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", "dev": true, "engines": { - "node": ">=10.4" + "node": ">=10" } }, - "node_modules/wgs84": { - "version": "0.0.0", - "license": "BSD-2-Clause" + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", + "dev": true }, - "node_modules/whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "node_modules/is-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", "dev": true, - "dependencies": { - "iconv-lite": "0.4.24" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true - }, - "node_modules/whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "node_modules/is-negative-zero": { + "version": "2.0.1", "dev": true, - "dependencies": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" + "license": "MIT", + "engines": { + "node": ">= 0.4" }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-npm": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", + "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", + "dev": true, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/which": { - "version": "2.0.2", - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, + "node_modules/is-number": { + "version": "7.0.0", + "license": "MIT", "engines": { - "node": ">= 8" + "node": ">=0.12.0" } }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", + "node_modules/is-number-object": { + "version": "1.0.5", "dev": true, "license": "MIT", - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "node_modules/is-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz", + "integrity": "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==", "dev": true, - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "node_modules/is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", "dev": true, - "dependencies": { - "string-width": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/widest-line/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, "engines": { "node": ">=8" } }, - "node_modules/widest-line/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/is-plain-obj": { + "version": "1.1.0", "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/winston": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/winston/-/winston-3.6.0.tgz", - "integrity": "sha512-9j8T75p+bcN6D00sF/zjFVmPp+t8KMPB1MzbbzYjeN9VWxdsYnTB40TkbNUEXAmILEfChMvAMgidlX64OG3p6w==", - "dependencies": { - "@dabh/diagnostics": "^2.0.2", - "async": "^3.2.3", - "is-stream": "^2.0.0", - "logform": "^2.4.0", - "one-time": "^1.0.0", - "readable-stream": "^3.4.0", - "safe-stable-stringify": "^2.3.1", - "stack-trace": "0.0.x", - "triple-beam": "^1.3.0", - "winston-transport": "^4.5.0" - }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, "engines": { - "node": ">= 12.0.0" + "node": ">=0.10.0" } }, - "node_modules/winston-transport": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz", - "integrity": "sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==", - "dependencies": { - "logform": "^2.3.2", - "readable-stream": "^3.6.0", - "triple-beam": "^1.3.0" - }, - "engines": { - "node": ">= 6.4.0" - } + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true }, - "node_modules/winston-transport/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">= 6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/winston/node_modules/async": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", - "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==" + "node_modules/is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/winston/node_modules/readable-stream": { - "version": "3.6.0", + "node_modules/is-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.0", "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">= 6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/wkt-parser": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/wkt-parser/-/wkt-parser-1.3.1.tgz", - "integrity": "sha512-XK5qV+Y5gsygQfHx2/cS5a7Zxsgleaw8iX5UPC5eOXPc0TgJAu1JB9lr0iYYX3zAnN3p0aNiaN5c+1Bdblxwrg==" - }, - "node_modules/wmf": { - "version": "1.0.2", - "license": "Apache-2.0", + "node_modules/is-supported-regexp-flag": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-supported-regexp-flag/-/is-supported-regexp-flag-1.0.1.tgz", + "integrity": "sha512-3vcJecUUrpgCqc/ca0aWeNu64UGgxcvO60K/Fkr1N6RSvfGCTU60UKN68JDmKokgba0rFFJs12EnzOQa14ubKQ==", + "dev": true, "engines": { - "node": ">=0.8" + "node": ">=0.10.0" } }, - "node_modules/word": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/word/-/word-0.3.0.tgz", - "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==", + "node_modules/is-symbol": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.2" + }, "engines": { - "node": ">=0.8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/word-wrap": { - "version": "1.2.3", + "node_modules/is-text-path": { + "version": "1.0.1", + "dev": true, "license": "MIT", + "dependencies": { + "text-extensions": "^1.0.0" + }, "engines": { "node": ">=0.10.0" } }, - "node_modules/wordwrap": { + "node_modules/is-typedarray": { "version": "1.0.0", + "license": "MIT" + }, + "node_modules/is-utf8": { + "version": "0.2.1", "dev": true, "license": "MIT" }, - "node_modules/wrap-ansi": { - "version": "7.0.0", + "node_modules/is-weakref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", + "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", "dev": true, - "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "call-bind": "^1.0.0" }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-whitespace": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-whitespace/-/is-whitespace-0.3.0.tgz", + "integrity": "sha1-Fjnssb4DauxppUy7QBz77XEUq38=", + "dev": true, "engines": { - "node": ">=10" - }, + "node": ">=0.10.0" + } + }, + "node_modules/is-whitespace-character": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz", + "integrity": "sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==", + "dev": true, "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", + "node_modules/is-window": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-window/-/is-window-1.0.2.tgz", + "integrity": "sha1-LIlspT25feRdPDMTOmXYyfVjSA0=", + "dev": true + }, + "node_modules/is-windows": { + "version": "1.0.2", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "4.2.2", + "node_modules/is-word-character": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.4.tgz", + "integrity": "sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, - "license": "MIT", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "is-docker": "^2.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/wrappy": { - "version": "1.0.2", + "node_modules/is-yarn-global": { + "version": "0.3.0", + "dev": true, + "license": "MIT" + }, + "node_modules/isarray": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", "license": "ISC" }, - "node_modules/write-file-atomic": { - "version": "3.0.3", - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" + "node_modules/isobject": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz", + "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==", + "dev": true, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/ws": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", - "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", + "node_modules/issue-parser": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-6.0.0.tgz", + "integrity": "sha512-zKa/Dxq2lGsBIXQ7CUZWTHfvxPC2ej0KfO7fIPqLlHB9J2hJ7rGhZ5rilhuufylr4RXYPzJUeFjKxz305OsNlA==", "dev": true, - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "dependencies": { + "lodash.capitalize": "^4.2.1", + "lodash.escaperegexp": "^4.1.2", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.uniqby": "^4.7.0" }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "engines": { + "node": ">=10.13" } }, - "node_modules/xdg-basedir": { - "version": "4.0.0", - "license": "MIT", + "node_modules/istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true, "engines": { "node": ">=8" } }, - "node_modules/xlsx": { - "version": "0.18.4", - "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.18.4.tgz", - "integrity": "sha512-u2plLVR/Ju2NxByPcWuxW3eOHEE/EH8w0vDyvHx8pFa8qO3fpq+l/57msr/Eq4cY5LErFOFD4sp4jIyPd6nFzQ==", + "node_modules/istanbul-lib-instrument": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz", + "integrity": "sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==", + "dev": true, "dependencies": { - "adler-32": "~1.3.0", - "cfb": "~1.2.1", - "codepage": "~1.15.0", - "crc-32": "~1.2.1", - "ssf": "~0.11.2", - "wmf": "~1.0.1", - "word": "~0.3.0" - }, - "bin": { - "xlsx": "bin/xlsx.njs" + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" }, "engines": { - "node": ">=0.8" - } - }, - "node_modules/xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true - }, - "node_modules/xml2js": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", - "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", - "dependencies": { - "sax": ">=0.6.0", - "xmlbuilder": "~9.0.1" + "node": ">=8" } }, - "node_modules/xmlbuilder": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", - "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", - "engines": { - "node": ">=4.0" + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - }, - "node_modules/xregexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz", - "integrity": "sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM=", + "node_modules/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": "*" + "node": ">=8" } }, - "node_modules/xtend": { - "version": "4.0.2", - "license": "MIT", + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, "engines": { - "node": ">=0.4" + "node": ">=10" } }, - "node_modules/y18n": { - "version": "5.0.8", + "node_modules/istanbul-reports": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", + "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", "dev": true, - "license": "ISC", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/yallist": { - "version": "4.0.0", - "license": "ISC" + "node_modules/iterall": { + "version": "1.3.0", + "license": "MIT" }, - "node_modules/yaml": { - "version": "1.10.2", + "node_modules/iterate-iterator": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/iterate-iterator/-/iterate-iterator-1.0.2.tgz", + "integrity": "sha512-t91HubM4ZDQ70M9wqp+pcNpu8OyJ9UAtXntT/Bcsvp5tZMnz9vRa+IunKXeI8AnfZMTv0jNuVEmGeLSMjVvfPw==", "dev": true, - "license": "ISC", - "engines": { - "node": ">= 6" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/yargs": { - "version": "16.2.0", + "node_modules/iterate-value": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/iterate-value/-/iterate-value-1.0.2.tgz", + "integrity": "sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ==", "dev": true, - "license": "MIT", "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "es-get-iterator": "^1.0.2", + "iterate-iterator": "^1.0.1" }, - "engines": { - "node": ">=10" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/yargs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", + "node_modules/java-properties": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-1.0.2.tgz", + "integrity": "sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==", "dev": true, - "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 0.6.0" } }, - "node_modules/yargs/node_modules/string-width": { - "version": "4.2.2", + "node_modules/jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", + "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", "dev": true, - "license": "MIT", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "@jest/core": "^27.5.1", + "import-local": "^3.0.2", + "jest-cli": "^27.5.1" + }, + "bin": { + "jest": "bin/jest.js" }, "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/yargs/node_modules/yargs-parser": { - "version": "20.2.7", + "node_modules/jest-changed-files": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", + "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", "dev": true, - "license": "ISC", + "dependencies": { + "@jest/types": "^27.5.1", + "execa": "^5.0.0", + "throat": "^6.0.1" + }, "engines": { - "node": ">=10" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "node_modules/jest-circus": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", + "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3", + "throat": "^6.0.1" + }, "engines": { - "node": ">=6" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "license": "MIT", + "node_modules/jest-cli": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", + "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", + "dev": true, + "dependencies": { + "@jest/core": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "prompts": "^2.0.1", + "yargs": "^16.2.0" + }, + "bin": { + "jest": "bin/jest.js" + }, "engines": { - "node": ">=10" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "packages/api": { - "version": "0.38.0", - "license": "AGPL-3.0-or-later", + "node_modules/jest-config": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", + "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", + "dev": true, "dependencies": { - "@graphql-tools/graphql-file-loader": "^7.3.5", - "@graphql-tools/load": "^7.5.3", - "@placemarkio/check-geojson": "^0.1.8", - "@sentry/node": "^6.18.2", - "@sentry/types": "^6.18.2", - "@sindresorhus/slugify": "^1.1.2", - "@turf/center": "^6.5.0", - "@turf/intersect": "^6.5.0", - "@types/basic-auth": "^1.1.3", - "@types/bcryptjs": "^2.4.2", - "@types/compression": "1.7.2", - "@types/cookie-parser": "^1.4.2", - "@types/cors": "^2.8.12", - "@types/cron": "^1.7.3", - "@types/dateformat": "^5.0.0", - "@types/express": "^4.17.13", - "@types/express-jwt": "6.0.4", - "@types/express-serve-static-core": "^4.17.28", - "@types/geojson": "^7946.0.8", - "@types/graphql-type-json": "^0.3.2", - "@types/graphql-upload": "^8.0.11", - "@types/jest": "^27.4.1", - "@types/jsonwebtoken": "^8.5.8", - "@types/node": "^17.0.21", - "@types/node-fetch": "^2.5.12", - "@types/node-mailjet": "^3.3.8", - "@types/pg": "^8.6.5", - "@types/proj4": "^2.5.2", - "@types/shpjs": "^3.4.1", - "@types/sql-formatter": "^2.3.0", - "basic-auth": "^2.0.1", - "bcryptjs": "^2.4.3", - "camelcase": "^6.3.0", - "cerbere": "^0.2.3", - "chalk": "^4.1.2", - "compression": "^1.7.4", - "cookie-parser": "^1.4.6", - "cors": "^2.8.5", - "cron": "^1.8.2", - "cross-env": "^7.0.3", - "crypto-random-string": "^3.3.1", - "dateformat": "^4.5.1", - "decamelize": "^5.0.0", - "dotenv": "^16.0.0", - "email-regex": "4.0.0", - "express": "^4.17.3", - "express-graphql": "^0.12.0", - "express-jwt": "^6.1.1", - "geojson-rewind": "^0.3.1", - "graphql": "^16.3.0", - "graphql-fields": "^2.0.3", - "graphql-scalars": "^1.15.0", - "graphql-type-json": "^0.3.2", - "graphql-upload": "^13.0.0", - "html-to-text": "^8.1.0", - "jsondiffpatch": "^0.4.1", - "jsonwebtoken": "^8.5.1", - "jszip": "^3.7.1", - "knex": "1.0.4", - "make-dir": "^3.1.0", - "matomo-tracker": "^2.2.4", - "node-fetch": "^2.6.5", - "node-mailjet": "^3.3.7", - "objection": "^3.0.1", - "p-queue": "^6.6.2", - "pg": "^8.7.3", - "proj4": "^2.8.0", - "shpjs": "^4.0.2", - "ts-node": "^10.7.0", - "tus-node-server": "^0.5.2", - "typescript": "^4.6.2", - "winston": "^3.6.0", - "xlsx": "^0.18.4" - }, - "devDependencies": { + "@babel/core": "^7.8.0", + "@jest/test-sequencer": "^27.5.1", "@jest/types": "^27.5.1", - "@semantic-release/changelog": "^6.0.1", - "@semantic-release/git": "^10.0.1", - "@types/supertest": "^2.0.11", - "@typescript-eslint/eslint-plugin": "^5.15.0", - "@typescript-eslint/parser": "^5.15.0", - "codecov": "^3.8.3", - "commitizen": "^4.2.4", - "cz-conventional-changelog": "^3.3.0", - "eslint": "^8.11.0", - "eslint-config-prettier": "^8.5.0", - "eslint-config-standard": "^17.0.0-1", - "eslint-plugin-import": "^2.25.4", - "eslint-plugin-jest": "^26.1.1", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^6.0.0", - "eslint-plugin-standard": "^5.0.0", - "eslint-plugin-tsdoc": "^0.2.14", - "husky": "^7.0.4", - "jest": "^27.5.1", - "lint-staged": "^12.3.6", - "nodemon": "^2.0.15", - "npm-check-updates": "^12.5.3", - "pg-escape": "^0.2.0", - "prettier-eslint": "^13.0.0", - "semantic-release": "^19.0.2", - "sql-formatter": "^4.0.2", - "standard-version": "^9.3.2", - "supertest": "^6.2.2", - "ts-jest": "^27.1.3", - "typedoc": "^0.21.9", - "typedoc-plugin-pages-fork": "^0.0.1", - "typedoc-plugin-sourcefile-url": "^1.0.6" + "babel-jest": "^27.5.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.9", + "jest-circus": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-jasmine2": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" }, "engines": { - "node": ">=16.12.0", - "npm": ">=7.24.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + } } - } - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.12.11", + }, + "node_modules/jest-config/node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, - "requires": { - "@babel/highlight": "^7.10.4" + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "@babel/compat-data": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz", - "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==", - "dev": true + "node_modules/jest-diff": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } }, - "@babel/core": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.8.tgz", - "integrity": "sha512-3UG9dsxvYBMYwRv+gS41WKHno4K60/9GPy1CJaH6xy3Elq8CTtvtjT5R5jmNhXfCYLX2mTw+7/aq5ak/gOE0og==", + "node_modules/jest-docblock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", + "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", "dev": true, - "requires": { - "@babel/code-frame": "^7.15.8", - "@babel/generator": "^7.15.8", - "@babel/helper-compilation-targets": "^7.15.4", - "@babel/helper-module-transforms": "^7.15.8", - "@babel/helpers": "^7.15.4", - "@babel/parser": "^7.15.8", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.6", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" - }, "dependencies": { - "@babel/code-frame": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz", - "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==", - "dev": true, - "requires": { - "@babel/highlight": "^7.14.5" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "@babel/generator": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz", - "integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==", + "node_modules/jest-each": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", + "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", "dev": true, - "requires": { - "@babel/types": "^7.15.6", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - }, "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "@babel/helper-compilation-targets": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz", - "integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==", + "node_modules/jest-environment-jsdom": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", + "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", "dev": true, - "requires": { - "@babel/compat-data": "^7.15.0", - "@babel/helper-validator-option": "^7.14.5", - "browserslist": "^4.16.6", - "semver": "^6.3.0" - }, "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1", + "jsdom": "^16.6.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "@babel/helper-function-name": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", - "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", + "node_modules/jest-environment-node": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", + "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.15.4", - "@babel/template": "^7.15.4", - "@babel/types": "^7.15.4" + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "@babel/helper-get-function-arity": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", - "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "node_modules/jest-fetch-mock": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/jest-fetch-mock/-/jest-fetch-mock-3.0.3.tgz", + "integrity": "sha512-Ux1nWprtLrdrH4XwE7O7InRY6psIi3GOsqNESJgMJ+M5cv4A8Lh7SN9d2V2kKRZ8ebAfcd1LNyZguAOb6JiDqw==", "dev": true, - "requires": { - "@babel/types": "^7.15.4" + "dependencies": { + "cross-fetch": "^3.0.4", + "promise-polyfill": "^8.1.3" } }, - "@babel/helper-hoist-variables": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", - "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", - "dev": true, - "requires": { - "@babel/types": "^7.15.4" + "node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "@babel/helper-member-expression-to-functions": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", - "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", + "node_modules/jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", "dev": true, - "requires": { - "@babel/types": "^7.15.4" + "dependencies": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" } }, - "@babel/helper-module-imports": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", - "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", + "node_modules/jest-jasmine2": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", + "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", "dev": true, - "requires": { - "@babel/types": "^7.15.4" + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "@babel/helper-module-transforms": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.8.tgz", - "integrity": "sha512-DfAfA6PfpG8t4S6npwzLvTUpp0sS7JrcuaMiy1Y5645laRJIp/LiLGIBbQKaXSInK8tiGNI7FL7L8UvB8gdUZg==", + "node_modules/jest-leak-detector": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", + "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.15.4", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-simple-access": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/helper-validator-identifier": "^7.15.7", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.6" + "dependencies": { + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "@babel/helper-optimise-call-expression": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", - "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", + "node_modules/jest-matcher-utils": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", "dev": true, - "requires": { - "@babel/types": "^7.15.4" + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "@babel/helper-plugin-utils": { + "node_modules/jest-message-util/node_modules/@babel/code-frame": { "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - }, - "@babel/helper-replace-supers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", - "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", "dev": true, - "requires": { - "@babel/helper-member-expression-to-functions": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" + "dependencies": { + "@babel/highlight": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-simple-access": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", - "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", + "node_modules/jest-mock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", + "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", "dev": true, - "requires": { - "@babel/types": "^7.15.4" + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "@babel/helper-split-export-declaration": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", - "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", + "node_modules/jest-pnp-resolver": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", "dev": true, - "requires": { - "@babel/types": "^7.15.4" + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } } }, - "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true - }, - "@babel/helper-validator-option": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", - "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", - "dev": true + "node_modules/jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } }, - "@babel/helpers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz", - "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==", + "node_modules/jest-resolve": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", + "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", "dev": true, - "requires": { - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" + "dependencies": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "@babel/highlight": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.7.tgz", - "integrity": "sha512-aKpPMfLvGO3Q97V0qhw/V2SWNWlwfJknuwAunU7wZLSfrM4xTBvg7E5opUVi1kJTBKihE38CPg4nBiqX83PWYw==", + "node_modules/jest-resolve-dependencies": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", + "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "dependencies": { + "@jest/types": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-snapshot": "^27.5.1" }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runner": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", + "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", + "dev": true, "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "@jest/console": "^27.5.1", + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-leak-detector": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "source-map-support": "^0.5.6", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "@babel/parser": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz", - "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==", - "dev": true - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "node_modules/jest-runtime": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", + "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/globals": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "execa": "^5.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "node_modules/jest-serializer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", + "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "dependencies": { + "@types/node": "*", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "node_modules/jest-serializer-vue": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/jest-serializer-vue/-/jest-serializer-vue-2.0.2.tgz", + "integrity": "sha1-sjjvKGNX7GtIBCG9RxRQUJh9WbM=", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "dependencies": { + "pretty": "2.0.0" } }, - "@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "node_modules/jest-snapshot": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", + "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "dependencies": { + "@babel/core": "^7.7.2", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.0.0", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^27.5.1", + "semver": "^7.3.2" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "node_modules/jest-specific-snapshot": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jest-specific-snapshot/-/jest-specific-snapshot-4.0.0.tgz", + "integrity": "sha512-YdW5P/MVwOizWR0MJwURxdrjdXvdG2MMpXKVGr7dZ2YrBmE6E6Ab74UL3DOYmGmzaCnNAW1CL02pY5MTHE3ulQ==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "dependencies": { + "jest-snapshot": "^26.3.0" + }, + "peerDependencies": { + "jest": ">= 26.0.0" } }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "node_modules/jest-specific-snapshot/node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" } }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "node_modules/jest-specific-snapshot/node_modules/@types/yargs": { + "version": "15.0.14", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", + "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "dependencies": { + "@types/yargs-parser": "*" } }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "node_modules/jest-specific-snapshot/node_modules/diff-sequences": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", + "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "engines": { + "node": ">= 10.14.2" } }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "node_modules/jest-specific-snapshot/node_modules/expect": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz", + "integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-styles": "^4.0.0", + "jest-get-type": "^26.3.0", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-regex-util": "^26.0.0" + }, + "engines": { + "node": ">= 10.14.2" } }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "node_modules/jest-specific-snapshot/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "node_modules/jest-specific-snapshot/node_modules/jest-diff": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", + "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" } }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "node_modules/jest-specific-snapshot/node_modules/jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "engines": { + "node": ">= 10.14.2" } }, - "@babel/plugin-syntax-typescript": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz", - "integrity": "sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==", + "node_modules/jest-specific-snapshot/node_modules/jest-haste-map": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz", + "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "dependencies": { + "@jest/types": "^26.6.2", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^26.0.0", + "jest-serializer": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "micromatch": "^4.0.2", + "sane": "^4.0.3", + "walker": "^1.0.7" + }, + "engines": { + "node": ">= 10.14.2" + }, + "optionalDependencies": { + "fsevents": "^2.1.2" } }, - "@babel/template": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", - "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "node_modules/jest-specific-snapshot/node_modules/jest-matcher-utils": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz", + "integrity": "sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==", "dev": true, - "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4" - }, "dependencies": { - "@babel/code-frame": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz", - "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==", - "dev": true, - "requires": { - "@babel/highlight": "^7.14.5" - } - } + "chalk": "^4.0.0", + "jest-diff": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" } }, - "@babel/traverse": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", - "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", + "node_modules/jest-specific-snapshot/node_modules/jest-message-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", + "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", "dev": true, - "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-hoist-variables": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, "dependencies": { - "@babel/code-frame": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz", - "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==", - "dev": true, - "requires": { - "@babel/highlight": "^7.14.5" - } - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - } + "@babel/code-frame": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2", + "slash": "^3.0.0", + "stack-utils": "^2.0.2" + }, + "engines": { + "node": ">= 10.14.2" } }, - "@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "node_modules/jest-specific-snapshot/node_modules/jest-regex-util": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", + "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.14.9", - "to-fast-properties": "^2.0.0" + "engines": { + "node": ">= 10.14.2" } }, - "@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true + "node_modules/jest-specific-snapshot/node_modules/jest-resolve": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", + "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } }, - "@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==" + "node_modules/jest-specific-snapshot/node_modules/jest-serializer": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz", + "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==", + "dev": true, + "dependencies": { + "@types/node": "*", + "graceful-fs": "^4.2.4" + }, + "engines": { + "node": ">= 10.14.2" + } }, - "@commitlint/execute-rule": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-13.2.0.tgz", - "integrity": "sha512-6nPwpN0hwTYmsH3WM4hCdN+NrMopgRIuQ0aqZa+jnwMoS/g6ljliQNYfL+m5WO306BaIu1W3yYpbW5aI8gEr0g==", + "node_modules/jest-specific-snapshot/node_modules/jest-snapshot": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz", + "integrity": "sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==", "dev": true, - "optional": true + "dependencies": { + "@babel/types": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.0.0", + "chalk": "^4.0.0", + "expect": "^26.6.2", + "graceful-fs": "^4.2.4", + "jest-diff": "^26.6.2", + "jest-get-type": "^26.3.0", + "jest-haste-map": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-resolve": "^26.6.2", + "natural-compare": "^1.4.0", + "pretty-format": "^26.6.2", + "semver": "^7.3.2" + }, + "engines": { + "node": ">= 10.14.2" + } }, - "@commitlint/load": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-13.2.0.tgz", - "integrity": "sha512-Nhkv+hwWCCxWGjmE9jd1U8kfGGCkZVpwzlTtdKxpY+Aj2VCFg3BjY+qA81pMF3oAsIpxchSaZG5llb8kduVjYg==", + "node_modules/jest-specific-snapshot/node_modules/jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", "dev": true, - "optional": true, - "requires": { - "@commitlint/execute-rule": "^13.2.0", - "@commitlint/resolve-extends": "^13.2.0", - "@commitlint/types": "^13.2.0", - "@endemolshinegroup/cosmiconfig-typescript-loader": "^3.0.2", + "dependencies": { + "@jest/types": "^26.6.2", + "@types/node": "*", "chalk": "^4.0.0", - "cosmiconfig": "^7.0.0", - "lodash": "^4.17.19", - "resolve-from": "^5.0.0" + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">= 10.14.2" } }, - "@commitlint/resolve-extends": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-13.2.0.tgz", - "integrity": "sha512-HLCMkqMKtvl1yYLZ1Pm0UpFvd0kYjsm1meLOGZ7VkOd9G/XX+Fr1S2G5AT2zeiDw7WUVYK8lGVMNa319bnV+aw==", + "node_modules/jest-specific-snapshot/node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", "dev": true, - "optional": true, - "requires": { - "import-fresh": "^3.0.0", - "lodash": "^4.17.19", - "resolve-from": "^5.0.0", - "resolve-global": "^1.0.0" + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" } }, - "@commitlint/types": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-13.2.0.tgz", - "integrity": "sha512-RRVHEqmk1qn/dIaSQhvuca6k/6Z54G+r/KyimZ8gnAFielGiGUpsFRhIY3qhd5rXClVxDaa3nlcyTWckSccotQ==", + "node_modules/jest-specific-snapshot/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, - "optional": true, - "requires": { - "chalk": "^4.0.0" + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" } }, - "@cspotcode/source-map-consumer": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", - "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==" + "node_modules/jest-specific-snapshot/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "@cspotcode/source-map-support": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz", - "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==", - "requires": { - "@cspotcode/source-map-consumer": "0.8.0" + "node_modules/jest-specific-snapshot/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" } }, - "@dabh/diagnostics": { - "version": "2.0.2", - "requires": { - "colorspace": "1.1.x", - "enabled": "2.0.x", - "kuler": "^2.0.0" + "node_modules/jest-specific-snapshot/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" } }, - "@endemolshinegroup/cosmiconfig-typescript-loader": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@endemolshinegroup/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-3.0.2.tgz", - "integrity": "sha512-QRVtqJuS1mcT56oHpVegkKBlgtWjXw/gHNWO3eL9oyB5Sc7HBoc2OLG/nYpVfT/Jejvo3NUrD0Udk7XgoyDKkA==", + "node_modules/jest-specific-snapshot/node_modules/pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", "dev": true, - "optional": true, - "requires": { - "lodash.get": "^4", - "make-error": "^1", - "ts-node": "^9", - "tslib": "^2" - }, "dependencies": { - "ts-node": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz", - "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==", - "dev": true, - "optional": true, - "requires": { - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "source-map-support": "^0.5.17", - "yn": "3.1.1" - } - } + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" } }, - "@eslint/eslintrc": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.1.tgz", - "integrity": "sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ==", + "node_modules/jest-specific-snapshot/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.3.1", - "globals": "^13.9.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-specific-snapshot/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, "dependencies": { - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - } + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "@gar/promisify": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "node_modules/jest-specific-snapshot/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-transform-stub": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jest-transform-stub/-/jest-transform-stub-2.0.0.tgz", + "integrity": "sha512-lspHaCRx/mBbnm3h4uMMS3R5aZzMwyNpNIJLXj4cEsV0mIUtS4IjYJLSoyjRCtnxb6RIGJ4NL2quZzfIeNhbkg==", "dev": true }, - "@google-cloud/common": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-3.9.0.tgz", - "integrity": "sha512-R9PfmCKbpOizvcLY+fz/TS4HdOQhvmf4EY4xEXvWnotGbGXujuTLJTJ2URy8BGT8TDxlh6gjjfEwjJ8McnNPIg==", - "requires": { - "@google-cloud/projectify": "^2.0.0", - "@google-cloud/promisify": "^2.0.0", - "arrify": "^2.0.1", - "duplexify": "^4.1.1", - "ent": "^2.2.0", - "extend": "^3.0.2", - "google-auth-library": "^7.9.2", - "retry-request": "^4.2.2", - "teeny-request": "^7.0.0" - }, + "node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, "dependencies": { - "arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==" - } + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "@google-cloud/paginator": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-3.0.7.tgz", - "integrity": "sha512-jJNutk0arIQhmpUUQJPJErsojqo834KcyB6X7a1mxuic8i1tKXxde8E69IZxNZawRIlZdIK2QY4WALvlK5MzYQ==", - "requires": { - "arrify": "^2.0.0", - "extend": "^3.0.2" - }, + "node_modules/jest-validate": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", + "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", + "dev": true, "dependencies": { - "arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==" - } + "@jest/types": "^27.5.1", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "leven": "^3.1.0", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "@google-cloud/projectify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-2.1.1.tgz", - "integrity": "sha512-+rssMZHnlh0twl122gXY4/aCrk0G1acBqkHFfYddtsqpYXGxA29nj9V5V9SfC+GyOG00l650f6lG9KL+EpFEWQ==" + "node_modules/jest-watcher": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", + "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", + "dev": true, + "dependencies": { + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^27.5.1", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } }, - "@google-cloud/promisify": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-2.0.4.tgz", - "integrity": "sha512-j8yRSSqswWi1QqUGKVEKOG03Q7qOoZP6/h2zN2YO+F5h2+DHU0bSrHCK9Y7lo2DI9fBd8qGAw795sf+3Jva4yA==" + "node_modules/jest-watcher/node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "@google-cloud/storage": { - "version": "5.18.2", - "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-5.18.2.tgz", - "integrity": "sha512-hL/6epBF2uPt7YtJoOKI6mVxe6RsKBs7S8o2grE0bFGdQKSOngVHBcstH8jDw7aN2rXGouA2TfVTxH+VapY5cg==", - "requires": { - "@google-cloud/common": "^3.8.1", - "@google-cloud/paginator": "^3.0.7", - "@google-cloud/promisify": "^2.0.0", - "abort-controller": "^3.0.0", - "arrify": "^2.0.0", - "async-retry": "^1.3.3", - "compressible": "^2.0.12", - "configstore": "^5.0.0", - "date-and-time": "^2.0.0", - "duplexify": "^4.0.0", - "extend": "^3.0.2", - "gaxios": "^4.0.0", - "get-stream": "^6.0.0", - "google-auth-library": "^7.0.0", - "hash-stream-validation": "^0.2.2", - "mime": "^3.0.0", - "mime-types": "^2.0.8", - "p-limit": "^3.0.1", - "pumpify": "^2.0.0", - "snakeize": "^0.1.0", - "stream-events": "^1.0.4", - "xdg-basedir": "^4.0.0" + "node_modules/jest-watcher/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, "dependencies": { - "arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==" - }, - "mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==" - } + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" } }, - "@graphql-tools/graphql-file-loader": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/@graphql-tools/graphql-file-loader/-/graphql-file-loader-7.3.5.tgz", - "integrity": "sha512-TBWDA7EV/cmFFUlN2eT9JqYIkiOGEtwwOgzzPcjM9HlPrbKjQkPIJ9Jaxp7aKWbSGhJ+PnbZ7vFLFLGKsCYOjg==", - "requires": { - "@graphql-tools/import": "6.6.7", - "@graphql-tools/utils": "8.6.3", - "globby": "^11.0.3", - "tslib": "~2.3.0", - "unixify": "^1.0.0" + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "@graphql-tools/import": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/@graphql-tools/import/-/import-6.6.7.tgz", - "integrity": "sha512-zzpnVtmdel3mKz6i46GUib4wn0K5dosq4OTBl4avKV6ElvgZTkvsvfSv2aRhbRGIT4VnZPXLfzSnmYd8e+SRLQ==", - "requires": { - "@graphql-tools/utils": "8.6.3", - "resolve-from": "5.0.0", - "tslib": "~2.3.0" + "node_modules/jju": { + "version": "1.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/jmespath": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz", + "integrity": "sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==", + "engines": { + "node": ">= 0.6.0" } }, - "@graphql-tools/load": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/@graphql-tools/load/-/load-7.5.3.tgz", - "integrity": "sha512-GYwLyGfX1nKUxg6rnTIdryv9d+ugFRTm2q11+IqNsajwNhxJExkx+e/h81AQR5382sAmPEIT+E1J1VS3xNfjyg==", - "requires": { - "@graphql-tools/schema": "8.3.3", - "@graphql-tools/utils": "8.6.3", - "p-limit": "3.1.0", - "tslib": "~2.3.0" + "node_modules/js-base64": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", + "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==", + "dev": true + }, + "node_modules/js-beautify": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.0.tgz", + "integrity": "sha512-yuck9KirNSCAwyNJbqW+BxJqJ0NLJ4PwBUzQQACl5O3qHMBXVkXb/rD0ilh/Lat/tn88zSZ+CAHOlk0DsY7GuQ==", + "dev": true, + "dependencies": { + "config-chain": "^1.1.12", + "editorconfig": "^0.15.3", + "glob": "^7.1.3", + "nopt": "^5.0.0" + }, + "bin": { + "css-beautify": "js/bin/css-beautify.js", + "html-beautify": "js/bin/html-beautify.js", + "js-beautify": "js/bin/js-beautify.js" + }, + "engines": { + "node": ">=10" } }, - "@graphql-tools/merge": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.2.4.tgz", - "integrity": "sha512-hiNRTsS948F+BB4Q7CZXLaGFOIHQzmimVq3EEI/+PQZsPb7kYDzg0Ow0GyV4conDdEiooLqHf7I1dWzTYwvs0A==", - "requires": { - "@graphql-tools/utils": "8.6.3", - "tslib": "~2.3.0" + "node_modules/js-string-escape": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", + "integrity": "sha1-4mJbrbwNZ8dTPp7cEGjFh65BN+8=", + "dev": true, + "engines": { + "node": ">= 0.8" } }, - "@graphql-tools/schema": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.3.3.tgz", - "integrity": "sha512-OrRLU9/7UmkDemeyNUy62uH+FofgV3bpVVZJprc9bhe3gZsY7kQNIdY7H1unINlepjLvGOgk7u7iLo2+EhjyWw==", - "requires": { - "@graphql-tools/merge": "8.2.4", - "@graphql-tools/utils": "8.6.3", - "tslib": "~2.3.0", - "value-or-promise": "1.0.11" + "node_modules/js-stringify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", + "integrity": "sha1-Fzb939lyTyijaCrcYjCufk6Weds=", + "dev": true + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "@graphql-tools/utils": { - "version": "8.6.3", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.6.3.tgz", - "integrity": "sha512-CNyP7Uu7dlVMQ32IpHWOxz4yic9BYXXVkDhG0UdTKSszvzHdgMilemE9MpUrGzzBPsTe3aYTtNGyPUkyh9yTXA==", - "requires": { - "tslib": "~2.3.0" + "node_modules/jscodeshift": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.7.1.tgz", + "integrity": "sha512-YMkZSyoc8zg5woZL23cmWlnFLPH/mHilonGA7Qbzs7H6M4v4PH0Qsn4jeDyw+CHhVoAnm9UxQyB0Yw1OT+mktA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.1.6", + "@babel/parser": "^7.1.6", + "@babel/plugin-proposal-class-properties": "^7.1.0", + "@babel/plugin-proposal-object-rest-spread": "^7.0.0", + "@babel/preset-env": "^7.1.6", + "@babel/preset-flow": "^7.0.0", + "@babel/preset-typescript": "^7.1.0", + "@babel/register": "^7.0.0", + "babel-core": "^7.0.0-bridge.0", + "colors": "^1.1.2", + "flow-parser": "0.*", + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "neo-async": "^2.5.0", + "node-dir": "^0.1.17", + "recast": "^0.18.1", + "temp": "^0.8.1", + "write-file-atomic": "^2.3.0" + }, + "bin": { + "jscodeshift": "bin/jscodeshift.js" } }, - "@humanwhocodes/config-array": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", - "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "node_modules/jscodeshift/node_modules/ast-types": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.3.tgz", + "integrity": "sha512-XTZ7xGML849LkQP86sWdQzfhwbt3YwIO6MqbX9mUNYY98VKaaVZP7YNNm70IpwecbkkxmfC5IYAzOQ/2p29zRA==", "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.4" + "engines": { + "node": ">=4" } }, - "@humanwhocodes/momoa": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/momoa/-/momoa-2.0.3.tgz", - "integrity": "sha512-SytjS6gJk+LXSWFuEm0V9ASdgxlX/BDq6A+6gfh7TaHM90xppBydjcM3SFaziZP4ikKmhUOhPkDi2KktzElnQQ==" + "node_modules/jscodeshift/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } }, - "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true + "node_modules/jscodeshift/node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true, + "engines": { + "node": ">=0.1.90" + } }, - "@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "node_modules/jscodeshift/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, - "requires": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - } + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "node_modules/jscodeshift/node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, - "@jest/console": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", - "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", + "node_modules/jscodeshift/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", - "slash": "^3.0.0" + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" } }, - "@jest/core": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", - "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", + "node_modules/jscodeshift/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, - "requires": { - "@jest/console": "^27.5.1", - "@jest/reporters": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.8.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^27.5.1", - "jest-config": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-resolve-dependencies": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "jest-watcher": "^27.5.1", - "micromatch": "^4.0.4", - "rimraf": "^3.0.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, "dependencies": { - "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "requires": { - "type-fest": "^0.21.3" - } - }, - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true - } + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, - "@jest/environment": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", - "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", + "node_modules/jscodeshift/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, - "requires": { - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1" + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" } }, - "@jest/fake-timers": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", - "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", + "node_modules/jscodeshift/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "@sinonjs/fake-timers": "^8.0.1", - "@types/node": "*", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "@jest/globals": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", - "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", + "node_modules/jscodeshift/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true, - "requires": { - "@jest/environment": "^27.5.1", - "@jest/types": "^27.5.1", - "expect": "^27.5.1" + "engines": { + "node": ">=0.10.0" } }, - "@jest/reporters": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", - "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", - "dev": true, - "requires": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-haste-map": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "slash": "^3.0.0", - "source-map": "^0.6.0", - "string-length": "^4.0.1", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^8.1.0" - } - }, - "@jest/source-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", - "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", + "node_modules/jscodeshift/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dev": true, - "requires": { - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9", - "source-map": "^0.6.0" + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, - "@jest/test-result": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", - "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", + "node_modules/jscodeshift/node_modules/micromatch/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "dev": true, - "requires": { - "@jest/console": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "@jest/test-sequencer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", - "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", + "node_modules/jscodeshift/node_modules/recast": { + "version": "0.18.10", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.18.10.tgz", + "integrity": "sha512-XNvYvkfdAN9QewbrxeTOjgINkdY/odTgTS56ZNEWL9Ml0weT4T3sFtvnTuF+Gxyu46ANcRm1ntrF6F5LAJPAaQ==", "dev": true, - "requires": { - "@jest/test-result": "^27.5.1", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-runtime": "^27.5.1" + "dependencies": { + "ast-types": "0.13.3", + "esprima": "~4.0.0", + "private": "^0.1.8", + "source-map": "~0.6.1" + }, + "engines": { + "node": ">= 4" } }, - "@jest/transform": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", - "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "node_modules/jscodeshift/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", "dev": true, - "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.5.1", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-util": "^27.5.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "node_modules/jscodeshift/node_modules/write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@mapbox/geojson-area": { - "version": "0.2.2", - "requires": { - "wgs84": "0.0.0" + "dependencies": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" } }, - "@microsoft/tsdoc": { - "version": "0.13.2", - "dev": true - }, - "@microsoft/tsdoc-config": { - "version": "0.15.2", + "node_modules/jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", "dev": true, - "requires": { - "@microsoft/tsdoc": "0.13.2", - "ajv": "~6.12.6", - "jju": "~1.4.0", - "resolve": "~1.19.0" - }, "dependencies": { - "resolve": { - "version": "1.19.0", - "dev": true, - "requires": { - "is-core-module": "^2.1.0", - "path-parse": "^1.0.6" - } + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true } } }, - "@nodelib/fs.scandir": { - "version": "2.1.4", - "requires": { - "@nodelib/fs.stat": "2.0.4", - "run-parallel": "^1.1.9" + "node_modules/jsdom/node_modules/acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" } }, - "@nodelib/fs.stat": { - "version": "2.0.4" - }, - "@nodelib/fs.walk": { - "version": "1.2.6", - "requires": { - "@nodelib/fs.scandir": "2.1.4", - "fastq": "^1.6.0" + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" } }, - "@npmcli/fs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", - "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", - "dev": true, - "requires": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" + "node_modules/json-bigint": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "bignumber.js": "^9.0.0" } }, - "@npmcli/git": { + "node_modules/json-buffer": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.0.tgz", - "integrity": "sha512-xfSBJ+KBMZWWqRHFbEgIaXG/LtELHrQZMJ72Gkb3yWdHysu/7+VGOs8ME0c3td7QNQX57Ggo3kYL6ylcd70/kA==", "dev": true, - "requires": { - "@npmcli/promise-spawn": "^1.3.2", - "lru-cache": "^7.3.1", - "mkdirp": "^1.0.4", - "npm-pick-manifest": "^7.0.0", - "proc-log": "^2.0.0", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^2.0.2" - }, - "dependencies": { - "lru-cache": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.6.0.tgz", - "integrity": "sha512-zjOf6cyMI7rcN+5MtLsT4GnDjc6D9XHi8kYcsfXTqWC+yLdSiU3/jtEPX9wZE77+XLtnmdIWu3+291hkizfH+Q==", - "dev": true - } - } + "license": "MIT" }, - "@npmcli/installed-package-contents": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", - "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", + "node_modules/json-parse-better-errors": { + "version": "1.0.2", "dev": true, - "requires": { - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" - } + "license": "MIT" }, - "@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", "dev": true, - "requires": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - } + "license": "MIT" }, - "@npmcli/node-gyp": { + "node_modules/json-parse-helpfulerror": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz", - "integrity": "sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA==", - "dev": true - }, - "@npmcli/promise-spawn": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz", - "integrity": "sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg==", "dev": true, - "requires": { - "infer-owner": "^1.0.4" + "license": "MIT", + "dependencies": { + "jju": "^1.1.0" } }, - "@npmcli/run-script": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-3.0.1.tgz", - "integrity": "sha512-o2fkld5hYwu9sKYzoXTpqEocMnDLaigobaPzLaGB63k/ExmLBTaB+KpfKlpcIePPnuP8RFR+0GDI4KopJCM6Xg==", + "node_modules/json-schema-traverse": { + "version": "0.4.1", "dev": true, - "requires": { - "@npmcli/node-gyp": "^1.0.3", - "@npmcli/promise-spawn": "^1.3.2", - "node-gyp": "^9.0.0", - "read-package-json-fast": "^2.0.3" - } + "license": "MIT" }, - "@octokit/auth-token": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", - "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", "dev": true, - "requires": { - "@octokit/types": "^6.0.3" - } + "license": "MIT" }, - "@octokit/core": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.5.1.tgz", - "integrity": "sha512-omncwpLVxMP+GLpLPgeGJBF6IWJFjXDS5flY5VbppePYX9XehevbDykRH9PdCdvqt9TS5AOTiDide7h0qrkHjw==", + "node_modules/json-stringify-safe": { + "version": "5.0.1", "dev": true, - "requires": { - "@octokit/auth-token": "^2.4.4", - "@octokit/graphql": "^4.5.8", - "@octokit/request": "^5.6.0", - "@octokit/request-error": "^2.0.5", - "@octokit/types": "^6.0.3", - "before-after-hook": "^2.2.0", - "universal-user-agent": "^6.0.0" + "license": "ISC" + }, + "node_modules/json2csv": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/json2csv/-/json2csv-5.0.7.tgz", + "integrity": "sha512-YRZbUnyaJZLZUJSRi2G/MqahCyRv9n/ds+4oIetjDF3jWQA7AG7iSeKTiZiCNqtMZM7HDyt0e/W6lEnoGEmMGA==", + "dev": true, + "dependencies": { + "commander": "^6.1.0", + "jsonparse": "^1.3.1", + "lodash.get": "^4.4.2" + }, + "bin": { + "json2csv": "bin/json2csv.js" + }, + "engines": { + "node": ">= 10", + "npm": ">= 6.13.0" } }, - "@octokit/endpoint": { - "version": "6.0.12", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", - "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", + "node_modules/json2csv/node_modules/commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", "dev": true, - "requires": { - "@octokit/types": "^6.0.3", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" + "engines": { + "node": ">= 6" } }, - "@octokit/graphql": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", - "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", + "node_modules/json5": { + "version": "2.2.0", "dev": true, - "requires": { - "@octokit/request": "^5.6.0", - "@octokit/types": "^6.0.3", - "universal-user-agent": "^6.0.0" + "license": "MIT", + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" } }, - "@octokit/openapi-types": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-11.2.0.tgz", - "integrity": "sha512-PBsVO+15KSlGmiI8QAzaqvsNlZlrDlyAJYcrXBCvVUxCp7VnXjkwPoFHgjEJXx3WF9BAwkA6nfCUA7i9sODzKA==", + "node_modules/jsonc-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", + "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", "dev": true }, - "@octokit/plugin-paginate-rest": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.17.0.tgz", - "integrity": "sha512-tzMbrbnam2Mt4AhuyCHvpRkS0oZ5MvwwcQPYGtMv4tUa5kkzG58SVB0fcsLulOZQeRnOgdkZWkRUiyBlh0Bkyw==", - "dev": true, - "requires": { - "@octokit/types": "^6.34.0" + "node_modules/jsondiffpatch": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/jsondiffpatch/-/jsondiffpatch-0.4.1.tgz", + "integrity": "sha512-t0etAxTUk1w5MYdNOkZBZ8rvYYN5iL+2dHCCx/DpkFm/bW28M6y5nUS83D4XdZiHy35Fpaw6LBb+F88fHZnVCw==", + "dependencies": { + "chalk": "^2.3.0", + "diff-match-patch": "^1.0.0" + }, + "bin": { + "jsondiffpatch": "bin/jsondiffpatch" + }, + "engines": { + "node": ">=8.17.0" } }, - "@octokit/plugin-request-log": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", - "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", - "dev": true, - "requires": {} - }, - "@octokit/plugin-rest-endpoint-methods": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.13.0.tgz", - "integrity": "sha512-uJjMTkN1KaOIgNtUPMtIXDOjx6dGYysdIFhgA52x4xSadQCz3b/zJexvITDVpANnfKPW/+E0xkOvLntqMYpviA==", - "dev": true, - "requires": { - "@octokit/types": "^6.34.0", - "deprecation": "^2.3.1" + "node_modules/jsondiffpatch/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" } }, - "@octokit/request": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.2.tgz", - "integrity": "sha512-je66CvSEVf0jCpRISxkUcCa0UkxmFs6eGDRSbfJtAVwbLH5ceqF+YEyC8lj8ystKyZTy8adWr0qmkY52EfOeLA==", - "dev": true, - "requires": { - "@octokit/endpoint": "^6.0.1", - "@octokit/request-error": "^2.1.0", - "@octokit/types": "^6.16.1", - "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.1", - "universal-user-agent": "^6.0.0" + "node_modules/jsondiffpatch/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" } }, - "@octokit/request-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", - "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", - "dev": true, - "requires": { - "@octokit/types": "^6.0.3", - "deprecation": "^2.0.0", - "once": "^1.4.0" + "node_modules/jsondiffpatch/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" } }, - "@octokit/rest": { - "version": "18.12.0", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-18.12.0.tgz", - "integrity": "sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q==", - "dev": true, - "requires": { - "@octokit/core": "^3.5.1", - "@octokit/plugin-paginate-rest": "^2.16.8", - "@octokit/plugin-request-log": "^1.0.4", - "@octokit/plugin-rest-endpoint-methods": "^5.12.0" + "node_modules/jsondiffpatch/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "node_modules/jsondiffpatch/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "engines": { + "node": ">=0.8.0" } }, - "@octokit/types": { - "version": "6.34.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz", - "integrity": "sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw==", - "dev": true, - "requires": { - "@octokit/openapi-types": "^11.2.0" + "node_modules/jsondiffpatch/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "engines": { + "node": ">=4" } }, - "@placemarkio/check-geojson": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/@placemarkio/check-geojson/-/check-geojson-0.1.8.tgz", - "integrity": "sha512-MLt5Pe6j/iNjG1H55wJUw/g0wu6rcEpnNuLYdfn9d6IfHgYpKY3aID2BOj3DWSGS/1e9MevcPKLOFwaIH/2cLg==", - "requires": { - "@humanwhocodes/momoa": "^2.0.3", - "@types/geojson": "^7946.0.8", - "@types/jest": "^27.4.0", - "type-fest": "^2.12.0" - }, + "node_modules/jsondiffpatch/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dependencies": { - "type-fest": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.12.0.tgz", - "integrity": "sha512-Qe5GRT+n/4GoqCNGGVp5Snapg1Omq3V7irBJB3EaKsp7HWDo5Gv2d/67gfNyV+d5EXD+x/RF5l1h4yJ7qNkcGA==" - } + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "@selderee/plugin-htmlparser2": { - "version": "0.6.0", - "requires": { - "domhandler": "^4.2.0", - "selderee": "^0.6.0" - } + "node_modules/jsonfile": { + "version": "4.0.0", + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonlines": { + "version": "0.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "dev": true, + "engines": [ + "node >= 0.2.0" + ], + "license": "MIT" + }, + "node_modules/JSONStream": { + "version": "1.3.5", + "dev": true, + "license": "(MIT OR Apache-2.0)", + "dependencies": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + }, + "bin": { + "JSONStream": "bin.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/jsonwebtoken": { + "version": "8.5.1", + "license": "MIT", + "dependencies": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=4", + "npm": ">=1.4.28" + } + }, + "node_modules/jsonwebtoken/node_modules/semver": { + "version": "5.7.1", + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/jstransformer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", + "integrity": "sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM=", + "dev": true, + "dependencies": { + "is-promise": "^2.0.0", + "promise": "^7.0.1" + } + }, + "node_modules/jszip": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.7.1.tgz", + "integrity": "sha512-ghL0tz1XG9ZEmRMcEN2vt7xabrDdqHHeykgARpmZ0BiIctWxM47Vt63ZO2dnp4QYt/xJVLLy5Zv1l/xRdh2byg==", + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "set-immediate-shim": "~1.0.1" + } + }, + "node_modules/junk": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz", + "integrity": "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jwa": { + "version": "1.4.1", + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "3.2.2", + "license": "MIT", + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/keyv": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.0" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.9" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/klona": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", + "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/knex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/knex/-/knex-1.0.4.tgz", + "integrity": "sha512-cMQ81fpkVmr4ia20BtyrD3oPere/ir/Q6IGLAgcREKOzRVhMsasQ4nx1VQuDRJjqq6oK5kfcxmvWoYkHKrnuMA==", + "dependencies": { + "colorette": "2.0.16", + "commander": "^8.3.0", + "debug": "4.3.3", + "escalade": "^3.1.1", + "esm": "^3.2.25", + "getopts": "2.3.0", + "interpret": "^2.2.0", + "lodash": "^4.17.21", + "pg-connection-string": "2.5.0", + "rechoir": "^0.8.0", + "resolve-from": "^5.0.0", + "tarn": "^3.0.2", + "tildify": "2.0.0" + }, + "bin": { + "knex": "bin/cli.js" + }, + "engines": { + "node": ">=12" + }, + "peerDependenciesMeta": { + "@vscode/sqlite3": { + "optional": true + }, + "better-sqlite3": { + "optional": true + }, + "mysql": { + "optional": true + }, + "mysql2": { + "optional": true + }, + "pg": { + "optional": true + }, + "pg-native": { + "optional": true + }, + "tedious": { + "optional": true + } + } + }, + "node_modules/knex/node_modules/rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "dependencies": { + "resolve": "^1.20.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/known-css-properties": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.24.0.tgz", + "integrity": "sha512-RTSoaUAfLvpR357vWzAz/50Q/BmHfmE6ETSWfutT0AJiw10e6CmcdYRQJlLRd95B53D0Y2aD1jSxD3V3ySF+PA==", + "dev": true + }, + "node_modules/kuler": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/latest-version": { + "version": "5.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "package-json": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lazy-universal-dotenv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lazy-universal-dotenv/-/lazy-universal-dotenv-3.0.1.tgz", + "integrity": "sha512-prXSYk799h3GY3iOWnC6ZigYzMPjxN2svgjJ9shk7oMadSNX3wXy0B6F32PMJv7qtMnrIbUxoEHzbutvxR2LBQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.5.0", + "app-root-dir": "^1.0.2", + "core-js": "^3.0.4", + "dotenv": "^8.0.0", + "dotenv-expand": "^5.1.0" + }, + "engines": { + "node": ">=6.0.0", + "npm": ">=6.0.0", + "yarn": ">=1.0.0" + } + }, + "node_modules/lazy-universal-dotenv/node_modules/dotenv": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", + "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/leaflet": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.7.1.tgz", + "integrity": "sha512-/xwPEBidtg69Q3HlqPdU3DnrXQOvQU/CCHA1tcDQVzOwm91YMYaILjNp7L4Eaw5Z4sOYdbBz6koWyibppd8Zqw==", + "dev": true + }, + "node_modules/leaflet-fullscreen": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/leaflet-fullscreen/-/leaflet-fullscreen-1.0.2.tgz", + "integrity": "sha1-CcYcS6xF9jsu4Sav2H5c2XZQ/Bs=", + "dev": true + }, + "node_modules/leaflet-gesture-handling": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/leaflet-gesture-handling/-/leaflet-gesture-handling-1.2.2.tgz", + "integrity": "sha512-Blf5V4PoNphWkzL7Y1qge+Spkd4OCQ2atjwUNhMhLIcjKzPcBH++x/lwOinaR9jSqLWqJ6oKYO8d0XdTffy4hQ==", + "dev": true + }, + "node_modules/leaflet-markers-canvas": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/leaflet-markers-canvas/-/leaflet-markers-canvas-0.2.2.tgz", + "integrity": "sha512-UU/98qrmljhU6Xl3lrsUAUke4Qb/p8BCfmhiw7L1hHtkVMxdRYgwk7RwUW9QNoPbhnmuyxsc90whKjWVVP5cNw==", + "dev": true, + "peerDependencies": { + "leaflet": "^1.7.1", + "rbush": "^3.0.1" + } + }, + "node_modules/leaflet.markercluster": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.3.tgz", + "integrity": "sha512-vPTw/Bndq7eQHjLBVlWpnGeLa3t+3zGiuM7fJwCkiMFq+nmRuG3RI3f7f4N4TDX7T4NpbAXpR2+NTRSEGfCSeA==", + "dev": true, + "peerDependencies": { + "leaflet": "^1.3.1" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/libnpmconfig": { + "version": "1.2.1", + "dev": true, + "license": "ISC", + "dependencies": { + "figgy-pudding": "^3.5.1", + "find-up": "^3.0.0", + "ini": "^1.3.5" + } + }, + "node_modules/libnpmconfig/node_modules/find-up": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/libnpmconfig/node_modules/locate-path": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/libnpmconfig/node_modules/p-limit": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/libnpmconfig/node_modules/p-locate": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/lilconfig": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.4.tgz", + "integrity": "sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.1.6", + "dev": true, + "license": "MIT" + }, + "node_modules/lint-staged": { + "version": "12.3.6", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.3.6.tgz", + "integrity": "sha512-tVNyl/HsAnplKh4oaoRNzyZLm0PE/6VaBUXvd/gA9zhYCC/+ivZwiwpoT6jOxcLzuIOjP19wW+mfOi7/Bw4c1A==", + "dev": true, + "dependencies": { + "cli-truncate": "^3.1.0", + "colorette": "^2.0.16", + "commander": "^8.3.0", + "debug": "^4.3.3", + "execa": "^5.1.1", + "lilconfig": "2.0.4", + "listr2": "^4.0.1", + "micromatch": "^4.0.4", + "normalize-path": "^3.0.0", + "object-inspect": "^1.12.0", + "pidtree": "^0.5.0", + "string-argv": "^0.3.1", + "supports-color": "^9.2.1", + "yaml": "^1.10.2" + }, + "bin": { + "lint-staged": "bin/lint-staged.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/lint-staged" + } + }, + "node_modules/lint-staged/node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lint-staged/node_modules/supports-color": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.2.1.tgz", + "integrity": "sha512-Obv7ycoCTG51N7y175StI9BlAXrmgZrFhZOb0/PyjHBher/NmsdBgbbQ1Inhq+gIhz6+7Gb+jWF2Vqi7Mf1xnQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/listr2": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-4.0.4.tgz", + "integrity": "sha512-vJOm5KD6uZXjSsrwajr+mNacIjf87gWvlBEltPWLbTkslUscWAzquyK4xfe9Zd4RDgO5nnwFyV06FC+uVR+5mg==", + "dev": true, + "dependencies": { + "cli-truncate": "^2.1.0", + "colorette": "^2.0.16", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rfdc": "^1.3.0", + "rxjs": "^7.5.4", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "enquirer": ">= 2.3.0 < 3" + }, + "peerDependenciesMeta": { + "enquirer": { + "optional": true + } + } + }, + "node_modules/listr2/node_modules/cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dev": true, + "dependencies": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/listr2/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/listr2/node_modules/rxjs": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.4.tgz", + "integrity": "sha512-h5M3Hk78r6wAheJF0a5YahB1yRQKCsZ4MsGdZ5O9ETbVtjPcScGfrMmoOq7EBsCRzd4BDkvDJ7ogP8Sz5tTFiQ==", + "dev": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/listr2/node_modules/slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/listr2/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/load-json-file": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/parse-json": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/pify": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/strip-bom": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/loader-runner": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", + "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/localforage": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz", + "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==", + "dev": true, + "dependencies": { + "lie": "3.1.1" + } + }, + "node_modules/localforage/node_modules/lie": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", + "integrity": "sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=", + "dev": true, + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/locate-path": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "license": "MIT" + }, + "node_modules/lodash._baseiteratee": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash._baseiteratee/-/lodash._baseiteratee-4.7.0.tgz", + "integrity": "sha1-NKm1VDVycnw9sueO2uPA6eZr0QI=", + "dev": true, + "dependencies": { + "lodash._stringtopath": "~4.8.0" + } + }, + "node_modules/lodash._basetostring": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-4.12.0.tgz", + "integrity": "sha1-kyfJ3FFYhmt/pLnUL0Y45XZt2d8=", + "dev": true + }, + "node_modules/lodash._baseuniq": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash._baseuniq/-/lodash._baseuniq-4.6.0.tgz", + "integrity": "sha1-DrtE5FaBSveQXGIS+iybLVG4Qeg=", + "dev": true, + "dependencies": { + "lodash._createset": "~4.0.0", + "lodash._root": "~3.0.0" + } + }, + "node_modules/lodash._createset": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/lodash._createset/-/lodash._createset-4.0.3.tgz", + "integrity": "sha1-D0ZZ+7CddRlPqeK4imZE02PJ/iY=", + "dev": true + }, + "node_modules/lodash._root": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", + "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", + "dev": true + }, + "node_modules/lodash._stringtopath": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/lodash._stringtopath/-/lodash._stringtopath-4.8.0.tgz", + "integrity": "sha1-lBvPDmQmbl/B1m/tCmlZVExXaCQ=", + "dev": true, + "dependencies": { + "lodash._basetostring": "~4.12.0" + } + }, + "node_modules/lodash.capitalize": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz", + "integrity": "sha1-+CbJtOKoUR2E46yinbBeGk87cqk=", + "dev": true + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, + "node_modules/lodash.deburr": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/lodash.deburr/-/lodash.deburr-4.1.0.tgz", + "integrity": "sha1-3bG7s+8HRYwBd7oH3hRCLLAz/5s=" + }, + "node_modules/lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha1-ZHYsSGGAglGKw99Mz11YhtriA0c=", + "dev": true + }, + "node_modules/lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", + "dev": true + }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "license": "MIT" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "license": "MIT" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "license": "MIT" + }, + "node_modules/lodash.ismatch": { + "version": "4.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "license": "MIT" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "license": "MIT" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "license": "MIT" + }, + "node_modules/lodash.map": { + "version": "4.6.0", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "license": "MIT" + }, + "node_modules/lodash.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=", + "dev": true + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", + "dev": true + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "node_modules/lodash.uniqby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", + "integrity": "sha1-2ZwHpmnp5tJOE2Lf4mbGdhavEwI=", + "dev": true + }, + "node_modules/log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-update/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-update/node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-update/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-update/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/logform": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.4.0.tgz", + "integrity": "sha512-CPSJw4ftjf517EhXZGGvTHHkYobo7ZCc0kvwUoOYcjfR2UVrI66RHj8MCrfAdEitdmFqbu2BYdYs8FHHZSb6iw==", + "dependencies": { + "@colors/colors": "1.5.0", + "fecha": "^4.2.0", + "ms": "^2.1.1", + "safe-stable-stringify": "^2.3.1", + "triple-beam": "^1.3.0" + } + }, + "node_modules/loglevel": { + "version": "1.7.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/loglevel" + } + }, + "node_modules/loglevel-colored-level-prefix": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^1.1.3", + "loglevel": "^1.4.1" + } + }, + "node_modules/loglevel-colored-level-prefix/node_modules/ansi-regex": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loglevel-colored-level-prefix/node_modules/ansi-styles": { + "version": "2.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loglevel-colored-level-prefix/node_modules/chalk": { + "version": "1.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loglevel-colored-level-prefix/node_modules/escape-string-regexp": { + "version": "1.0.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/loglevel-colored-level-prefix/node_modules/strip-ansi": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loglevel-colored-level-prefix/node_modules/supports-color": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/longest": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/loud-rejection": { + "version": "1.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lowercase-keys": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lowlight": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-1.20.0.tgz", + "integrity": "sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==", + "dev": true, + "dependencies": { + "fault": "^1.0.0", + "highlight.js": "~10.7.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/lru_map": { + "version": "0.3.3", + "license": "MIT" + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/lunr": { + "version": "2.3.9", + "dev": true, + "license": "MIT" + }, + "node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "license": "MIT", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.0", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "license": "ISC" + }, + "node_modules/make-fetch-happen": { + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.0.6.tgz", + "integrity": "sha512-4Gfh6lV3TLXmj7qz79hBFuvVqjYSMW6v2+sxtdX4LFQU0rK3V/txRjE0DoZb7X0IF3t9f8NO3CxPSWlvdckhVA==", + "dev": true, + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^16.0.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.5.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.1.1", + "ssri": "^8.0.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/make-fetch-happen/node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/make-fetch-happen/node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/make-fetch-happen/node_modules/lru-cache": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.6.0.tgz", + "integrity": "sha512-zjOf6cyMI7rcN+5MtLsT4GnDjc6D9XHi8kYcsfXTqWC+yLdSiU3/jtEPX9wZE77+XLtnmdIWu3+291hkizfH+Q==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-obj": { + "version": "4.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/map-or-similar": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/map-or-similar/-/map-or-similar-1.5.0.tgz", + "integrity": "sha1-beJlMXSt+12e3DPGnT6Sobdvrwg=", + "dev": true + }, + "node_modules/map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "dependencies": { + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/markdown-escapes": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz", + "integrity": "sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/markdown-to-jsx": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.1.7.tgz", + "integrity": "sha512-VI3TyyHlGkO8uFle0IOibzpO1c1iJDcXcS/zBrQrXQQvJ2tpdwVzVZ7XdKsyRz1NdRmre4dqQkMZzUHaKIG/1w==", + "dev": true, + "engines": { + "node": ">= 10" + }, + "peerDependencies": { + "react": ">= 0.14.0" + } + }, + "node_modules/marked": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.12.tgz", + "integrity": "sha512-hgibXWrEDNBWgGiK18j/4lkS6ihTe9sxtV4Q1OQppb/0zzyPSzoFANBa5MfsG/zgsWklmNnhm0XACZOH/0HBiQ==", + "dev": true, + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/marked-terminal": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-5.0.0.tgz", + "integrity": "sha512-26604GmGmW63ElxcXpE2xfMdbtgD/qiwIqOh/+5+uPe6NVU4bU433+wvPTfq6NZcGr16KWqwu/dzsKxg3IL2Xw==", + "dev": true, + "dependencies": { + "ansi-escapes": "^5.0.0", + "cardinal": "^2.1.1", + "chalk": "^5.0.0", + "cli-table3": "^0.6.0", + "node-emoji": "^1.11.0", + "supports-hyperlinks": "^2.2.0" + }, + "engines": { + "node": " >=14.13.1 || >=16.0.0" + }, + "peerDependencies": { + "marked": "^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0" + } + }, + "node_modules/marked-terminal/node_modules/ansi-escapes": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-5.0.0.tgz", + "integrity": "sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==", + "dev": true, + "dependencies": { + "type-fest": "^1.0.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/marked-terminal/node_modules/ansicolors": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", + "integrity": "sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk=", + "dev": true + }, + "node_modules/marked-terminal/node_modules/cardinal": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", + "integrity": "sha1-fMEFXYItISlU0HsIXeolHMe8VQU=", + "dev": true, + "dependencies": { + "ansicolors": "~0.3.2", + "redeyed": "~2.1.0" + }, + "bin": { + "cdl": "bin/cdl.js" + } + }, + "node_modules/marked-terminal/node_modules/chalk": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.0.0.tgz", + "integrity": "sha512-/duVOqst+luxCQRKEo4bNxinsOQtMP80ZYm7mMqzuh5PociNL0PvmHFvREJ9ueYL2TxlHjBcmLCdmocx9Vg+IQ==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/marked-terminal/node_modules/redeyed": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz", + "integrity": "sha1-iYS1gV2ZyyIEacme7v/jiRPmzAs=", + "dev": true, + "dependencies": { + "esprima": "~4.0.0" + } + }, + "node_modules/marked-terminal/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mathml-tag-names": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", + "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/matomo-tracker": { + "version": "2.2.4", + "license": "MIT", + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/mdast-squeeze-paragraphs": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-4.0.0.tgz", + "integrity": "sha512-zxdPn69hkQ1rm4J+2Cs2j6wDEv7O17TfXTJ33tl/+JPIoEmtV9t2ZzBM5LPHE8QlHsmVD8t3vPKCyY3oH+H8MQ==", + "dev": true, + "dependencies": { + "unist-util-remove": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-definitions": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz", + "integrity": "sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==", + "dev": true, + "dependencies": { + "unist-util-visit": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-10.0.1.tgz", + "integrity": "sha512-BW3LM9SEMnjf4HXXVApZMt8gLQWVNXc3jryK0nJu/rOXPOnlkUjmdkDlmxMirpbU9ILncGFIwLH/ubnWBbcdgA==", + "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "mdast-util-definitions": "^4.0.0", + "mdurl": "^1.0.0", + "unist-builder": "^2.0.0", + "unist-util-generated": "^1.0.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", + "dev": true + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.1.tgz", + "integrity": "sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw==", + "dev": true, + "dependencies": { + "fs-monkey": "1.0.3" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/memoizerific": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/memoizerific/-/memoizerific-1.11.3.tgz", + "integrity": "sha1-fIekZGREwy11Q4VwkF8tvRsagFo=", + "dev": true, + "dependencies": { + "map-or-similar": "^1.5.0" + } + }, + "node_modules/memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "dependencies": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + }, + "engines": { + "node": ">=4.3.0 <5.0.0 || >=5.10" + } + }, + "node_modules/meow": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", + "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", + "dev": true, + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize": "^1.2.0", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/meow/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/meow/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/meow/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/read-pkg/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/meow/node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/meow/node_modules/read-pkg/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/meow/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge": { + "version": "2.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "license": "MIT" + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mgrs": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/microevent.ts": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/microevent.ts/-/microevent.ts-0.1.1.tgz", + "integrity": "sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g==", + "dev": true + }, + "node_modules/micromatch": { + "version": "4.0.4", + "license": "MIT", + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "dependencies": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, + "node_modules/miller-rabin/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/mime-match/-/mime-match-1.0.2.tgz", + "integrity": "sha1-P4fDHprxpf1IX7nbE0Qosju7e6g=", + "dev": true, + "dependencies": { + "wildcard": "^1.1.0" + } + }, + "node_modules/mime-types": { + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "dependencies": { + "mime-db": "1.51.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "dev": true, + "dependencies": { + "dom-walk": "^0.1.0" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.0.4", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "license": "MIT" + }, + "node_modules/minimist-options": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-fetch": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.0.3.tgz", + "integrity": "sha512-VA+eiiUtaIvpQJXISwE3OiMvQwAWrgKb97F0aXlCS1Ahikr8fEQq8m3Hf7Kv9KT3nokuHigJKsDMB6atU04olQ==", + "dev": true, + "dependencies": { + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-json-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", + "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", + "dev": true, + "dependencies": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "dependencies": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mississippi/node_modules/duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "node_modules/mississippi/node_modules/pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "dependencies": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "node_modules/mississippi/node_modules/pumpify/node_modules/pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "dependencies": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mixin-deep/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mixin-deep/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mixin-deep/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/modify-values": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/moment": { + "version": "2.29.1", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/moment-timezone": { + "version": "0.5.33", + "license": "MIT", + "dependencies": { + "moment": ">= 2.9.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/moo": { + "version": "0.5.1", + "license": "BSD-3-Clause" + }, + "node_modules/move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "dependencies": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "node_modules/move-concurrently/node_modules/aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "node_modules/move-concurrently/node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "node_modules/move-concurrently/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/move-concurrently/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "license": "MIT" + }, + "node_modules/mute-stream": { + "version": "0.0.7", + "dev": true, + "license": "ISC" + }, + "node_modules/namespace-emitter": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/namespace-emitter/-/namespace-emitter-2.0.1.tgz", + "integrity": "sha512-N/sMKHniSDJBjfrkbS/tpkPj4RAbvW3mr8UAzvlMHyun93XEm83IAvhWtJVHo+RHn/oO8Job5YN4b+wRjSVp5g==", + "dev": true + }, + "node_modules/nan": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", + "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", + "dev": true, + "optional": true + }, + "node_modules/nanoid": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", + "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/nearley": { + "version": "2.20.1", + "license": "MIT", + "dependencies": { + "commander": "^2.19.0", + "moo": "^0.5.0", + "railroad-diagrams": "^1.0.0", + "randexp": "0.4.6" + }, + "bin": { + "nearley-railroad": "bin/nearley-railroad.js", + "nearley-test": "bin/nearley-test.js", + "nearley-unparse": "bin/nearley-unparse.js", + "nearleyc": "bin/nearleyc.js" + }, + "funding": { + "type": "individual", + "url": "https://nearley.js.org/#give-to-nearley" + } + }, + "node_modules/nearley/node_modules/commander": { + "version": "2.20.3", + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "dev": true, + "license": "MIT" + }, + "node_modules/nerf-dart": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/nerf-dart/-/nerf-dart-1.0.0.tgz", + "integrity": "sha1-5tq3/r9a2Bbqgc9cYpxaDr3nLBo=", + "dev": true + }, + "node_modules/nested-error-stacks": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz", + "integrity": "sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug==", + "dev": true + }, + "node_modules/netmask": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-dir": { + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", + "integrity": "sha1-X1Zl2TNRM1yqvvjxxVRRbPXx5OU=", + "dev": true, + "dependencies": { + "minimatch": "^3.0.2" + }, + "engines": { + "node": ">= 0.10.5" + } + }, + "node_modules/node-emoji": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", + "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", + "dev": true, + "dependencies": { + "lodash": "^4.17.21" + } + }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" + }, + "node_modules/node-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" + }, + "node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/node-forge": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.2.1.tgz", + "integrity": "sha512-Fcvtbb+zBcZXbTTVwqGA5W+MKBj56UjVRevvchv5XrcyXbmNdesfZL37nlcWOfpgHhgmxApw3tQbTr4CqNmX4w==", + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-gyp": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.0.0.tgz", + "integrity": "sha512-Ma6p4s+XCTPxCuAMrOA/IJRmVy16R8Sdhtwl4PrCr7IBlj4cPawF0vg/l7nOT1jPbuNS7lIRJpBSvVsXwEZuzw==", + "dev": true, + "dependencies": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^10.0.3", + "nopt": "^5.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^12.22 || ^14.13 || >=16" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true + }, + "node_modules/node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, + "dependencies": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + } + }, + "node_modules/node-libs-browser/node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/node-libs-browser/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "node_modules/node-libs-browser/node_modules/url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "node_modules/node-libs-browser/node_modules/url/node_modules/punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + }, + "node_modules/node-mailjet": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/node-mailjet/-/node-mailjet-3.3.7.tgz", + "integrity": "sha512-kwO0JlQi8MtYEc0DTgL8JeRS1ljjpNqmQ/+attDV3i4YiaCl8SoKs2gBdePWvoFtpCi8uBsfOgU5O9jE/lm2QQ==", + "dependencies": { + "bluebird": "^3.5.0", + "json-bigint": "^1.0.0", + "qs": "^6.5.0", + "superagent": "^6.1.0", + "superagent-proxy": "^3.0.0" + } + }, + "node_modules/node-releases": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", + "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==", + "dev": true + }, + "node_modules/nodemon": { + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.15.tgz", + "integrity": "sha512-gdHMNx47Gw7b3kWxJV64NI+Q5nfl0y5DgDbiVtShiwa7Z0IZ07Ll4RLFo6AjrhzMtoEZn5PDE3/c2AbVsiCkpA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "chokidar": "^3.5.2", + "debug": "^3.2.7", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.0.4", + "pstree.remy": "^1.1.8", + "semver": "^5.7.1", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5", + "update-notifier": "^5.1.0" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=8.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nodemon" + } + }, + "node_modules/nodemon/node_modules/debug": { + "version": "3.2.7", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/nodemon/node_modules/has-flag": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/nodemon/node_modules/semver": { + "version": "5.7.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/nodemon/node_modules/supports-color": { + "version": "5.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/normalize-path": { + "version": "2.1.1", + "license": "MIT", + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-selector": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/normalize-selector/-/normalize-selector-0.2.0.tgz", + "integrity": "sha1-0LFF62kRicY6eNIB3E/bEpPvDAM=", + "dev": true + }, + "node_modules/npm": { + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/npm/-/npm-8.3.1.tgz", + "integrity": "sha512-f552vKhT3r+PpCRnH7UferrrbcnvcFnGusN2T1mQqq/0UQd3pF1+ok4n0WahT0ZKxj10YU3b2VdhGrf39djHAA==", + "bundleDependencies": [ + "@isaacs/string-locale-compare", + "@npmcli/arborist", + "@npmcli/ci-detect", + "@npmcli/config", + "@npmcli/map-workspaces", + "@npmcli/package-json", + "@npmcli/run-script", + "abbrev", + "ansicolors", + "ansistyles", + "archy", + "cacache", + "chalk", + "chownr", + "cli-columns", + "cli-table3", + "columnify", + "fastest-levenshtein", + "glob", + "graceful-fs", + "hosted-git-info", + "ini", + "init-package-json", + "is-cidr", + "json-parse-even-better-errors", + "libnpmaccess", + "libnpmdiff", + "libnpmexec", + "libnpmfund", + "libnpmhook", + "libnpmorg", + "libnpmpack", + "libnpmpublish", + "libnpmsearch", + "libnpmteam", + "libnpmversion", + "make-fetch-happen", + "minipass", + "minipass-pipeline", + "mkdirp", + "mkdirp-infer-owner", + "ms", + "node-gyp", + "nopt", + "npm-audit-report", + "npm-install-checks", + "npm-package-arg", + "npm-pick-manifest", + "npm-profile", + "npm-registry-fetch", + "npm-user-validate", + "npmlog", + "opener", + "pacote", + "parse-conflict-json", + "proc-log", + "qrcode-terminal", + "read", + "read-package-json", + "read-package-json-fast", + "readdir-scoped-modules", + "rimraf", + "semver", + "ssri", + "tar", + "text-table", + "tiny-relative-date", + "treeverse", + "validate-npm-package-name", + "which", + "write-file-atomic" + ], + "dev": true, + "dependencies": { + "@isaacs/string-locale-compare": "*", + "@npmcli/arborist": "*", + "@npmcli/ci-detect": "*", + "@npmcli/config": "*", + "@npmcli/map-workspaces": "*", + "@npmcli/package-json": "*", + "@npmcli/run-script": "*", + "abbrev": "*", + "ansicolors": "*", + "ansistyles": "*", + "archy": "*", + "cacache": "*", + "chalk": "*", + "chownr": "*", + "cli-columns": "*", + "cli-table3": "*", + "columnify": "*", + "fastest-levenshtein": "*", + "glob": "*", + "graceful-fs": "*", + "hosted-git-info": "*", + "ini": "*", + "init-package-json": "*", + "is-cidr": "*", + "json-parse-even-better-errors": "*", + "libnpmaccess": "*", + "libnpmdiff": "*", + "libnpmexec": "*", + "libnpmfund": "*", + "libnpmhook": "*", + "libnpmorg": "*", + "libnpmpack": "*", + "libnpmpublish": "*", + "libnpmsearch": "*", + "libnpmteam": "*", + "libnpmversion": "*", + "make-fetch-happen": "*", + "minipass": "*", + "minipass-pipeline": "*", + "mkdirp": "*", + "mkdirp-infer-owner": "*", + "ms": "*", + "node-gyp": "*", + "nopt": "*", + "npm-audit-report": "*", + "npm-install-checks": "*", + "npm-package-arg": "*", + "npm-pick-manifest": "*", + "npm-profile": "*", + "npm-registry-fetch": "*", + "npm-user-validate": "*", + "npmlog": "*", + "opener": "*", + "pacote": "*", + "parse-conflict-json": "*", + "proc-log": "*", + "qrcode-terminal": "*", + "read": "*", + "read-package-json": "*", + "read-package-json-fast": "*", + "readdir-scoped-modules": "*", + "rimraf": "*", + "semver": "*", + "ssri": "*", + "tar": "*", + "text-table": "*", + "tiny-relative-date": "*", + "treeverse": "*", + "validate-npm-package-name": "*", + "which": "*", + "write-file-atomic": "*" + }, + "bin": { + "npm": "bin/npm-cli.js", + "npx": "bin/npx-cli.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/npm-bundled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", + "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", + "dev": true, + "dependencies": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "node_modules/npm-check-updates": { + "version": "12.5.3", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-12.5.3.tgz", + "integrity": "sha512-siFg/+Un+j4tLA6GJCnk6hz2YU4Yc5bftDnOoiSRLKL6NeAS3FScB32mtKNBtITMJf2nsoZSr8vH+wdUGeP19g==", + "dev": true, + "dependencies": { + "chalk": "^4.1.2", + "cint": "^8.2.1", + "cli-table": "^0.3.11", + "commander": "^9.0.0", + "fast-memoize": "^2.5.2", + "find-up": "5.0.0", + "fp-and-or": "^0.1.3", + "get-stdin": "^8.0.0", + "globby": "^11.0.4", + "hosted-git-info": "^4.1.0", + "json-parse-helpfulerror": "^1.0.3", + "jsonlines": "^0.1.1", + "libnpmconfig": "^1.2.1", + "lodash": "^4.17.21", + "minimatch": "^5.0.1", + "p-map": "^4.0.0", + "pacote": "^13.0.3", + "parse-github-url": "^1.0.2", + "progress": "^2.0.3", + "prompts": "^2.4.2", + "rc-config-loader": "^4.0.0", + "remote-git-tags": "^3.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "semver-utils": "^1.1.4", + "source-map-support": "^0.5.21", + "spawn-please": "^1.0.0", + "update-notifier": "^5.1.0", + "yaml": "^1.10.2" + }, + "bin": { + "ncu": "build/src/bin/cli.js", + "npm-check-updates": "build/src/bin/cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/npm-check-updates/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/npm-check-updates/node_modules/commander": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.0.0.tgz", + "integrity": "sha512-JJfP2saEKbQqvW+FI93OYUB4ByV5cizMpFMiiJI8xDbBvQvSkIk0VvQdn1CZ8mqAO8Loq2h0gYTYtDFUZUeERw==", + "dev": true, + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/npm-check-updates/node_modules/find-up": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-check-updates/node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-check-updates/node_modules/locate-path": { + "version": "6.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-check-updates/node_modules/minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-check-updates/node_modules/p-locate": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-check-updates/node_modules/path-exists": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm-install-checks": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-4.0.0.tgz", + "integrity": "sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==", + "dev": true, + "dependencies": { + "semver": "^7.1.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true + }, + "node_modules/npm-package-arg": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.0.1.tgz", + "integrity": "sha512-Xs9wznfEAmZAR61qsYH3iN24V/qMYYkvAR5CRQNMvC6PjN2fHtO8y9XP/xdp5K+Icx+u1wMBMgWRPCmAEChSog==", + "dev": true, + "dependencies": { + "hosted-git-info": "^5.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/npm-package-arg/node_modules/hosted-git-info": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.0.0.tgz", + "integrity": "sha512-rRnjWu0Bxj+nIfUOkz0695C0H6tRrN5iYIzYejb0tDEefe2AekHu/U5Kn9pEie5vsJqpNQU02az7TGSH3qpz4Q==", + "dev": true, + "dependencies": { + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/npm-package-arg/node_modules/lru-cache": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.6.0.tgz", + "integrity": "sha512-zjOf6cyMI7rcN+5MtLsT4GnDjc6D9XHi8kYcsfXTqWC+yLdSiU3/jtEPX9wZE77+XLtnmdIWu3+291hkizfH+Q==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/npm-packlist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-4.0.0.tgz", + "integrity": "sha512-gL6XC/iw9YSmqArmZOGSkyy+yIZf2f7uH0p4Vmxef/irn73vd9/rDkCtvm+a9rh/QK2xGYfCAMOghM06ymzC0A==", + "dev": true, + "dependencies": { + "glob": "^7.2.0", + "ignore-walk": "^4.0.1", + "npm-bundled": "^1.1.2", + "npm-normalize-package-bin": "^1.0.1" + }, + "bin": { + "npm-packlist": "bin/index.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/npm-packlist/node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm-packlist/node_modules/ignore-walk": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-4.0.1.tgz", + "integrity": "sha512-rzDQLaW4jQbh2YrOFlJdCtX8qgJTehFRYiUB2r1osqTeDzV/3+Jh8fz1oAPzUThf3iku8Ds4IDqawI5d8mUiQw==", + "dev": true, + "dependencies": { + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-pick-manifest": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-7.0.0.tgz", + "integrity": "sha512-njM1AcdioFaKd0JSGtLO09YA1WRwctjGQJbnHGmKS+u+uwP8oFvtZtOQWPYdxrnY5eJud3wn8OpH4sEIx6+GEQ==", + "dev": true, + "dependencies": { + "npm-install-checks": "^4.0.0", + "npm-normalize-package-bin": "^1.0.1", + "npm-package-arg": "^9.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/npm-registry-fetch": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.0.1.tgz", + "integrity": "sha512-Ak+LXVtSrCLOdscFW/apUw67OPNph8waHsPKM9UOJosL7i59EF5XoSWQMEsXEOeifM9Bb4/2+WrQC4t/pd8DGg==", + "dev": true, + "dependencies": { + "make-fetch-happen": "^10.0.3", + "minipass": "^3.1.6", + "minipass-fetch": "^2.0.1", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^9.0.0", + "proc-log": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/@gar/promisify": { + "version": "1.1.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/@isaacs/string-locale-compare": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/@npmcli/arborist": { + "version": "4.2.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@isaacs/string-locale-compare": "^1.1.0", + "@npmcli/installed-package-contents": "^1.0.7", + "@npmcli/map-workspaces": "^2.0.0", + "@npmcli/metavuln-calculator": "^2.0.0", + "@npmcli/move-file": "^1.1.0", + "@npmcli/name-from-folder": "^1.0.1", + "@npmcli/node-gyp": "^1.0.3", + "@npmcli/package-json": "^1.0.1", + "@npmcli/run-script": "^2.0.0", + "bin-links": "^2.3.0", + "cacache": "^15.0.3", + "common-ancestor-path": "^1.0.1", + "json-parse-even-better-errors": "^2.3.1", + "json-stringify-nice": "^1.1.4", + "mkdirp": "^1.0.4", + "mkdirp-infer-owner": "^2.0.0", + "npm-install-checks": "^4.0.0", + "npm-package-arg": "^8.1.5", + "npm-pick-manifest": "^6.1.0", + "npm-registry-fetch": "^11.0.0", + "pacote": "^12.0.2", + "parse-conflict-json": "^2.0.1", + "proc-log": "^1.0.0", + "promise-all-reject-late": "^1.0.0", + "promise-call-limit": "^1.0.1", + "read-package-json-fast": "^2.0.2", + "readdir-scoped-modules": "^1.1.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "ssri": "^8.0.1", + "treeverse": "^1.0.4", + "walk-up-path": "^1.0.0" + }, + "bin": { + "arborist": "bin/index.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/npm/node_modules/@npmcli/ci-detect": { + "version": "1.4.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/@npmcli/config": { + "version": "2.4.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "ini": "^2.0.0", + "mkdirp-infer-owner": "^2.0.0", + "nopt": "^5.0.0", + "semver": "^7.3.4", + "walk-up-path": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/@npmcli/disparity-colors": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "ansi-styles": "^4.3.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/@npmcli/fs": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + } + }, + "node_modules/npm/node_modules/@npmcli/git": { + "version": "2.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/promise-spawn": "^1.3.2", + "lru-cache": "^6.0.0", + "mkdirp": "^1.0.4", + "npm-pick-manifest": "^6.1.1", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^2.0.2" + } + }, + "node_modules/npm/node_modules/@npmcli/installed-package-contents": { + "version": "1.0.7", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + }, + "bin": { + "installed-package-contents": "index.js" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/@npmcli/map-workspaces": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/name-from-folder": "^1.0.1", + "glob": "^7.1.6", + "minimatch": "^3.0.4", + "read-package-json-fast": "^2.0.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/npm/node_modules/@npmcli/metavuln-calculator": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "cacache": "^15.0.5", + "json-parse-even-better-errors": "^2.3.1", + "pacote": "^12.0.0", + "semver": "^7.3.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/npm/node_modules/@npmcli/move-file": { + "version": "1.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/@npmcli/name-from-folder": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/@npmcli/node-gyp": { + "version": "1.0.3", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/@npmcli/package-json": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^2.3.1" + } + }, + "node_modules/npm/node_modules/@npmcli/promise-spawn": { + "version": "1.3.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "infer-owner": "^1.0.4" + } + }, + "node_modules/npm/node_modules/@npmcli/run-script": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/node-gyp": "^1.0.2", + "@npmcli/promise-spawn": "^1.3.2", + "node-gyp": "^8.2.0", + "read-package-json-fast": "^2.0.1" + } + }, + "node_modules/npm/node_modules/@tootallnate/once": { + "version": "1.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/npm/node_modules/abbrev": { + "version": "1.1.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/agent-base": { + "version": "6.0.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/npm/node_modules/agentkeepalive": { + "version": "4.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/npm/node_modules/aggregate-error": { + "version": "3.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/ansi-regex": { + "version": "2.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/npm/node_modules/ansicolors": { + "version": "0.3.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/ansistyles": { + "version": "0.1.3", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/aproba": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/archy": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/are-we-there-yet": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/asap": { + "version": "2.0.6", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/balanced-match": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/bin-links": { + "version": "2.3.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "cmd-shim": "^4.0.1", + "mkdirp-infer-owner": "^2.0.0", + "npm-normalize-package-bin": "^1.0.0", + "read-cmd-shim": "^2.0.0", + "rimraf": "^3.0.0", + "write-file-atomic": "^3.0.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/binary-extensions": { + "version": "2.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/brace-expansion": { + "version": "1.1.11", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/npm/node_modules/builtins": { + "version": "1.0.3", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/cacache": { + "version": "15.3.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/npm/node_modules/chownr": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/cidr-regex": { + "version": "3.1.1", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "ip-regex": "^4.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/clean-stack": { + "version": "2.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/cli-columns": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/cli-columns/node_modules/ansi-regex": { + "version": "5.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/cli-columns/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/cli-columns/node_modules/string-width": { + "version": "4.2.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/cli-columns/node_modules/strip-ansi": { + "version": "6.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/cli-table3": { + "version": "0.6.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "object-assign": "^4.1.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "colors": "^1.1.2" + } + }, + "node_modules/npm/node_modules/cli-table3/node_modules/ansi-regex": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/cli-table3/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/cli-table3/node_modules/string-width": { + "version": "4.2.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/cli-table3/node_modules/strip-ansi": { + "version": "6.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/clone": { + "version": "1.0.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/npm/node_modules/cmd-shim": { + "version": "4.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "mkdirp-infer-owner": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/npm/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/color-support": { + "version": "1.1.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/npm/node_modules/colors": { + "version": "1.4.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/npm/node_modules/columnify": { + "version": "1.5.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "strip-ansi": "^3.0.0", + "wcwidth": "^1.0.0" + } + }, + "node_modules/npm/node_modules/common-ancestor-path": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/concat-map": { + "version": "0.0.1", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/console-control-strings": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/debug": { + "version": "4.3.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/npm/node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/debuglog": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/npm/node_modules/defaults": { + "version": "1.0.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + } + }, + "node_modules/npm/node_modules/delegates": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/depd": { + "version": "1.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/npm/node_modules/dezalgo": { + "version": "1.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "node_modules/npm/node_modules/diff": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/npm/node_modules/emoji-regex": { + "version": "8.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/encoding": { + "version": "0.1.13", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/npm/node_modules/env-paths": { + "version": "2.2.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/err-code": { + "version": "2.0.3", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/fastest-levenshtein": { + "version": "1.0.12", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/fs-minipass": { + "version": "2.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/fs.realpath": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/function-bind": { + "version": "1.1.1", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/gauge": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "ansi-regex": "^5.0.1", + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/npm/node_modules/gauge/node_modules/ansi-regex": { + "version": "5.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/gauge/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/gauge/node_modules/string-width": { + "version": "4.2.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/gauge/node_modules/strip-ansi": { + "version": "6.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/glob": { + "version": "7.2.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/graceful-fs": { + "version": "4.2.8", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/has": { + "version": "1.0.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/npm/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/has-unicode": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/hosted-git-info": { + "version": "4.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/http-cache-semantics": { + "version": "4.1.0", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause" + }, + "node_modules/npm/node_modules/http-proxy-agent": { + "version": "4.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/npm/node_modules/https-proxy-agent": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/npm/node_modules/humanize-ms": { + "version": "1.2.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/npm/node_modules/iconv-lite": { + "version": "0.6.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/ignore-walk": { + "version": "4.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/imurmurhash": { + "version": "0.1.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/npm/node_modules/indent-string": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/infer-owner": { + "version": "1.0.4", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/inflight": { + "version": "1.0.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/npm/node_modules/inherits": { + "version": "2.0.4", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/ini": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/init-package-json": { + "version": "2.0.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-package-arg": "^8.1.5", + "promzard": "^0.3.0", + "read": "~1.0.1", + "read-package-json": "^4.1.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4", + "validate-npm-package-name": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/ip": { + "version": "1.1.5", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/ip-regex": { + "version": "4.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/is-cidr": { + "version": "4.0.2", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "cidr-regex": "^3.1.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/is-core-module": { + "version": "2.8.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/npm/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/is-lambda": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/is-typedarray": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/isexe": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/json-stringify-nice": { + "version": "1.1.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/jsonparse": { + "version": "1.3.1", + "dev": true, + "engines": [ + "node >= 0.2.0" + ], + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/just-diff": { + "version": "5.0.1", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/just-diff-apply": { + "version": "4.0.1", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/libnpmaccess": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "minipass": "^3.1.1", + "npm-package-arg": "^8.1.2", + "npm-registry-fetch": "^11.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/npm/node_modules/libnpmdiff": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/disparity-colors": "^1.0.1", + "@npmcli/installed-package-contents": "^1.0.7", + "binary-extensions": "^2.2.0", + "diff": "^5.0.0", + "minimatch": "^3.0.4", + "npm-package-arg": "^8.1.4", + "pacote": "^12.0.0", + "tar": "^6.1.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/npm/node_modules/libnpmexec": { + "version": "3.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^4.0.0", + "@npmcli/ci-detect": "^1.3.0", + "@npmcli/run-script": "^2.0.0", + "chalk": "^4.1.0", + "mkdirp-infer-owner": "^2.0.0", + "npm-package-arg": "^8.1.2", + "pacote": "^12.0.0", + "proc-log": "^1.0.0", + "read": "^1.0.7", + "read-package-json-fast": "^2.0.2", + "walk-up-path": "^1.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/npm/node_modules/libnpmfund": { + "version": "2.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/npm/node_modules/libnpmhook": { + "version": "7.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^11.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/npm/node_modules/libnpmorg": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^11.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/npm/node_modules/libnpmpack": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/run-script": "^2.0.0", + "npm-package-arg": "^8.1.0", + "pacote": "^12.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/npm/node_modules/libnpmpublish": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "normalize-package-data": "^3.0.2", + "npm-package-arg": "^8.1.2", + "npm-registry-fetch": "^11.0.0", + "semver": "^7.1.3", + "ssri": "^8.0.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/npm/node_modules/libnpmsearch": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-registry-fetch": "^11.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/npm/node_modules/libnpmteam": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^11.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/npm/node_modules/libnpmversion": { + "version": "2.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^2.0.7", + "@npmcli/run-script": "^2.0.0", + "json-parse-even-better-errors": "^2.3.1", + "semver": "^7.3.5", + "stringify-package": "^1.0.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/npm/node_modules/lru-cache": { + "version": "6.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/make-fetch-happen": { + "version": "9.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.2.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.2", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.0.0", + "ssri": "^8.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/minimatch": { + "version": "3.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/npm/node_modules/minipass": { + "version": "3.1.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-collect": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/minipass-fetch": { + "version": "1.4.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.1.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "optionalDependencies": { + "encoding": "^0.1.12" + } + }, + "node_modules/npm/node_modules/minipass-flush": { + "version": "1.0.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/minipass-json-stream": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "node_modules/npm/node_modules/minipass-pipeline": { + "version": "1.2.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-sized": { + "version": "1.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minizlib": { + "version": "2.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/mkdirp": { + "version": "1.0.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/mkdirp-infer-owner": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "infer-owner": "^1.0.4", + "mkdirp": "^1.0.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/ms": { + "version": "2.1.3", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/mute-stream": { + "version": "0.0.8", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/negotiator": { + "version": "0.6.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/npm/node_modules/node-gyp": { + "version": "8.4.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^9.1.0", + "nopt": "^5.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": ">= 10.12.0" + } + }, + "node_modules/npm/node_modules/nopt": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/normalize-package-data": { + "version": "3.0.3", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/npm-audit-report": { + "version": "2.1.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "chalk": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/npm-bundled": { + "version": "1.1.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "node_modules/npm/node_modules/npm-install-checks": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "semver": "^7.1.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/npm-normalize-package-bin": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/npm-package-arg": { + "version": "8.1.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "hosted-git-info": "^4.0.1", + "semver": "^7.3.4", + "validate-npm-package-name": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/npm-packlist": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.6", + "ignore-walk": "^4.0.1", + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + }, + "bin": { + "npm-packlist": "bin/index.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/npm-pick-manifest": { + "version": "6.1.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-install-checks": "^4.0.0", + "npm-normalize-package-bin": "^1.0.1", + "npm-package-arg": "^8.1.2", + "semver": "^7.3.4" + } + }, + "node_modules/npm/node_modules/npm-profile": { + "version": "5.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-registry-fetch": "^11.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/npm-registry-fetch": { + "version": "11.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "make-fetch-happen": "^9.0.1", + "minipass": "^3.1.3", + "minipass-fetch": "^1.3.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.0.0", + "npm-package-arg": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/npm-user-validate": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause" + }, + "node_modules/npm/node_modules/npmlog": { + "version": "6.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.0", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/npm/node_modules/object-assign": { + "version": "4.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/once": { + "version": "1.4.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/npm/node_modules/opener": { + "version": "1.5.2", + "dev": true, + "inBundle": true, + "license": "(WTFPL OR MIT)", + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/npm/node_modules/p-map": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/pacote": { + "version": "12.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^2.1.0", + "@npmcli/installed-package-contents": "^1.0.6", + "@npmcli/promise-spawn": "^1.2.0", + "@npmcli/run-script": "^2.0.0", + "cacache": "^15.0.5", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "infer-owner": "^1.0.4", + "minipass": "^3.1.3", + "mkdirp": "^1.0.3", + "npm-package-arg": "^8.0.1", + "npm-packlist": "^3.0.0", + "npm-pick-manifest": "^6.0.0", + "npm-registry-fetch": "^11.0.0", + "promise-retry": "^2.0.1", + "read-package-json-fast": "^2.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.1.0" + }, + "bin": { + "pacote": "lib/bin.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/npm/node_modules/parse-conflict-json": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^2.3.1", + "just-diff": "^5.0.1", + "just-diff-apply": "^4.0.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/npm/node_modules/path-is-absolute": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/proc-log": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/promise-all-reject-late": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/promise-call-limit": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/promise-inflight": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/promise-retry": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/promzard": { + "version": "0.3.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "read": "1" + } + }, + "node_modules/npm/node_modules/qrcode-terminal": { + "version": "0.12.0", + "dev": true, + "inBundle": true, + "bin": { + "qrcode-terminal": "bin/qrcode-terminal.js" + } + }, + "node_modules/npm/node_modules/read": { + "version": "1.0.7", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "mute-stream": "~0.0.4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/npm/node_modules/read-cmd-shim": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/read-package-json": { + "version": "4.1.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.1", + "json-parse-even-better-errors": "^2.3.0", + "normalize-package-data": "^3.0.0", + "npm-normalize-package-bin": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/read-package-json-fast": { + "version": "2.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^2.3.0", + "npm-normalize-package-bin": "^1.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/readable-stream": { + "version": "3.6.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/npm/node_modules/readdir-scoped-modules": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "graceful-fs": "^4.1.2", + "once": "^1.3.0" + } + }, + "node_modules/npm/node_modules/retry": { + "version": "0.12.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/npm/node_modules/rimraf": { + "version": "3.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/safe-buffer": { + "version": "5.2.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/safer-buffer": { + "version": "2.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/npm/node_modules/semver": { + "version": "7.3.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/set-blocking": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/signal-exit": { + "version": "3.0.6", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/smart-buffer": { + "version": "4.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/npm/node_modules/socks": { + "version": "2.6.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ip": "^1.1.5", + "smart-buffer": "^4.1.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/npm/node_modules/socks-proxy-agent": { + "version": "6.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.1", + "socks": "^2.6.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/spdx-correct": { + "version": "3.1.1", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/npm/node_modules/spdx-exceptions": { + "version": "2.3.0", + "dev": true, + "inBundle": true, + "license": "CC-BY-3.0" + }, + "node_modules/npm/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/npm/node_modules/spdx-license-ids": { + "version": "3.0.10", + "dev": true, + "inBundle": true, + "license": "CC0-1.0" + }, + "node_modules/npm/node_modules/ssri": { + "version": "8.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/string_decoder": { + "version": "1.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/npm/node_modules/string-width": { + "version": "2.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/string-width/node_modules/ansi-regex": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/string-width/node_modules/strip-ansi": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/stringify-package": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/strip-ansi": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/tar": { + "version": "6.1.11", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/text-table": { + "version": "0.2.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/tiny-relative-date": { + "version": "1.3.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/treeverse": { + "version": "1.0.4", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/npm/node_modules/unique-filename": { + "version": "1.1.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "unique-slug": "^2.0.0" + } + }, + "node_modules/npm/node_modules/unique-slug": { + "version": "2.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4" + } + }, + "node_modules/npm/node_modules/util-deprecate": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/validate-npm-package-license": { + "version": "3.0.4", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/npm/node_modules/validate-npm-package-name": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "builtins": "^1.0.3" + } + }, + "node_modules/npm/node_modules/walk-up-path": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/wcwidth": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/npm/node_modules/which": { + "version": "2.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/wide-align": { + "version": "1.1.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "string-width": "^1.0.2 || 2" + } + }, + "node_modules/npm/node_modules/wrappy": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/write-file-atomic": { + "version": "3.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/npm/node_modules/yallist": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npmlog": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.1.tgz", + "integrity": "sha512-BTHDvY6nrRHuRfyjt1MAufLxYdVXZfd099H4+i1f0lPywNQyI4foeNXJRObB/uy+TYqUW0vAD9gbdSOXPst7Eg==", + "dev": true, + "dependencies": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.0", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/nth-check": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/null-check": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "node_modules/nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "dev": true + }, + "node_modules/object-assign": { + "version": "4.1.1", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "dependencies": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/object-copy/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", + "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object-path": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.8.tgz", + "integrity": "sha512-YJjNZrlXJFM42wTBn6zgOJVar9KFJvzx6sTWDte8sWZF//cnjl0BxHNpfZx+ZffXX63A9q0b1zsFiBX4g4X5KA==", + "engines": { + "node": ">= 10.12.0" + } + }, + "node_modules/object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "dependencies": { + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-visit/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.assign": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", + "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", + "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.getownpropertydescriptors": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz", + "integrity": "sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.pick/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.values": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", + "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/objection": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/objection/-/objection-3.0.1.tgz", + "integrity": "sha512-rqNnyQE+C55UHjdpTOJEKQHJGZ/BGtBBtgxdUpKG4DQXRUmqxfmgS/MhPWxB9Pw0mLSVLEltr6soD4c0Sddy0Q==", + "dependencies": { + "ajv": "^8.6.2", + "db-errors": "^0.2.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "knex": ">=0.95.0" + } + }, + "node_modules/objection/node_modules/ajv": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.7.1.tgz", + "integrity": "sha512-gPpOObTO1QjbnN1sVMjJcp1TF9nggMfO4MBR5uQl6ZVTOaEPq5i4oq/6R9q2alMMPB3eg53wFv1RuJBLuxf3Hw==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/objection/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/on-finished": { + "version": "2.3.0", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/one-time": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "fn.name": "1.x.x" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/onigasm": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/onigasm/-/onigasm-2.2.5.tgz", + "integrity": "sha512-F+th54mPc0l1lp1ZcFMyL/jTs2Tlq4SqIHKIXGZOR/VkHkF9A7Fr5rRr5+ZG/lWeRsyrClLYRq7s/yFQ/XhWCA==", + "dev": true, + "dependencies": { + "lru-cache": "^5.1.1" + } + }, + "node_modules/onigasm/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/onigasm/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/overlayscrollbars": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/overlayscrollbars/-/overlayscrollbars-1.13.1.tgz", + "integrity": "sha512-gIQfzgGgu1wy80EB4/6DaJGHMEGmizq27xHIESrzXq0Y/J0Ay1P3DWk6tuVmEPIZH15zaBlxeEJOqdJKmowHCQ==", + "dev": true + }, + "node_modules/p-all": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-all/-/p-all-2.1.0.tgz", + "integrity": "sha512-HbZxz5FONzz/z2gJfk6bFca0BCiSRF8jU3yCsWOen/vR6lZjfPOu/e7L3uFzTW1i0H8TlC3vqQstEJPQL4/uLA==", + "dev": true, + "dependencies": { + "p-map": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-all/node_modules/p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-each-series": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", + "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-event": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-4.2.0.tgz", + "integrity": "sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==", + "dev": true, + "dependencies": { + "p-timeout": "^3.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-filter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-2.1.0.tgz", + "integrity": "sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==", + "dev": true, + "dependencies": { + "p-map": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-filter/node_modules/p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-locate/node_modules/p-limit": { + "version": "1.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-locate/node_modules/p-try": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-queue": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", + "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", + "dependencies": { + "eventemitter3": "^4.0.4", + "p-timeout": "^3.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-reduce": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz", + "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-retry": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", + "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", + "dev": true, + "dependencies": { + "@types/retry": "^0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-retry/node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "dependencies": { + "p-finally": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pac-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-5.0.0.tgz", + "integrity": "sha512-CcFG3ZtnxO8McDigozwE3AqAw15zDvGH+OjXO4kzf7IkEKkQ4gxQ+3sdF50WmhQ4P/bVusXcqNE2S3XrNURwzQ==", + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4", + "get-uri": "3", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "5", + "pac-resolver": "^5.0.0", + "raw-body": "^2.2.0", + "socks-proxy-agent": "5" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/pac-proxy-agent/node_modules/socks-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz", + "integrity": "sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ==", + "dependencies": { + "agent-base": "^6.0.2", + "debug": "4", + "socks": "^2.3.3" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pac-resolver": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-5.0.0.tgz", + "integrity": "sha512-H+/A6KitiHNNW+bxBKREk2MCGSxljfqRX76NjummWEYIat7ldVXRU3dhRIE3iXZ0nvGBk6smv3nntxKkzRL8NA==", + "dependencies": { + "degenerator": "^3.0.1", + "ip": "^1.1.5", + "netmask": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/package-json": { + "version": "6.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/package-json/node_modules/@sindresorhus/is": { + "version": "0.14.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json/node_modules/cacheable-request": { + "version": "6.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/package-json/node_modules/cacheable-request/node_modules/get-stream": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/package-json/node_modules/cacheable-request/node_modules/lowercase-keys": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/package-json/node_modules/get-stream": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json/node_modules/got": { + "version": "9.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/package-json/node_modules/normalize-url": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/package-json/node_modules/p-cancelable": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json/node_modules/semver": { + "version": "6.3.0", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/packet-reader": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/pacote": { + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.0.5.tgz", + "integrity": "sha512-6CYfot3/rUAn3qqzF2d/jrrXm5HlBtvaSgfmg0VtOUAdJ8fbSq21BJwftMGArkL71yXHIbUJ7Bt5B04547HELA==", + "dev": true, + "dependencies": { + "@npmcli/git": "^3.0.0", + "@npmcli/installed-package-contents": "^1.0.7", + "@npmcli/promise-spawn": "^1.2.0", + "@npmcli/run-script": "^3.0.1", + "cacache": "^16.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "infer-owner": "^1.0.4", + "minipass": "^3.1.6", + "mkdirp": "^1.0.4", + "npm-package-arg": "^9.0.0", + "npm-packlist": "^4.0.0", + "npm-pick-manifest": "^7.0.0", + "npm-registry-fetch": "^13.0.1", + "proc-log": "^2.0.0", + "promise-retry": "^2.0.1", + "read-package-json": "^5.0.0", + "read-package-json-fast": "^2.0.3", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.1.11" + }, + "bin": { + "pacote": "lib/bin.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "node_modules/parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "dev": true, + "dependencies": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dev": true, + "dependencies": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "dev": true, + "dependencies": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-github-repo-url": { + "version": "1.4.1", + "dev": true, + "license": "MIT" + }, + "node_modules/parse-github-url": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "bin": { + "parse-github-url": "cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-passwd": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "node_modules/parsedbf": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/parsedbf/-/parsedbf-1.1.1.tgz", + "integrity": "sha512-jndFmhcrzSAGCMccM4za+3bIRxqV6L2doQjYN8Xgz0kZUpyBT5I8Gs6Y6hL5GcO2rih9OBkPcLlx2uBoLi8R8Q==", + "dependencies": { + "iconv-lite": "^0.4.15", + "text-encoding-polyfill": "^0.6.7" + } + }, + "node_modules/parseley": { + "version": "0.7.0", + "license": "MIT", + "dependencies": { + "moo": "^0.5.1", + "nearley": "^2.20.1" + }, + "funding": { + "url": "https://ko-fi.com/killymxi" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true + }, + "node_modules/path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "node_modules/path-exists": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "license": "MIT" + }, + "node_modules/path-type": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dev": true, + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/pg": { + "version": "8.7.3", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.7.3.tgz", + "integrity": "sha512-HPmH4GH4H3AOprDJOazoIcpI49XFsHCe8xlrjHkWiapdbHK+HLtbm/GQzXYAZwmPju/kzKhjaSfMACG+8cgJcw==", + "dependencies": { + "buffer-writer": "2.0.0", + "packet-reader": "1.0.0", + "pg-connection-string": "^2.5.0", + "pg-pool": "^3.5.1", + "pg-protocol": "^1.5.0", + "pg-types": "^2.1.0", + "pgpass": "1.x" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "pg-native": ">=2.0.0" + }, + "peerDependenciesMeta": { + "pg-native": { + "optional": true + } + } + }, + "node_modules/pg-connection-string": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz", + "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==" + }, + "node_modules/pg-escape": { + "version": "0.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/pg-int8": { + "version": "1.0.1", + "license": "ISC", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/pg-pool": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.5.1.tgz", + "integrity": "sha512-6iCR0wVrro6OOHFsyavV+i6KYL4lVNyYAB9RD18w66xSzN+d8b66HiwuP30Gp1SH5O9T82fckkzsRjlrhD0ioQ==", + "peerDependencies": { + "pg": ">=8.0" + } + }, + "node_modules/pg-protocol": { + "version": "1.5.0", + "license": "MIT" + }, + "node_modules/pg-types": { + "version": "2.2.0", + "license": "MIT", + "dependencies": { + "pg-int8": "1.0.1", + "postgres-array": "~2.0.0", + "postgres-bytea": "~1.0.0", + "postgres-date": "~1.0.4", + "postgres-interval": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pgpass": { + "version": "1.0.4", + "license": "MIT", + "dependencies": { + "split2": "^3.1.1" + } + }, + "node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pidtree": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.5.0.tgz", + "integrity": "sha512-9nxspIM7OpZuhBxPg73Zvyq7j1QMPMPsGKTqRc2XOaFQauDvoNz9fM1Wdkjmeo7l9GXOZiRs97sPkuayl39wjA==", + "dev": true, + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pixrem": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pixrem/-/pixrem-5.0.0.tgz", + "integrity": "sha512-ugJ4Imy92u55zeznaN/5d7iqOBIZjZ7q10/T+dcd0IuFtbLlsGDvAUabFu1cafER+G9f0T1WtTqvzm4KAdcDgQ==", + "dev": true, + "dependencies": { + "browserslist": "^4.3.6", + "postcss": "^7.0.7", + "reduce-css-calc": "^2.1.5" + }, + "engines": { + "node": ">=4.0.0", + "npm": ">=1.2.10" + } + }, + "node_modules/pixrem/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/pkg-conf": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", + "integrity": "sha1-ISZRTKbyq/69FoWW3xi6V4Z/AFg=", + "dev": true, + "dependencies": { + "find-up": "^2.0.0", + "load-json-file": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pnp-webpack-plugin": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz", + "integrity": "sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==", + "dev": true, + "dependencies": { + "ts-pnp": "^1.1.6" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/polished": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/polished/-/polished-4.1.4.tgz", + "integrity": "sha512-Nq5Mbza+Auo7N3sQb1QMFaQiDO+4UexWuSGR7Cjb4Sw11SZIJcrrFtiZ+L0jT9MBsUsxDboHVASbCLbE1rnECg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.16.7" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/polygon-clipping": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.3.tgz", + "integrity": "sha512-ho0Xx5DLkgxRx/+n4O74XyJ67DcyN3Tu9bGYKsnTukGAW6ssnuak6Mwcyb1wHy9MZc9xsUWqIoiazkZB5weECg==", + "dependencies": { + "splaytree": "^3.1.0" + } + }, + "node_modules/posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss": { + "version": "8.4.12", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.12.tgz", + "integrity": "sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { + "nanoid": "^3.3.1", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-attribute-case-insensitive": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.0.tgz", + "integrity": "sha512-b4g9eagFGq9T5SWX4+USfVyjIb3liPnjhHHRMP7FMB2kFVpYyfEscV0wP3eaXhKlcHKUut8lt5BGoeylWA/dBQ==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.2" + }, + "peerDependencies": { + "postcss": "^8.0.2" + } + }, + "node_modules/postcss-browser-comments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-4.0.0.tgz", + "integrity": "sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "browserslist": ">=4", + "postcss": ">=8" + } + }, + "node_modules/postcss-button": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/postcss-button/-/postcss-button-0.3.17.tgz", + "integrity": "sha512-LbJCmxw5JbeoAmB8V1lmDSXuWVI3jpYBcXkoYnXC45J4ylklyqJysk06/jySj9C3q+r0ypXMM1UTVJcGnueOzw==", + "dev": true, + "dependencies": { + "postcss": "^7.0.17" + } + }, + "node_modules/postcss-button/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-calc": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", + "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0" + }, + "peerDependencies": { + "postcss": "^8.2.2" + } + }, + "node_modules/postcss-clamp": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz", + "integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=7.6.0" + }, + "peerDependencies": { + "postcss": "^8.4.6" + } + }, + "node_modules/postcss-color-functional-notation": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.2.tgz", + "integrity": "sha512-DXVtwUhIk4f49KK5EGuEdgx4Gnyj6+t2jBSEmxvpIK9QI40tWrpS2Pua8Q7iIZWBrki2QOaeUdEaLPPa91K0RQ==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-color-hex-alpha": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.3.tgz", + "integrity": "sha512-fESawWJCrBV035DcbKRPAVmy21LpoyiXdPTuHUfWJ14ZRjY7Y7PA6P4g8z6LQGYhU1WAxkTxjIjurXzoe68Glw==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-color-mod-function": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz", + "integrity": "sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ==", + "dev": true, + "dependencies": { + "@csstools/convert-colors": "^1.4.0", + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-color-mod-function/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-color-rebeccapurple": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.0.2.tgz", + "integrity": "sha512-SFc3MaocHaQ6k3oZaFwH8io6MdypkUtEy/eXzXEB1vEQlO3S3oDc/FSZA8AsS04Z25RirQhlDlHLh3dn7XewWw==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.3" + } + }, + "node_modules/postcss-custom-media": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.0.tgz", + "integrity": "sha512-FvO2GzMUaTN0t1fBULDeIvxr5IvbDXcIatt6pnJghc736nqNgsGao5NT+5+WVLAQiTt6Cb3YUms0jiPaXhL//g==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-custom-properties": { + "version": "12.1.5", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.5.tgz", + "integrity": "sha512-FHbbB/hRo/7cxLGkc2NS7cDRIDN1oFqQnUKBiyh4b/gwk8DD8udvmRDpUhEK836kB8ggUCieHVOvZDnF9XhI3g==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-custom-selectors": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.0.tgz", + "integrity": "sha512-/1iyBhz/W8jUepjGyu7V1OPcGbc636snN1yXEQCinb6Bwt7KxsiU7/bLQlp8GwAXzCh7cobBU5odNn/2zQWR8Q==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "postcss": "^8.1.2" + } + }, + "node_modules/postcss-dir-pseudo-class": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.4.tgz", + "integrity": "sha512-I8epwGy5ftdzNWEYok9VjW9whC4xnelAtbajGv4adql4FIF09rnrxnA9Y8xSHN47y7gqFIv10C5+ImsLeJpKBw==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-double-position-gradients": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.1.tgz", + "integrity": "sha512-jM+CGkTs4FcG53sMPjrrGE0rIvLDdCrqMzgDC5fLI7JHDO7o6QG8C5TQBtExb13hdBdoH9C2QVbG4jo2y9lErQ==", + "dev": true, + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-env-function": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.6.tgz", + "integrity": "sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-flexbugs-fixes": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.1.tgz", + "integrity": "sha512-9SiofaZ9CWpQWxOwRh1b/r85KD5y7GgvsNt1056k6OYLvWUun0czCvogfJgylC22uJTwW1KzY3Gz65NZRlvoiQ==", + "dev": true, + "dependencies": { + "postcss": "^7.0.26" + } + }, + "node_modules/postcss-flexbugs-fixes/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-focus-visible": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz", + "integrity": "sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-focus-within": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz", + "integrity": "sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-font-variant": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", + "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==", + "dev": true, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-gap-properties": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.3.tgz", + "integrity": "sha512-rPPZRLPmEKgLk/KlXMqRaNkYTUpE7YC+bOIQFN5xcu1Vp11Y4faIXv6/Jpft6FMnl6YRxZqDZG0qQOW80stzxQ==", + "dev": true, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-grid-fluid": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/postcss-grid-fluid/-/postcss-grid-fluid-0.3.4.tgz", + "integrity": "sha512-HuXvASgRhOHiSCQsIeTY1qSBNaC2oMBIUO9lQbSP7CFjNkYQfPe+Bm15djTPY8GIGOTwVsCyFE8YUWfMq+FVPw==", + "dev": true, + "dependencies": { + "postcss": "^7.0.17" + } + }, + "node_modules/postcss-grid-fluid/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-grid-system": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/postcss-grid-system/-/postcss-grid-system-0.5.2.tgz", + "integrity": "sha512-BR5zSvKENNoQuxvLc2DfLTFLxy4C/aQmjMDmrK1LRdVBbqr6OLG5bf1yd5P1rgClRkd3NEKRWYg3/LnLVKHHjw==", + "dev": true, + "peerDependencies": { + "postcss": "^8.2.2" + } + }, + "node_modules/postcss-image-set-function": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.6.tgz", + "integrity": "sha512-KfdC6vg53GC+vPd2+HYzsZ6obmPqOk6HY09kttU19+Gj1nC3S3XBVEXDHxkhxTohgZqzbUb94bKXvKDnYWBm/A==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-import": { + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.0.2.tgz", + "integrity": "sha512-BJ2pVK4KhUyMcqjuKs9RijV5tatNzNa73e/32aBVE/ejYPe37iH+6vAu9WvqUkB5OAYgLHzbSvzHnorybJCm9g==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-initial": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz", + "integrity": "sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==", + "dev": true, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-inline-svg": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-inline-svg/-/postcss-inline-svg-5.0.0.tgz", + "integrity": "sha512-Agqkrn91Qgi+KAO+cTvUS1IAZbHPD4sryPoG0q5U0ThokL4UGoMcmwvNV6tDoRp69B5tgD1VNkn9P09E+xpQAg==", + "dev": true, + "dependencies": { + "css-select": "^3.1.0", + "dom-serializer": "^1.1.0", + "htmlparser2": "^5.0.1", + "postcss-value-parser": "^4.0.0" + }, + "peerDependencies": { + "postcss": "^8.1.4" + } + }, + "node_modules/postcss-inline-svg/node_modules/domhandler": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.3.0.tgz", + "integrity": "sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/postcss-inline-svg/node_modules/htmlparser2": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-5.0.1.tgz", + "integrity": "sha512-vKZZra6CSe9qsJzh0BjBGXo8dvzNsq/oGvsjfRdOrrryfeD9UOBEEQdeoqCRmKZchF5h2zOBMQ6YuQ0uRUmdbQ==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^3.3.0", + "domutils": "^2.4.2", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/fb55/htmlparser2?sponsor=1" + } + }, + "node_modules/postcss-lab-function": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.1.2.tgz", + "integrity": "sha512-isudf5ldhg4fk16M8viAwAbg6Gv14lVO35N3Z/49NhbwPQ2xbiEoHgrRgpgQojosF4vF7jY653ktB6dDrUOR8Q==", + "dev": true, + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-loader": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", + "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", + "dev": true, + "dependencies": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.5" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + } + }, + "node_modules/postcss-logical": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz", + "integrity": "sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==", + "dev": true, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-media-minmax": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz", + "integrity": "sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-media-query-parser": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", + "integrity": "sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=", + "dev": true + }, + "node_modules/postcss-modules-extract-imports": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", + "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", + "dev": true, + "dependencies": { + "postcss": "^7.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/postcss-modules-extract-imports/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz", + "integrity": "sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==", + "dev": true, + "dependencies": { + "icss-utils": "^4.1.1", + "postcss": "^7.0.32", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/postcss-modules-local-by-default/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-modules-scope": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz", + "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==", + "dev": true, + "dependencies": { + "postcss": "^7.0.6", + "postcss-selector-parser": "^6.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/postcss-modules-scope/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-modules-values": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz", + "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==", + "dev": true, + "dependencies": { + "icss-utils": "^4.0.0", + "postcss": "^7.0.6" + } + }, + "node_modules/postcss-modules-values/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-nesting": { + "version": "10.1.3", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.1.3.tgz", + "integrity": "sha512-wUC+/YCik4wH3StsbC5fBG1s2Z3ZV74vjGqBFYtmYKlVxoio5TYGM06AiaKkQPPlkXWn72HKfS7Cw5PYxnoXSw==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-normalize": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize/-/postcss-normalize-10.0.1.tgz", + "integrity": "sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA==", + "dev": true, + "dependencies": { + "@csstools/normalize.css": "*", + "postcss-browser-comments": "^4", + "sanitize.css": "*" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "browserslist": ">= 4", + "postcss": ">= 8" + } + }, + "node_modules/postcss-opacity-percentage": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.2.tgz", + "integrity": "sha512-lyUfF7miG+yewZ8EAk9XUBIlrHyUE6fijnesuz+Mj5zrIHIEw6KcIZSOk/elVMqzLvREmXB83Zi/5QpNRYd47w==", + "dev": true, + "funding": [ + { + "type": "kofi", + "url": "https://ko-fi.com/mrcgrtz" + }, + { + "type": "liberapay", + "url": "https://liberapay.com/mrcgrtz" + } + ], + "engines": { + "node": "^12 || ^14 || >=16" + } + }, + "node_modules/postcss-overflow-shorthand": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.3.tgz", + "integrity": "sha512-CxZwoWup9KXzQeeIxtgOciQ00tDtnylYIlJBBODqkgS/PU2jISuWOL/mYLHmZb9ZhZiCaNKsCRiLp22dZUtNsg==", + "dev": true, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-page-break": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", + "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==", + "dev": true, + "peerDependencies": { + "postcss": "^8" + } + }, + "node_modules/postcss-place": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.4.tgz", + "integrity": "sha512-MrgKeiiu5OC/TETQO45kV3npRjOFxEHthsqGtkh3I1rPbZSbXGD/lZVi9j13cYh+NA8PIAPyk6sGjT9QbRyvSg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-preset-env": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.4.3.tgz", + "integrity": "sha512-dlPA65g9KuGv7YsmGyCKtFkZKCPLkoVMUE3omOl6yM+qrynVHxFvf0tMuippIrXB/sB/MyhL1FgTIbrO+qMERg==", + "dev": true, + "dependencies": { + "@csstools/postcss-color-function": "^1.0.3", + "@csstools/postcss-font-format-keywords": "^1.0.0", + "@csstools/postcss-hwb-function": "^1.0.0", + "@csstools/postcss-ic-unit": "^1.0.0", + "@csstools/postcss-is-pseudo-class": "^2.0.1", + "@csstools/postcss-normalize-display-values": "^1.0.0", + "@csstools/postcss-oklab-function": "^1.0.2", + "@csstools/postcss-progressive-custom-properties": "^1.3.0", + "autoprefixer": "^10.4.4", + "browserslist": "^4.20.2", + "css-blank-pseudo": "^3.0.3", + "css-has-pseudo": "^3.0.4", + "css-prefers-color-scheme": "^6.0.3", + "cssdb": "^6.5.0", + "postcss-attribute-case-insensitive": "^5.0.0", + "postcss-clamp": "^4.1.0", + "postcss-color-functional-notation": "^4.2.2", + "postcss-color-hex-alpha": "^8.0.3", + "postcss-color-rebeccapurple": "^7.0.2", + "postcss-custom-media": "^8.0.0", + "postcss-custom-properties": "^12.1.5", + "postcss-custom-selectors": "^6.0.0", + "postcss-dir-pseudo-class": "^6.0.4", + "postcss-double-position-gradients": "^3.1.1", + "postcss-env-function": "^4.0.6", + "postcss-focus-visible": "^6.0.4", + "postcss-focus-within": "^5.0.4", + "postcss-font-variant": "^5.0.0", + "postcss-gap-properties": "^3.0.3", + "postcss-image-set-function": "^4.0.6", + "postcss-initial": "^4.0.1", + "postcss-lab-function": "^4.1.2", + "postcss-logical": "^5.0.4", + "postcss-media-minmax": "^5.0.0", + "postcss-nesting": "^10.1.3", + "postcss-opacity-percentage": "^1.1.2", + "postcss-overflow-shorthand": "^3.0.3", + "postcss-page-break": "^3.0.4", + "postcss-place": "^7.0.4", + "postcss-pseudo-class-any-link": "^7.1.1", + "postcss-replace-overflow-wrap": "^4.0.0", + "postcss-selector-not": "^5.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-preset-env/node_modules/autoprefixer": { + "version": "10.4.4", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.4.tgz", + "integrity": "sha512-Tm8JxsB286VweiZ5F0anmbyGiNI3v3wGv3mz9W+cxEDYB/6jbnj6GM9H9mK3wIL8ftgl+C07Lcwb8PG5PCCPzA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + } + ], + "dependencies": { + "browserslist": "^4.20.2", + "caniuse-lite": "^1.0.30001317", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-preset-env/node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/postcss-pseudo-class-any-link": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.1.tgz", + "integrity": "sha512-JRoLFvPEX/1YTPxRxp1JO4WxBVXJYrSY7NHeak5LImwJ+VobFMwYDQHvfTXEpcn+7fYIeGkC29zYFhFWIZD8fg==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-replace-overflow-wrap": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", + "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", + "dev": true, + "peerDependencies": { + "postcss": "^8.0.3" + } + }, + "node_modules/postcss-resolve-nested-selector": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", + "integrity": "sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4=", + "dev": true + }, + "node_modules/postcss-safe-parser": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", + "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", + "dev": true, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.3.3" + } + }, + "node_modules/postcss-selector-not": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-5.0.0.tgz", + "integrity": "sha512-/2K3A4TCP9orP4TNS7u3tGdRFVKqz/E6pX3aGnriPG0jU78of8wsUcqE4QAhWEU0d+WnMSF93Ah3F//vUtK+iQ==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz", + "integrity": "sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-typescale": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/postcss-typescale/-/postcss-typescale-0.2.3.tgz", + "integrity": "sha512-hbHccnobyhoV6IPYYpgkvGGhv4E80xvQgqK58sSVTxXHAcyMclcepZ9oWVMB5cQB8ZcspickI96/ddbai8K1rA==", + "dev": true, + "dependencies": { + "postcss": "^7.0.17" + } + }, + "node_modules/postcss-typescale/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/postcss-values-parser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz", + "integrity": "sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg==", + "dev": true, + "dependencies": { + "flatten": "^1.0.2", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=6.14.4" + } + }, + "node_modules/postcss/node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/postgres-array": { + "version": "2.0.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/postgres-bytea": { + "version": "1.0.0", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-date": { + "version": "1.0.7", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-interval": { + "version": "1.2.0", + "license": "MIT", + "dependencies": { + "xtend": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/preact": { + "version": "10.6.6", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.6.6.tgz", + "integrity": "sha512-dgxpTFV2vs4vizwKohYKkk7g7rmp1wOOcfd4Tz3IB3Wi+ivZzsn/SpeKJhRENSE+n8sUfsAl4S3HiCVT923ABw==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" + } + }, + "node_modules/preact-render-to-string": { + "version": "5.1.20", + "resolved": "https://registry.npmjs.org/preact-render-to-string/-/preact-render-to-string-5.1.20.tgz", + "integrity": "sha512-ivh2oOGzth0o7XqbatWUQ81WQGoJwSqDKP5z917SoqTWYCAr7dlBzMv3SAMTAu3Gr5g47BJwrvyO44H2Y10ubg==", + "dev": true, + "dependencies": { + "pretty-format": "^3.8.0" + }, + "peerDependencies": { + "preact": ">=10" + } + }, + "node_modules/preact-render-to-string/node_modules/pretty-format": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-3.8.0.tgz", + "integrity": "sha1-v77VbV6ad2ZF9LH/eqGjrE+jw4U=", + "dev": true + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prepend-http": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/prettier": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.0.tgz", + "integrity": "sha512-m2FgJibYrBGGgQXNzfd0PuDGShJgRavjUoRCw1mZERIWVSXF0iLzLm+aOqTAbLnC3n6JzUhAA8uZnFVghHJ86A==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-eslint": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/prettier-eslint/-/prettier-eslint-13.0.0.tgz", + "integrity": "sha512-P5K31qWgUOQCtJL/3tpvEe28KfP49qbr6MTVEXC7I2k7ci55bP3YDr+glhyCdhIzxGCVp2f8eobfQ5so52RIIA==", + "dev": true, + "dependencies": { + "@typescript-eslint/parser": "^3.0.0", + "common-tags": "^1.4.0", + "dlv": "^1.1.0", + "eslint": "^7.9.0", + "indent-string": "^4.0.0", + "lodash.merge": "^4.6.0", + "loglevel-colored-level-prefix": "^1.0.0", + "prettier": "^2.0.0", + "pretty-format": "^23.0.1", + "require-relative": "^0.8.7", + "typescript": "^3.9.3", + "vue-eslint-parser": "~7.1.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/prettier-eslint/node_modules/@eslint/eslintrc": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/prettier-eslint/node_modules/@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/prettier-eslint/node_modules/@typescript-eslint/experimental-utils": { + "version": "3.10.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.3", + "@typescript-eslint/types": "3.10.1", + "@typescript-eslint/typescript-estree": "3.10.1", + "eslint-scope": "^5.0.0", + "eslint-utils": "^2.0.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + } + }, + "node_modules/prettier-eslint/node_modules/@typescript-eslint/parser": { + "version": "3.10.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@types/eslint-visitor-keys": "^1.0.0", + "@typescript-eslint/experimental-utils": "3.10.1", + "@typescript-eslint/types": "3.10.1", + "@typescript-eslint/typescript-estree": "3.10.1", + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/prettier-eslint/node_modules/@typescript-eslint/types": { + "version": "3.10.1", + "dev": true, + "license": "MIT", + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/prettier-eslint/node_modules/@typescript-eslint/typescript-estree": { + "version": "3.10.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "3.10.1", + "@typescript-eslint/visitor-keys": "3.10.1", + "debug": "^4.1.1", + "glob": "^7.1.6", + "is-glob": "^4.0.1", + "lodash": "^4.17.15", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/prettier-eslint/node_modules/@typescript-eslint/visitor-keys": { + "version": "3.10.1", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/prettier-eslint/node_modules/ansi-regex": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/prettier-eslint/node_modules/ansi-styles": { + "version": "3.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/prettier-eslint/node_modules/color-convert": { + "version": "1.9.3", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/prettier-eslint/node_modules/color-name": { + "version": "1.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/prettier-eslint/node_modules/eslint": { + "version": "7.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/prettier-eslint/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=4" + } + }, + "node_modules/prettier-eslint/node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/prettier-eslint/node_modules/espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "dependencies": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/prettier-eslint/node_modules/glob": { + "version": "7.1.7", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/prettier-eslint/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/prettier-eslint/node_modules/pretty-format": { + "version": "23.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^3.0.0", + "ansi-styles": "^3.2.0" + } + }, + "node_modules/prettier-eslint/node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/prettier-eslint/node_modules/typescript": { + "version": "3.9.9", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/pretty": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pretty/-/pretty-2.0.0.tgz", + "integrity": "sha1-rbx5YLe7/iiaVX3F9zdhmiINBqU=", + "dev": true, + "dependencies": { + "condense-newlines": "^0.2.1", + "extend-shallow": "^2.0.1", + "js-beautify": "^1.6.12" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "dev": true, + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/printj": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/printj/-/printj-1.2.3.tgz", + "integrity": "sha512-sanczS6xOJOg7IKDvi4sGOUOe7c1tsEzjwlLFH/zgwx/uyImVM9/rgBkc8AfiQa/Vg54nRd8mkm9yI7WV/O+WA==", + "bin": { + "printj": "bin/printj.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/prismjs": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.27.0.tgz", + "integrity": "sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/proc-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.0.tgz", + "integrity": "sha512-I/35MfCX2H8jBUhKN8JB8nmqvQo/nKdrBodBY7L3RhDSPPyvOHwLYNmPuhwuJq7a7C3vgFKWGQM+ecPStcvOHA==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "license": "MIT" + }, + "node_modules/progress": { + "version": "2.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/proj4": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/proj4/-/proj4-2.8.0.tgz", + "integrity": "sha512-baC+YcD4xsSqJ+CpCZljj2gcQDhlKb+J+Zjv/2KSBwWNjk4M0pafgQsE+mWurd84tflMIsP+7j7mtIpFDHzQfQ==", + "dependencies": { + "mgrs": "1.0.0", + "wkt-parser": "^1.3.1" + } + }, + "node_modules/promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "dependencies": { + "asap": "~2.0.3" + } + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "node_modules/promise-polyfill": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.2.3.tgz", + "integrity": "sha512-Og0+jCRQetV84U8wVjMNccfGCnMQ9mGs9Hv78QFe+pSDD3gWTpz0y+1QCuxy5d/vBFuZ3iwP2eycAkvqIMPmWg==", + "dev": true + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/promise.allsettled": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/promise.allsettled/-/promise.allsettled-1.0.5.tgz", + "integrity": "sha512-tVDqeZPoBC0SlzJHzWGZ2NKAguVq2oiYj7gbggbiTvH2itHohijTp7njOUA0aQ/nl+0lr/r6egmhoYu63UZ/pQ==", + "dev": true, + "dependencies": { + "array.prototype.map": "^1.0.4", + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1", + "get-intrinsic": "^1.1.1", + "iterate-value": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/promise.prototype.finally": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/promise.prototype.finally/-/promise.prototype.finally-3.1.3.tgz", + "integrity": "sha512-EXRF3fC9/0gz4qkt/f5EP5iW4kj9oFpBICNpCNOb/52+8nlHIX07FPLbi/q4qYBQ1xZqivMzTpNQSnArVASolQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "node_modules/proper-lockfile": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-2.0.1.tgz", + "integrity": "sha1-FZ+wYZPTIAP0s2kd0uwaY0qoDR0=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "retry": "^0.10.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/proper-lockfile/node_modules/retry": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", + "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/property-information": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz", + "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==", + "dev": true, + "dependencies": { + "xtend": "^4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", + "dev": true + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-5.0.0.tgz", + "integrity": "sha512-gkH7BkvLVkSfX9Dk27W6TyNOWWZWRilRfk1XxGNWOYJ2TuedAv1yFpCaU9QSBmBe716XOTNpYNOzhysyw8xn7g==", + "dependencies": { + "agent-base": "^6.0.0", + "debug": "4", + "http-proxy-agent": "^4.0.0", + "https-proxy-agent": "^5.0.0", + "lru-cache": "^5.1.1", + "pac-proxy-agent": "^5.0.0", + "proxy-from-env": "^1.0.0", + "socks-proxy-agent": "^5.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/proxy-agent/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/proxy-agent/node_modules/socks-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz", + "integrity": "sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ==", + "dependencies": { + "agent-base": "^6.0.2", + "debug": "4", + "socks": "^2.3.3" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/proxy-agent/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "node_modules/psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, + "node_modules/pstree.remy": { + "version": "1.1.8", + "dev": true, + "license": "MIT" + }, + "node_modules/public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/public-encrypt/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/pug": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.2.tgz", + "integrity": "sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw==", + "dev": true, + "dependencies": { + "pug-code-gen": "^3.0.2", + "pug-filters": "^4.0.0", + "pug-lexer": "^5.0.1", + "pug-linker": "^4.0.0", + "pug-load": "^3.0.0", + "pug-parser": "^6.0.0", + "pug-runtime": "^3.0.1", + "pug-strip-comments": "^2.0.0" + } + }, + "node_modules/pug-attrs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-3.0.0.tgz", + "integrity": "sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==", + "dev": true, + "dependencies": { + "constantinople": "^4.0.1", + "js-stringify": "^1.0.2", + "pug-runtime": "^3.0.0" + } + }, + "node_modules/pug-code-gen": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.2.tgz", + "integrity": "sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg==", + "dev": true, + "dependencies": { + "constantinople": "^4.0.1", + "doctypes": "^1.1.0", + "js-stringify": "^1.0.2", + "pug-attrs": "^3.0.0", + "pug-error": "^2.0.0", + "pug-runtime": "^3.0.0", + "void-elements": "^3.1.0", + "with": "^7.0.0" + } + }, + "node_modules/pug-error": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-2.0.0.tgz", + "integrity": "sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ==", + "dev": true + }, + "node_modules/pug-filters": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-4.0.0.tgz", + "integrity": "sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==", + "dev": true, + "dependencies": { + "constantinople": "^4.0.1", + "jstransformer": "1.0.0", + "pug-error": "^2.0.0", + "pug-walk": "^2.0.0", + "resolve": "^1.15.1" + } + }, + "node_modules/pug-lexer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-5.0.1.tgz", + "integrity": "sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==", + "dev": true, + "dependencies": { + "character-parser": "^2.2.0", + "is-expression": "^4.0.0", + "pug-error": "^2.0.0" + } + }, + "node_modules/pug-linker": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-4.0.0.tgz", + "integrity": "sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==", + "dev": true, + "dependencies": { + "pug-error": "^2.0.0", + "pug-walk": "^2.0.0" + } + }, + "node_modules/pug-load": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-3.0.0.tgz", + "integrity": "sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==", + "dev": true, + "dependencies": { + "object-assign": "^4.1.1", + "pug-walk": "^2.0.0" + } + }, + "node_modules/pug-parser": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-6.0.0.tgz", + "integrity": "sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==", + "dev": true, + "dependencies": { + "pug-error": "^2.0.0", + "token-stream": "1.0.0" + } + }, + "node_modules/pug-runtime": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-3.0.1.tgz", + "integrity": "sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==", + "dev": true + }, + "node_modules/pug-strip-comments": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-2.0.0.tgz", + "integrity": "sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==", + "dev": true, + "dependencies": { + "pug-error": "^2.0.0" + } + }, + "node_modules/pug-walk": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-2.0.0.tgz", + "integrity": "sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==", + "dev": true + }, + "node_modules/pump": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/pumpify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-2.0.1.tgz", + "integrity": "sha512-m7KOje7jZxrmutanlkS1daj1dS6z6BgslzOXmcSEpIlCxM3VJH7lG5QLeck/6hgF6F4crFf01UtQmNsJfweTAw==", + "dependencies": { + "duplexify": "^4.1.1", + "inherits": "^2.0.3", + "pump": "^3.0.0" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pupa": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-goat": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/q": { + "version": "1.5.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/quick-lru": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/quickselect": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz", + "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==", + "dev": true + }, + "node_modules/railroad-diagrams": { + "version": "1.0.0", + "license": "CC0-1.0" + }, + "node_modules/ramda": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.21.0.tgz", + "integrity": "sha1-oAGr7bP/YQd9T/HVd9RN536NCjU=", + "dev": true + }, + "node_modules/randexp": { + "version": "0.4.6", + "license": "MIT", + "dependencies": { + "discontinuous-range": "1.0.0", + "ret": "~0.1.10" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "dependencies": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz", + "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-loader": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz", + "integrity": "sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/raw-loader/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/rbush": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/rbush/-/rbush-3.0.1.tgz", + "integrity": "sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==", + "dev": true, + "dependencies": { + "quickselect": "^2.0.0" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "dev": true, + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc-config-loader": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.1", + "js-yaml": "^4.0.0", + "json5": "^2.1.2", + "require-from-string": "^2.0.2" + } + }, + "node_modules/rc-config-loader/node_modules/argparse": { + "version": "2.0.1", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/rc-config-loader/node_modules/js-yaml": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", + "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "dev": true, + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-colorful": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/react-colorful/-/react-colorful-5.5.1.tgz", + "integrity": "sha512-M1TJH2X3RXEt12sWkpa6hLc/bbYS0H6F4rIqjQZ+RxNBstpY67d9TrFXtqdZwhpmBXcCwEi7stKqFue3ZRkiOg==", + "dev": true, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/react-dom": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", + "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", + "dev": true, + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "scheduler": "^0.20.2" + }, + "peerDependencies": { + "react": "17.0.2" + } + }, + "node_modules/react-draggable": { + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/react-draggable/-/react-draggable-4.4.4.tgz", + "integrity": "sha512-6e0WdcNLwpBx/YIDpoyd2Xb04PB0elrDrulKUgdrIlwuYvxh5Ok9M+F8cljm8kPXXs43PmMzek9RrB1b7mLMqA==", + "dev": true, + "dependencies": { + "clsx": "^1.1.1", + "prop-types": "^15.6.0" + }, + "peerDependencies": { + "react": ">= 16.3.0", + "react-dom": ">= 16.3.0" + } + }, + "node_modules/react-fast-compare": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz", + "integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==", + "dev": true + }, + "node_modules/react-helmet-async": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.2.3.tgz", + "integrity": "sha512-mCk2silF53Tq/YaYdkl2sB+/tDoPnaxN7dFS/6ZLJb/rhUY2EWGI5Xj2b4jHppScMqY45MbgPSwTxDchKpZ5Kw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.12.5", + "invariant": "^2.2.4", + "prop-types": "^15.7.2", + "react-fast-compare": "^3.2.0", + "shallowequal": "^1.1.0" + }, + "peerDependencies": { + "react": "^16.6.0 || ^17.0.0", + "react-dom": "^16.6.0 || ^17.0.0" + } + }, + "node_modules/react-inspector": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/react-inspector/-/react-inspector-5.1.1.tgz", + "integrity": "sha512-GURDaYzoLbW8pMGXwYPDBIv6nqei4kK7LPRZ9q9HCZF54wqXz/dnylBp/kfE9XmekBhHvLDdcYeyIwSrvtOiWg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.0.0", + "is-dom": "^1.0.0", + "prop-types": "^15.0.0" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" + }, + "node_modules/react-popper": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-2.2.5.tgz", + "integrity": "sha512-kxGkS80eQGtLl18+uig1UIf9MKixFSyPxglsgLBxlYnyDf65BiY9B3nZSc6C9XUNDgStROB0fMQlTEz1KxGddw==", + "dev": true, + "dependencies": { + "react-fast-compare": "^3.0.1", + "warning": "^4.0.2" + }, + "peerDependencies": { + "@popperjs/core": "^2.0.0", + "react": "^16.8.0 || ^17" + } + }, + "node_modules/react-popper-tooltip": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/react-popper-tooltip/-/react-popper-tooltip-3.1.1.tgz", + "integrity": "sha512-EnERAnnKRptQBJyaee5GJScWNUKQPDD2ywvzZyUjst/wj5U64C8/CnSYLNEmP2hG0IJ3ZhtDxE8oDN+KOyavXQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.12.5", + "@popperjs/core": "^2.5.4", + "react-popper": "^2.2.4" + }, + "peerDependencies": { + "react": "^16.6.0 || ^17.0.0", + "react-dom": "^16.6.0 || ^17.0.0" + } + }, + "node_modules/react-router": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.2.2.tgz", + "integrity": "sha512-/MbxyLzd7Q7amp4gDOGaYvXwhEojkJD5BtExkuKmj39VEE0m3l/zipf6h2WIB2jyAO0lI6NGETh4RDcktRm4AQ==", + "dev": true, + "dependencies": { + "history": "^5.2.0" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/react-router-dom": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.2.2.tgz", + "integrity": "sha512-AtYEsAST7bDD4dLSQHDnk/qxWLJdad5t1HFa1qJyUrCeGgEuCSw0VB/27ARbF9Fi/W5598ujvJOm3ujUCVzuYQ==", + "dev": true, + "dependencies": { + "history": "^5.2.0", + "react-router": "6.2.2" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, + "node_modules/react-router-dom/node_modules/history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.6" + } + }, + "node_modules/react-router/node_modules/history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.6" + } + }, + "node_modules/react-shallow-renderer": { + "version": "16.14.1", + "resolved": "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.14.1.tgz", + "integrity": "sha512-rkIMcQi01/+kxiTE9D3fdS959U1g7gs+/rborw++42m1O9FAQiNI/UNRZExVUoAOprn4umcXf+pFRou8i4zuBg==", + "dev": true, + "dependencies": { + "object-assign": "^4.1.1", + "react-is": "^16.12.0 || ^17.0.0" + }, + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0" + } + }, + "node_modules/react-sizeme": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/react-sizeme/-/react-sizeme-3.0.2.tgz", + "integrity": "sha512-xOIAOqqSSmKlKFJLO3inBQBdymzDuXx4iuwkNcJmC96jeiOg5ojByvL+g3MW9LPEsojLbC6pf68zOfobK8IPlw==", + "dev": true, + "dependencies": { + "element-resize-detector": "^1.2.2", + "invariant": "^2.2.4", + "shallowequal": "^1.1.0", + "throttle-debounce": "^3.0.1" + } + }, + "node_modules/react-syntax-highlighter": { + "version": "13.5.3", + "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-13.5.3.tgz", + "integrity": "sha512-crPaF+QGPeHNIblxxCdf2Lg936NAHKhNhuMzRL3F9ct6aYXL3NcZtCL0Rms9+qVo6Y1EQLdXGypBNSbPL/r+qg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.3.1", + "highlight.js": "^10.1.1", + "lowlight": "^1.14.0", + "prismjs": "^1.21.0", + "refractor": "^3.1.0" + }, + "peerDependencies": { + "react": ">= 0.14.0" + } + }, + "node_modules/react-test-renderer": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-17.0.2.tgz", + "integrity": "sha512-yaQ9cB89c17PUb0x6UfWRs7kQCorVdHlutU1boVPEsB8IDZH6n9tHxMacc3y0JoXOJUsZb/t/Mb8FUWMKaM7iQ==", + "dev": true, + "dependencies": { + "object-assign": "^4.1.1", + "react-is": "^17.0.2", + "react-shallow-renderer": "^16.13.1", + "scheduler": "^0.20.2" + }, + "peerDependencies": { + "react": "17.0.2" + } + }, + "node_modules/react-textarea-autosize": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.3.3.tgz", + "integrity": "sha512-2XlHXK2TDxS6vbQaoPbMOfQ8GK7+irc2fVK6QFIcC8GOnH3zI/v481n+j1L0WaPVvKxwesnY93fEfH++sus2rQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.10.2", + "use-composed-ref": "^1.0.0", + "use-latest": "^1.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0" + } + }, + "node_modules/react-waterfall-render": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/react-waterfall-render/-/react-waterfall-render-2.0.0.tgz", + "integrity": "sha512-PCox1jrpL72KAHVdRTQmo4/O7ElrVmnvExrJU04ioOg9qrYcXtctPC41xVCjTbqzZjes8KCdEfaAS3KolZiUOw==", + "dev": true, + "engines": { + "node": "^12.20 || >= 14.13" + }, + "funding": { + "url": "https://github.com/sponsors/jaydenseric" + }, + "peerDependencies": { + "react": "16.14 - 17" + } + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", + "dev": true, + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/read-package-json": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.0.tgz", + "integrity": "sha512-1cjk2MV5ONDMn34uxSID3X8NY7VKsXfJnjbcVdFMvHEnJOBzU6MJ7/3yg6QFVZDq5/1yFNrKBUK9kGnonyGP2Q==", + "dev": true, + "dependencies": { + "glob": "^7.2.0", + "json-parse-even-better-errors": "^2.3.1", + "normalize-package-data": "^4.0.0", + "npm-normalize-package-bin": "^1.0.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/read-package-json-fast": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", + "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", + "dev": true, + "dependencies": { + "json-parse-even-better-errors": "^2.3.0", + "npm-normalize-package-bin": "^1.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/read-package-json/node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/read-package-json/node_modules/hosted-git-info": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.0.0.tgz", + "integrity": "sha512-rRnjWu0Bxj+nIfUOkz0695C0H6tRrN5iYIzYejb0tDEefe2AekHu/U5Kn9pEie5vsJqpNQU02az7TGSH3qpz4Q==", + "dev": true, + "dependencies": { + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/read-package-json/node_modules/lru-cache": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.6.0.tgz", + "integrity": "sha512-zjOf6cyMI7rcN+5MtLsT4GnDjc6D9XHi8kYcsfXTqWC+yLdSiU3/jtEPX9wZE77+XLtnmdIWu3+291hkizfH+Q==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/read-package-json/node_modules/normalize-package-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.0.tgz", + "integrity": "sha512-m+GL22VXJKkKbw62ZaBBjv8u6IE3UI4Mh5QakIqs3fWiKe0Xyi6L97hakwZK41/LD4R/2ly71Bayx0NLMwLA/g==", + "dev": true, + "dependencies": { + "hosted-git-info": "^5.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/read-pkg": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/path-type": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/pify": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/readable-stream": { + "version": "2.3.7", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/recast": { + "version": "0.20.5", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.20.5.tgz", + "integrity": "sha512-E5qICoPoNL4yU0H0NoBDntNB0Q5oMSNh9usFctYniLBluTthi3RsQVBXIJNbApOlvSwW/RGxIuokPcAc59J5fQ==", + "dev": true, + "dependencies": { + "ast-types": "0.14.2", + "esprima": "~4.0.0", + "source-map": "~0.6.1", + "tslib": "^2.0.1" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/recast/node_modules/ast-types": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz", + "integrity": "sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==", + "dev": true, + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/rechoir": { + "version": "0.6.2", + "dev": true, + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/redent": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/redeyed": { + "version": "0.4.4", + "license": "MIT", + "dependencies": { + "esprima": "~1.0.4" + } + }, + "node_modules/redeyed/node_modules/esprima": { + "version": "1.0.4", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/reduce-css-calc": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-2.1.8.tgz", + "integrity": "sha512-8liAVezDmUcH+tdzoEGrhfbGcP7nOV4NkGE3a74+qqvE7nt9i4sKLGBuZNOnpI4WiGksiNPklZxva80061QiPg==", + "dev": true, + "dependencies": { + "css-unit-converter": "^1.1.1", + "postcss-value-parser": "^3.3.0" + } + }, + "node_modules/reduce-css-calc/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/redux": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.1.2.tgz", + "integrity": "sha512-SH8PglcebESbd/shgf6mii6EIoRM0zrQyjcuQ+ojmfxjTtE0z9Y8pa62iA/OJ58qjP6j27uyW4kUF4jl/jd6sw==", + "dependencies": { + "@babel/runtime": "^7.9.2" + } + }, + "node_modules/refractor": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/refractor/-/refractor-3.6.0.tgz", + "integrity": "sha512-MY9W41IOWxxk31o+YvFCNyNzdkc9M20NoZK5vq6jkv4I/uh2zkWcfudj0Q1fovjUQJrNewS9NMzeTtqPf+n5EA==", + "dev": true, + "dependencies": { + "hastscript": "^6.0.0", + "parse-entities": "^2.0.0", + "prismjs": "~1.27.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", + "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + }, + "node_modules/regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-not/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-not/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-not/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-not/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz", + "integrity": "sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/regexpu-core": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz", + "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.0.1", + "regjsgen": "^0.6.0", + "regjsparser": "^0.8.2", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/registry-auth-token": { + "version": "4.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "rc": "^1.2.8" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/registry-url": { + "version": "5.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "rc": "^1.2.8" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/regjsgen": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", + "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", + "dev": true + }, + "node_modules/regjsparser": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", + "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/remark-footnotes": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/remark-footnotes/-/remark-footnotes-2.0.0.tgz", + "integrity": "sha512-3Clt8ZMH75Ayjp9q4CorNeyjwIxHFcTkaektplKGl2A1jNGEUey8cKL0ZC5vJwfcD5GFGsNLImLG/NGzWIzoMQ==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-mdx": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-1.6.22.tgz", + "integrity": "sha512-phMHBJgeV76uyFkH4rvzCftLfKCr2RZuF+/gmVcaKrpsihyzmhXjA0BEMDaPTXG5y8qZOKPVo83NAOX01LPnOQ==", + "dev": true, + "dependencies": { + "@babel/core": "7.12.9", + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-proposal-object-rest-spread": "7.12.1", + "@babel/plugin-syntax-jsx": "7.12.1", + "@mdx-js/util": "1.6.22", + "is-alphabetical": "1.0.4", + "remark-parse": "8.0.3", + "unified": "9.2.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-mdx/node_modules/@babel/core": { + "version": "7.12.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz", + "integrity": "sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.5", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.5", + "@babel/parser": "^7.12.7", + "@babel/template": "^7.12.7", + "@babel/traverse": "^7.12.9", + "@babel/types": "^7.12.7", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/remark-mdx/node_modules/@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + }, + "node_modules/remark-mdx/node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", + "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.12.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/remark-mdx/node_modules/@babel/plugin-syntax-jsx": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz", + "integrity": "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/remark-mdx/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/remark-mdx/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/remark-parse": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.3.tgz", + "integrity": "sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==", + "dev": true, + "dependencies": { + "ccount": "^1.0.0", + "collapse-white-space": "^1.0.2", + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "is-word-character": "^1.0.0", + "markdown-escapes": "^1.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "trim": "0.0.1", + "trim-trailing-lines": "^1.0.0", + "unherit": "^1.0.4", + "unist-util-remove-position": "^2.0.0", + "vfile-location": "^3.0.0", + "xtend": "^4.0.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-squeeze-paragraphs": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-squeeze-paragraphs/-/remark-squeeze-paragraphs-4.0.0.tgz", + "integrity": "sha512-8qRqmL9F4nuLPIgl92XUuxI3pFxize+F1H0e/W3llTk0UsjJaj01+RrirkMw7P21RKe4X6goQhYRSvNWX+70Rw==", + "dev": true, + "dependencies": { + "mdast-squeeze-paragraphs": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remote-git-tags": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "license": "ISC" + }, + "node_modules/renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "dev": true, + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "node_modules/renderkid/node_modules/css-select": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.2.1.tgz", + "integrity": "sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^5.1.0", + "domhandler": "^4.3.0", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/renderkid/node_modules/css-what": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", + "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/repeating": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-finite": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-relative": { + "version": "0.8.7", + "dev": true, + "license": "MIT" + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" + }, + "node_modules/resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "dependencies": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-dir": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-global": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "global-dirs": "^0.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "deprecated": "https://github.com/lydell/resolve-url#deprecated", + "dev": true + }, + "node_modules/resolve.exports": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", + "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/responselike": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "lowercase-keys": "^1.0.0" + } + }, + "node_modules/restore-cursor": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/restore-cursor/node_modules/mimic-fn": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/restore-cursor/node_modules/onetime": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ret": { + "version": "0.1.15", + "license": "MIT", + "engines": { + "node": ">=0.12" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/retry-request": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-4.2.2.tgz", + "integrity": "sha512-xA93uxUD/rogV7BV59agW/JHPGXeREMWiZc9jhcwY4YdZ7QOtC7qbomYg0n4wyk2lJhggjvKvhNX8wln/Aldhg==", + "dependencies": { + "debug": "^4.1.1", + "extend": "^3.0.2" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "dev": true + }, + "node_modules/rimraf": { + "version": "3.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/rollup": { + "version": "2.70.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.70.1.tgz", + "integrity": "sha512-CRYsI5EuzLbXdxC6RnYhOuRdtz4bhejPMSWjsFLfVM/7w/85n2szZv6yExqUXsBdz5KT8eoubeyDUDjhLHEslA==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/rsvp": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", + "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", + "dev": true, + "engines": { + "node": "6.* || >= 7.*" + } + }, + "node_modules/run-async": { + "version": "2.4.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "dependencies": { + "aproba": "^1.1.1" + } + }, + "node_modules/run-queue/node_modules/aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "node_modules/rxjs": { + "version": "6.6.7", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/rxjs/node_modules/tslib": { + "version": "1.14.1", + "dev": true, + "license": "0BSD" + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "license": "MIT" + }, + "node_modules/safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "dependencies": { + "ret": "~0.1.10" + } + }, + "node_modules/safe-stable-stringify": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.3.1.tgz", + "integrity": "sha512-kYBSfT+troD9cDA85VDnHZ1rpHC50O0g1e6WlGHVCz/g+JS+9WKLj+XwFYyR8UbrZN8ll9HUpDAAddY58MGisg==", + "engines": { + "node": ">=10" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "license": "MIT" + }, + "node_modules/sane": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", + "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", + "deprecated": "some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added", + "dev": true, + "dependencies": { + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" + }, + "bin": { + "sane": "src/cli.js" + }, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/sane/node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "node_modules/sane/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/sane/node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/sane/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/sane/node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/sane/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/micromatch/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/sane/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/sane/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/sane/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/sanitize.css": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/sanitize.css/-/sanitize.css-13.0.0.tgz", + "integrity": "sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA==", + "dev": true + }, + "node_modules/sax": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", + "integrity": "sha1-e45lYZCyKOgaZq6nSEgNgozS03o=" + }, + "node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/scheduler": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", + "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "dev": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "node_modules/schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/selderee": { + "version": "0.6.0", + "license": "MIT", + "dependencies": { + "parseley": "^0.7.0" + }, + "funding": { + "url": "https://ko-fi.com/killymxi" + } + }, + "node_modules/semantic-release": { + "version": "19.0.2", + "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-19.0.2.tgz", + "integrity": "sha512-7tPonjZxukKECmClhsfyMKDt0GR38feIC2HxgyYaBi+9tDySBLjK/zYDLhh+m6yjnHIJa9eBTKYE7k63ZQcYbw==", + "dev": true, + "dependencies": { + "@semantic-release/commit-analyzer": "^9.0.2", + "@semantic-release/error": "^3.0.0", + "@semantic-release/github": "^8.0.0", + "@semantic-release/npm": "^9.0.0", + "@semantic-release/release-notes-generator": "^10.0.0", + "aggregate-error": "^3.0.0", + "cosmiconfig": "^7.0.0", + "debug": "^4.0.0", + "env-ci": "^5.0.0", + "execa": "^5.0.0", + "figures": "^3.0.0", + "find-versions": "^4.0.0", + "get-stream": "^6.0.0", + "git-log-parser": "^1.2.0", + "hook-std": "^2.0.0", + "hosted-git-info": "^4.0.0", + "lodash": "^4.17.21", + "marked": "^4.0.10", + "marked-terminal": "^5.0.0", + "micromatch": "^4.0.2", + "p-each-series": "^2.1.0", + "p-reduce": "^2.0.0", + "read-pkg-up": "^7.0.0", + "resolve-from": "^5.0.0", + "semver": "^7.3.2", + "semver-diff": "^3.1.1", + "signale": "^1.2.1", + "yargs": "^16.2.0" + }, + "bin": { + "semantic-release": "bin/semantic-release.js" + }, + "engines": { + "node": ">=16 || ^14.17" + } + }, + "node_modules/semantic-release/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/semantic-release/node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semantic-release/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/semver": { + "version": "7.3.5", + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver-diff": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semver-diff/node_modules/semver": { + "version": "6.3.0", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/semver-utils": { + "version": "1.1.4", + "dev": true, + "license": "APACHEv2" + }, + "node_modules/send": { + "version": "0.17.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", + "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", + "dependencies": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "1.8.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/serialize-javascript": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-favicon": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.5.0.tgz", + "integrity": "sha1-k10kDN/g9YBTB/3+ln2IlCosvPA=", + "dev": true, + "dependencies": { + "etag": "~1.8.1", + "fresh": "0.5.2", + "ms": "2.1.1", + "parseurl": "~1.3.2", + "safe-buffer": "5.1.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-favicon/node_modules/ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "node_modules/serve-favicon/node_modules/safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + }, + "node_modules/serve-static": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", + "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "node_modules/set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==", + "dev": true + }, + "node_modules/sharkdown": { + "version": "0.1.1", + "license": "BSD-2-Clause", + "dependencies": { + "cardinal": "~0.4.2", + "minimist": "0.0.5", + "split": "~0.2.10" + }, + "bin": { + "sharkdown": "sharkdown" + } + }, + "node_modules/sharkdown/node_modules/minimist": { + "version": "0.0.5", + "license": "MIT" + }, + "node_modules/sharkdown/node_modules/split": { + "version": "0.2.10", + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/shelljs": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "dev": true, + "dependencies": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/shelljs/node_modules/interpret": { + "version": "1.4.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/shiki": { + "version": "0.9.12", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.9.12.tgz", + "integrity": "sha512-VXcROdldv0/Qu0w2XvzU4IrvTeBNs/Kj/FCmtcEXGz7Tic/veQzliJj6tEiAgoKianhQstpYmbPDStHU5Opqcw==", + "dev": true, + "dependencies": { + "jsonc-parser": "^3.0.0", + "onigasm": "^2.2.5", + "vscode-textmate": "5.2.0" + } + }, + "node_modules/shpjs": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/shpjs/-/shpjs-4.0.2.tgz", + "integrity": "sha512-yiyc7FyOCnVeF6UiJmKMxg5P/x0MQIUnH3m+OhFb2eic39WZo40b7jxh+zkhj309kA2Hh2t5La+kFv8Im94C3g==", + "dependencies": { + "jszip": "^3.5.0", + "lie": "^3.0.1", + "lru-cache": "^2.7.0", + "parsedbf": "^1.1.0", + "proj4": "^2.1.4" + } + }, + "node_modules/shpjs/node_modules/lru-cache": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=" + }, + "node_modules/side-channel": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", + "dev": true + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "node_modules/signale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/signale/-/signale-1.4.0.tgz", + "integrity": "sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w==", + "dev": true, + "dependencies": { + "chalk": "^2.3.2", + "figures": "^2.0.0", + "pkg-conf": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/signale/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/signale/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/signale/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/signale/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/signale/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/signale/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/signale/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/simple-swizzle/node_modules/is-arrayish": { + "version": "0.3.2", + "license": "MIT" + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "dev": true, + "license": "MIT" + }, + "node_modules/slash": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/snakeize": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/snakeize/-/snakeize-0.1.0.tgz", + "integrity": "sha1-EMCI2LWOsHazIpu1oE4jLOEmQi0=" + }, + "node_modules/snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "dependencies": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "dependencies": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "dependencies": { + "kind-of": "^3.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util/node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/snapdragon-util/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/snapdragon/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/snapdragon/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/snapdragon/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snarkdown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/snarkdown/-/snarkdown-2.0.0.tgz", + "integrity": "sha512-MgL/7k/AZdXCTJiNgrO7chgDqaB9FGM/1Tvlcenenb7div6obaDATzs16JhFyHHBGodHT3B7RzRc5qk8pFhg3A==", + "dev": true + }, + "node_modules/socks": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", + "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", + "dependencies": { + "ip": "^1.1.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz", + "integrity": "sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==", + "dev": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.1", + "socks": "^2.6.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, + "node_modules/source-map": { + "version": "0.6.1", + "devOptional": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", + "dev": true, + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "deprecated": "See https://github.com/lydell/source-map-url#deprecated", + "dev": true + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "node_modules/space-separated-tokens": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz", + "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/spawn-error-forwarder": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/spawn-error-forwarder/-/spawn-error-forwarder-1.0.0.tgz", + "integrity": "sha1-Gv2Uc46ZmwNG17n8NzvlXgdXcCk=", + "dev": true + }, + "node_modules/spawn-please": { + "version": "1.0.0", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "dev": true, + "license": "CC-BY-3.0" + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.8", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/specificity": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/specificity/-/specificity-0.4.1.tgz", + "integrity": "sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg==", + "dev": true, + "bin": { + "specificity": "bin/specificity" + } + }, + "node_modules/splaytree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.0.tgz", + "integrity": "sha512-gvUGR7xnOy0fLKTCxDeUZYgU/I1Tdf8M/lM1Qrf8L2TIOR5ipZjGk02uYcdv0o2x7WjVRgpm3iS2clLyuVAt0Q==" + }, + "node_modules/split": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/split-lines": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/split-lines/-/split-lines-1.1.0.tgz", + "integrity": "sha1-Oruo9ZhhQUL5240nq2q4dWYqHgk=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-string/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-string/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-string/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-string/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split2": { + "version": "3.2.2", + "license": "ISC", + "dependencies": { + "readable-stream": "^3.0.0" + } + }, + "node_modules/split2/node_modules/readable-stream": { + "version": "3.6.0", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/sql-formatter": { + "version": "4.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "sql-formatter": "bin/sqlfmt.js" + } + }, + "node_modules/sql-formatter/node_modules/argparse": { + "version": "2.0.1", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/ssf": { + "version": "0.11.2", + "license": "Apache-2.0", + "dependencies": { + "frac": "~1.1.2" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "dev": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "node_modules/stack-trace": { + "version": "0.0.10", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/stack-utils": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", + "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/standard-version": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/standard-version/-/standard-version-9.3.2.tgz", + "integrity": "sha512-u1rfKP4o4ew7Yjbfycv80aNMN2feTiqseAhUhrrx2XtdQGmu7gucpziXe68Z4YfHVqlxVEzo4aUA0Iu3VQOTgQ==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "conventional-changelog": "3.1.24", + "conventional-changelog-config-spec": "2.1.0", + "conventional-changelog-conventionalcommits": "4.6.1", + "conventional-recommended-bump": "6.1.0", + "detect-indent": "^6.0.0", + "detect-newline": "^3.1.0", + "dotgitignore": "^2.1.0", + "figures": "^3.1.0", + "find-up": "^5.0.0", + "fs-access": "^1.0.1", + "git-semver-tags": "^4.0.0", + "semver": "^7.1.1", + "stringify-package": "^1.0.1", + "yargs": "^16.0.0" + }, + "bin": { + "standard-version": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/standard-version/node_modules/ansi-styles": { + "version": "3.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/standard-version/node_modules/chalk": { + "version": "2.4.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/standard-version/node_modules/color-convert": { + "version": "1.9.3", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/standard-version/node_modules/color-name": { + "version": "1.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/standard-version/node_modules/compare-func": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" + } + }, + "node_modules/standard-version/node_modules/conventional-changelog": { + "version": "3.1.24", + "dev": true, + "license": "MIT", + "dependencies": { + "conventional-changelog-angular": "^5.0.12", + "conventional-changelog-atom": "^2.0.8", + "conventional-changelog-codemirror": "^2.0.8", + "conventional-changelog-conventionalcommits": "^4.5.0", + "conventional-changelog-core": "^4.2.1", + "conventional-changelog-ember": "^2.0.9", + "conventional-changelog-eslint": "^3.0.9", + "conventional-changelog-express": "^2.0.6", + "conventional-changelog-jquery": "^3.0.11", + "conventional-changelog-jshint": "^2.0.9", + "conventional-changelog-preset-loader": "^2.3.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/standard-version/node_modules/conventional-changelog-angular": { + "version": "5.0.12", + "dev": true, + "license": "ISC", + "dependencies": { + "compare-func": "^2.0.0", + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/standard-version/node_modules/conventional-changelog-core": { + "version": "4.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "add-stream": "^1.0.0", + "conventional-changelog-writer": "^4.0.18", + "conventional-commits-parser": "^3.2.0", + "dateformat": "^3.0.0", + "get-pkg-repo": "^1.0.0", + "git-raw-commits": "^2.0.8", + "git-remote-origin-url": "^2.0.0", + "git-semver-tags": "^4.1.1", + "lodash": "^4.17.15", + "normalize-package-data": "^3.0.0", + "q": "^1.5.1", + "read-pkg": "^3.0.0", + "read-pkg-up": "^3.0.0", + "shelljs": "^0.8.3", + "through2": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/standard-version/node_modules/conventional-changelog-jquery": { + "version": "3.0.11", + "dev": true, + "license": "ISC", + "dependencies": { + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/standard-version/node_modules/dargs": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/standard-version/node_modules/dateformat": { + "version": "3.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/standard-version/node_modules/dot-prop": { + "version": "5.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/standard-version/node_modules/escape-string-regexp": { + "version": "1.0.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/standard-version/node_modules/figures": { + "version": "3.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/standard-version/node_modules/find-up": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/standard-version/node_modules/git-raw-commits": { + "version": "2.0.10", + "dev": true, + "license": "MIT", + "dependencies": { + "dargs": "^7.0.0", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + }, + "bin": { + "git-raw-commits": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/standard-version/node_modules/git-semver-tags": { + "version": "4.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "meow": "^8.0.0", + "semver": "^6.0.0" + }, + "bin": { + "git-semver-tags": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/standard-version/node_modules/git-semver-tags/node_modules/semver": { + "version": "6.3.0", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/standard-version/node_modules/has-flag": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/standard-version/node_modules/hosted-git-info": { + "version": "4.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/standard-version/node_modules/is-obj": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/standard-version/node_modules/locate-path": { + "version": "6.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/standard-version/node_modules/meow": { + "version": "8.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/standard-version/node_modules/meow/node_modules/find-up": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/standard-version/node_modules/meow/node_modules/hosted-git-info": { + "version": "2.8.9", + "dev": true, + "license": "ISC" + }, + "node_modules/standard-version/node_modules/meow/node_modules/locate-path": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/standard-version/node_modules/meow/node_modules/p-limit": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/standard-version/node_modules/meow/node_modules/p-locate": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/standard-version/node_modules/meow/node_modules/read-pkg": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/standard-version/node_modules/meow/node_modules/read-pkg-up": { + "version": "7.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/standard-version/node_modules/meow/node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "node_modules/standard-version/node_modules/meow/node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/standard-version/node_modules/meow/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "node_modules/standard-version/node_modules/meow/node_modules/semver": { + "version": "5.7.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/standard-version/node_modules/meow/node_modules/type-fest": { + "version": "0.18.1", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/standard-version/node_modules/normalize-package-data": { + "version": "3.0.2", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^4.0.1", + "resolve": "^1.20.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/standard-version/node_modules/p-locate": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/standard-version/node_modules/path-exists": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/standard-version/node_modules/readable-stream": { + "version": "3.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/standard-version/node_modules/supports-color": { + "version": "5.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/standard-version/node_modules/through2": { + "version": "4.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "3" + } + }, + "node_modules/state-toggle": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz", + "integrity": "sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "dependencies": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/static-extend/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/store2": { + "version": "2.13.2", + "resolved": "https://registry.npmjs.org/store2/-/store2-2.13.2.tgz", + "integrity": "sha512-CMtO2Uneg3SAz/d6fZ/6qbqqQHi2ynq6/KzMD/26gTkiEShCcpqFfTHgOxsE0egAq6SX3FmN4CeSqn8BzXQkJg==", + "dev": true + }, + "node_modules/stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "dependencies": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "node_modules/stream-combiner2": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", + "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", + "dev": true, + "dependencies": { + "duplexer2": "~0.1.0", + "readable-stream": "^2.0.2" + } + }, + "node_modules/stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "node_modules/stream-events": { + "version": "1.0.5", + "license": "MIT", + "dependencies": { + "stubs": "^3.0.0" + } + }, + "node_modules/stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "dependencies": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "node_modules/stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" + }, + "node_modules/streamsearch": { + "version": "0.1.2", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-argv": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", + "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", + "dev": true, + "engines": { + "node": ">=0.6.19" + } + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-width": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz", + "integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1", + "get-intrinsic": "^1.1.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "regexp.prototype.flags": "^1.4.1", + "side-channel": "^1.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.padend": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.3.tgz", + "integrity": "sha512-jNIIeokznm8SD/TZISQsZKYu7RJyheFNt84DUPrh482GC8RVp2MKqm2O5oBRdGxbDQoXrhhWtPIWQOiy20svUg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.padstart": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/string.prototype.padstart/-/string.prototype.padstart-3.1.3.tgz", + "integrity": "sha512-NZydyOMtYxpTjGqp0VN5PYUF/tsU15yDMZnUdj16qRUIUiMJkHHSDElYyQFrMu+/WloTpA7MQSiADhBicDfaoA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/stringify-package": { + "version": "1.0.1", + "dev": true, + "license": "ISC" + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/stubs": { + "version": "3.0.0", + "license": "MIT" + }, + "node_modules/style-loader": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.3.0.tgz", + "integrity": "sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^2.7.0" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/style-search": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", + "integrity": "sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI=", + "dev": true + }, + "node_modules/style-to-object": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.3.0.tgz", + "integrity": "sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==", + "dev": true, + "dependencies": { + "inline-style-parser": "0.1.1" + } + }, + "node_modules/stylelint": { + "version": "14.6.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-14.6.0.tgz", + "integrity": "sha512-Xk2sqXYPi9nXgq70nBiZkbQm/QOOKd83NBTaBE1fXEWAEeRlgHnKC/E7kJFlT6K0SaNDOK5yIvR7GFPGsNLuOg==", + "dev": true, + "dependencies": { + "balanced-match": "^2.0.0", + "colord": "^2.9.2", + "cosmiconfig": "^7.0.1", + "css-functions-list": "^3.0.1", + "debug": "^4.3.3", + "execall": "^2.0.0", + "fast-glob": "^3.2.11", + "fastest-levenshtein": "^1.0.12", + "file-entry-cache": "^6.0.1", + "get-stdin": "^8.0.0", + "global-modules": "^2.0.0", + "globby": "^11.1.0", + "globjoin": "^0.1.4", + "html-tags": "^3.1.0", + "ignore": "^5.2.0", + "import-lazy": "^4.0.0", + "imurmurhash": "^0.1.4", + "is-plain-object": "^5.0.0", + "known-css-properties": "^0.24.0", + "mathml-tag-names": "^2.1.3", + "meow": "^9.0.0", + "micromatch": "^4.0.4", + "normalize-path": "^3.0.0", + "normalize-selector": "^0.2.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.12", + "postcss-media-query-parser": "^0.2.3", + "postcss-resolve-nested-selector": "^0.1.1", + "postcss-safe-parser": "^6.0.0", + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0", + "resolve-from": "^5.0.0", + "specificity": "^0.4.1", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "style-search": "^0.1.0", + "supports-hyperlinks": "^2.2.0", + "svg-tags": "^1.0.0", + "table": "^6.8.0", + "v8-compile-cache": "^2.3.0", + "write-file-atomic": "^4.0.1" + }, + "bin": { + "stylelint": "bin/stylelint.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/stylelint" + } + }, + "node_modules/stylelint-config-prettier": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/stylelint-config-prettier/-/stylelint-config-prettier-9.0.3.tgz", + "integrity": "sha512-5n9gUDp/n5tTMCq1GLqSpA30w2sqWITSSEiAWQlpxkKGAUbjcemQ0nbkRvRUa0B1LgD3+hCvdL7B1eTxy1QHJg==", + "dev": true, + "bin": { + "stylelint-config-prettier": "bin/check.js", + "stylelint-config-prettier-check": "bin/check.js" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "stylelint": ">=11.0.0" + } + }, + "node_modules/stylelint-config-recommended": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-7.0.0.tgz", + "integrity": "sha512-yGn84Bf/q41J4luis1AZ95gj0EQwRX8lWmGmBwkwBNSkpGSpl66XcPTulxGa/Z91aPoNGuIGBmFkcM1MejMo9Q==", + "dev": true, + "peerDependencies": { + "stylelint": "^14.4.0" + } + }, + "node_modules/stylelint-config-standard": { + "version": "25.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-25.0.0.tgz", + "integrity": "sha512-21HnP3VSpaT1wFjFvv9VjvOGDtAviv47uTp3uFmzcN+3Lt+RYRv6oAplLaV51Kf792JSxJ6svCJh/G18E9VnCA==", + "dev": true, + "dependencies": { + "stylelint-config-recommended": "^7.0.0" + }, + "peerDependencies": { + "stylelint": "^14.4.0" + } + }, + "node_modules/stylelint/node_modules/balanced-match": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", + "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", + "dev": true + }, + "node_modules/stylelint/node_modules/clone-regexp": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-2.2.0.tgz", + "integrity": "sha512-beMpP7BOtTipFuW8hrJvREQ2DrRu3BE7by0ZpibtfBA+qfHYvMGTc2Yb1JMYPKg/JUw0CHYvpg796aNTSW9z7Q==", + "dev": true, + "dependencies": { + "is-regexp": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/stylelint/node_modules/execall": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/execall/-/execall-2.0.0.tgz", + "integrity": "sha512-0FU2hZ5Hh6iQnarpRtQurM/aAvp3RIbfvgLHrcqJYzhXyV2KFruhuChf9NC6waAhiUR7FFtlugkI4p7f2Fqlow==", + "dev": true, + "dependencies": { + "clone-regexp": "^2.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/stylelint/node_modules/global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "dev": true, + "dependencies": { + "global-prefix": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/stylelint/node_modules/global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "dev": true, + "dependencies": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/stylelint/node_modules/import-lazy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/stylelint/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/stylelint/node_modules/is-regexp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-2.1.0.tgz", + "integrity": "sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/stylelint/node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stylelint/node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/stylelint/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/stylelint/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/stylelint/node_modules/write-file-atomic": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.1.tgz", + "integrity": "sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/superagent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-6.1.0.tgz", + "integrity": "sha512-OUDHEssirmplo3F+1HWKUrUjvnQuA+nZI6i/JJBdXb5eq9IyEQwPyPpqND+SSsxf6TygpBEkUjISVRN4/VOpeg==", + "deprecated": "Please upgrade to v7.0.2+ of superagent. We have fixed numerous issues with streams, form-data, attach(), filesystem errors not bubbling up (ENOENT on attach()), and all tests are now passing. See the releases tab for more information at <https://github.com/visionmedia/superagent/releases>.", + "dependencies": { + "component-emitter": "^1.3.0", + "cookiejar": "^2.1.2", + "debug": "^4.1.1", + "fast-safe-stringify": "^2.0.7", + "form-data": "^3.0.0", + "formidable": "^1.2.2", + "methods": "^1.1.2", + "mime": "^2.4.6", + "qs": "^6.9.4", + "readable-stream": "^3.6.0", + "semver": "^7.3.2" + }, + "engines": { + "node": ">= 7.0.0" + } + }, + "node_modules/superagent-proxy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/superagent-proxy/-/superagent-proxy-3.0.0.tgz", + "integrity": "sha512-wAlRInOeDFyd9pyonrkJspdRAxdLrcsZ6aSnS+8+nu4x1aXbz6FWSTT9M6Ibze+eG60szlL7JA8wEIV7bPWuyQ==", + "dependencies": { + "debug": "^4.3.2", + "proxy-agent": "^5.0.0" + }, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "superagent": ">= 0.15.4 || 1 || 2 || 3" + } + }, + "node_modules/superagent/node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/superagent/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/supertest": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.2.2.tgz", + "integrity": "sha512-wCw9WhAtKJsBvh07RaS+/By91NNE0Wh0DN19/hWPlBOU8tAfOtbZoVSV4xXeoKoxgPx0rx2y+y+8660XtE7jzg==", + "dev": true, + "dependencies": { + "methods": "^1.1.2", + "superagent": "^7.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/supertest/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/supertest/node_modules/formidable": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.0.1.tgz", + "integrity": "sha512-rjTMNbp2BpfQShhFbR3Ruk3qk2y9jKpvMW78nJgx8QKtxjDVrwbZG+wvDOmVbifHyOUOQJXxqEy6r0faRrPzTQ==", + "dev": true, + "dependencies": { + "dezalgo": "1.0.3", + "hexoid": "1.0.0", + "once": "1.4.0", + "qs": "6.9.3" + }, + "funding": { + "url": "https://ko-fi.com/tunnckoCore/commissions" + } + }, + "node_modules/supertest/node_modules/formidable/node_modules/qs": { + "version": "6.9.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.3.tgz", + "integrity": "sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw==", + "dev": true, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/supertest/node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/supertest/node_modules/qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/supertest/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/supertest/node_modules/superagent": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-7.1.1.tgz", + "integrity": "sha512-CQ2weSS6M+doIwwYFoMatklhRbx6sVNdB99OEJ5czcP3cng76Ljqus694knFWgOj3RkrtxZqIgpe6vhe0J7QWQ==", + "dev": true, + "dependencies": { + "component-emitter": "^1.3.0", + "cookiejar": "^2.1.3", + "debug": "^4.3.3", + "fast-safe-stringify": "^2.1.1", + "form-data": "^4.0.0", + "formidable": "^2.0.1", + "methods": "^1.1.2", + "mime": "^2.5.0", + "qs": "^6.10.1", + "readable-stream": "^3.6.0", + "semver": "^7.3.5" + }, + "engines": { + "node": ">=6.4.0 <13 || >=14" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", + "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=", + "dev": true + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "node_modules/symbol.prototype.description": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/symbol.prototype.description/-/symbol.prototype.description-1.0.5.tgz", + "integrity": "sha512-x738iXRYsrAt9WBhRCVG5BtIC3B7CUkFwbHW2zOvGtwM33s7JjrCDyq8V0zgMYVb5ymsL8+qkzzpANH63CPQaQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-symbol-description": "^1.0.0", + "has-symbols": "^1.0.2", + "object.getownpropertydescriptors": "^2.1.2" + }, + "engines": { + "node": ">= 0.11.15" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/synchronous-promise": { + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/synchronous-promise/-/synchronous-promise-2.0.15.tgz", + "integrity": "sha512-k8uzYIkIVwmT+TcglpdN50pS2y1BDcUnBPK9iJeGu0Pl1lOI8pD6wtzgw91Pjpe+RxtTncw32tLxs/R0yNL2Mg==", + "dev": true + }, + "node_modules/table": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.0.tgz", + "integrity": "sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table/node_modules/ajv": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz", + "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/table/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/table/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/table/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/tarn": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/tarn/-/tarn-3.0.2.tgz", + "integrity": "sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ==", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/teeny-request": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-7.1.1.tgz", + "integrity": "sha512-iwY6rkW5DDGq8hE2YgNQlKbptYpY5Nn2xecjQiNjOXWbKzPGUfmeUBCSQbbr306d7Z7U2N0TPl+/SwYRfua1Dg==", + "dependencies": { + "http-proxy-agent": "^4.0.0", + "https-proxy-agent": "^5.0.0", + "node-fetch": "^2.6.1", + "stream-events": "^1.0.5", + "uuid": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/telejson": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/telejson/-/telejson-5.3.3.tgz", + "integrity": "sha512-PjqkJZpzEggA9TBpVtJi1LVptP7tYtXB6rEubwlHap76AMjzvOdKX41CxyaW7ahhzDU1aftXnMCx5kAPDZTQBA==", + "dev": true, + "dependencies": { + "@types/is-function": "^1.0.0", + "global": "^4.4.0", + "is-function": "^1.0.2", + "is-regex": "^1.1.2", + "is-symbol": "^1.0.3", + "isobject": "^4.0.0", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3" + } + }, + "node_modules/temp": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz", + "integrity": "sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==", + "dev": true, + "dependencies": { + "rimraf": "~2.6.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/temp/node_modules/rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/tempy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-1.0.1.tgz", + "integrity": "sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w==", + "dev": true, + "dependencies": { + "del": "^6.0.0", + "is-stream": "^2.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^0.16.0", + "unique-string": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tempy/node_modules/type-fest": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", + "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terminal-link/node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terminal-link/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terser": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.12.1.tgz", + "integrity": "sha512-NXbs+7nisos5E+yXwAD+y7zrcTkMqb0dEJxIGtSKPdCBzopf7ni4odPul2aechpV7EXNvOudYOX2bb5tln1jbQ==", + "dev": true, + "dependencies": { + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz", + "integrity": "sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ==", + "dev": true, + "dependencies": { + "cacache": "^15.0.5", + "find-cache-dir": "^3.3.1", + "jest-worker": "^26.5.0", + "p-limit": "^3.0.2", + "schema-utils": "^3.0.0", + "serialize-javascript": "^5.0.1", + "source-map": "^0.6.1", + "terser": "^5.3.4", + "webpack-sources": "^1.4.3" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/cacache": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "dev": true, + "dependencies": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/terser-webpack-plugin/node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/terser-webpack-plugin/node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser/node_modules/acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/terser/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-encoding-polyfill": { + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/text-encoding-polyfill/-/text-encoding-polyfill-0.6.7.tgz", + "integrity": "sha512-/DZ1XJqhbqRkCop6s9ZFu8JrFRwmVuHg4quIRm+ziFkR3N3ec6ck6yBvJ1GYeEQZhLVwRW0rZE+C3SSJpy0RTg==" + }, + "node_modules/text-extensions": { + "version": "1.9.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/text-hex": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/text-table": { + "version": "0.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/throat": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", + "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", + "dev": true + }, + "node_modules/throttle-debounce": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-3.0.1.tgz", + "integrity": "sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/through": { + "version": "2.3.8", + "license": "MIT" + }, + "node_modules/through2": { + "version": "2.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/tildify": { + "version": "2.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dev": true, + "dependencies": { + "setimmediate": "^1.0.4" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/tmp": { + "version": "0.0.33", + "dev": true, + "license": "MIT", + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, + "node_modules/to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-object-path/node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/to-object-path/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-readable-stream": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/to-regex/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/toggle-selection": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", + "integrity": "sha1-bkWxJj8gF/oKzH2J14sVuL932jI=", + "dev": true + }, + "node_modules/toidentifier": { + "version": "1.0.0", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/token-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-1.0.0.tgz", + "integrity": "sha1-zCAOqyYT9BZtJ/+a/HylbUnfbrQ=", + "dev": true + }, + "node_modules/touch": { + "version": "3.1.0", + "dev": true, + "license": "ISC", + "dependencies": { + "nopt": "~1.0.10" + }, + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, + "node_modules/touch/node_modules/nopt": { + "version": "1.0.10", + "dev": true, + "license": "MIT", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + } + }, + "node_modules/tough-cookie": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "dev": true, + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.1.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/traverse": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", + "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=", + "dev": true + }, + "node_modules/trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "dev": true + }, + "node_modules/trim-newlines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/trim-trailing-lines": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz", + "integrity": "sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/triple-beam": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", + "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==" + }, + "node_modules/trough": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", + "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/ts-dedent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", + "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", + "dev": true, + "engines": { + "node": ">=6.10" + } + }, + "node_modules/ts-jest": { + "version": "27.1.3", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.3.tgz", + "integrity": "sha512-6Nlura7s6uM9BVUAoqLH7JHyMXjz8gluryjpPXxr3IxZdAXnU6FhjvVLHFtfd1vsE1p8zD1OJfskkc0jhTSnkA==", + "dev": true, + "dependencies": { + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^27.0.0", + "json5": "2.x", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "7.x", + "yargs-parser": "20.x" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@types/jest": "^27.0.0", + "babel-jest": ">=27.0.0 <28", + "esbuild": "~0.14.0", + "jest": "^27.0.0", + "typescript": ">=3.8 <5.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@types/jest": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, + "node_modules/ts-loader": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-8.3.0.tgz", + "integrity": "sha512-MgGly4I6cStsJy27ViE32UoqxPTN9Xly4anxxVyaIWR+9BGxboV4EyJBGfR3RePV7Ksjj3rHmPZJeIt+7o4Vag==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^4.0.0", + "loader-utils": "^2.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "typescript": "*", + "webpack": "*" + } + }, + "node_modules/ts-map": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ts-map/-/ts-map-1.0.3.tgz", + "integrity": "sha512-vDWbsl26LIcPGmDpoVzjEP6+hvHZkBkLW7JpvwbCv/5IYPJlsbzCVXY3wsCeAxAUeTclNOUZxnLdGh3VBD/J6w==", + "dev": true + }, + "node_modules/ts-node": { + "version": "10.7.0", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.7.0.tgz", + "integrity": "sha512-TbIGS4xgJoX2i3do417KSaep1uRAW/Lu+WAL2doDHC0D6ummjirVOXU5/7aiZotbQ5p1Zp9tP7U6cYhA0O7M8A==", + "dependencies": { + "@cspotcode/source-map-support": "0.7.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.0", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/ts-node/node_modules/acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ts-node/node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ts-pnp": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz", + "integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==", + "dev": true, + "engines": { + "node": ">=6" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/tsconfig": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-7.0.0.tgz", + "integrity": "sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==", + "dev": true, + "dependencies": { + "@types/strip-bom": "^3.0.0", + "@types/strip-json-comments": "0.0.30", + "strip-bom": "^3.0.0", + "strip-json-comments": "^2.0.0" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz", + "integrity": "sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.0", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/tsconfig/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/tsconfig/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "dev": true, + "license": "0BSD" + }, + "node_modules/tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "node_modules/tus-js-client": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tus-js-client/-/tus-js-client-2.3.1.tgz", + "integrity": "sha512-QEM7ySnthWT+wwePLTXVSQP8vBLCy0ZoJNDGFzNlsU+YVoK2WevIZwcRnKyo962xhYMiABe3aMvXvk4Ln+VRzQ==", + "dev": true, + "dependencies": { + "buffer-from": "^0.1.1", + "combine-errors": "^3.0.3", + "is-stream": "^2.0.0", + "js-base64": "^2.6.1", + "lodash.throttle": "^4.1.1", + "proper-lockfile": "^2.0.1", + "url-parse": "^1.5.7" + } + }, + "node_modules/tus-js-client/node_modules/buffer-from": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-0.1.2.tgz", + "integrity": "sha512-RiWIenusJsmI2KcvqQABB83tLxCByE3upSP8QU3rJDMVFGPWLvPQJt/O1Su9moRWeH7d+Q2HYb68f6+v+tw2vg==", + "dev": true + }, + "node_modules/tus-node-server": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/tus-node-server/-/tus-node-server-0.5.2.tgz", + "integrity": "sha512-R+tzYO29beg8YNhEekzxtuScP5+IbNUPOM69S4Pc8+xJkCVHuX8VsfPuEzFkpLATLRi4qGi0cKrpIyfQWiVfaA==", + "dependencies": { + "@google-cloud/storage": "^5.18.1", + "aws-sdk": "^2.1064.0", + "configstore": "^5.0.1", + "debug": "^4.3.3" + }, + "engines": { + "node": ">=10.0" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.8.1", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "license": "MIT" + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "license": "MIT", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typedoc": { + "version": "0.21.10", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.21.10.tgz", + "integrity": "sha512-Y0wYIehkjkPfsp3pv86fp3WPHUcOf8pnQUDLwG1PqSccUSqdsv7Pz1Gd5WrTJvXQB2wO1mKlZ8qW8qMiopKyjA==", + "dev": true, + "dependencies": { + "glob": "^7.1.7", + "handlebars": "^4.7.7", + "lunr": "^2.3.9", + "marked": "^4.0.10", + "minimatch": "^3.0.0", + "progress": "^2.0.3", + "shiki": "^0.9.8", + "typedoc-default-themes": "^0.12.10" + }, + "bin": { + "typedoc": "bin/typedoc" + }, + "engines": { + "node": ">= 12.10.0" + }, + "peerDependencies": { + "typescript": "4.0.x || 4.1.x || 4.2.x || 4.3.x || 4.4.x" + } + }, + "node_modules/typedoc-default-themes": { + "version": "0.12.10", + "resolved": "https://registry.npmjs.org/typedoc-default-themes/-/typedoc-default-themes-0.12.10.tgz", + "integrity": "sha512-fIS001cAYHkyQPidWXmHuhs8usjP5XVJjWB8oZGqkTowZaz3v7g3KDZeeqE82FBrmkAnIBOY3jgy7lnPnqATbA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/typedoc-plugin-pages-fork": { + "version": "0.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "compare-versions": "^3.6.0", + "typedoc-default-themes": "^0.10.1" + } + }, + "node_modules/typedoc-plugin-pages-fork/node_modules/typedoc-default-themes": { + "version": "0.10.2", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "lunr": "^2.3.8" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/typedoc-plugin-sourcefile-url": { + "version": "1.0.6", + "dev": true, + "license": "MIT", + "peerDependencies": { + "typedoc": ">=0.16.0" + } + }, + "node_modules/typedoc/node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/typescript": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.2.tgz", + "integrity": "sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/uglify-js": { + "version": "3.13.7", + "dev": true, + "license": "BSD-2-Clause", + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", + "dev": true + }, + "node_modules/unfetch": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.2.0.tgz", + "integrity": "sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==", + "dev": true + }, + "node_modules/unherit": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz", + "integrity": "sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.0", + "xtend": "^4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unified": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz", + "integrity": "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==", + "dev": true, + "dependencies": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unified/node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "node_modules/unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "dependencies": { + "unique-slug": "^2.0.0" + } + }, + "node_modules/unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4" + } + }, + "node_modules/unique-string": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/unique-string/node_modules/crypto-random-string": { + "version": "2.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/unist-builder": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-2.0.3.tgz", + "integrity": "sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-generated": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.6.tgz", + "integrity": "sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.1.0.tgz", + "integrity": "sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-2.1.0.tgz", + "integrity": "sha512-J8NYPyBm4baYLdCbjmf1bhPu45Cr1MWTm77qd9istEkzWpnN6O9tMsEbB2JhNnBCqGENRqEWomQ+He6au0B27Q==", + "dev": true, + "dependencies": { + "unist-util-is": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove-position": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz", + "integrity": "sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==", + "dev": true, + "dependencies": { + "unist-util-visit": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/universal-user-agent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", + "dev": true + }, + "node_modules/universalify": { + "version": "0.1.2", + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unixify": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "normalize-path": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "dependencies": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/update-notifier": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", + "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", + "dev": true, + "dependencies": { + "boxen": "^5.0.0", + "chalk": "^4.1.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.4.0", + "is-npm": "^5.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.1.0", + "pupa": "^2.1.1", + "semver": "^7.3.4", + "semver-diff": "^3.1.1", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/yeoman/update-notifier?sponsor=1" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "deprecated": "Please see https://github.com/lydell/urix#deprecated", + "dev": true + }, + "node_modules/url": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", + "integrity": "sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ=", + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "node_modules/url-join": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", + "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", + "dev": true + }, + "node_modules/url-loader": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", + "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "mime-types": "^2.1.27", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "file-loader": "*", + "webpack": "^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "file-loader": { + "optional": true + } + } + }, + "node_modules/url-loader/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/url-parse-lax": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "prepend-http": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/url/node_modules/punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + }, + "node_modules/urlgrey": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/urlgrey/-/urlgrey-1.0.0.tgz", + "integrity": "sha512-hJfIzMPJmI9IlLkby8QrsCykQ+SXDeO2W5Q9QTW3QpqZVTx4a/K7p8/5q+/isD8vsbVaFgql/gvAoQCRQ2Cb5w==", + "dev": true, + "dependencies": { + "fast-url-parser": "^1.1.3" + } + }, + "node_modules/use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/use-composed-ref": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.2.1.tgz", + "integrity": "sha512-6+X1FLlIcjvFMAeAD/hcxDT8tmyrWnbSPMU0EnxQuDLIxokuFzWliXBiYZuGIx+mrAMLBw0WFfCkaPw8ebzAhw==", + "dev": true, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0" + } + }, + "node_modules/use-isomorphic-layout-effect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.1.tgz", + "integrity": "sha512-L7Evj8FGcwo/wpbv/qvSfrkHFtOpCzvM5yl2KVyDJoylVuSvzphiiasmjgQPttIGBAy2WKiBNR98q8w7PiNgKQ==", + "dev": true, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-latest": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-latest/-/use-latest-1.2.0.tgz", + "integrity": "sha512-d2TEuG6nSLKQLAfW3By8mKr8HurOlTkul0sOpxbClIv4SQ4iOd7BYr7VIzdbktUCnv7dua/60xzd8igMU6jmyw==", + "dev": true, + "dependencies": { + "use-isomorphic-layout-effect": "^1.0.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "dependencies": { + "inherits": "2.0.3" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "license": "MIT" + }, + "node_modules/util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "node_modules/util/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/uuid-browser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/uuid-browser/-/uuid-browser-3.1.0.tgz", + "integrity": "sha1-DwWkCu90+eWVHiDvv0SxGHHlZBA=", + "dev": true + }, + "node_modules/v8-compile-cache": { + "version": "2.3.0", + "dev": true, + "license": "MIT" + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.0.tgz", + "integrity": "sha512-mpSYqfsFvASnSn5qMiwrr4VKfumbPyONLCOPmsR3A6pTY/r0+tSaVbgPWSAIuzbk3lCTa+FForeTiO+wBQGkjA==" + }, + "node_modules/v8-to-istanbul": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", + "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/v8-to-istanbul/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", + "dev": true, + "dependencies": { + "builtins": "^1.0.3" + } + }, + "node_modules/value-or-promise": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.11.tgz", + "integrity": "sha512-41BrgH+dIbCFXClcSapVs5M6GkENd3gQOJpEfPDNa71LsUGMXDL0jMWpI/Rh7WhX+Aalfz2TTS3Zt5pUsbnhLg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vfile": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-location": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.2.0.tgz", + "integrity": "sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vite": { + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-2.8.6.tgz", + "integrity": "sha512-e4H0QpludOVKkmOsRyqQ7LTcMUDF3mcgyNU4lmi0B5JUbe0ZxeBBl8VoZ8Y6Rfn9eFKYtdXNPcYK97ZwH+K2ug==", + "dev": true, + "dependencies": { + "esbuild": "^0.14.14", + "postcss": "^8.4.6", + "resolve": "^1.22.0", + "rollup": "^2.59.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": ">=12.2.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "less": "*", + "sass": "*", + "stylus": "*" + }, + "peerDependenciesMeta": { + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + } + } + }, + "node_modules/vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true + }, + "node_modules/vm2": { + "version": "3.9.8", + "resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.8.tgz", + "integrity": "sha512-/1PYg/BwdKzMPo8maOZ0heT7DLI0DAFTm7YQaz/Lim9oIaFZsJs3EdtalvXuBfZwczNwsYhju75NW4d6E+4q+w==", + "dependencies": { + "acorn": "^8.7.0", + "acorn-walk": "^8.2.0" + }, + "bin": { + "vm2": "bin/vm2" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/vm2/node_modules/acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/vm2/node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/void-elements": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", + "integrity": "sha1-YU9/v42AHwu18GYfWy9XhXUOTwk=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/vscode-textmate": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-5.2.0.tgz", + "integrity": "sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==", + "dev": true + }, + "node_modules/vue": { + "version": "3.2.31", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.31.tgz", + "integrity": "sha512-odT3W2tcffTiQCy57nOT93INw1auq5lYLLYtWpPYQQYQOOdHiqFct9Xhna6GJ+pJQaF67yZABraH47oywkJgFw==", + "dev": true, + "dependencies": { + "@vue/compiler-dom": "3.2.31", + "@vue/compiler-sfc": "3.2.31", + "@vue/runtime-dom": "3.2.31", + "@vue/server-renderer": "3.2.31", + "@vue/shared": "3.2.31" + } + }, + "node_modules/vue-docgen-api": { + "version": "4.44.22", + "resolved": "https://registry.npmjs.org/vue-docgen-api/-/vue-docgen-api-4.44.22.tgz", + "integrity": "sha512-r99SeIZRqVsu1MJ49sgSmONFbqWXN9HnPxS1W1hfhOGKVqgfBWzXpJsexBuLN7XIerQM8Y1908S7AAV6GJVbRQ==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.13.12", + "@babel/types": "^7.13.12", + "@vue/compiler-dom": "^3.2.0", + "@vue/compiler-sfc": "^3.2.0", + "ast-types": "0.14.2", + "hash-sum": "^1.0.2", + "lru-cache": "^4.1.5", + "pug": "^3.0.2", + "recast": "0.20.5", + "ts-map": "^1.0.3", + "vue-inbrowser-compiler-utils": "^4.44.22" + } + }, + "node_modules/vue-docgen-api/node_modules/ast-types": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz", + "integrity": "sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==", + "dev": true, + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/vue-docgen-api/node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/vue-docgen-api/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "node_modules/vue-docgen-loader": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/vue-docgen-loader/-/vue-docgen-loader-1.5.0.tgz", + "integrity": "sha512-LKZ8mxeIQ44uSUMTplnwOXbC4bO4E2vyZDTbn7/1QlVwJPEIjk3ahL0DA1m27IEw6YTlHOwtWS0PrHmDkFgyAg==", + "dev": true, + "dependencies": { + "clone": "^2.1.2", + "jscodeshift": "^0.7.0", + "loader-utils": "^1.2.3", + "querystring": "^0.2.0" + }, + "engines": { + "node": ">= 8.16" + }, + "peerDependencies": { + "vue-docgen-api": ">=3", + "webpack": ">=4" + } + }, + "node_modules/vue-docgen-loader/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/vue-docgen-loader/node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/vue-eslint-parser": { + "version": "7.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.1", + "eslint-scope": "^5.0.0", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.2.1", + "esquery": "^1.0.1", + "lodash": "^4.17.15" + }, + "engines": { + "node": ">=8.10" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5.0.0" + } + }, + "node_modules/vue-eslint-parser/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=4" + } + }, + "node_modules/vue-eslint-parser/node_modules/espree": { + "version": "6.2.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/vue-inbrowser-compiler-demi": { + "version": "4.44.22", + "resolved": "https://registry.npmjs.org/vue-inbrowser-compiler-demi/-/vue-inbrowser-compiler-demi-4.44.22.tgz", + "integrity": "sha512-J+VcduUx6iwj3cfz+huB2yhwrhL8Gk4cmXe4gspURfmDMc9uukgiDWJEEDUHQCxFT+R/zA4uQgBjKexWcHZKUw==", + "dev": true, + "hasInstallScript": true, + "peerDependencies": { + "vue": ">=2" + } + }, + "node_modules/vue-inbrowser-compiler-utils": { + "version": "4.44.22", + "resolved": "https://registry.npmjs.org/vue-inbrowser-compiler-utils/-/vue-inbrowser-compiler-utils-4.44.22.tgz", + "integrity": "sha512-wOW6JSG+YXzrYMglP6AVkERM+1Yp371UT88eTkkZe4z/LFRuTGhZZFUKV1u9SuUEwIzd0nC+seEVzLdEwGGZvA==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "vue-inbrowser-compiler-demi": "^4.44.22" + }, + "peerDependencies": { + "vue": ">=2" + } + }, + "node_modules/vue-inbrowser-compiler-utils/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/vue-loader": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-17.0.0.tgz", + "integrity": "sha512-OWSXjrzIvbF2LtOUmxT3HYgwwubbfFelN8PAP9R9dwpIkj48TVioHhWWSx7W7fk+iF5cgg3CBJRxwTdtLU4Ecg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "hash-sum": "^2.0.0", + "loader-utils": "^2.0.0" + }, + "peerDependencies": { + "webpack": "^4.1.0 || ^5.0.0-0" + } + }, + "node_modules/vue-loader/node_modules/hash-sum": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz", + "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==", + "dev": true + }, + "node_modules/vue-meta": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/vue-meta/-/vue-meta-2.4.0.tgz", + "integrity": "sha512-XEeZUmlVeODclAjCNpWDnjgw+t3WA6gdzs6ENoIAgwO1J1d5p1tezDhtteLUFwcaQaTtayRrsx7GL6oXp/m2Jw==", + "dev": true, + "dependencies": { + "deepmerge": "^4.2.2" + } + }, + "node_modules/vue-router": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.0.14.tgz", + "integrity": "sha512-wAO6zF9zxA3u+7AkMPqw9LjoUCjSxfFvINQj3E/DceTt6uEz1XZLraDhdg2EYmvVwTBSGlLYsUw8bDmx0754Mw==", + "dev": true, + "dependencies": { + "@vue/devtools-api": "^6.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/vuex": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vuex/-/vuex-4.0.2.tgz", + "integrity": "sha512-M6r8uxELjZIK8kTKDGgZTYX/ahzblnzC4isU1tpmEuOIIKmV+TRdc+H4s8ds2NuZ7wpUTdGRzJRtoj+lI+pc0Q==", + "dev": true, + "dependencies": { + "@vue/devtools-api": "^6.0.0-beta.11" + }, + "peerDependencies": { + "vue": "^3.0.2" + } + }, + "node_modules/vuex-router-sync": { + "version": "6.0.0-rc.1", + "resolved": "https://registry.npmjs.org/vuex-router-sync/-/vuex-router-sync-6.0.0-rc.1.tgz", + "integrity": "sha512-pzVrX/rmQsDjJiKPAjgKxpkxWdiBBQmxATFA6eFyS2Tmo6jauq8iDk9BWxkw41/OA+pbq4wkONRC0aeErDw8GQ==", + "dev": true, + "peerDependencies": { + "vue-router": "^4.0.0", + "vuex": "^4.0.0" + } + }, + "node_modules/w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dev": true, + "dependencies": { + "browser-process-hrtime": "^1.0.0" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dev": true, + "dependencies": { + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "dev": true, + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/watchpack": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", + "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/watchpack-chokidar2": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", + "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", + "dev": true, + "optional": true, + "dependencies": { + "chokidar": "^2.1.8" + } + }, + "node_modules/watchpack-chokidar2/node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "optional": true, + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "node_modules/watchpack-chokidar2/node_modules/binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "optional": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies", + "dev": true, + "optional": true, + "dependencies": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "optionalDependencies": { + "fsevents": "^1.2.7" + } + }, + "node_modules/watchpack-chokidar2/node_modules/chokidar/node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "optional": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "optional": true, + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "optional": true, + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "optional": true, + "dependencies": { + "binary-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true, + "optional": true + }, + "node_modules/watchpack-chokidar2/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "optional": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "optional": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "optional": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "optional": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "optional": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/micromatch/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "optional": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "optional": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/watchpack-chokidar2/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "optional": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/web-namespaces": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-1.1.4.tgz", + "integrity": "sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true, + "engines": { + "node": ">=10.4" + } + }, + "node_modules/webpack": { + "version": "5.70.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.70.0.tgz", + "integrity": "sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw==", + "dev": true, + "peer": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.9.2", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.3.1", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-middleware": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz", + "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==", + "dev": true, + "dependencies": { + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-middleware/node_modules/memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "dependencies": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "node_modules/webpack-dev-middleware/node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/webpack-dev-middleware/node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "node_modules/webpack-dev-middleware/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/webpack-hot-middleware": { + "version": "2.25.1", + "resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.25.1.tgz", + "integrity": "sha512-Koh0KyU/RPYwel/khxbsDz9ibDivmUbrRuKSSQvW42KSDdO4w23WI3SkHpSUKHE76LrFnnM/L7JCrpBwu8AXYw==", + "dev": true, + "dependencies": { + "ansi-html-community": "0.0.8", + "html-entities": "^2.1.0", + "querystring": "^0.2.0", + "strip-ansi": "^6.0.0" + } + }, + "node_modules/webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "dev": true, + "dependencies": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/webpack-log/node_modules/ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-log/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "dev": true, + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "dependencies": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "node_modules/webpack-virtual-modules": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.2.2.tgz", + "integrity": "sha512-kDUmfm3BZrei0y+1NTHJInejzxfhtU8eDj2M7OKb2IWrPFAeO1SOH2KuQ68MSZu9IGEHcxbkKKR1v18FrUSOmA==", + "dev": true, + "dependencies": { + "debug": "^3.0.0" + } + }, + "node_modules/webpack-virtual-modules/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/webpack/node_modules/@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "dev": true, + "peer": true + }, + "node_modules/webpack/node_modules/acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "dev": true, + "peer": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/webpack/node_modules/acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "dev": true, + "peer": true, + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/webpack/node_modules/enhanced-resolve": { + "version": "5.9.2", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz", + "integrity": "sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA==", + "dev": true, + "peer": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "peer": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack/node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "peer": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/webpack/node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack/node_modules/terser-webpack-plugin": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", + "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", + "dev": true, + "peer": true, + "dependencies": { + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1", + "terser": "^5.7.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/webpack/node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wgs84": { + "version": "0.0.0", + "license": "BSD-2-Clause" + }, + "node_modules/whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "dependencies": { + "iconv-lite": "0.4.24" + } + }, + "node_modules/whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, + "dependencies": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/which": { + "version": "2.0.2", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "dev": true, + "dependencies": { + "string-width": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/widest-line/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/widest-line/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wildcard": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-1.1.2.tgz", + "integrity": "sha1-pwIEUwhNjNLv5wup02liY94XEKU=", + "dev": true + }, + "node_modules/winston": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.6.0.tgz", + "integrity": "sha512-9j8T75p+bcN6D00sF/zjFVmPp+t8KMPB1MzbbzYjeN9VWxdsYnTB40TkbNUEXAmILEfChMvAMgidlX64OG3p6w==", + "dependencies": { + "@dabh/diagnostics": "^2.0.2", + "async": "^3.2.3", + "is-stream": "^2.0.0", + "logform": "^2.4.0", + "one-time": "^1.0.0", + "readable-stream": "^3.4.0", + "safe-stable-stringify": "^2.3.1", + "stack-trace": "0.0.x", + "triple-beam": "^1.3.0", + "winston-transport": "^4.5.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/winston-transport": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz", + "integrity": "sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==", + "dependencies": { + "logform": "^2.3.2", + "readable-stream": "^3.6.0", + "triple-beam": "^1.3.0" + }, + "engines": { + "node": ">= 6.4.0" + } + }, + "node_modules/winston-transport/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/winston/node_modules/async": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", + "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==" + }, + "node_modules/winston/node_modules/readable-stream": { + "version": "3.6.0", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/with": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/with/-/with-7.0.2.tgz", + "integrity": "sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.9.6", + "@babel/types": "^7.9.6", + "assert-never": "^1.2.1", + "babel-walk": "3.0.0-canary-5" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/wkt-parser": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/wkt-parser/-/wkt-parser-1.3.1.tgz", + "integrity": "sha512-XK5qV+Y5gsygQfHx2/cS5a7Zxsgleaw8iX5UPC5eOXPc0TgJAu1JB9lr0iYYX3zAnN3p0aNiaN5c+1Bdblxwrg==" + }, + "node_modules/wmf": { + "version": "1.0.2", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/word": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/word/-/word-0.3.0.tgz", + "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "dev": true, + "dependencies": { + "errno": "~0.1.7" + } + }, + "node_modules/worker-rpc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/worker-rpc/-/worker-rpc-0.1.1.tgz", + "integrity": "sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg==", + "dev": true, + "dependencies": { + "microevent.ts": "~0.1.1" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "4.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "license": "ISC" + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/ws": { + "version": "7.5.7", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", + "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xdg-basedir": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/xlsx": { + "version": "0.18.4", + "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.18.4.tgz", + "integrity": "sha512-u2plLVR/Ju2NxByPcWuxW3eOHEE/EH8w0vDyvHx8pFa8qO3fpq+l/57msr/Eq4cY5LErFOFD4sp4jIyPd6nFzQ==", + "dependencies": { + "adler-32": "~1.3.0", + "cfb": "~1.2.1", + "codepage": "~1.15.0", + "crc-32": "~1.2.1", + "ssf": "~0.11.2", + "wmf": "~1.0.1", + "word": "~0.3.0" + }, + "bin": { + "xlsx": "bin/xlsx.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "node_modules/xml2js": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", + "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~9.0.1" + } + }, + "node_modules/xmlbuilder": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "node_modules/xregexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz", + "integrity": "sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM=", + "engines": { + "node": "*" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "license": "ISC" + }, + "node_modules/yaml": { + "version": "1.10.2", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "16.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zwitch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", + "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "packages/api": { + "name": "camino-api", + "version": "0.38.0", + "license": "AGPL-3.0-or-later", + "dependencies": { + "@graphql-tools/graphql-file-loader": "^7.3.5", + "@graphql-tools/load": "^7.5.3", + "@placemarkio/check-geojson": "^0.1.8", + "@sentry/node": "^6.18.2", + "@sentry/types": "^6.18.2", + "@sindresorhus/slugify": "^1.1.2", + "@turf/center": "^6.5.0", + "@turf/intersect": "^6.5.0", + "@types/basic-auth": "^1.1.3", + "@types/bcryptjs": "^2.4.2", + "@types/compression": "1.7.2", + "@types/cookie-parser": "^1.4.2", + "@types/cors": "^2.8.12", + "@types/cron": "^1.7.3", + "@types/dateformat": "^5.0.0", + "@types/express": "^4.17.13", + "@types/express-jwt": "6.0.4", + "@types/express-serve-static-core": "^4.17.28", + "@types/geojson": "^7946.0.8", + "@types/graphql-type-json": "^0.3.2", + "@types/graphql-upload": "^8.0.11", + "@types/jest": "^27.4.1", + "@types/jsonwebtoken": "^8.5.8", + "@types/node": "^17.0.21", + "@types/node-fetch": "^2.5.12", + "@types/node-mailjet": "^3.3.8", + "@types/pg": "^8.6.5", + "@types/proj4": "^2.5.2", + "@types/shpjs": "^3.4.1", + "@types/sql-formatter": "^2.3.0", + "basic-auth": "^2.0.1", + "bcryptjs": "^2.4.3", + "camelcase": "^6.3.0", + "cerbere": "^0.2.3", + "chalk": "^4.1.2", + "compression": "^1.7.4", + "cookie-parser": "^1.4.6", + "cors": "^2.8.5", + "cron": "^1.8.2", + "cross-env": "^7.0.3", + "crypto-random-string": "^3.3.1", + "dateformat": "^4.5.1", + "decamelize": "^5.0.0", + "dotenv": "^16.0.0", + "email-regex": "4.0.0", + "express": "^4.17.3", + "express-graphql": "^0.12.0", + "express-jwt": "^6.1.1", + "geojson-rewind": "^0.3.1", + "graphql": "^16.3.0", + "graphql-fields": "^2.0.3", + "graphql-scalars": "^1.15.0", + "graphql-type-json": "^0.3.2", + "graphql-upload": "^13.0.0", + "html-to-text": "^8.1.0", + "jsondiffpatch": "^0.4.1", + "jsonwebtoken": "^8.5.1", + "jszip": "^3.7.1", + "knex": "1.0.4", + "make-dir": "^3.1.0", + "matomo-tracker": "^2.2.4", + "node-fetch": "^2.6.5", + "node-mailjet": "^3.3.7", + "objection": "^3.0.1", + "p-queue": "^6.6.2", + "pg": "^8.7.3", + "proj4": "^2.8.0", + "shpjs": "^4.0.2", + "ts-node": "^10.7.0", + "tus-node-server": "^0.5.2", + "typescript": "^4.6.2", + "winston": "^3.6.0", + "xlsx": "^0.18.4" + }, + "devDependencies": { + "@jest/types": "^27.5.1", + "@semantic-release/changelog": "^6.0.1", + "@semantic-release/git": "^10.0.1", + "@types/supertest": "^2.0.11", + "@typescript-eslint/eslint-plugin": "^5.15.0", + "@typescript-eslint/parser": "^5.15.0", + "codecov": "^3.8.3", + "commitizen": "^4.2.4", + "cz-conventional-changelog": "^3.3.0", + "eslint": "^8.11.0", + "eslint-config-prettier": "^8.5.0", + "eslint-config-standard": "^17.0.0-1", + "eslint-plugin-import": "^2.25.4", + "eslint-plugin-jest": "^26.1.1", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-promise": "^6.0.0", + "eslint-plugin-standard": "^5.0.0", + "eslint-plugin-tsdoc": "^0.2.14", + "jest": "^27.5.1", + "lint-staged": "^12.3.6", + "nodemon": "^2.0.15", + "npm-check-updates": "^12.5.3", + "pg-escape": "^0.2.0", + "prettier-eslint": "^13.0.0", + "semantic-release": "^19.0.2", + "sql-formatter": "^4.0.2", + "standard-version": "^9.3.2", + "supertest": "^6.2.2", + "ts-jest": "^27.1.3", + "typedoc": "^0.21.9", + "typedoc-plugin-pages-fork": "^0.0.1", + "typedoc-plugin-sourcefile-url": "^1.0.6" + }, + "engines": { + "node": ">=16.12.0", + "npm": ">=7.24.0" + } + }, + "packages/ui": { + "name": "camino-ui", + "version": "0.34.0", + "license": "AGPL-3.0-or-later", + "dependencies": { + "choices.js": "^10.1.0", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "dotenv": "^16.0.0", + "express": "^4.17.3", + "http-proxy-middleware": "^2.0.4" + }, + "devDependencies": { + "@babel/eslint-parser": "^7.17.0", + "@babel/preset-env": "^7.16.11", + "@juggle/resize-observer": "^3.3.1", + "@mapbox/stylelint-processor-arbitrary-tags": "^0.4.0", + "@rollup/plugin-inject": "^4.0.4", + "@semantic-release/changelog": "^6.0.1", + "@semantic-release/git": "^10.0.1", + "@sentry/browser": "^6.18.2", + "@sentry/integrations": "^6.18.2", + "@storybook/addon-actions": "^6.4.19", + "@storybook/addon-controls": "^6.4.19", + "@storybook/addon-postcss": "^2.0.0", + "@storybook/addon-storyshots": "^6.4.19", + "@storybook/vue3": "^6.4.19", + "@types/jest": "^27.4.1", + "@types/leaflet": "^1.7.9", + "@types/leaflet.markercluster": "^1.4.6", + "@types/webpack-env": "^1.16.3", + "@typescript-eslint/parser": "^5.15.0", + "@uppy/core": "^2.1.6", + "@uppy/tus": "^2.2.0", + "@vitejs/plugin-vue": "^2.2.4", + "@vue/eslint-config-prettier": "^7.0.0", + "@vue/eslint-config-standard": "^6.1.0", + "@vue/test-utils": "^2.0.0-rc.17", + "@vue/vue3-jest": "27.0.0-alpha.4", + "babel-core": "^7.0.0-bridge.0", + "babel-jest": "^27.5.1", + "babel-loader": "^8.2.3", + "babel-plugin-graphql-tag": "^3.3.0", + "babel-preset-vite": "^1.0.4", + "chalk": "^5.0.1", + "chart.js": "^3.7.1", + "codecov": "^3.8.3", + "commitizen": "^4.2.4", + "core-js": "^3.21.1", + "cross-env": "^7.0.3", + "cross-fetch": "^3.1.5", + "cz-conventional-changelog": "^3.3.0", + "email-validator": "^2.0.4", + "eslint": "^7.32.0", + "eslint-config-prettier": "^8.5.0", + "eslint-config-standard": "^16.0.3", + "eslint-plugin-import": "^2.25.4", + "eslint-plugin-jest": "^26.1.1", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-promise": "^5.2.0", + "eslint-plugin-vue": "^7.19.1", + "file-saver": "^2.0.5", + "graphql": "^16.3.0", + "graphql-react": "^15.0.0", + "graphql-tag": "^2.12.6", + "html-webpack-plugin": "^5.5.0", + "jest": "^27.5.1", + "jest-fetch-mock": "^3.0.3", + "jest-serializer-vue": "^2.0.2", + "jest-transform-stub": "^2.0.0", + "jest-util": "^27.5.1", + "json2csv": "^5.0.7", + "jsondiffpatch": "^0.4.1", + "leaflet": "1.7.1", + "leaflet-fullscreen": "^1.0.2", + "leaflet-gesture-handling": "^1.2.2", + "leaflet-markers-canvas": "^0.2.2", + "leaflet.markercluster": "^1.5.3", + "lint-staged": "^12.3.6", + "npm-check-updates": "^12.5.3", + "pixrem": "^5.0.0", + "postcss-button": "^0.3.17", + "postcss-calc": "^8.2.4", + "postcss-color-mod-function": "^3.0.3", + "postcss-grid-fluid": "^0.3.4", + "postcss-grid-system": "^0.5.2", + "postcss-import": "14.0.2", + "postcss-inline-svg": "5.0.0", + "postcss-loader": "^6.2.1", + "postcss-normalize": "^10.0.1", + "postcss-preset-env": "^7.4.2", + "postcss-typescale": "^0.2.3", + "prettier": "^2.6.0", + "rbush": "^3.0.1", + "semantic-release": "^19.0.2", + "snarkdown": "^2.0.0", + "standard-version": "^9.3.2", + "stylelint": "^14.6.0", + "stylelint-config-prettier": "^9.0.3", + "stylelint-config-standard": "^25.0.0", + "ts-jest": "^27.1.3", + "typescript": "^4.6.2", + "vite": "^2.8.6", + "vue": "^3.2.31", + "vue-loader": "^17.0.0", + "vue-meta": "^2.4.0", + "vue-router": "^4.0.14", + "vuex": "^4.0.2", + "vuex-router-sync": "^6.0.0-rc.1" + }, + "engines": { + "node": ">=16.12.0", + "npm": ">=7.24.0" + } + }, + "packages/ui/node_modules/@eslint/eslintrc": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "packages/ui/node_modules/@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "packages/ui/node_modules/@vue/eslint-config-standard": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@vue/eslint-config-standard/-/eslint-config-standard-6.1.0.tgz", + "integrity": "sha512-9+hrEyflDzsGdlBDl9jPV5DIYUx1TOU5OSQqRDKCrNumrxRj5HRWKuk+ocXWnha6uoNRtLC24mY7d/MwqvBCNw==", + "dev": true, + "dependencies": { + "eslint-config-standard": "^16.0.3", + "eslint-import-resolver-node": "^0.3.4", + "eslint-import-resolver-webpack": "^0.13.1" + }, + "peerDependencies": { + "@vue/cli-service": "^3.0.0 || ^4.0.0 || ^5.0.0-0", + "eslint": "^7.12.1", + "eslint-plugin-import": "^2.22.1", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-promise": "^4.2.1 || ^5.0.0", + "eslint-plugin-vue": "^7.0.0" + }, + "peerDependenciesMeta": { + "@vue/cli-service": { + "optional": true + } + } + }, + "packages/ui/node_modules/chalk": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.0.1.tgz", + "integrity": "sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "packages/ui/node_modules/eslint": { + "version": "7.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "packages/ui/node_modules/eslint-config-standard": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-16.0.3.tgz", + "integrity": "sha512-x4fmJL5hGqNJKGHSjnLdgA6U6h1YW/G2dW9fA+cyVur4SK6lyue8+UgNKWlZtUDTXvgKDD/Oa3GQjmB5kjtVvg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "peerDependencies": { + "eslint": "^7.12.1", + "eslint-plugin-import": "^2.22.1", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-promise": "^4.2.1 || ^5.0.0" + } + }, + "packages/ui/node_modules/eslint-plugin-promise": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-5.2.0.tgz", + "integrity": "sha512-SftLb1pUG01QYq2A/hGAWfDRXqYD82zE7j7TopDOyNdU+7SvvoXREls/+PRTY17vUXzXnZA/zfnyKgRH6x4JJw==", + "dev": true, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "peerDependencies": { + "eslint": "^7.0.0" + } + }, + "packages/ui/node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "packages/ui/node_modules/espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "dependencies": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "packages/ui/node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "packages/ui/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "packages/ui/node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.11", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/compat-data": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz", + "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==", + "dev": true + }, + "@babel/core": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.8.tgz", + "integrity": "sha512-3UG9dsxvYBMYwRv+gS41WKHno4K60/9GPy1CJaH6xy3Elq8CTtvtjT5R5jmNhXfCYLX2mTw+7/aq5ak/gOE0og==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.15.8", + "@babel/generator": "^7.15.8", + "@babel/helper-compilation-targets": "^7.15.4", + "@babel/helper-module-transforms": "^7.15.8", + "@babel/helpers": "^7.15.4", + "@babel/parser": "^7.15.8", + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.6", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz", + "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.14.5" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/eslint-parser": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.17.0.tgz", + "integrity": "sha512-PUEJ7ZBXbRkbq3qqM/jZ2nIuakUBqCYc7Qf52Lj7dlZ6zERnqisdHioL0l4wwQZnmskMeasqUNzLBFKs3nylXA==", + "dev": true, + "requires": { + "eslint-scope": "^5.1.1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz", + "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==", + "dev": true, + "requires": { + "@babel/types": "^7.17.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", + "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz", + "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.17.5", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.17.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.6.tgz", + "integrity": "sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz", + "integrity": "sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "regexpu-core": "^5.0.1" + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", + "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/helper-environment-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", + "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", + "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-function-name": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", + "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", + "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", + "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", + "dev": true, + "requires": { + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-module-imports": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-module-transforms": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", + "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", + "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", + "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-wrap-function": "^7.16.8", + "@babel/types": "^7.16.8" + } + }, + "@babel/helper-replace-supers": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", + "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-simple-access": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", + "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", + "dev": true, + "requires": { + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", + "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.8", + "@babel/types": "^7.16.8" + } + }, + "@babel/helpers": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz", + "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==", + "dev": true, + "requires": { + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/highlight": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.7.tgz", + "integrity": "sha512-aKpPMfLvGO3Q97V0qhw/V2SWNWlwfJknuwAunU7wZLSfrM4xTBvg7E5opUVi1kJTBKihE38CPg4nBiqX83PWYw==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/parser": { + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.8.tgz", + "integrity": "sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ==", + "dev": true + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz", + "integrity": "sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz", + "integrity": "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.7" + } + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz", + "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", + "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.17.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz", + "integrity": "sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.17.6", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, + "@babel/plugin-proposal-decorators": { + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.17.8.tgz", + "integrity": "sha512-U69odN4Umyyx1xO1rTII0IDkAEC+RNlcKXtqOblfpzqy1C+aOplb76BQNq0+XdpVkOaPlpEDwd++joY8FNFJKA==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.17.6", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/plugin-syntax-decorators": "^7.17.0", + "charcodes": "^0.2.0" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", + "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-default-from": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.16.7.tgz", + "integrity": "sha512-+cENpW1rgIjExn+o5c8Jw/4BuH4eGKKYvkMB8/0ZxFQ9mC0t4z09VsPIwNg6waF69QYC81zxGeAsREGuqQoKeg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-export-default-from": "^7.16.7" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz", + "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz", + "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz", + "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz", + "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", + "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz", + "integrity": "sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.17.0", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.16.7" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", + "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", + "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.16.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz", + "integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.10", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz", + "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz", + "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-decorators": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.17.0.tgz", + "integrity": "sha512-qWe85yCXsvDEluNP0OyeQjH63DlhAR3W7K9BxxU1MvbDb48tgBG+Ao6IJJ6smPDrrVzSQZrbF6donpkFBMcs3A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-default-from": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.16.7.tgz", + "integrity": "sha512-4C3E4NsrLOgftKaTYTULhHsuQrGv3FHrBzOMDiS7UYKIpgGBkAdawg4h+EI8zPeK9M0fiIIh72hIwsI24K7MbA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-flow": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.16.7.tgz", + "integrity": "sha512-UDo3YGQO0jH6ytzVwgSLv9i/CzMcUjbKenL67dTrAZPPv6GFAtDhe6jqnvmoKzC/7htNTohhos+onPtDMqJwaQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz", + "integrity": "sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz", + "integrity": "sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz", + "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz", + "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", + "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz", + "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz", + "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "globals": "^11.1.0" + }, + "dependencies": { + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + } + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz", + "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz", + "integrity": "sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", + "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz", + "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", + "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-flow-strip-types": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.16.7.tgz", + "integrity": "sha512-mzmCq3cNsDpZZu9FADYYyfZJIOrSONmHcop2XEKPdBNMa4PDC4eEvcOvzZaCNcjKu72v0XQlA5y1g58aLRXdYg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-flow": "^7.16.7" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz", + "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", + "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz", + "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", + "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz", + "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.7.tgz", + "integrity": "sha512-ITPmR2V7MqioMJyrxUo2onHNC3e+MvfFiFIR0RP21d3PtlVb6sfzoxNKiphSZUOM9hEIdzCcZe83ieX3yoqjUA==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz", + "integrity": "sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz", + "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz", + "integrity": "sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz", + "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", + "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz", + "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", + "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-react-display-name": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz", + "integrity": "sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.3.tgz", + "integrity": "sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-jsx": "^7.16.7", + "@babel/types": "^7.17.0" + } + }, + "@babel/plugin-transform-react-jsx-development": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz", + "integrity": "sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A==", + "dev": true, + "requires": { + "@babel/plugin-transform-react-jsx": "^7.16.7" + } + }, + "@babel/plugin-transform-react-pure-annotations": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.7.tgz", + "integrity": "sha512-hs71ToC97k3QWxswh2ElzMFABXHvGiJ01IB1TbYQDGeWRKWz/MPUTh5jGExdHvosYKpnJW5Pm3S4+TA3FyX+GA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz", + "integrity": "sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q==", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz", + "integrity": "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", + "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz", + "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", + "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz", + "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz", + "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-typescript": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.8.tgz", + "integrity": "sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-typescript": "^7.16.7" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", + "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", + "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/preset-env": { + "version": "7.16.11", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.11.tgz", + "integrity": "sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.16.8", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7", + "@babel/plugin-proposal-async-generator-functions": "^7.16.8", + "@babel/plugin-proposal-class-properties": "^7.16.7", + "@babel/plugin-proposal-class-static-block": "^7.16.7", + "@babel/plugin-proposal-dynamic-import": "^7.16.7", + "@babel/plugin-proposal-export-namespace-from": "^7.16.7", + "@babel/plugin-proposal-json-strings": "^7.16.7", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7", + "@babel/plugin-proposal-numeric-separator": "^7.16.7", + "@babel/plugin-proposal-object-rest-spread": "^7.16.7", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", + "@babel/plugin-proposal-optional-chaining": "^7.16.7", + "@babel/plugin-proposal-private-methods": "^7.16.11", + "@babel/plugin-proposal-private-property-in-object": "^7.16.7", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.7", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.16.7", + "@babel/plugin-transform-async-to-generator": "^7.16.8", + "@babel/plugin-transform-block-scoped-functions": "^7.16.7", + "@babel/plugin-transform-block-scoping": "^7.16.7", + "@babel/plugin-transform-classes": "^7.16.7", + "@babel/plugin-transform-computed-properties": "^7.16.7", + "@babel/plugin-transform-destructuring": "^7.16.7", + "@babel/plugin-transform-dotall-regex": "^7.16.7", + "@babel/plugin-transform-duplicate-keys": "^7.16.7", + "@babel/plugin-transform-exponentiation-operator": "^7.16.7", + "@babel/plugin-transform-for-of": "^7.16.7", + "@babel/plugin-transform-function-name": "^7.16.7", + "@babel/plugin-transform-literals": "^7.16.7", + "@babel/plugin-transform-member-expression-literals": "^7.16.7", + "@babel/plugin-transform-modules-amd": "^7.16.7", + "@babel/plugin-transform-modules-commonjs": "^7.16.8", + "@babel/plugin-transform-modules-systemjs": "^7.16.7", + "@babel/plugin-transform-modules-umd": "^7.16.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.8", + "@babel/plugin-transform-new-target": "^7.16.7", + "@babel/plugin-transform-object-super": "^7.16.7", + "@babel/plugin-transform-parameters": "^7.16.7", + "@babel/plugin-transform-property-literals": "^7.16.7", + "@babel/plugin-transform-regenerator": "^7.16.7", + "@babel/plugin-transform-reserved-words": "^7.16.7", + "@babel/plugin-transform-shorthand-properties": "^7.16.7", + "@babel/plugin-transform-spread": "^7.16.7", + "@babel/plugin-transform-sticky-regex": "^7.16.7", + "@babel/plugin-transform-template-literals": "^7.16.7", + "@babel/plugin-transform-typeof-symbol": "^7.16.7", + "@babel/plugin-transform-unicode-escapes": "^7.16.7", + "@babel/plugin-transform-unicode-regex": "^7.16.7", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.8", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.20.2", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/preset-flow": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.16.7.tgz", + "integrity": "sha512-6ceP7IyZdUYQ3wUVqyRSQXztd1YmFHWI4Xv11MIqAlE4WqxBSd/FZ61V9k+TS5Gd4mkHOtQtPp9ymRpxH4y1Ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-transform-flow-strip-types": "^7.16.7" + } + }, + "@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/preset-react": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.16.7.tgz", + "integrity": "sha512-fWpyI8UM/HE6DfPBzD8LnhQ/OcH8AgTaqcqP2nGOXEUV+VKBR5JRN9hCk9ai+zQQ57vtm9oWeXguBCPNUjytgA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-transform-react-display-name": "^7.16.7", + "@babel/plugin-transform-react-jsx": "^7.16.7", + "@babel/plugin-transform-react-jsx-development": "^7.16.7", + "@babel/plugin-transform-react-pure-annotations": "^7.16.7" + } + }, + "@babel/preset-typescript": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.16.7.tgz", + "integrity": "sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-transform-typescript": "^7.16.7" + } + }, + "@babel/register": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.17.7.tgz", + "integrity": "sha512-fg56SwvXRifootQEDQAu1mKdjh5uthPzdO0N6t358FktfL4XjAVXuH58ULoiW8mesxiOgNIrxiImqEwv0+hRRA==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "find-cache-dir": "^2.0.0", + "make-dir": "^2.1.0", + "pirates": "^4.0.5", + "source-map-support": "^0.5.16" + }, + "dependencies": { + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "@babel/runtime": { + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.8.tgz", + "integrity": "sha512-dQpEpK0O9o6lj6oPu0gRDbbnk+4LeHlNcBpspf6Olzt3GIX4P1lWF1gS+pHLDFlaJvbR6q7jCfQ08zA4QJBnmA==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.16.7" + } + } + } + }, + "@babel/traverse": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", + "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.3", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.17.3", + "@babel/types": "^7.17.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.16.7" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + }, + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "@cnakazawa/watch": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", + "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", + "dev": true, + "requires": { + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" + } + }, + "@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==" + }, + "@commitlint/execute-rule": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-13.2.0.tgz", + "integrity": "sha512-6nPwpN0hwTYmsH3WM4hCdN+NrMopgRIuQ0aqZa+jnwMoS/g6ljliQNYfL+m5WO306BaIu1W3yYpbW5aI8gEr0g==", + "dev": true, + "optional": true + }, + "@commitlint/load": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-13.2.0.tgz", + "integrity": "sha512-Nhkv+hwWCCxWGjmE9jd1U8kfGGCkZVpwzlTtdKxpY+Aj2VCFg3BjY+qA81pMF3oAsIpxchSaZG5llb8kduVjYg==", + "dev": true, + "optional": true, + "requires": { + "@commitlint/execute-rule": "^13.2.0", + "@commitlint/resolve-extends": "^13.2.0", + "@commitlint/types": "^13.2.0", + "@endemolshinegroup/cosmiconfig-typescript-loader": "^3.0.2", + "chalk": "^4.0.0", + "cosmiconfig": "^7.0.0", + "lodash": "^4.17.19", + "resolve-from": "^5.0.0" + } + }, + "@commitlint/resolve-extends": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-13.2.0.tgz", + "integrity": "sha512-HLCMkqMKtvl1yYLZ1Pm0UpFvd0kYjsm1meLOGZ7VkOd9G/XX+Fr1S2G5AT2zeiDw7WUVYK8lGVMNa319bnV+aw==", + "dev": true, + "optional": true, + "requires": { + "import-fresh": "^3.0.0", + "lodash": "^4.17.19", + "resolve-from": "^5.0.0", + "resolve-global": "^1.0.0" + } + }, + "@commitlint/types": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-13.2.0.tgz", + "integrity": "sha512-RRVHEqmk1qn/dIaSQhvuca6k/6Z54G+r/KyimZ8gnAFielGiGUpsFRhIY3qhd5rXClVxDaa3nlcyTWckSccotQ==", + "dev": true, + "optional": true, + "requires": { + "chalk": "^4.0.0" + } + }, + "@cspotcode/source-map-consumer": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", + "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==" + }, + "@cspotcode/source-map-support": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz", + "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==", + "requires": { + "@cspotcode/source-map-consumer": "0.8.0" + } + }, + "@csstools/convert-colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz", + "integrity": "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==", + "dev": true + }, + "@csstools/normalize.css": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-12.0.0.tgz", + "integrity": "sha512-M0qqxAcwCsIVfpFQSlGN5XjXWu8l5JDZN+fPt1LeW5SZexQTgnaEvgXAY+CeygRw0EeppWHi12JxESWiWrB0Sg==", + "dev": true + }, + "@csstools/postcss-color-function": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.0.3.tgz", + "integrity": "sha512-J26I69pT2B3MYiLY/uzCGKVJyMYVg9TCpXkWsRlt+Yfq+nELUEm72QXIMYXs4xA9cJA4Oqs2EylrfokKl3mJEQ==", + "dev": true, + "requires": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-font-format-keywords": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.0.tgz", + "integrity": "sha512-oO0cZt8do8FdVBX8INftvIA4lUrKUSCcWUf9IwH9IPWOgKT22oAZFXeHLoDK7nhB2SmkNycp5brxfNMRLIhd6Q==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-hwb-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.0.tgz", + "integrity": "sha512-VSTd7hGjmde4rTj1rR30sokY3ONJph1reCBTUXqeW1fKwETPy1x4t/XIeaaqbMbC5Xg4SM/lyXZ2S8NELT2TaA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-ic-unit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.0.tgz", + "integrity": "sha512-i4yps1mBp2ijrx7E96RXrQXQQHm6F4ym1TOD0D69/sjDjZvQ22tqiEvaNw7pFZTUO5b9vWRHzbHzP9+UKuw+bA==", + "dev": true, + "requires": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-is-pseudo-class": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.1.tgz", + "integrity": "sha512-Og5RrTzwFhrKoA79c3MLkfrIBYmwuf/X83s+JQtz/Dkk/MpsaKtqHV1OOzYkogQ+tj3oYp5Mq39XotBXNqVc3Q==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.9" + } + }, + "@csstools/postcss-normalize-display-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.0.tgz", + "integrity": "sha512-bX+nx5V8XTJEmGtpWTO6kywdS725t71YSLlxWt78XoHUbELWgoCXeOFymRJmL3SU1TLlKSIi7v52EWqe60vJTQ==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-oklab-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.0.2.tgz", + "integrity": "sha512-QwhWesEkMlp4narAwUi6pgc6kcooh8cC7zfxa9LSQNYXqzcdNUtNBzbGc5nuyAVreb7uf5Ox4qH1vYT3GA1wOg==", + "dev": true, + "requires": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-progressive-custom-properties": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz", + "integrity": "sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@dabh/diagnostics": { + "version": "2.0.2", + "requires": { + "colorspace": "1.1.x", + "enabled": "2.0.x", + "kuler": "^2.0.0" + } + }, + "@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true + }, + "@emotion/cache": { + "version": "10.0.29", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-10.0.29.tgz", + "integrity": "sha512-fU2VtSVlHiF27empSbxi1O2JFdNWZO+2NFHfwO0pxgTep6Xa3uGb+3pVKfLww2l/IBGLNEZl5Xf/++A4wAYDYQ==", + "dev": true, + "requires": { + "@emotion/sheet": "0.9.4", + "@emotion/stylis": "0.8.5", + "@emotion/utils": "0.11.3", + "@emotion/weak-memoize": "0.2.5" + } + }, + "@emotion/core": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/@emotion/core/-/core-10.3.1.tgz", + "integrity": "sha512-447aUEjPIm0MnE6QYIaFz9VQOHSXf4Iu6EWOIqq11EAPqinkSZmfymPTmlOE3QjLv846lH4JVZBUOtwGbuQoww==", + "dev": true, + "requires": { + "@babel/runtime": "^7.5.5", + "@emotion/cache": "^10.0.27", + "@emotion/css": "^10.0.27", + "@emotion/serialize": "^0.11.15", + "@emotion/sheet": "0.9.4", + "@emotion/utils": "0.11.3" + } + }, + "@emotion/css": { + "version": "10.0.27", + "resolved": "https://registry.npmjs.org/@emotion/css/-/css-10.0.27.tgz", + "integrity": "sha512-6wZjsvYeBhyZQYNrGoR5yPMYbMBNEnanDrqmsqS1mzDm1cOTu12shvl2j4QHNS36UaTE0USIJawCH9C8oW34Zw==", + "dev": true, + "requires": { + "@emotion/serialize": "^0.11.15", + "@emotion/utils": "0.11.3", + "babel-plugin-emotion": "^10.0.27" + } + }, + "@emotion/hash": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", + "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==", + "dev": true + }, + "@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "dev": true, + "requires": { + "@emotion/memoize": "0.7.4" + } + }, + "@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "dev": true + }, + "@emotion/serialize": { + "version": "0.11.16", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-0.11.16.tgz", + "integrity": "sha512-G3J4o8by0VRrO+PFeSc3js2myYNOXVJ3Ya+RGVxnshRYgsvErfAOglKAiy1Eo1vhzxqtUvjCyS5gtewzkmvSSg==", + "dev": true, + "requires": { + "@emotion/hash": "0.8.0", + "@emotion/memoize": "0.7.4", + "@emotion/unitless": "0.7.5", + "@emotion/utils": "0.11.3", + "csstype": "^2.5.7" + } + }, + "@emotion/sheet": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-0.9.4.tgz", + "integrity": "sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA==", + "dev": true + }, + "@emotion/styled": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.3.0.tgz", + "integrity": "sha512-GgcUpXBBEU5ido+/p/mCT2/Xx+Oqmp9JzQRuC+a4lYM4i4LBBn/dWvc0rQ19N9ObA8/T4NWMrPNe79kMBDJqoQ==", + "dev": true, + "requires": { + "@emotion/styled-base": "^10.3.0", + "babel-plugin-emotion": "^10.0.27" + } + }, + "@emotion/styled-base": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.3.0.tgz", + "integrity": "sha512-PBRqsVKR7QRNkmfH78hTSSwHWcwDpecH9W6heujWAcyp2wdz/64PP73s7fWS1dIPm8/Exc8JAzYS8dEWXjv60w==", + "dev": true, + "requires": { + "@babel/runtime": "^7.5.5", + "@emotion/is-prop-valid": "0.8.8", + "@emotion/serialize": "^0.11.15", + "@emotion/utils": "0.11.3" + } + }, + "@emotion/stylis": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz", + "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==", + "dev": true + }, + "@emotion/unitless": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==", + "dev": true + }, + "@emotion/utils": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-0.11.3.tgz", + "integrity": "sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw==", + "dev": true + }, + "@emotion/weak-memoize": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz", + "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==", + "dev": true + }, + "@endemolshinegroup/cosmiconfig-typescript-loader": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@endemolshinegroup/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-3.0.2.tgz", + "integrity": "sha512-QRVtqJuS1mcT56oHpVegkKBlgtWjXw/gHNWO3eL9oyB5Sc7HBoc2OLG/nYpVfT/Jejvo3NUrD0Udk7XgoyDKkA==", + "dev": true, + "optional": true, + "requires": { + "lodash.get": "^4", + "make-error": "^1", + "ts-node": "^9", + "tslib": "^2" + }, + "dependencies": { + "ts-node": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz", + "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==", + "dev": true, + "optional": true, + "requires": { + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "source-map-support": "^0.5.17", + "yn": "3.1.1" + } + } + } + }, + "@eslint/eslintrc": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.1.tgz", + "integrity": "sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.3.1", + "globals": "^13.9.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + } + } + }, + "@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true + }, + "@google-cloud/common": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-3.9.0.tgz", + "integrity": "sha512-R9PfmCKbpOizvcLY+fz/TS4HdOQhvmf4EY4xEXvWnotGbGXujuTLJTJ2URy8BGT8TDxlh6gjjfEwjJ8McnNPIg==", + "requires": { + "@google-cloud/projectify": "^2.0.0", + "@google-cloud/promisify": "^2.0.0", + "arrify": "^2.0.1", + "duplexify": "^4.1.1", + "ent": "^2.2.0", + "extend": "^3.0.2", + "google-auth-library": "^7.9.2", + "retry-request": "^4.2.2", + "teeny-request": "^7.0.0" + }, + "dependencies": { + "arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==" + } + } + }, + "@google-cloud/paginator": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-3.0.7.tgz", + "integrity": "sha512-jJNutk0arIQhmpUUQJPJErsojqo834KcyB6X7a1mxuic8i1tKXxde8E69IZxNZawRIlZdIK2QY4WALvlK5MzYQ==", + "requires": { + "arrify": "^2.0.0", + "extend": "^3.0.2" + }, + "dependencies": { + "arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==" + } + } + }, + "@google-cloud/projectify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-2.1.1.tgz", + "integrity": "sha512-+rssMZHnlh0twl122gXY4/aCrk0G1acBqkHFfYddtsqpYXGxA29nj9V5V9SfC+GyOG00l650f6lG9KL+EpFEWQ==" + }, + "@google-cloud/promisify": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-2.0.4.tgz", + "integrity": "sha512-j8yRSSqswWi1QqUGKVEKOG03Q7qOoZP6/h2zN2YO+F5h2+DHU0bSrHCK9Y7lo2DI9fBd8qGAw795sf+3Jva4yA==" + }, + "@google-cloud/storage": { + "version": "5.18.2", + "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-5.18.2.tgz", + "integrity": "sha512-hL/6epBF2uPt7YtJoOKI6mVxe6RsKBs7S8o2grE0bFGdQKSOngVHBcstH8jDw7aN2rXGouA2TfVTxH+VapY5cg==", + "requires": { + "@google-cloud/common": "^3.8.1", + "@google-cloud/paginator": "^3.0.7", + "@google-cloud/promisify": "^2.0.0", + "abort-controller": "^3.0.0", + "arrify": "^2.0.0", + "async-retry": "^1.3.3", + "compressible": "^2.0.12", + "configstore": "^5.0.0", + "date-and-time": "^2.0.0", + "duplexify": "^4.0.0", + "extend": "^3.0.2", + "gaxios": "^4.0.0", + "get-stream": "^6.0.0", + "google-auth-library": "^7.0.0", + "hash-stream-validation": "^0.2.2", + "mime": "^3.0.0", + "mime-types": "^2.0.8", + "p-limit": "^3.0.1", + "pumpify": "^2.0.0", + "snakeize": "^0.1.0", + "stream-events": "^1.0.4", + "xdg-basedir": "^4.0.0" + }, + "dependencies": { + "arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==" + }, + "mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==" + } + } + }, + "@graphql-tools/graphql-file-loader": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/@graphql-tools/graphql-file-loader/-/graphql-file-loader-7.3.5.tgz", + "integrity": "sha512-TBWDA7EV/cmFFUlN2eT9JqYIkiOGEtwwOgzzPcjM9HlPrbKjQkPIJ9Jaxp7aKWbSGhJ+PnbZ7vFLFLGKsCYOjg==", + "requires": { + "@graphql-tools/import": "6.6.7", + "@graphql-tools/utils": "8.6.3", + "globby": "^11.0.3", + "tslib": "~2.3.0", + "unixify": "^1.0.0" + } + }, + "@graphql-tools/import": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/@graphql-tools/import/-/import-6.6.7.tgz", + "integrity": "sha512-zzpnVtmdel3mKz6i46GUib4wn0K5dosq4OTBl4avKV6ElvgZTkvsvfSv2aRhbRGIT4VnZPXLfzSnmYd8e+SRLQ==", + "requires": { + "@graphql-tools/utils": "8.6.3", + "resolve-from": "5.0.0", + "tslib": "~2.3.0" + } + }, + "@graphql-tools/load": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/@graphql-tools/load/-/load-7.5.3.tgz", + "integrity": "sha512-GYwLyGfX1nKUxg6rnTIdryv9d+ugFRTm2q11+IqNsajwNhxJExkx+e/h81AQR5382sAmPEIT+E1J1VS3xNfjyg==", + "requires": { + "@graphql-tools/schema": "8.3.3", + "@graphql-tools/utils": "8.6.3", + "p-limit": "3.1.0", + "tslib": "~2.3.0" + } + }, + "@graphql-tools/merge": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.2.4.tgz", + "integrity": "sha512-hiNRTsS948F+BB4Q7CZXLaGFOIHQzmimVq3EEI/+PQZsPb7kYDzg0Ow0GyV4conDdEiooLqHf7I1dWzTYwvs0A==", + "requires": { + "@graphql-tools/utils": "8.6.3", + "tslib": "~2.3.0" + } + }, + "@graphql-tools/schema": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.3.3.tgz", + "integrity": "sha512-OrRLU9/7UmkDemeyNUy62uH+FofgV3bpVVZJprc9bhe3gZsY7kQNIdY7H1unINlepjLvGOgk7u7iLo2+EhjyWw==", + "requires": { + "@graphql-tools/merge": "8.2.4", + "@graphql-tools/utils": "8.6.3", + "tslib": "~2.3.0", + "value-or-promise": "1.0.11" + } + }, + "@graphql-tools/utils": { + "version": "8.6.3", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.6.3.tgz", + "integrity": "sha512-CNyP7Uu7dlVMQ32IpHWOxz4yic9BYXXVkDhG0UdTKSszvzHdgMilemE9MpUrGzzBPsTe3aYTtNGyPUkyh9yTXA==", + "requires": { + "tslib": "~2.3.0" + } + }, + "@humanwhocodes/config-array": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", + "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@humanwhocodes/momoa": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/momoa/-/momoa-2.0.3.tgz", + "integrity": "sha512-SytjS6gJk+LXSWFuEm0V9ASdgxlX/BDq6A+6gfh7TaHM90xppBydjcM3SFaziZP4ikKmhUOhPkDi2KktzElnQQ==" + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + } + } + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true + }, + "@jest/console": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", + "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0" + } + }, + "@jest/core": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", + "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", + "dev": true, + "requires": { + "@jest/console": "^27.5.1", + "@jest/reporters": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^27.5.1", + "jest-config": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-resolve-dependencies": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "jest-watcher": "^27.5.1", + "micromatch": "^4.0.4", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + } + }, + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + } + } + }, + "@jest/environment": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", + "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", + "dev": true, + "requires": { + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1" + } + }, + "@jest/fake-timers": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", + "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@sinonjs/fake-timers": "^8.0.1", + "@types/node": "*", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + } + }, + "@jest/globals": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", + "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", + "dev": true, + "requires": { + "@jest/environment": "^27.5.1", + "@jest/types": "^27.5.1", + "expect": "^27.5.1" + } + }, + "@jest/reporters": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", + "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", + "dev": true, + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-haste-map": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^8.1.0" + } + }, + "@jest/source-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", + "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", + "dev": true, + "requires": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9", + "source-map": "^0.6.0" + } + }, + "@jest/test-result": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", + "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", + "dev": true, + "requires": { + "@jest/console": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + } + }, + "@jest/test-sequencer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", + "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", + "dev": true, + "requires": { + "@jest/test-result": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-runtime": "^27.5.1" + } + }, + "@jest/transform": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.5.1", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + } + }, + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@juggle/resize-observer": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@juggle/resize-observer/-/resize-observer-3.3.1.tgz", + "integrity": "sha512-zMM9Ds+SawiUkakS7y94Ymqx+S0ORzpG3frZirN3l+UlXUmSUR7hF4wxCVqW+ei94JzV5kt0uXBcoOEAuiydrw==", + "dev": true + }, + "@mapbox/geojson-area": { + "version": "0.2.2", + "requires": { + "wgs84": "0.0.0" + } + }, + "@mapbox/stylelint-processor-arbitrary-tags": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@mapbox/stylelint-processor-arbitrary-tags/-/stylelint-processor-arbitrary-tags-0.4.0.tgz", + "integrity": "sha512-HTyW4vLgCVrAvmbV4TtXVpkrg3gkRR4WMEveNOo4OBxzA5wl5xQdxe0Iow8B5FRI3ose5yFLA8jvbfU8ZayPJQ==", + "dev": true, + "requires": { + "execall": "^1.0.0", + "split-lines": "^1.1.0" + } + }, + "@mdx-js/mdx": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-1.6.22.tgz", + "integrity": "sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA==", + "dev": true, + "requires": { + "@babel/core": "7.12.9", + "@babel/plugin-syntax-jsx": "7.12.1", + "@babel/plugin-syntax-object-rest-spread": "7.8.3", + "@mdx-js/util": "1.6.22", + "babel-plugin-apply-mdx-type-prop": "1.6.22", + "babel-plugin-extract-import-names": "1.6.22", + "camelcase-css": "2.0.1", + "detab": "2.0.4", + "hast-util-raw": "6.0.1", + "lodash.uniq": "4.5.0", + "mdast-util-to-hast": "10.0.1", + "remark-footnotes": "2.0.0", + "remark-mdx": "1.6.22", + "remark-parse": "8.0.3", + "remark-squeeze-paragraphs": "4.0.0", + "style-to-object": "0.3.0", + "unified": "9.2.0", + "unist-builder": "2.0.3", + "unist-util-visit": "2.0.3" + }, + "dependencies": { + "@babel/core": { + "version": "7.12.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz", + "integrity": "sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.5", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.5", + "@babel/parser": "^7.12.7", + "@babel/template": "^7.12.7", + "@babel/traverse": "^7.12.9", + "@babel/types": "^7.12.7", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz", + "integrity": "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@mdx-js/util": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/@mdx-js/util/-/util-1.6.22.tgz", + "integrity": "sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA==", + "dev": true + }, + "@microsoft/tsdoc": { + "version": "0.13.2", + "dev": true + }, + "@microsoft/tsdoc-config": { + "version": "0.15.2", + "dev": true, + "requires": { + "@microsoft/tsdoc": "0.13.2", + "ajv": "~6.12.6", + "jju": "~1.4.0", + "resolve": "~1.19.0" + }, + "dependencies": { + "resolve": { + "version": "1.19.0", + "dev": true, + "requires": { + "is-core-module": "^2.1.0", + "path-parse": "^1.0.6" + } + } + } + }, + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", + "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "dev": true, + "requires": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + }, + "dependencies": { + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", + "dev": true + } + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.4", + "requires": { + "@nodelib/fs.stat": "2.0.4", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.4" + }, + "@nodelib/fs.walk": { + "version": "1.2.6", + "requires": { + "@nodelib/fs.scandir": "2.1.4", + "fastq": "^1.6.0" + } + }, + "@npmcli/fs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", + "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", + "dev": true, + "requires": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + } + }, + "@npmcli/git": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.0.tgz", + "integrity": "sha512-xfSBJ+KBMZWWqRHFbEgIaXG/LtELHrQZMJ72Gkb3yWdHysu/7+VGOs8ME0c3td7QNQX57Ggo3kYL6ylcd70/kA==", + "dev": true, + "requires": { + "@npmcli/promise-spawn": "^1.3.2", + "lru-cache": "^7.3.1", + "mkdirp": "^1.0.4", + "npm-pick-manifest": "^7.0.0", + "proc-log": "^2.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^2.0.2" + }, + "dependencies": { + "lru-cache": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.6.0.tgz", + "integrity": "sha512-zjOf6cyMI7rcN+5MtLsT4GnDjc6D9XHi8kYcsfXTqWC+yLdSiU3/jtEPX9wZE77+XLtnmdIWu3+291hkizfH+Q==", + "dev": true + } + } + }, + "@npmcli/installed-package-contents": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", + "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", + "dev": true, + "requires": { + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "@npmcli/move-file": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "dev": true, + "requires": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + } + }, + "@npmcli/node-gyp": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz", + "integrity": "sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA==", + "dev": true + }, + "@npmcli/promise-spawn": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz", + "integrity": "sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg==", + "dev": true, + "requires": { + "infer-owner": "^1.0.4" + } + }, + "@npmcli/run-script": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-3.0.1.tgz", + "integrity": "sha512-o2fkld5hYwu9sKYzoXTpqEocMnDLaigobaPzLaGB63k/ExmLBTaB+KpfKlpcIePPnuP8RFR+0GDI4KopJCM6Xg==", + "dev": true, + "requires": { + "@npmcli/node-gyp": "^1.0.3", + "@npmcli/promise-spawn": "^1.3.2", + "node-gyp": "^9.0.0", + "read-package-json-fast": "^2.0.3" + } + }, + "@octokit/auth-token": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", + "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", + "dev": true, + "requires": { + "@octokit/types": "^6.0.3" + } + }, + "@octokit/core": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.5.1.tgz", + "integrity": "sha512-omncwpLVxMP+GLpLPgeGJBF6IWJFjXDS5flY5VbppePYX9XehevbDykRH9PdCdvqt9TS5AOTiDide7h0qrkHjw==", + "dev": true, + "requires": { + "@octokit/auth-token": "^2.4.4", + "@octokit/graphql": "^4.5.8", + "@octokit/request": "^5.6.0", + "@octokit/request-error": "^2.0.5", + "@octokit/types": "^6.0.3", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/endpoint": { + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", + "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", + "dev": true, + "requires": { + "@octokit/types": "^6.0.3", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/graphql": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", + "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", + "dev": true, + "requires": { + "@octokit/request": "^5.6.0", + "@octokit/types": "^6.0.3", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/openapi-types": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-11.2.0.tgz", + "integrity": "sha512-PBsVO+15KSlGmiI8QAzaqvsNlZlrDlyAJYcrXBCvVUxCp7VnXjkwPoFHgjEJXx3WF9BAwkA6nfCUA7i9sODzKA==", + "dev": true + }, + "@octokit/plugin-paginate-rest": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.17.0.tgz", + "integrity": "sha512-tzMbrbnam2Mt4AhuyCHvpRkS0oZ5MvwwcQPYGtMv4tUa5kkzG58SVB0fcsLulOZQeRnOgdkZWkRUiyBlh0Bkyw==", + "dev": true, + "requires": { + "@octokit/types": "^6.34.0" + } + }, + "@octokit/plugin-request-log": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", + "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", + "dev": true, + "requires": {} + }, + "@octokit/plugin-rest-endpoint-methods": { + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.13.0.tgz", + "integrity": "sha512-uJjMTkN1KaOIgNtUPMtIXDOjx6dGYysdIFhgA52x4xSadQCz3b/zJexvITDVpANnfKPW/+E0xkOvLntqMYpviA==", + "dev": true, + "requires": { + "@octokit/types": "^6.34.0", + "deprecation": "^2.3.1" + } + }, + "@octokit/request": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.2.tgz", + "integrity": "sha512-je66CvSEVf0jCpRISxkUcCa0UkxmFs6eGDRSbfJtAVwbLH5ceqF+YEyC8lj8ystKyZTy8adWr0qmkY52EfOeLA==", + "dev": true, + "requires": { + "@octokit/endpoint": "^6.0.1", + "@octokit/request-error": "^2.1.0", + "@octokit/types": "^6.16.1", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.1", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/request-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", + "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", + "dev": true, + "requires": { + "@octokit/types": "^6.0.3", + "deprecation": "^2.0.0", + "once": "^1.4.0" + } + }, + "@octokit/rest": { + "version": "18.12.0", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-18.12.0.tgz", + "integrity": "sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q==", + "dev": true, + "requires": { + "@octokit/core": "^3.5.1", + "@octokit/plugin-paginate-rest": "^2.16.8", + "@octokit/plugin-request-log": "^1.0.4", + "@octokit/plugin-rest-endpoint-methods": "^5.12.0" + } + }, + "@octokit/types": { + "version": "6.34.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz", + "integrity": "sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw==", + "dev": true, + "requires": { + "@octokit/openapi-types": "^11.2.0" + } + }, + "@placemarkio/check-geojson": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/@placemarkio/check-geojson/-/check-geojson-0.1.8.tgz", + "integrity": "sha512-MLt5Pe6j/iNjG1H55wJUw/g0wu6rcEpnNuLYdfn9d6IfHgYpKY3aID2BOj3DWSGS/1e9MevcPKLOFwaIH/2cLg==", + "requires": { + "@humanwhocodes/momoa": "^2.0.3", + "@types/geojson": "^7946.0.8", + "@types/jest": "^27.4.0", + "type-fest": "^2.12.0" + }, + "dependencies": { + "type-fest": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.12.0.tgz", + "integrity": "sha512-Qe5GRT+n/4GoqCNGGVp5Snapg1Omq3V7irBJB3EaKsp7HWDo5Gv2d/67gfNyV+d5EXD+x/RF5l1h4yJ7qNkcGA==" + } + } + }, + "@popperjs/core": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.4.tgz", + "integrity": "sha512-q/ytXxO5NKvyT37pmisQAItCFqA7FD/vNb8dgaJy3/630Fsc+Mz9/9f2SziBoIZ30TJooXyTwZmhi1zjXmObYg==", + "dev": true + }, + "@rollup/plugin-inject": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@rollup/plugin-inject/-/plugin-inject-4.0.4.tgz", + "integrity": "sha512-4pbcU4J/nS+zuHk+c+OL3WtmEQhqxlZ9uqfjQMQDOHOPld7PsCd8k5LWs8h5wjwJN7MgnAn768F2sDxEP4eNFQ==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "estree-walker": "^2.0.1", + "magic-string": "^0.25.7" + } + }, + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "dependencies": { + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + } + } + }, + "@selderee/plugin-htmlparser2": { + "version": "0.6.0", + "requires": { + "domhandler": "^4.2.0", + "selderee": "^0.6.0" + } + }, + "@semantic-release/changelog": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@semantic-release/changelog/-/changelog-6.0.1.tgz", + "integrity": "sha512-FT+tAGdWHr0RCM3EpWegWnvXJ05LQtBkQUaQRIExONoXjVjLuOILNm4DEKNaV+GAQyJjbLRVs57ti//GypH6PA==", + "dev": true, + "requires": { + "@semantic-release/error": "^3.0.0", + "aggregate-error": "^3.0.0", + "fs-extra": "^9.0.0", + "lodash": "^4.17.4" + }, + "dependencies": { + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "@semantic-release/commit-analyzer": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-9.0.2.tgz", + "integrity": "sha512-E+dr6L+xIHZkX4zNMe6Rnwg4YQrWNXK+rNsvwOPpdFppvZO1olE2fIgWhv89TkQErygevbjsZFSIxp+u6w2e5g==", + "dev": true, + "requires": { + "conventional-changelog-angular": "^5.0.0", + "conventional-commits-filter": "^2.0.0", + "conventional-commits-parser": "^3.2.3", + "debug": "^4.0.0", + "import-from": "^4.0.0", + "lodash": "^4.17.4", + "micromatch": "^4.0.2" + }, + "dependencies": { + "compare-func": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", + "dev": true, + "requires": { + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" + } + }, + "conventional-changelog-angular": { + "version": "5.0.13", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz", + "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==", + "dev": true, + "requires": { + "compare-func": "^2.0.0", + "q": "^1.5.1" + } + }, + "dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true + } + } + }, + "@semantic-release/error": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-3.0.0.tgz", + "integrity": "sha512-5hiM4Un+tpl4cKw3lV4UgzJj+SmfNIDCLLw0TepzQxz9ZGV5ixnqkzIVF+3tp0ZHgcMKE+VNGHJjEeyFG2dcSw==", + "dev": true + }, + "@semantic-release/git": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@semantic-release/git/-/git-10.0.1.tgz", + "integrity": "sha512-eWrx5KguUcU2wUPaO6sfvZI0wPafUKAMNC18aXY4EnNcrZL86dEmpNVnC9uMpGZkmZJ9EfCVJBQx4pV4EMGT1w==", + "dev": true, + "requires": { + "@semantic-release/error": "^3.0.0", + "aggregate-error": "^3.0.0", + "debug": "^4.0.0", + "dir-glob": "^3.0.0", + "execa": "^5.0.0", + "lodash": "^4.17.4", + "micromatch": "^4.0.0", + "p-reduce": "^2.0.0" + } + }, + "@semantic-release/github": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-8.0.2.tgz", + "integrity": "sha512-wIbfhOeuxlYzMTjtSAa2xgr54n7ZuPAS2gadyTWBpUt2PNAPgla7A6XxCXJnaKPgfVF0iFfSk3B+KlVKk6ByVg==", + "dev": true, + "requires": { + "@octokit/rest": "^18.0.0", + "@semantic-release/error": "^2.2.0", + "aggregate-error": "^3.0.0", + "bottleneck": "^2.18.1", + "debug": "^4.0.0", + "dir-glob": "^3.0.0", + "fs-extra": "^10.0.0", + "globby": "^11.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "issue-parser": "^6.0.0", + "lodash": "^4.17.4", + "mime": "^3.0.0", + "p-filter": "^2.0.0", + "p-retry": "^4.0.0", + "url-join": "^4.0.0" + }, + "dependencies": { + "@semantic-release/error": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-2.2.0.tgz", + "integrity": "sha512-9Tj/qn+y2j+sjCI3Jd+qseGtHjOAeg7dU2/lVcqIQ9TV3QDaDXDYXcoOHU+7o2Hwh8L8ymL4gfuO7KxDs3q2zg==", + "dev": true + }, + "@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true + }, + "fs-extra": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", + "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "requires": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "dev": true + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "@semantic-release/npm": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-9.0.0.tgz", + "integrity": "sha512-hj2jqayS2SPUmFtCMCOQMX975uMDfRoymj1HvMSwYdaoI6hVZvhrTFPBgJeM85O0C+G3IFviAUar5gel/1VGDQ==", + "dev": true, + "requires": { + "@semantic-release/error": "^3.0.0", + "aggregate-error": "^3.0.0", + "execa": "^5.0.0", + "fs-extra": "^10.0.0", + "lodash": "^4.17.15", + "nerf-dart": "^1.0.0", + "normalize-url": "^6.0.0", + "npm": "^8.3.0", + "rc": "^1.2.8", + "read-pkg": "^5.0.0", + "registry-auth-token": "^4.0.0", + "semver": "^7.1.2", + "tempy": "^1.0.0" + }, + "dependencies": { + "fs-extra": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", + "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + } + }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "@semantic-release/release-notes-generator": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-10.0.3.tgz", + "integrity": "sha512-k4x4VhIKneOWoBGHkx0qZogNjCldLPRiAjnIpMnlUh6PtaWXp/T+C9U7/TaNDDtgDa5HMbHl4WlREdxHio6/3w==", + "dev": true, + "requires": { + "conventional-changelog-angular": "^5.0.0", + "conventional-changelog-writer": "^5.0.0", + "conventional-commits-filter": "^2.0.0", + "conventional-commits-parser": "^3.2.3", + "debug": "^4.0.0", + "get-stream": "^6.0.0", + "import-from": "^4.0.0", + "into-stream": "^6.0.0", + "lodash": "^4.17.4", + "read-pkg-up": "^7.0.0" + }, + "dependencies": { + "compare-func": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", + "dev": true, + "requires": { + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" + } + }, + "conventional-changelog-angular": { + "version": "5.0.13", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz", + "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==", + "dev": true, + "requires": { + "compare-func": "^2.0.0", + "q": "^1.5.1" + } + }, + "conventional-changelog-writer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz", + "integrity": "sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==", + "dev": true, + "requires": { + "conventional-commits-filter": "^2.0.7", + "dateformat": "^3.0.0", + "handlebars": "^4.7.7", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "semver": "^6.0.0", + "split": "^1.0.0", + "through2": "^4.0.0" + } + }, + "dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "dev": true + }, + "dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "into-stream": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-6.0.0.tgz", + "integrity": "sha512-XHbaOAvP+uFKUFsOgoNPRjLkwB+I22JFPFe5OjTkQ0nwgj6+pSjb4NmB6VMxaPshLiOf+zcpOCBQuLwC1KHhZA==", + "dev": true, + "requires": { + "from2": "^2.3.0", + "p-is-promise": "^3.0.0" + } + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "meow": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "dev": true, + "requires": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "dependencies": { + "type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true + } + } + }, + "normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "requires": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "p-is-promise": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-3.0.0.tgz", + "integrity": "sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dev": true, + "requires": { + "readable-stream": "3" + } + } + } + }, + "@sentry/browser": { + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-6.19.1.tgz", + "integrity": "sha512-nU73PecOoMwrsw2WRJW+oQSSfgGkcY3So3JH7qwRHnnk4Gx56TkDfS0AOrNRsSpIQXj1UbSFIWKzz6ajsOg9OA==", + "dev": true, + "requires": { + "@sentry/core": "6.19.1", + "@sentry/types": "6.19.1", + "@sentry/utils": "6.19.1", + "tslib": "^1.9.3" + }, + "dependencies": { + "@sentry/core": { + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-6.19.1.tgz", + "integrity": "sha512-ZSIFnwYCzABK1jX1iMwUbaAoWbbJear0wM+gSZvJpSUJ1dAXV1OZyL7kXtEJRtATahIlcrMou5ewIoeJizeWAw==", + "dev": true, + "requires": { + "@sentry/hub": "6.19.1", + "@sentry/minimal": "6.19.1", + "@sentry/types": "6.19.1", + "@sentry/utils": "6.19.1", + "tslib": "^1.9.3" + } + }, + "@sentry/hub": { + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-6.19.1.tgz", + "integrity": "sha512-BgUwdxxXntGohAYrXtYrYBA6QzOeRz3NINuS838n7SRTkGf9gBJ/Rd3dyOWUrzJciKty7rmvYIwTA0oo91AMkw==", + "dev": true, + "requires": { + "@sentry/types": "6.19.1", + "@sentry/utils": "6.19.1", + "tslib": "^1.9.3" + } + }, + "@sentry/minimal": { + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-6.19.1.tgz", + "integrity": "sha512-Xre3J6mjWEcQhDmQ3j4g71J8f0nDgg2p7K41SngibfZVYSOe8jAowxSI9JuWD7juuwT5GVRVCqLs+Y6mWDBaoQ==", + "dev": true, + "requires": { + "@sentry/hub": "6.19.1", + "@sentry/types": "6.19.1", + "tslib": "^1.9.3" + } + }, + "@sentry/types": { + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.19.1.tgz", + "integrity": "sha512-ovmNYdqD2MKLmru4calxetX1xjJdYim+HEI/GzwvVUYshsaXRq4EiQ17h3DAy90MV7JH279PmMoPGDTOpufq+Q==", + "dev": true + }, + "@sentry/utils": { + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.19.1.tgz", + "integrity": "sha512-mWcQbQ1yO7PooLpJpQK84+wOfxGeb8iUKRb8inO+2Eg6VksDbXRuJ89Yd4APBTRxBj5Wihy48bPuVfKtovtm8g==", + "dev": true, + "requires": { + "@sentry/types": "6.19.1", + "tslib": "^1.9.3" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "@sentry/core": { + "version": "6.18.2", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-6.18.2.tgz", + "integrity": "sha512-r5ad/gq5S/JHc9sd5CUhZQT9ojQ+f+thk/AoGeGawX/8HURZYAgIqD565d6FK0VsZEDkdRMl58z1Qon20h3y1g==", + "requires": { + "@sentry/hub": "6.18.2", + "@sentry/minimal": "6.18.2", + "@sentry/types": "6.18.2", + "@sentry/utils": "6.18.2", + "tslib": "^1.9.3" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@sentry/hub": { + "version": "6.18.2", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-6.18.2.tgz", + "integrity": "sha512-d0AugekMkbnN12b4EXMjseJxtLPc9S20DGobCPUb4oAQT6S2oDQEj1jwP6PQ5vtgyy+GMYWxBMgqAQ4pjVYISQ==", + "requires": { + "@sentry/types": "6.18.2", + "@sentry/utils": "6.18.2", + "tslib": "^1.9.3" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@sentry/integrations": { + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-6.19.1.tgz", + "integrity": "sha512-0ViIiwx9BlPi8jvT97ERpJWmRbBUThGOyjNVzWxaa07OEjOgKI6cNgsBHWbPjaCM00WSzaOFOtYiC4464+Mucg==", + "dev": true, + "requires": { + "@sentry/types": "6.19.1", + "@sentry/utils": "6.19.1", + "localforage": "^1.8.1", + "tslib": "^1.9.3" + }, + "dependencies": { + "@sentry/types": { + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.19.1.tgz", + "integrity": "sha512-ovmNYdqD2MKLmru4calxetX1xjJdYim+HEI/GzwvVUYshsaXRq4EiQ17h3DAy90MV7JH279PmMoPGDTOpufq+Q==", + "dev": true + }, + "@sentry/utils": { + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.19.1.tgz", + "integrity": "sha512-mWcQbQ1yO7PooLpJpQK84+wOfxGeb8iUKRb8inO+2Eg6VksDbXRuJ89Yd4APBTRxBj5Wihy48bPuVfKtovtm8g==", + "dev": true, + "requires": { + "@sentry/types": "6.19.1", + "tslib": "^1.9.3" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "@sentry/minimal": { + "version": "6.18.2", + "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-6.18.2.tgz", + "integrity": "sha512-n7KYuo34W2LxE+3dnZ47of7XHuORINCnXq66XH72eoj67tf0XeWbIhEJrYGmoLRyRfoCYYrBLWiDl/uTjLzrzQ==", + "requires": { + "@sentry/hub": "6.18.2", + "@sentry/types": "6.18.2", + "tslib": "^1.9.3" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@sentry/node": { + "version": "6.18.2", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-6.18.2.tgz", + "integrity": "sha512-1S+44c09n3KVpCYjwOfnA9jKvnpPegpQWM81Nu5J6ToGx+ZiddMq6B9GRXUnFfZ7Z6fJHZzFtySasQC7KqkQoA==", + "requires": { + "@sentry/core": "6.18.2", + "@sentry/hub": "6.18.2", + "@sentry/types": "6.18.2", + "@sentry/utils": "6.18.2", + "cookie": "^0.4.1", + "https-proxy-agent": "^5.0.0", + "lru_map": "^0.3.3", + "tslib": "^1.9.3" + }, + "dependencies": { + "tslib": { + "version": "1.14.1" + } + } + }, + "@sentry/types": { + "version": "6.18.2", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.18.2.tgz", + "integrity": "sha512-WzpJf/Q5aORTzrSwer/As1NlO90dBAQpaHV2ikDDKqOyMWEgjKb5/4gh59p9gH8JMMnLetP1AvQel0fOj5UnUw==" + }, + "@sentry/utils": { + "version": "6.18.2", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.18.2.tgz", + "integrity": "sha512-EC619jesknyu4xpwud5WC/5odYLz6JUy7OSFy5405PpdGeh/m8XUvuJAx4zDx0Iz/Mlk0S1Md+ZcQwqkv39dkw==", + "requires": { + "@sentry/types": "6.18.2", + "tslib": "^1.9.3" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@sindresorhus/slugify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-1.1.2.tgz", + "integrity": "sha512-V9nR/W0Xd9TSGXpZ4iFUcFGhuOJtZX82Fzxj1YISlbSgKvIiNa7eLEZrT0vAraPOt++KHauIVNYgGRgjc13dXA==", + "requires": { + "@sindresorhus/transliterate": "^0.1.1", + "escape-string-regexp": "^4.0.0" + } + }, + "@sindresorhus/transliterate": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@sindresorhus/transliterate/-/transliterate-0.1.2.tgz", + "integrity": "sha512-5/kmIOY9FF32nicXH+5yLNTX4NJ4atl7jRgqAJuIn/iyDFXBktOKDxCvyGE/EzmF4ngSUvjXxQUQlQiZ5lfw+w==", + "requires": { + "escape-string-regexp": "^2.0.0", + "lodash.deburr": "^4.1.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" + } + } + }, + "@sinonjs/commons": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", + "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, + "@storybook/addon-actions": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-6.4.19.tgz", + "integrity": "sha512-GpSvP8xV8GfNkmtGJjfCgaOx6mbjtyTK0aT9FqX9pU0s+KVMmoCTrBh43b7dWrwxxas01yleBK9VpYggzhi/Fw==", + "dev": true, + "requires": { + "@storybook/addons": "6.4.19", + "@storybook/api": "6.4.19", + "@storybook/components": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/theming": "6.4.19", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.21", + "polished": "^4.0.5", + "prop-types": "^15.7.2", + "react-inspector": "^5.1.0", + "regenerator-runtime": "^0.13.7", + "telejson": "^5.3.2", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2", + "uuid-browser": "^3.1.0" + } + }, + "@storybook/addon-controls": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-6.4.19.tgz", + "integrity": "sha512-JHi5z9i6NsgQLfG5WOeQE1AyOrM+QJLrjT+uOYx40bq+OC1yWHH7qHiphPP8kjJJhCZlaQk1qqXYkkQXgaeHSw==", + "dev": true, + "requires": { + "@storybook/addons": "6.4.19", + "@storybook/api": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/components": "6.4.19", + "@storybook/core-common": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/node-logger": "6.4.19", + "@storybook/store": "6.4.19", + "@storybook/theming": "6.4.19", + "core-js": "^3.8.2", + "lodash": "^4.17.21", + "ts-dedent": "^2.0.0" + } + }, + "@storybook/addon-postcss": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@storybook/addon-postcss/-/addon-postcss-2.0.0.tgz", + "integrity": "sha512-Nt82A7e9zJH4+A+VzLKKswUfru+T6FJTakj4dccP0i8DSn7a0CkzRPrLuZBq8tg4voV6gD74bcDf3gViCVBGtA==", + "dev": true, + "requires": { + "@storybook/node-logger": "^6.1.14", + "css-loader": "^3.6.0", + "postcss": "^7.0.35", + "postcss-loader": "^4.2.0", + "style-loader": "^1.3.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "postcss-loader": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-4.3.0.tgz", + "integrity": "sha512-M/dSoIiNDOo8Rk0mUqoj4kpGq91gcxCfb9PoyZVdZ76/AuhxylHDYZblNE8o+EQ9AMSASeMFEKxZf5aU6wlx1Q==", + "dev": true, + "requires": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.4", + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0", + "semver": "^7.3.4" + } + }, + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "@storybook/addon-storyshots": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/addon-storyshots/-/addon-storyshots-6.4.19.tgz", + "integrity": "sha512-HhXUJylImQIDxzkd7yvQ8p/mzUuvzPc1PWB3ZiwV+t6kg9LX8qnKdkQ6t/asIn54bARhNk3EURPTI8W2fWDgMg==", + "dev": true, + "requires": { + "@jest/transform": "^26.6.2", + "@storybook/addons": "6.4.19", + "@storybook/babel-plugin-require-context-hook": "1.0.1", + "@storybook/client-api": "6.4.19", + "@storybook/core": "6.4.19", + "@storybook/core-client": "6.4.19", + "@storybook/core-common": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@types/glob": "^7.1.3", + "@types/jest": "^26.0.16", + "@types/jest-specific-snapshot": "^0.5.3", + "core-js": "^3.8.2", + "glob": "^7.1.6", + "global": "^4.4.0", + "jest-specific-snapshot": "^4.0.0", + "preact-render-to-string": "^5.1.19", + "pretty-format": "^26.6.2", + "react-test-renderer": "^16.8.0 || ^17.0.0", + "read-pkg-up": "^7.0.1", + "regenerator-runtime": "^0.13.7", + "ts-dedent": "^2.0.0" + }, + "dependencies": { + "@jest/transform": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz", + "integrity": "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^26.6.2", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-util": "^26.6.2", + "micromatch": "^4.0.2", + "pirates": "^4.0.1", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + } + }, + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/jest": { + "version": "26.0.24", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.24.tgz", + "integrity": "sha512-E/X5Vib8BWqZNRlDxj9vYXhsDwPYbPINqKF9BsnSoon4RQ0D9moEuLD8txgyypFLH7J4+Lho9Nr/c8H0Fi+17w==", + "dev": true, + "requires": { + "jest-diff": "^26.0.0", + "pretty-format": "^26.0.0" + } + }, + "@types/yargs": { + "version": "15.0.14", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", + "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "diff-sequences": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", + "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", + "dev": true + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "jest-diff": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", + "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + } + }, + "jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "dev": true + }, + "jest-haste-map": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz", + "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.1.2", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^26.0.0", + "jest-serializer": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "micromatch": "^4.0.2", + "sane": "^4.0.3", + "walker": "^1.0.7" + } + }, + "jest-regex-util": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", + "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", + "dev": true + }, + "jest-serializer": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz", + "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==", + "dev": true, + "requires": { + "@types/node": "*", + "graceful-fs": "^4.2.4" + } + }, + "jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + } + }, + "jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + } + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + } + } + } + }, + "@storybook/addons": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.4.19.tgz", + "integrity": "sha512-QNyRYhpqmHV8oJxxTBdkRlLSbDFhpBvfvMfIrIT1UXb/eemdBZTaCGVvXZ9UixoEEI7f8VwAQ44IvkU5B1509w==", + "dev": true, + "requires": { + "@storybook/api": "6.4.19", + "@storybook/channels": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/router": "6.4.19", + "@storybook/theming": "6.4.19", + "@types/webpack-env": "^1.16.0", + "core-js": "^3.8.2", + "global": "^4.4.0", + "regenerator-runtime": "^0.13.7" + } + }, + "@storybook/api": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.4.19.tgz", + "integrity": "sha512-aDvea+NpQCBjpNp9YidO1Pr7fzzCp15FSdkG+2ihGQfv5raxrN+IIJnGUXecpe71nvlYiB+29UXBVK7AL0j51Q==", + "dev": true, + "requires": { + "@storybook/channels": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/router": "6.4.19", + "@storybook/semver": "^7.3.2", + "@storybook/theming": "6.4.19", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "regenerator-runtime": "^0.13.7", + "store2": "^2.12.0", + "telejson": "^5.3.2", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/babel-plugin-require-context-hook": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@storybook/babel-plugin-require-context-hook/-/babel-plugin-require-context-hook-1.0.1.tgz", + "integrity": "sha512-WM4vjgSVi8epvGiYfru7BtC3f0tGwNs7QK3Uc4xQn4t5hHQvISnCqbNrHdDYmNW56Do+bBztE8SwP6NGUvd7ww==", + "dev": true + }, + "@storybook/builder-webpack4": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/builder-webpack4/-/builder-webpack4-6.4.19.tgz", + "integrity": "sha512-wxA6SMH11duc9D53aeVVBwrVRemFIoxHp/dOugkkg6ZZFAb4ZmWzf/ENc3vQIZdZpfNRi7IZIZEOfoHc994cmw==", + "dev": true, + "requires": { + "@babel/core": "^7.12.10", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-decorators": "^7.12.12", + "@babel/plugin-proposal-export-default-from": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.7", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.12", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/plugin-transform-template-literals": "^7.12.1", + "@babel/preset-env": "^7.12.11", + "@babel/preset-react": "^7.12.10", + "@babel/preset-typescript": "^7.12.7", + "@storybook/addons": "6.4.19", + "@storybook/api": "6.4.19", + "@storybook/channel-postmessage": "6.4.19", + "@storybook/channels": "6.4.19", + "@storybook/client-api": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/components": "6.4.19", + "@storybook/core-common": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/node-logger": "6.4.19", + "@storybook/preview-web": "6.4.19", + "@storybook/router": "6.4.19", + "@storybook/semver": "^7.3.2", + "@storybook/store": "6.4.19", + "@storybook/theming": "6.4.19", + "@storybook/ui": "6.4.19", + "@types/node": "^14.0.10", + "@types/webpack": "^4.41.26", + "autoprefixer": "^9.8.6", + "babel-loader": "^8.0.0", + "babel-plugin-macros": "^2.8.0", + "babel-plugin-polyfill-corejs3": "^0.1.0", + "case-sensitive-paths-webpack-plugin": "^2.3.0", + "core-js": "^3.8.2", + "css-loader": "^3.6.0", + "file-loader": "^6.2.0", + "find-up": "^5.0.0", + "fork-ts-checker-webpack-plugin": "^4.1.6", + "glob": "^7.1.6", + "glob-promise": "^3.4.0", + "global": "^4.4.0", + "html-webpack-plugin": "^4.0.0", + "pnp-webpack-plugin": "1.6.4", + "postcss": "^7.0.36", + "postcss-flexbugs-fixes": "^4.2.1", + "postcss-loader": "^4.2.0", + "raw-loader": "^4.0.2", + "stable": "^0.1.8", + "style-loader": "^1.3.0", + "terser-webpack-plugin": "^4.2.3", + "ts-dedent": "^2.0.0", + "url-loader": "^4.1.1", + "util-deprecate": "^1.0.2", + "webpack": "4", + "webpack-dev-middleware": "^3.7.3", + "webpack-filter-warnings-plugin": "^1.2.1", + "webpack-hot-middleware": "^2.25.1", + "webpack-virtual-modules": "^0.2.2" + }, + "dependencies": { + "@babel/helper-define-polyfill-provider": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz", + "integrity": "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@types/html-minifier-terser": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.1.2.tgz", + "integrity": "sha512-h4lTMgMJctJybDp8CQrxTUiiYmedihHWkjnF/8Pxseu2S6Nlfcy8kwboQ8yejh456rP2yWoEVm1sS/FVsfM48w==", + "dev": true + }, + "@types/node": { + "version": "14.18.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.12.tgz", + "integrity": "sha512-q4jlIR71hUpWTnGhXWcakgkZeHa3CCjcQcnuzU8M891BAWA2jHiziiWEPEkdS5pFsz7H9HJiy8BrK7tBRNrY7A==", + "dev": true + }, + "@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", + "dev": true + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "babel-plugin-macros": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", + "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "cosmiconfig": "^6.0.0", + "resolve": "^1.12.0" + }, + "dependencies": { + "cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + } + } + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz", + "integrity": "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.1.5", + "core-js-compat": "^3.8.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "clean-css": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz", + "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true + }, + "css-select": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.2.1.tgz", + "integrity": "sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^5.1.0", + "domhandler": "^4.3.0", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + } + }, + "css-what": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", + "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "fork-ts-checker-webpack-plugin": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz", + "integrity": "sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "chalk": "^2.4.1", + "micromatch": "^3.1.10", + "minimatch": "^3.0.4", + "semver": "^5.6.0", + "tapable": "^1.0.0", + "worker-rpc": "^0.1.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "html-minifier-terser": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", + "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==", + "dev": true, + "requires": { + "camel-case": "^4.1.1", + "clean-css": "^4.2.3", + "commander": "^4.1.1", + "he": "^1.2.0", + "param-case": "^3.0.3", + "relateurl": "^0.2.7", + "terser": "^4.6.3" + } + }, + "html-webpack-plugin": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.5.2.tgz", + "integrity": "sha512-q5oYdzjKUIPQVjOosjgvCHQOv9Ett9CYYHlgvJeXG0qQvdSojnBq4vAdQBwn1+yGveAwHCoe/rMR86ozX3+c2A==", + "dev": true, + "requires": { + "@types/html-minifier-terser": "^5.0.0", + "@types/tapable": "^1.0.5", + "@types/webpack": "^4.41.8", + "html-minifier-terser": "^5.0.1", + "loader-utils": "^1.2.3", + "lodash": "^4.17.20", + "pretty-error": "^2.1.1", + "tapable": "^1.1.3", + "util.promisify": "1.0.0" + }, + "dependencies": { + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "dev": true + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + } + } + }, + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "postcss-loader": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-4.3.0.tgz", + "integrity": "sha512-M/dSoIiNDOo8Rk0mUqoj4kpGq91gcxCfb9PoyZVdZ76/AuhxylHDYZblNE8o+EQ9AMSASeMFEKxZf5aU6wlx1Q==", + "dev": true, + "requires": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.4", + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0", + "semver": "^7.3.4" + } + }, + "pretty-error": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz", + "integrity": "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==", + "dev": true, + "requires": { + "lodash": "^4.17.20", + "renderkid": "^2.0.4" + } + }, + "renderkid": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.7.tgz", + "integrity": "sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==", + "dev": true, + "requires": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^3.0.1" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "ssri": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "terser": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + } + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "watchpack": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", + "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", + "dev": true, + "requires": { + "chokidar": "^3.4.1", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.1" + } + }, + "webpack": { + "version": "4.46.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", + "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.5.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.7.4", + "webpack-sources": "^1.4.1" + }, + "dependencies": { + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "terser-webpack-plugin": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", + "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", + "dev": true, + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + } + } + } + }, + "webpack-filter-warnings-plugin": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/webpack-filter-warnings-plugin/-/webpack-filter-warnings-plugin-1.2.1.tgz", + "integrity": "sha512-Ez6ytc9IseDMLPo0qCuNNYzgtUl8NovOqjIq4uAU8LTD4uoa1w1KpZyyzFtLTEMZpkkOkLfL9eN+KGYdk1Qtwg==", + "dev": true, + "requires": {} + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } + }, + "@storybook/channel-postmessage": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-6.4.19.tgz", + "integrity": "sha512-E5h/itFzQ/6M08LR4kqlgqqmeO3tmavI+nUAlZrkCrotpJFNMHE2i0PQHg0TkFJrRDpYcrwD+AjUW4IwdqrisQ==", + "dev": true, + "requires": { + "@storybook/channels": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "core-js": "^3.8.2", + "global": "^4.4.0", + "qs": "^6.10.0", + "telejson": "^5.3.2" + }, + "dependencies": { + "qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + } + } + }, + "@storybook/channel-websocket": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/channel-websocket/-/channel-websocket-6.4.19.tgz", + "integrity": "sha512-cXKwQjIXttfdUyZlcHORelUmJ5nUKswsnCA/qy7IRWpZjD8yQJcNk1dYC+tTHDVqFgdRT89pL0hRRB1rlaaR8Q==", + "dev": true, + "requires": { + "@storybook/channels": "6.4.19", + "@storybook/client-logger": "6.4.19", + "core-js": "^3.8.2", + "global": "^4.4.0", + "telejson": "^5.3.2" + } + }, + "@storybook/channels": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.4.19.tgz", + "integrity": "sha512-EwyoncFvTfmIlfsy8jTfayCxo2XchPkZk/9txipugWSmc057HdklMKPLOHWP0z5hLH0IbVIKXzdNISABm36jwQ==", + "dev": true, + "requires": { + "core-js": "^3.8.2", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/client-api": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/client-api/-/client-api-6.4.19.tgz", + "integrity": "sha512-OCrT5Um3FDvZnimQKwWtwsaI+5agPwq2i8YiqlofrI/NPMKp0I7DEkCGwE5IRD1Q8BIKqHcMo5tTmfYi0AxyOg==", + "dev": true, + "requires": { + "@storybook/addons": "6.4.19", + "@storybook/channel-postmessage": "6.4.19", + "@storybook/channels": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/store": "6.4.19", + "@types/qs": "^6.9.5", + "@types/webpack-env": "^1.16.0", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7", + "store2": "^2.12.0", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + }, + "dependencies": { + "qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + } + } + }, + "@storybook/client-logger": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.4.19.tgz", + "integrity": "sha512-zmg/2wyc9W3uZrvxaW4BfHcr40J0v7AGslqYXk9H+ERLVwIvrR4NhxQFaS6uITjBENyRDxwzfU3Va634WcmdDQ==", + "dev": true, + "requires": { + "core-js": "^3.8.2", + "global": "^4.4.0" + } + }, + "@storybook/components": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.4.19.tgz", + "integrity": "sha512-q/0V37YAJA7CNc+wSiiefeM9+3XVk8ixBNylY36QCGJgIeGQ5/79vPyUe6K4lLmsQwpmZsIq1s1Ad5+VbboeOA==", + "dev": true, + "requires": { + "@popperjs/core": "^2.6.0", + "@storybook/client-logger": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/theming": "6.4.19", + "@types/color-convert": "^2.0.0", + "@types/overlayscrollbars": "^1.12.0", + "@types/react-syntax-highlighter": "11.0.5", + "color-convert": "^2.0.1", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.21", + "markdown-to-jsx": "^7.1.3", + "memoizerific": "^1.11.3", + "overlayscrollbars": "^1.13.1", + "polished": "^4.0.5", + "prop-types": "^15.7.2", + "react-colorful": "^5.1.2", + "react-popper-tooltip": "^3.1.1", + "react-syntax-highlighter": "^13.5.3", + "react-textarea-autosize": "^8.3.0", + "regenerator-runtime": "^0.13.7", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/core": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core/-/core-6.4.19.tgz", + "integrity": "sha512-55LOQ/h/kf1jMhjN85t/pIEdIwWEG9yV7bdwv3niVvmoypCxyyjn9/QNK0RKYAeDSUtdm6FVoJ6k5CpxWz2d8w==", + "dev": true, + "requires": { + "@storybook/core-client": "6.4.19", + "@storybook/core-server": "6.4.19" + } + }, + "@storybook/core-client": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-6.4.19.tgz", + "integrity": "sha512-rQHRZjhArPleE7/S8ZUolgzwY+hC0smSKX/3PQxO2GcebDjnJj6+iSV3h+aSMHMmTdoCQvjYw9aBpT8scuRe+A==", + "dev": true, + "requires": { + "@storybook/addons": "6.4.19", + "@storybook/channel-postmessage": "6.4.19", + "@storybook/channel-websocket": "6.4.19", + "@storybook/client-api": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/preview-web": "6.4.19", + "@storybook/store": "6.4.19", + "@storybook/ui": "6.4.19", + "airbnb-js-shims": "^2.2.1", + "ansi-to-html": "^0.6.11", + "core-js": "^3.8.2", + "global": "^4.4.0", + "lodash": "^4.17.21", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7", + "ts-dedent": "^2.0.0", + "unfetch": "^4.2.0", + "util-deprecate": "^1.0.2" + }, + "dependencies": { + "qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + } + } + }, + "@storybook/core-common": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.4.19.tgz", + "integrity": "sha512-X1pJJkO48DFxl6iyEemIKqRkJ7j9/cBh3BRBUr+xZHXBvnD0GKDXIocwh0PjSxSC6XSu3UCQnqtKi3PbjRl8Dg==", + "dev": true, + "requires": { + "@babel/core": "^7.12.10", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-decorators": "^7.12.12", + "@babel/plugin-proposal-export-default-from": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.7", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.12", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/preset-env": "^7.12.11", + "@babel/preset-react": "^7.12.10", + "@babel/preset-typescript": "^7.12.7", + "@babel/register": "^7.12.1", + "@storybook/node-logger": "6.4.19", + "@storybook/semver": "^7.3.2", + "@types/node": "^14.0.10", + "@types/pretty-hrtime": "^1.0.0", + "babel-loader": "^8.0.0", + "babel-plugin-macros": "^3.0.1", + "babel-plugin-polyfill-corejs3": "^0.1.0", + "chalk": "^4.1.0", + "core-js": "^3.8.2", + "express": "^4.17.1", + "file-system-cache": "^1.0.5", + "find-up": "^5.0.0", + "fork-ts-checker-webpack-plugin": "^6.0.4", + "fs-extra": "^9.0.1", + "glob": "^7.1.6", + "handlebars": "^4.7.7", + "interpret": "^2.2.0", + "json5": "^2.1.3", + "lazy-universal-dotenv": "^3.0.1", + "picomatch": "^2.3.0", + "pkg-dir": "^5.0.0", + "pretty-hrtime": "^1.0.3", + "resolve-from": "^5.0.0", + "slash": "^3.0.0", + "telejson": "^5.3.2", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2", + "webpack": "4" + }, + "dependencies": { + "@babel/helper-define-polyfill-provider": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz", + "integrity": "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + } + }, + "@types/node": { + "version": "14.18.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.12.tgz", + "integrity": "sha512-q4jlIR71hUpWTnGhXWcakgkZeHa3CCjcQcnuzU8M891BAWA2jHiziiWEPEkdS5pFsz7H9HJiy8BrK7tBRNrY7A==", + "dev": true + }, + "@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", + "dev": true + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz", + "integrity": "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.1.5", + "core-js-compat": "^3.8.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "dev": true + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + } + } + }, + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "pkg-dir": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", + "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", + "dev": true, + "requires": { + "find-up": "^5.0.0" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "ssri": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "terser": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + } + }, + "terser-webpack-plugin": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", + "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", + "dev": true, + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + }, + "watchpack": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", + "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", + "dev": true, + "requires": { + "chokidar": "^3.4.1", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.1" + } + }, + "webpack": { + "version": "4.46.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", + "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.5.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.7.4", + "webpack-sources": "^1.4.1" + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } }, - "@semantic-release/changelog": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@semantic-release/changelog/-/changelog-6.0.1.tgz", - "integrity": "sha512-FT+tAGdWHr0RCM3EpWegWnvXJ05LQtBkQUaQRIExONoXjVjLuOILNm4DEKNaV+GAQyJjbLRVs57ti//GypH6PA==", + "@storybook/core-events": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.4.19.tgz", + "integrity": "sha512-KICzUw6XVQUJzFSCXfvhfHAuyhn4Q5J4IZEfuZkcGJS4ODkrO6tmpdYE5Cfr+so95Nfp0ErWiLUuodBsW9/rtA==", "dev": true, "requires": { - "@semantic-release/error": "^3.0.0", - "aggregate-error": "^3.0.0", - "fs-extra": "^9.0.0", - "lodash": "^4.17.4" + "core-js": "^3.8.2" + } + }, + "@storybook/core-server": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-6.4.19.tgz", + "integrity": "sha512-bKsUB9f7hl5ya2JXxpIrErmbDQjoH39FVbzYZWjMo4t/b7+Xyi6vYadwyWcqlpUQmis09ZaSMv8L/Tw0TuwLAA==", + "dev": true, + "requires": { + "@discoveryjs/json-ext": "^0.5.3", + "@storybook/builder-webpack4": "6.4.19", + "@storybook/core-client": "6.4.19", + "@storybook/core-common": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/csf-tools": "6.4.19", + "@storybook/manager-webpack4": "6.4.19", + "@storybook/node-logger": "6.4.19", + "@storybook/semver": "^7.3.2", + "@storybook/store": "6.4.19", + "@types/node": "^14.0.10", + "@types/node-fetch": "^2.5.7", + "@types/pretty-hrtime": "^1.0.0", + "@types/webpack": "^4.41.26", + "better-opn": "^2.1.1", + "boxen": "^5.1.2", + "chalk": "^4.1.0", + "cli-table3": "^0.6.1", + "commander": "^6.2.1", + "compression": "^1.7.4", + "core-js": "^3.8.2", + "cpy": "^8.1.2", + "detect-port": "^1.3.0", + "express": "^4.17.1", + "file-system-cache": "^1.0.5", + "fs-extra": "^9.0.1", + "globby": "^11.0.2", + "ip": "^1.1.5", + "lodash": "^4.17.21", + "node-fetch": "^2.6.1", + "pretty-hrtime": "^1.0.3", + "prompts": "^2.4.0", + "regenerator-runtime": "^0.13.7", + "serve-favicon": "^2.5.0", + "slash": "^3.0.0", + "telejson": "^5.3.3", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2", + "watchpack": "^2.2.0", + "webpack": "4", + "ws": "^8.2.3" + }, + "dependencies": { + "@types/node": { + "version": "14.18.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.12.tgz", + "integrity": "sha512-q4jlIR71hUpWTnGhXWcakgkZeHa3CCjcQcnuzU8M891BAWA2jHiziiWEPEkdS5pFsz7H9HJiy8BrK7tBRNrY7A==", + "dev": true + }, + "@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", + "dev": true + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "dev": true + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + } + } + }, + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "ssri": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "terser": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + } + } + }, + "terser-webpack-plugin": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", + "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", + "dev": true, + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + }, + "webpack": { + "version": "4.46.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", + "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.5.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.7.4", + "webpack-sources": "^1.4.1" + }, + "dependencies": { + "watchpack": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", + "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", + "dev": true, + "requires": { + "chokidar": "^3.4.1", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.1" + } + } + } + }, + "ws": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "dev": true, + "requires": {} + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } + }, + "@storybook/csf": { + "version": "0.0.2--canary.87bc651.0", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.2--canary.87bc651.0.tgz", + "integrity": "sha512-ajk1Uxa+rBpFQHKrCcTmJyQBXZ5slfwHVEaKlkuFaW77it8RgbPJp/ccna3sgoi8oZ7FkkOyvv1Ve4SmwFqRqw==", + "dev": true, + "requires": { + "lodash": "^4.17.15" + } + }, + "@storybook/csf-tools": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-6.4.19.tgz", + "integrity": "sha512-gf/zRhGoAVsFwSyV2tc+jeJfZQkxF6QsaZgbUSe24/IUvGFCT/PS/jZq1qy7dECAwrTOfykgu8juyBtj6WhWyw==", + "dev": true, + "requires": { + "@babel/core": "^7.12.10", + "@babel/generator": "^7.12.11", + "@babel/parser": "^7.12.11", + "@babel/plugin-transform-react-jsx": "^7.12.12", + "@babel/preset-env": "^7.12.11", + "@babel/traverse": "^7.12.11", + "@babel/types": "^7.12.11", + "@mdx-js/mdx": "^1.6.22", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "core-js": "^3.8.2", + "fs-extra": "^9.0.1", + "global": "^4.4.0", + "js-string-escape": "^1.0.1", + "lodash": "^4.17.21", + "prettier": ">=2.2.1 <=2.3.0", + "regenerator-runtime": "^0.13.7", + "ts-dedent": "^2.0.0" }, "dependencies": { "fs-extra": { @@ -22471,312 +48688,1338 @@ "universalify": "^2.0.0" } }, + "prettier": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.0.tgz", + "integrity": "sha512-kXtO4s0Lz/DW/IJ9QdWhAf7/NmPWQXkFr/r/WkR3vyI+0v8amTDxiaQSLzs8NBlytfLWX/7uQUMIW677yLKl4w==", + "dev": true + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "@storybook/manager-webpack4": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/manager-webpack4/-/manager-webpack4-6.4.19.tgz", + "integrity": "sha512-R8ugZjTYqXvlc6gDOcw909L65sIleOmIJLZR+N6/H85MivGXHu39jOwONqB7tVACufRty4FNecn8tEiQL2SAKA==", + "dev": true, + "requires": { + "@babel/core": "^7.12.10", + "@babel/plugin-transform-template-literals": "^7.12.1", + "@babel/preset-react": "^7.12.10", + "@storybook/addons": "6.4.19", + "@storybook/core-client": "6.4.19", + "@storybook/core-common": "6.4.19", + "@storybook/node-logger": "6.4.19", + "@storybook/theming": "6.4.19", + "@storybook/ui": "6.4.19", + "@types/node": "^14.0.10", + "@types/webpack": "^4.41.26", + "babel-loader": "^8.0.0", + "case-sensitive-paths-webpack-plugin": "^2.3.0", + "chalk": "^4.1.0", + "core-js": "^3.8.2", + "css-loader": "^3.6.0", + "express": "^4.17.1", + "file-loader": "^6.2.0", + "file-system-cache": "^1.0.5", + "find-up": "^5.0.0", + "fs-extra": "^9.0.1", + "html-webpack-plugin": "^4.0.0", + "node-fetch": "^2.6.1", + "pnp-webpack-plugin": "1.6.4", + "read-pkg-up": "^7.0.1", + "regenerator-runtime": "^0.13.7", + "resolve-from": "^5.0.0", + "style-loader": "^1.3.0", + "telejson": "^5.3.2", + "terser-webpack-plugin": "^4.2.3", + "ts-dedent": "^2.0.0", + "url-loader": "^4.1.1", + "util-deprecate": "^1.0.2", + "webpack": "4", + "webpack-dev-middleware": "^3.7.3", + "webpack-virtual-modules": "^0.2.2" + }, + "dependencies": { + "@types/html-minifier-terser": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.1.2.tgz", + "integrity": "sha512-h4lTMgMJctJybDp8CQrxTUiiYmedihHWkjnF/8Pxseu2S6Nlfcy8kwboQ8yejh456rP2yWoEVm1sS/FVsfM48w==", + "dev": true + }, + "@types/node": { + "version": "14.18.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.12.tgz", + "integrity": "sha512-q4jlIR71hUpWTnGhXWcakgkZeHa3CCjcQcnuzU8M891BAWA2jHiziiWEPEkdS5pFsz7H9HJiy8BrK7tBRNrY7A==", + "dev": true + }, + "@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", + "dev": true + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "clean-css": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz", + "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + } + }, + "commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true + }, + "css-select": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.2.1.tgz", + "integrity": "sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^5.1.0", + "domhandler": "^4.3.0", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + } + }, + "css-what": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", + "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", + "dev": true + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "html-minifier-terser": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", + "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==", + "dev": true, + "requires": { + "camel-case": "^4.1.1", + "clean-css": "^4.2.3", + "commander": "^4.1.1", + "he": "^1.2.0", + "param-case": "^3.0.3", + "relateurl": "^0.2.7", + "terser": "^4.6.3" + } + }, + "html-webpack-plugin": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.5.2.tgz", + "integrity": "sha512-q5oYdzjKUIPQVjOosjgvCHQOv9Ett9CYYHlgvJeXG0qQvdSojnBq4vAdQBwn1+yGveAwHCoe/rMR86ozX3+c2A==", + "dev": true, + "requires": { + "@types/html-minifier-terser": "^5.0.0", + "@types/tapable": "^1.0.5", + "@types/webpack": "^4.41.8", + "html-minifier-terser": "^5.0.1", + "loader-utils": "^1.2.3", + "lodash": "^4.17.20", + "pretty-error": "^2.1.1", + "tapable": "^1.1.3", + "util.promisify": "1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "dev": true + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + } + } + }, + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "pretty-error": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz", + "integrity": "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==", + "dev": true, + "requires": { + "lodash": "^4.17.20", + "renderkid": "^2.0.4" + } + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + } + } + }, + "renderkid": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.7.tgz", + "integrity": "sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==", + "dev": true, + "requires": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^3.0.1" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "ssri": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "terser": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + } + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, "universalify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true + }, + "watchpack": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", + "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", + "dev": true, + "requires": { + "chokidar": "^3.4.1", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.1" + } + }, + "webpack": { + "version": "4.46.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", + "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.5.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.7.4", + "webpack-sources": "^1.4.1" + }, + "dependencies": { + "terser-webpack-plugin": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", + "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", + "dev": true, + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + } + } + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true } } }, - "@semantic-release/commit-analyzer": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-9.0.2.tgz", - "integrity": "sha512-E+dr6L+xIHZkX4zNMe6Rnwg4YQrWNXK+rNsvwOPpdFppvZO1olE2fIgWhv89TkQErygevbjsZFSIxp+u6w2e5g==", + "@storybook/node-logger": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-6.4.19.tgz", + "integrity": "sha512-hO2Aar3PgPnPtNq2fVgiuGlqo3EEVR6TKVBXMq7foL3tN2k4BQFKLDHbm5qZQQntyYKurKsRUGKPJFPuI1ov/w==", "dev": true, "requires": { - "conventional-changelog-angular": "^5.0.0", - "conventional-commits-filter": "^2.0.0", - "conventional-commits-parser": "^3.2.3", - "debug": "^4.0.0", - "import-from": "^4.0.0", - "lodash": "^4.17.4", - "micromatch": "^4.0.2" + "@types/npmlog": "^4.1.2", + "chalk": "^4.1.0", + "core-js": "^3.8.2", + "npmlog": "^5.0.1", + "pretty-hrtime": "^1.0.3" }, "dependencies": { - "compare-func": { + "are-we-there-yet": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", - "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", "dev": true, "requires": { - "array-ify": "^1.0.0", - "dot-prop": "^5.1.0" + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" } }, - "conventional-changelog-angular": { - "version": "5.0.13", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz", - "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==", + "gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", "dev": true, "requires": { - "compare-func": "^2.0.0", - "q": "^1.5.1" + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" } }, - "dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "npmlog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", "dev": true, "requires": { - "is-obj": "^2.0.0" + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" } }, - "is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } } } }, - "@semantic-release/error": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-3.0.0.tgz", - "integrity": "sha512-5hiM4Un+tpl4cKw3lV4UgzJj+SmfNIDCLLw0TepzQxz9ZGV5ixnqkzIVF+3tp0ZHgcMKE+VNGHJjEeyFG2dcSw==", - "dev": true + "@storybook/preview-web": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/preview-web/-/preview-web-6.4.19.tgz", + "integrity": "sha512-jqltoBv5j7lvnxEfV9w8dLX9ASWGuvgz97yg8Yo5FqkftEwrHJenyvMGcTgDJKJPorF+wiz/9aIqnmd3LCAcZQ==", + "dev": true, + "requires": { + "@storybook/addons": "6.4.19", + "@storybook/channel-postmessage": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/store": "6.4.19", + "ansi-to-html": "^0.6.11", + "core-js": "^3.8.2", + "global": "^4.4.0", + "lodash": "^4.17.21", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "unfetch": "^4.2.0", + "util-deprecate": "^1.0.2" + }, + "dependencies": { + "qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + } + } }, - "@semantic-release/git": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@semantic-release/git/-/git-10.0.1.tgz", - "integrity": "sha512-eWrx5KguUcU2wUPaO6sfvZI0wPafUKAMNC18aXY4EnNcrZL86dEmpNVnC9uMpGZkmZJ9EfCVJBQx4pV4EMGT1w==", + "@storybook/router": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.4.19.tgz", + "integrity": "sha512-KWWwIzuyeEIWVezkCihwY2A76Il9tUNg0I410g9qT7NrEsKyqXGRYOijWub7c1GGyNjLqz0jtrrehtixMcJkuA==", "dev": true, "requires": { - "@semantic-release/error": "^3.0.0", - "aggregate-error": "^3.0.0", - "debug": "^4.0.0", - "dir-glob": "^3.0.0", - "execa": "^5.0.0", - "lodash": "^4.17.4", - "micromatch": "^4.0.0", - "p-reduce": "^2.0.0" + "@storybook/client-logger": "6.4.19", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "history": "5.0.0", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "react-router": "^6.0.0", + "react-router-dom": "^6.0.0", + "ts-dedent": "^2.0.0" + }, + "dependencies": { + "qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + } + } + }, + "@storybook/semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@storybook/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-SWeszlsiPsMI0Ps0jVNtH64cI5c0UF3f7KgjVKJoNP30crQ6wUSddY2hsdeczZXEKVJGEn50Q60flcGsQGIcrg==", + "dev": true, + "requires": { + "core-js": "^3.6.5", + "find-up": "^4.1.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + } + } + }, + "@storybook/store": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/store/-/store-6.4.19.tgz", + "integrity": "sha512-N9/ZjemRHGfT3InPIbqQqc6snkcfnf3Qh9oOr0smbfaVGJol//KOX65kzzobtzFcid0WxtTDZ3HmgFVH+GvuhQ==", + "dev": true, + "requires": { + "@storybook/addons": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "regenerator-runtime": "^0.13.7", + "slash": "^3.0.0", + "stable": "^0.1.8", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/theming": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.4.19.tgz", + "integrity": "sha512-V4pWmTvAxmbHR6B3jA4hPkaxZPyExHvCToy7b76DpUTpuHihijNDMAn85KhOQYIeL9q14zP/aiz899tOHsOidg==", + "dev": true, + "requires": { + "@emotion/core": "^10.1.1", + "@emotion/is-prop-valid": "^0.8.6", + "@emotion/styled": "^10.0.27", + "@storybook/client-logger": "6.4.19", + "core-js": "^3.8.2", + "deep-object-diff": "^1.1.0", + "emotion-theming": "^10.0.27", + "global": "^4.4.0", + "memoizerific": "^1.11.3", + "polished": "^4.0.5", + "resolve-from": "^5.0.0", + "ts-dedent": "^2.0.0" + } + }, + "@storybook/ui": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.4.19.tgz", + "integrity": "sha512-gFwdn5LA2U6oQ4bfUFLyHZnNasGQ01YVdwjbi+l6yjmnckBNtZfJoVTZ1rzGUbxSE9rK48InJRU+latTsr7xAg==", + "dev": true, + "requires": { + "@emotion/core": "^10.1.1", + "@storybook/addons": "6.4.19", + "@storybook/api": "6.4.19", + "@storybook/channels": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/components": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/router": "6.4.19", + "@storybook/semver": "^7.3.2", + "@storybook/theming": "6.4.19", + "copy-to-clipboard": "^3.3.1", + "core-js": "^3.8.2", + "core-js-pure": "^3.8.2", + "downshift": "^6.0.15", + "emotion-theming": "^10.0.27", + "fuse.js": "^3.6.1", + "global": "^4.4.0", + "lodash": "^4.17.21", + "markdown-to-jsx": "^7.1.3", + "memoizerific": "^1.11.3", + "polished": "^4.0.5", + "qs": "^6.10.0", + "react-draggable": "^4.4.3", + "react-helmet-async": "^1.0.7", + "react-sizeme": "^3.0.1", + "regenerator-runtime": "^0.13.7", + "resolve-from": "^5.0.0", + "store2": "^2.12.0" + }, + "dependencies": { + "qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + } } }, - "@semantic-release/github": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-8.0.2.tgz", - "integrity": "sha512-wIbfhOeuxlYzMTjtSAa2xgr54n7ZuPAS2gadyTWBpUt2PNAPgla7A6XxCXJnaKPgfVF0iFfSk3B+KlVKk6ByVg==", + "@storybook/vue3": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/vue3/-/vue3-6.4.19.tgz", + "integrity": "sha512-ocW2haoDOXudK3XHC7raBjq9k9gPsApiyQc4dPnjcF8sXmC3WZg6CYSPt0o00UMDmeDL0MDW336fw94jy6+LfA==", "dev": true, "requires": { - "@octokit/rest": "^18.0.0", - "@semantic-release/error": "^2.2.0", - "aggregate-error": "^3.0.0", - "bottleneck": "^2.18.1", - "debug": "^4.0.0", - "dir-glob": "^3.0.0", - "fs-extra": "^10.0.0", - "globby": "^11.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "issue-parser": "^6.0.0", - "lodash": "^4.17.4", - "mime": "^3.0.0", - "p-filter": "^2.0.0", - "p-retry": "^4.0.0", - "url-join": "^4.0.0" - }, - "dependencies": { - "@semantic-release/error": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-2.2.0.tgz", - "integrity": "sha512-9Tj/qn+y2j+sjCI3Jd+qseGtHjOAeg7dU2/lVcqIQ9TV3QDaDXDYXcoOHU+7o2Hwh8L8ymL4gfuO7KxDs3q2zg==", + "@storybook/addons": "6.4.19", + "@storybook/core": "6.4.19", + "@storybook/core-common": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/store": "6.4.19", + "@types/webpack-env": "^1.16.0", + "core-js": "^3.8.2", + "global": "^4.4.0", + "react": "16.14.0", + "react-dom": "16.14.0", + "read-pkg-up": "^7.0.1", + "regenerator-runtime": "^0.13.7", + "ts-dedent": "^2.0.0", + "ts-loader": "^8.0.14", + "vue-docgen-api": "^4.38.0", + "vue-docgen-loader": "^1.5.0", + "vue-loader": "^16.0.0", + "webpack": "4" + }, + "dependencies": { + "@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", "dev": true }, - "@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", "dev": true }, - "fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", "dev": true, "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" } }, - "http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "@webassemblyjs/ieee754": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", "dev": true, "requires": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" + "@xtuc/ieee754": "^1.2.0" } }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "@webassemblyjs/leb128": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", "dev": true, "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" + "@xtuc/long": "4.2.2" } }, - "mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "@webassemblyjs/utf8": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", "dev": true }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true - } - } - }, - "@semantic-release/npm": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-9.0.0.tgz", - "integrity": "sha512-hj2jqayS2SPUmFtCMCOQMX975uMDfRoymj1HvMSwYdaoI6hVZvhrTFPBgJeM85O0C+G3IFviAUar5gel/1VGDQ==", - "dev": true, - "requires": { - "@semantic-release/error": "^3.0.0", - "aggregate-error": "^3.0.0", - "execa": "^5.0.0", - "fs-extra": "^10.0.0", - "lodash": "^4.17.15", - "nerf-dart": "^1.0.0", - "normalize-url": "^6.0.0", - "npm": "^8.3.0", - "rc": "^1.2.8", - "read-pkg": "^5.0.0", - "registry-auth-token": "^4.0.0", - "semver": "^7.1.2", - "tempy": "^1.0.0" - }, - "dependencies": { - "fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "@webassemblyjs/wasm-edit": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", "dev": true, "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" } }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "@webassemblyjs/wasm-gen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", "dev": true, "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" } }, - "normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "dev": true - }, - "read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "@webassemblyjs/wasm-opt": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", "dev": true, "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" } }, - "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true + "@webassemblyjs/wasm-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true - } - } - }, - "@semantic-release/release-notes-generator": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-10.0.3.tgz", - "integrity": "sha512-k4x4VhIKneOWoBGHkx0qZogNjCldLPRiAjnIpMnlUh6PtaWXp/T+C9U7/TaNDDtgDa5HMbHl4WlREdxHio6/3w==", - "dev": true, - "requires": { - "conventional-changelog-angular": "^5.0.0", - "conventional-changelog-writer": "^5.0.0", - "conventional-commits-filter": "^2.0.0", - "conventional-commits-parser": "^3.2.3", - "debug": "^4.0.0", - "get-stream": "^6.0.0", - "import-from": "^4.0.0", - "into-stream": "^6.0.0", - "lodash": "^4.17.4", - "read-pkg-up": "^7.0.0" - }, - "dependencies": { - "compare-func": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", - "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", + "@webassemblyjs/wast-printer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", "dev": true, "requires": { - "array-ify": "^1.0.0", - "dot-prop": "^5.1.0" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" } }, - "conventional-changelog-angular": { - "version": "5.0.13", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz", - "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==", + "acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, "requires": { - "compare-func": "^2.0.0", - "q": "^1.5.1" + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" } }, - "conventional-changelog-writer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz", - "integrity": "sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==", + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", "dev": true, "requires": { - "conventional-commits-filter": "^2.0.7", - "dateformat": "^3.0.0", - "handlebars": "^4.7.7", - "json-stringify-safe": "^5.0.1", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "semver": "^6.0.0", - "split": "^1.0.0", - "through2": "^4.0.0" + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" } }, - "dateformat": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", - "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", "dev": true }, - "dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", "dev": true, "requires": { - "is-obj": "^2.0.0" + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" } }, "find-up": { @@ -22789,29 +50032,81 @@ "path-exists": "^4.0.0" } }, - "hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "hash-sum": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz", + "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==", + "dev": true + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, "requires": { - "lru-cache": "^6.0.0" + "is-plain-object": "^2.0.4" } }, - "into-stream": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-6.0.0.tgz", - "integrity": "sha512-XHbaOAvP+uFKUFsOgoNPRjLkwB+I22JFPFe5OjTkQ0nwgj6+pSjb4NmB6VMxaPshLiOf+zcpOCBQuLwC1KHhZA==", + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "from2": "^2.3.0", - "p-is-promise": "^3.0.0" + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, - "is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", "dev": true }, "locate-path": { @@ -22823,62 +50118,73 @@ "p-locate": "^4.1.0" } }, - "meow": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", - "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, "requires": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - }, - "dependencies": { - "type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", - "dev": true - } + "yallist": "^3.0.2" } }, - "normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", "dev": true, "requires": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" }, "dependencies": { - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "dev": true, "requires": { - "lru-cache": "^6.0.0" + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" } } } }, - "p-is-promise": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-3.0.0.tgz", - "integrity": "sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==", + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", "dev": true }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, "p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -22903,6 +50209,29 @@ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true }, + "react": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", + "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + } + }, + "react-dom": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", + "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.1" + } + }, "read-pkg": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", @@ -22915,30 +50244,6 @@ "type-fest": "^0.6.0" }, "dependencies": { - "hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, "type-fest": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", @@ -22958,177 +50263,173 @@ "type-fest": "^0.8.1" } }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "glob": "^7.1.3" } }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true + "scheduler": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } }, - "through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", "dev": true, "requires": { - "readable-stream": "3" + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" } }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true - } - } - }, - "@sentry/core": { - "version": "6.18.2", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-6.18.2.tgz", - "integrity": "sha512-r5ad/gq5S/JHc9sd5CUhZQT9ojQ+f+thk/AoGeGawX/8HURZYAgIqD565d6FK0VsZEDkdRMl58z1Qon20h3y1g==", - "requires": { - "@sentry/hub": "6.18.2", - "@sentry/minimal": "6.18.2", - "@sentry/types": "6.18.2", - "@sentry/utils": "6.18.2", - "tslib": "^1.9.3" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } - } - }, - "@sentry/hub": { - "version": "6.18.2", - "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-6.18.2.tgz", - "integrity": "sha512-d0AugekMkbnN12b4EXMjseJxtLPc9S20DGobCPUb4oAQT6S2oDQEj1jwP6PQ5vtgyy+GMYWxBMgqAQ4pjVYISQ==", - "requires": { - "@sentry/types": "6.18.2", - "@sentry/utils": "6.18.2", - "tslib": "^1.9.3" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } - } - }, - "@sentry/minimal": { - "version": "6.18.2", - "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-6.18.2.tgz", - "integrity": "sha512-n7KYuo34W2LxE+3dnZ47of7XHuORINCnXq66XH72eoj67tf0XeWbIhEJrYGmoLRyRfoCYYrBLWiDl/uTjLzrzQ==", - "requires": { - "@sentry/hub": "6.18.2", - "@sentry/types": "6.18.2", - "tslib": "^1.9.3" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } - } - }, - "@sentry/node": { - "version": "6.18.2", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-6.18.2.tgz", - "integrity": "sha512-1S+44c09n3KVpCYjwOfnA9jKvnpPegpQWM81Nu5J6ToGx+ZiddMq6B9GRXUnFfZ7Z6fJHZzFtySasQC7KqkQoA==", - "requires": { - "@sentry/core": "6.18.2", - "@sentry/hub": "6.18.2", - "@sentry/types": "6.18.2", - "@sentry/utils": "6.18.2", - "cookie": "^0.4.1", - "https-proxy-agent": "^5.0.0", - "lru_map": "^0.3.3", - "tslib": "^1.9.3" - }, - "dependencies": { - "tslib": { - "version": "1.14.1" - } - } - }, - "@sentry/types": { - "version": "6.18.2", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.18.2.tgz", - "integrity": "sha512-WzpJf/Q5aORTzrSwer/As1NlO90dBAQpaHV2ikDDKqOyMWEgjKb5/4gh59p9gH8JMMnLetP1AvQel0fOj5UnUw==" - }, - "@sentry/utils": { - "version": "6.18.2", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.18.2.tgz", - "integrity": "sha512-EC619jesknyu4xpwud5WC/5odYLz6JUy7OSFy5405PpdGeh/m8XUvuJAx4zDx0Iz/Mlk0S1Md+ZcQwqkv39dkw==", - "requires": { - "@sentry/types": "6.18.2", - "tslib": "^1.9.3" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } - } - }, - "@sindresorhus/slugify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-1.1.2.tgz", - "integrity": "sha512-V9nR/W0Xd9TSGXpZ4iFUcFGhuOJtZX82Fzxj1YISlbSgKvIiNa7eLEZrT0vAraPOt++KHauIVNYgGRgjc13dXA==", - "requires": { - "@sindresorhus/transliterate": "^0.1.1", - "escape-string-regexp": "^4.0.0" - } - }, - "@sindresorhus/transliterate": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@sindresorhus/transliterate/-/transliterate-0.1.2.tgz", - "integrity": "sha512-5/kmIOY9FF32nicXH+5yLNTX4NJ4atl7jRgqAJuIn/iyDFXBktOKDxCvyGE/EzmF4ngSUvjXxQUQlQiZ5lfw+w==", - "requires": { - "escape-string-regexp": "^2.0.0", - "lodash.deburr": "^4.1.0" - }, - "dependencies": { - "escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" + "serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "ssri": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "terser": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + } + }, + "terser-webpack-plugin": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", + "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", + "dev": true, + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "vue-loader": { + "version": "16.8.3", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.8.3.tgz", + "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "hash-sum": "^2.0.0", + "loader-utils": "^2.0.0" + } + }, + "watchpack": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", + "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", + "dev": true, + "requires": { + "chokidar": "^3.4.1", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.1" + } + }, + "webpack": { + "version": "4.46.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", + "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.5.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.7.4", + "webpack-sources": "^1.4.1" + }, + "dependencies": { + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true } } }, - "@sinonjs/commons": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", - "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", - "dev": true, - "requires": { - "type-detect": "4.0.8" - } - }, - "@sinonjs/fake-timers": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", - "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", - "dev": true, - "requires": { - "@sinonjs/commons": "^1.7.0" - } - }, "@szmarczak/http-timer": { "version": "1.1.2", "dev": true, @@ -23139,6 +50440,12 @@ "@tootallnate/once": { "version": "1.1.2" }, + "@transloadit/prettier-bytes": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/@transloadit/prettier-bytes/-/prettier-bytes-0.0.7.tgz", + "integrity": "sha512-VeJbUb0wEKbcwaSlj5n+LscBl9IPgLPkHVGBkh00cztv6X4L/TJXK58LzFuBKX7/GAfiGhIwH67YTLTlzvIzBA==", + "dev": true + }, "@tsconfig/node10": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", @@ -23273,6 +50580,21 @@ "@types/node": "*" } }, + "@types/color-convert": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/color-convert/-/color-convert-2.0.0.tgz", + "integrity": "sha512-m7GG7IKKGuJUXvkZ1qqG3ChccdIM/qBBo913z+Xft0nKCX4hAU/IxKwZBU4cpRZ7GS5kV4vOblUkILtSShCPXQ==", + "dev": true, + "requires": { + "@types/color-name": "*" + } + }, + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", + "dev": true + }, "@types/compression": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/@types/compression/-/compression-1.7.2.tgz", @@ -23334,10 +50656,38 @@ "resolved": "https://registry.npmjs.org/@types/dateformat/-/dateformat-5.0.0.tgz", "integrity": "sha512-SZg4JdHIWHQGEokbYGZSDvo5wA4TLYPXaqhigs/wH+REDOejcJzgH+qyY+HtEUtWOZxEUkbhbdYPqQDiEgrXeA==" }, + "@types/eslint": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", + "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", + "dev": true, + "peer": true, + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "dev": true, + "peer": true, + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, "@types/eslint-visitor-keys": { "version": "1.0.0", "dev": true }, + "@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, "@types/express": { "version": "4.17.13", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", @@ -23387,6 +50737,16 @@ "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.8.tgz", "integrity": "sha512-1rkryxURpr6aWP7R786/UQOkJ3PcpQiWkAXBmdWc7ryFWqN6a4xfK7BtjXvFBKO9LjQ+MWQSWxYeZX1OApnArA==" }, + "@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, "@types/graceful-fs": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", @@ -23421,6 +50781,21 @@ "graphql": "0.13.1 - 16" } }, + "@types/hast": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.4.tgz", + "integrity": "sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "dev": true + }, "@types/http-assert": { "version": "1.5.3", "resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.3.tgz", @@ -23431,6 +50806,20 @@ "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-1.8.1.tgz", "integrity": "sha512-e+2rjEwK6KDaNOm5Aa9wNGgyS9oSZU/4pfSMMPYNOfjvFI0WVXm29+ITRFr6aKDvvKo7uU1jV68MW4ScsfDi7Q==" }, + "@types/http-proxy": { + "version": "1.17.8", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.8.tgz", + "integrity": "sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA==", + "requires": { + "@types/node": "*" + } + }, + "@types/is-function": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/is-function/-/is-function-1.0.1.tgz", + "integrity": "sha512-A79HEEiwXTFtfY+Bcbo58M2GRYzCr9itHWzbzHVFNEYCcoU/MMGwYYf721gBrnhpj1s6RGVVha/IgNFnR0Iw/Q==", + "dev": true + }, "@types/istanbul-lib-coverage": { "version": "2.0.3", "dev": true @@ -23458,6 +50847,15 @@ "pretty-format": "^27.0.0" } }, + "@types/jest-specific-snapshot": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@types/jest-specific-snapshot/-/jest-specific-snapshot-0.5.5.tgz", + "integrity": "sha512-AaPPw2tE8ewfjD6qGLkEd4DOfM6pPOK7ob/RSOe1Z8Oo70r9Jgo0SlWyfxslPAOvLfQukQtiVPm6DcnjSoZU5A==", + "dev": true, + "requires": { + "@types/jest": "*" + } + }, "@types/json-schema": { "version": "7.0.9", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", @@ -23506,9 +50904,42 @@ "@types/koa": "*" } }, + "@types/leaflet": { + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/@types/leaflet/-/leaflet-1.7.9.tgz", + "integrity": "sha512-H8vPgD49HKzqM41ArHGZM70g/tfhp8W+JcPxfnF+5H/Xvp+xiP+KQOUNWU8U89fqS1Jj3cpRY/+nbnaHFzwnFA==", + "dev": true, + "requires": { + "@types/geojson": "*" + } + }, + "@types/leaflet.markercluster": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@types/leaflet.markercluster/-/leaflet.markercluster-1.4.6.tgz", + "integrity": "sha512-MD+bUDzxHznY0zOlSBUAMNQUGB2+xpJPKrR2MNEoBAAKa3QTKJJySBtCqWyGLvYNNO+Cdyc2c64aF2IFwe4fcQ==", + "dev": true, + "requires": { + "@types/leaflet": "*" + } + }, + "@types/mdast": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz", + "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, "@types/mime": { "version": "1.3.2" }, + "@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true + }, "@types/minimist": { "version": "1.2.1", "dev": true @@ -23536,10 +50967,28 @@ "version": "2.4.0", "dev": true }, + "@types/npmlog": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@types/npmlog/-/npmlog-4.1.4.tgz", + "integrity": "sha512-WKG4gTr8przEZBiJ5r3s8ZIAoMXNbOgQ+j/d5O4X3x6kZJRLNvyUJuUK/KoG3+8BaOHPhp2m7WC6JKKeovDSzQ==", + "dev": true + }, + "@types/overlayscrollbars": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@types/overlayscrollbars/-/overlayscrollbars-1.12.1.tgz", + "integrity": "sha512-V25YHbSoKQN35UasHf0EKD9U2vcmexRSp78qa8UglxFH8H3D+adEa9zGZwrqpH4TdvqeMrgMqVqsLB4woAryrQ==", + "dev": true + }, "@types/parse-json": { "version": "4.0.0", "dev": true }, + "@types/parse5": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-5.0.3.tgz", + "integrity": "sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==", + "dev": true + }, "@types/pg": { "version": "8.6.5", "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.6.5.tgz", @@ -23556,23 +51005,69 @@ "integrity": "sha512-ReVR2rLTV1kvtlWFyuot+d1pkpG2Fw/XKE3PDAdj57rbM97ttSp9JZ2UsP+2EHTylra9cUf6JA7tGwW1INzUrA==", "dev": true }, + "@types/pretty-hrtime": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/pretty-hrtime/-/pretty-hrtime-1.0.1.tgz", + "integrity": "sha512-VjID5MJb1eGKthz2qUerWT8+R4b9N+CHvGCzg9fn4kWZgaF9AhdYikQio3R7wV8YY1NsQKPaCwKz1Yff+aHNUQ==", + "dev": true + }, "@types/proj4": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/@types/proj4/-/proj4-2.5.2.tgz", "integrity": "sha512-/Nmfn9p08yaYw6xo5f2b0L+2oHk2kZeOkp5v+4VCeNfq+ETlLQbmHmC97/pjDIEZy8jxwz7pdPpwNzDHM5cuJw==" }, + "@types/prop-types": { + "version": "15.7.4", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz", + "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==", + "dev": true + }, "@types/qs": { "version": "6.9.6" }, "@types/range-parser": { "version": "1.2.3" }, + "@types/react": { + "version": "17.0.42", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.42.tgz", + "integrity": "sha512-nuab3x3CpJ7VFeNA+3HTUuEkvClYHXqWtWd7Ud6AZYW7Z3NH9WKtgU+tFB0ZLcHq+niB/HnzLcaZPqMJ95+k5Q==", + "dev": true, + "requires": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + }, + "dependencies": { + "csstype": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.11.tgz", + "integrity": "sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==", + "dev": true + } + } + }, + "@types/react-syntax-highlighter": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/@types/react-syntax-highlighter/-/react-syntax-highlighter-11.0.5.tgz", + "integrity": "sha512-VIOi9i2Oj5XsmWWoB72p3KlZoEbdRAcechJa8Ztebw7bDl2YmR+odxIqhtJGp1q2EozHs02US+gzxJ9nuf56qg==", + "dev": true, + "requires": { + "@types/react": "*" + } + }, "@types/retry": { "version": "0.12.1", "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==", "dev": true }, + "@types/scheduler": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", + "dev": true + }, "@types/serve-static": { "version": "1.13.9", "requires": { @@ -23589,155 +51084,793 @@ "@types/node": "*" } }, - "@types/sql-formatter": { - "version": "2.3.0" - }, - "@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", - "dev": true - }, - "@types/superagent": { - "version": "4.1.11", + "@types/source-list-map": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz", + "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==", + "dev": true + }, + "@types/sql-formatter": { + "version": "2.3.0" + }, + "@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true + }, + "@types/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-FKjsOVbC6B7bdSB5CuzyHCkK69I=", + "dev": true + }, + "@types/strip-json-comments": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz", + "integrity": "sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==", + "dev": true + }, + "@types/superagent": { + "version": "4.1.11", + "dev": true, + "requires": { + "@types/cookiejar": "*", + "@types/node": "*" + } + }, + "@types/supertest": { + "version": "2.0.11", + "dev": true, + "requires": { + "@types/superagent": "*" + } + }, + "@types/tapable": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.8.tgz", + "integrity": "sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ==", + "dev": true + }, + "@types/uglify-js": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.13.1.tgz", + "integrity": "sha512-O3MmRAk6ZuAKa9CHgg0Pr0+lUOqoMLpc9AS4R8ano2auvsg7IE8syF3Xh/NPr26TWklxYcqoEEFdzLLs1fV9PQ==", + "dev": true, + "requires": { + "source-map": "^0.6.1" + } + }, + "@types/unist": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", + "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==", + "dev": true + }, + "@types/webpack": { + "version": "4.41.32", + "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.32.tgz", + "integrity": "sha512-cb+0ioil/7oz5//7tZUSwbrSAN/NWHrQylz5cW8G0dWTcF/g+/dSdMlKVZspBYuMAN1+WnwHrkxiRrLcwd0Heg==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/tapable": "^1", + "@types/uglify-js": "*", + "@types/webpack-sources": "*", + "anymatch": "^3.0.0", + "source-map": "^0.6.0" + } + }, + "@types/webpack-env": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.16.3.tgz", + "integrity": "sha512-9gtOPPkfyNoEqCQgx4qJKkuNm/x0R2hKR7fdl7zvTJyHnIisuE/LfvXOsYWL0o3qq6uiBnKZNNNzi3l0y/X+xw==", + "dev": true + }, + "@types/webpack-sources": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-3.2.0.tgz", + "integrity": "sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/source-list-map": "*", + "source-map": "^0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } + } + }, + "@types/yargs": { + "version": "16.0.2", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "20.2.0", + "dev": true + }, + "@typescript-eslint/eslint-plugin": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.15.0.tgz", + "integrity": "sha512-u6Db5JfF0Esn3tiAKELvoU5TpXVSkOpZ78cEGn/wXtT2RVqs2vkt4ge6N8cRCyw7YVKhmmLDbwI2pg92mlv7cA==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.15.0", + "@typescript-eslint/type-utils": "5.15.0", + "@typescript-eslint/utils": "5.15.0", + "debug": "^4.3.2", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.1.8", + "regexpp": "^3.2.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/parser": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.15.0.tgz", + "integrity": "sha512-NGAYP/+RDM2sVfmKiKOCgJYPstAO40vPAgACoWPO/+yoYKSgAXIFaBKsV8P0Cc7fwKgvj27SjRNX4L7f4/jCKQ==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.15.0", + "@typescript-eslint/types": "5.15.0", + "@typescript-eslint/typescript-estree": "5.15.0", + "debug": "^4.3.2" + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.15.0.tgz", + "integrity": "sha512-EFiZcSKrHh4kWk0pZaa+YNJosvKE50EnmN4IfgjkA3bTHElPtYcd2U37QQkNTqwMCS7LXeDeZzEqnsOH8chjSg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.15.0", + "@typescript-eslint/visitor-keys": "5.15.0" + } + }, + "@typescript-eslint/type-utils": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.15.0.tgz", + "integrity": "sha512-KGeDoEQ7gHieLydujGEFLyLofipe9PIzfvA/41urz4hv+xVxPEbmMQonKSynZ0Ks2xDhJQ4VYjB3DnRiywvKDA==", + "dev": true, + "requires": { + "@typescript-eslint/utils": "5.15.0", + "debug": "^4.3.2", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/types": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.15.0.tgz", + "integrity": "sha512-yEiTN4MDy23vvsIksrShjNwQl2vl6kJeG9YkVJXjXZnkJElzVK8nfPsWKYxcsGWG8GhurYXP4/KGj3aZAxbeOA==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.15.0.tgz", + "integrity": "sha512-Hb0e3dGc35b75xLzixM3cSbG1sSbrTBQDfIScqdyvrfJZVEi4XWAT+UL/HMxEdrJNB8Yk28SKxPLtAhfCbBInA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.15.0", + "@typescript-eslint/visitor-keys": "5.15.0", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/utils": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.15.0.tgz", + "integrity": "sha512-081rWu2IPKOgTOhHUk/QfxuFog8m4wxW43sXNOMSCdh578tGJ1PAaWPsj42LOa7pguh173tNlMigsbrHvh/mtA==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.15.0", + "@typescript-eslint/types": "5.15.0", + "@typescript-eslint/typescript-estree": "5.15.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "dependencies": { + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + } + } + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.15.0.tgz", + "integrity": "sha512-+vX5FKtgvyHbmIJdxMJ2jKm9z2BIlXJiuewI8dsDYMp5LzPUcuTT78Ya5iwvQg3VqSVdmxyM8Anj1Jeq7733ZQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.15.0", + "eslint-visitor-keys": "^3.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true + } + } + }, + "@uppy/companion-client": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@uppy/companion-client/-/companion-client-2.0.5.tgz", + "integrity": "sha512-yAeYbpQ+yHcklKVbkRy83V1Zv/0kvaTDTHaBvaaPmLtcKgeZE3pUjEI/7v2sTxvCVSy4cRjd9TRSXSSl5UCnuQ==", + "dev": true, + "requires": { + "@uppy/utils": "^4.0.5", + "namespace-emitter": "^2.0.1" + } + }, + "@uppy/core": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@uppy/core/-/core-2.1.6.tgz", + "integrity": "sha512-WTGthAAHMfB6uAtISbu+7jYh4opnBWHSf7A0jsPdREwXc4hrhC/z9lbejZfSLkVDXdbNwpWWH38EgOGCNQb5MQ==", + "dev": true, + "requires": { + "@transloadit/prettier-bytes": "0.0.7", + "@uppy/store-default": "^2.0.3", + "@uppy/utils": "^4.0.5", + "lodash.throttle": "^4.1.1", + "mime-match": "^1.0.2", + "namespace-emitter": "^2.0.1", + "nanoid": "^3.1.25", + "preact": "^10.5.13" + } + }, + "@uppy/store-default": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@uppy/store-default/-/store-default-2.0.3.tgz", + "integrity": "sha512-2BGlN1sW0cFv4rOqTK8dfSg579S984N1HxCJxLFqeW9nWD6zd/O8Omyd85tbxGQ+FLZLTmLOm/feD0YeCBMahg==", + "dev": true + }, + "@uppy/tus": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@uppy/tus/-/tus-2.2.0.tgz", + "integrity": "sha512-AsGEVUoPM9tE0rey+c6Sjn73iDoZkuIt6SCtobkm8LLFW/V3e86UwEPSvAX0tR4LK3P28BBt3odN57dluRD1hA==", + "dev": true, + "requires": { + "@uppy/companion-client": "^2.0.4", + "@uppy/utils": "^4.0.5", + "tus-js-client": "^2.1.1" + } + }, + "@uppy/utils": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@uppy/utils/-/utils-4.0.5.tgz", + "integrity": "sha512-uRv921A69UMjuWCLSC5tKXuIVoMOROVpFstIAQv5CoiCOCXyofcWpvAqELT7qlQJ5VRWha3uF5d/Z94SNnwxew==", + "dev": true, + "requires": { + "lodash.throttle": "^4.1.1" + } + }, + "@vitejs/plugin-vue": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-2.2.4.tgz", + "integrity": "sha512-ev9AOlp0ljCaDkFZF3JwC/pD2N4Hh+r5srl5JHM6BKg5+99jiiK0rE/XaRs3pVm1wzyKkjUy/StBSoXX5fFzcw==", + "dev": true, + "requires": {} + }, + "@vue/compiler-core": { + "version": "3.2.31", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.31.tgz", + "integrity": "sha512-aKno00qoA4o+V/kR6i/pE+aP+esng5siNAVQ422TkBNM6qA4veXiZbSe8OTXHXquEi/f6Akc+nLfB4JGfe4/WQ==", + "dev": true, + "requires": { + "@babel/parser": "^7.16.4", + "@vue/shared": "3.2.31", + "estree-walker": "^2.0.2", + "source-map": "^0.6.1" + } + }, + "@vue/compiler-dom": { + "version": "3.2.31", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.31.tgz", + "integrity": "sha512-60zIlFfzIDf3u91cqfqy9KhCKIJgPeqxgveH2L+87RcGU/alT6BRrk5JtUso0OibH3O7NXuNOQ0cDc9beT0wrg==", + "dev": true, + "requires": { + "@vue/compiler-core": "3.2.31", + "@vue/shared": "3.2.31" + } + }, + "@vue/compiler-sfc": { + "version": "3.2.31", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.31.tgz", + "integrity": "sha512-748adc9msSPGzXgibHiO6T7RWgfnDcVQD+VVwYgSsyyY8Ans64tALHZANrKtOzvkwznV/F4H7OAod/jIlp/dkQ==", + "dev": true, + "requires": { + "@babel/parser": "^7.16.4", + "@vue/compiler-core": "3.2.31", + "@vue/compiler-dom": "3.2.31", + "@vue/compiler-ssr": "3.2.31", + "@vue/reactivity-transform": "3.2.31", + "@vue/shared": "3.2.31", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7", + "postcss": "^8.1.10", + "source-map": "^0.6.1" + } + }, + "@vue/compiler-ssr": { + "version": "3.2.31", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.31.tgz", + "integrity": "sha512-mjN0rqig+A8TVDnsGPYJM5dpbjlXeHUm2oZHZwGyMYiGT/F4fhJf/cXy8QpjnLQK4Y9Et4GWzHn9PS8AHUnSkw==", + "dev": true, + "requires": { + "@vue/compiler-dom": "3.2.31", + "@vue/shared": "3.2.31" + } + }, + "@vue/devtools-api": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.1.3.tgz", + "integrity": "sha512-79InfO2xHv+WHIrH1bHXQUiQD/wMls9qBk6WVwGCbdwP7/3zINtvqPNMtmSHXsIKjvUAHc8L0ouOj6ZQQRmcXg==", + "dev": true + }, + "@vue/eslint-config-prettier": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@vue/eslint-config-prettier/-/eslint-config-prettier-7.0.0.tgz", + "integrity": "sha512-/CTc6ML3Wta1tCe1gUeO0EYnVXfo3nJXsIhZ8WJr3sov+cGASr6yuiibJTL6lmIBm7GobopToOuB3B6AWyV0Iw==", + "dev": true, + "requires": { + "eslint-config-prettier": "^8.3.0", + "eslint-plugin-prettier": "^4.0.0" + } + }, + "@vue/reactivity": { + "version": "3.2.31", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.31.tgz", + "integrity": "sha512-HVr0l211gbhpEKYr2hYe7hRsV91uIVGFYNHj73njbARVGHQvIojkImKMaZNDdoDZOIkMsBc9a1sMqR+WZwfSCw==", + "dev": true, + "requires": { + "@vue/shared": "3.2.31" + } + }, + "@vue/reactivity-transform": { + "version": "3.2.31", + "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.31.tgz", + "integrity": "sha512-uS4l4z/W7wXdI+Va5pgVxBJ345wyGFKvpPYtdSgvfJfX/x2Ymm6ophQlXXB6acqGHtXuBqNyyO3zVp9b1r0MOA==", + "dev": true, + "requires": { + "@babel/parser": "^7.16.4", + "@vue/compiler-core": "3.2.31", + "@vue/shared": "3.2.31", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7" + } + }, + "@vue/runtime-core": { + "version": "3.2.31", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.31.tgz", + "integrity": "sha512-Kcog5XmSY7VHFEMuk4+Gap8gUssYMZ2+w+cmGI6OpZWYOEIcbE0TPzzPHi+8XTzAgx1w/ZxDFcXhZeXN5eKWsA==", + "dev": true, + "requires": { + "@vue/reactivity": "3.2.31", + "@vue/shared": "3.2.31" + } + }, + "@vue/runtime-dom": { + "version": "3.2.31", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.31.tgz", + "integrity": "sha512-N+o0sICVLScUjfLG7u9u5XCjvmsexAiPt17GNnaWHJUfsKed5e85/A3SWgKxzlxx2SW/Hw7RQxzxbXez9PtY3g==", + "dev": true, + "requires": { + "@vue/runtime-core": "3.2.31", + "@vue/shared": "3.2.31", + "csstype": "^2.6.8" + } + }, + "@vue/server-renderer": { + "version": "3.2.31", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.31.tgz", + "integrity": "sha512-8CN3Zj2HyR2LQQBHZ61HexF5NReqngLT3oahyiVRfSSvak+oAvVmu8iNLSu6XR77Ili2AOpnAt1y8ywjjqtmkg==", + "dev": true, + "requires": { + "@vue/compiler-ssr": "3.2.31", + "@vue/shared": "3.2.31" + } + }, + "@vue/shared": { + "version": "3.2.31", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.31.tgz", + "integrity": "sha512-ymN2pj6zEjiKJZbrf98UM2pfDd6F2H7ksKw7NDt/ZZ1fh5Ei39X5tABugtT03ZRlWd9imccoK0hE8hpjpU7irQ==", + "dev": true + }, + "@vue/test-utils": { + "version": "2.0.0-rc.17", + "resolved": "https://registry.npmjs.org/@vue/test-utils/-/test-utils-2.0.0-rc.17.tgz", + "integrity": "sha512-7LHZKsFRV/HqDoMVY+cJamFzgHgsrmQFalROHC5FMWrzPzd+utG5e11krj1tVsnxYufGA2ABShX4nlcHXED+zQ==", + "dev": true, + "requires": {} + }, + "@vue/vue3-jest": { + "version": "27.0.0-alpha.4", + "resolved": "https://registry.npmjs.org/@vue/vue3-jest/-/vue3-jest-27.0.0-alpha.4.tgz", + "integrity": "sha512-RgEwjNvwdWmRngHqgt957fLT6riOkv/Kyl0ra8jo0Z8Dgosmu17dNqgBzLn9fTgNlTbHv4TQQdLRjczr+z2mlA==", + "dev": true, + "requires": { + "@babel/plugin-transform-modules-commonjs": "^7.2.0", + "chalk": "^2.1.0", + "convert-source-map": "^1.6.0", + "extract-from-css": "^0.4.4", + "source-map": "0.5.6", + "tsconfig": "^7.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "source-map": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dev": true, + "peer": true, + "requires": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "dev": true, + "peer": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "dev": true, + "peer": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "dev": true, + "peer": true + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", + "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.9.0" + }, + "dependencies": { + "@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "dev": true + }, + "@webassemblyjs/wast-printer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" + } + } + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", + "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", + "dev": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", + "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0" + }, + "dependencies": { + "@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "dev": true + } + } + }, + "@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", "dev": true, + "peer": true, "requires": { - "@types/cookiejar": "*", - "@types/node": "*" + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" } }, - "@types/supertest": { - "version": "2.0.11", + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", "dev": true, + "peer": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dev": true, + "peer": true, "requires": { - "@types/superagent": "*" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" } }, - "@types/yargs": { - "version": "16.0.2", + "@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", "dev": true, + "peer": true, "requires": { - "@types/yargs-parser": "*" + "@xtuc/ieee754": "^1.2.0" } }, - "@types/yargs-parser": { - "version": "20.2.0", - "dev": true - }, - "@typescript-eslint/eslint-plugin": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.15.0.tgz", - "integrity": "sha512-u6Db5JfF0Esn3tiAKELvoU5TpXVSkOpZ78cEGn/wXtT2RVqs2vkt4ge6N8cRCyw7YVKhmmLDbwI2pg92mlv7cA==", + "@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", "dev": true, + "peer": true, "requires": { - "@typescript-eslint/scope-manager": "5.15.0", - "@typescript-eslint/type-utils": "5.15.0", - "@typescript-eslint/utils": "5.15.0", - "debug": "^4.3.2", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", - "regexpp": "^3.2.0", - "semver": "^7.3.5", - "tsutils": "^3.21.0" + "@xtuc/long": "4.2.2" } }, - "@typescript-eslint/parser": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.15.0.tgz", - "integrity": "sha512-NGAYP/+RDM2sVfmKiKOCgJYPstAO40vPAgACoWPO/+yoYKSgAXIFaBKsV8P0Cc7fwKgvj27SjRNX4L7f4/jCKQ==", + "@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "dev": true, + "peer": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", "dev": true, + "peer": true, "requires": { - "@typescript-eslint/scope-manager": "5.15.0", - "@typescript-eslint/types": "5.15.0", - "@typescript-eslint/typescript-estree": "5.15.0", - "debug": "^4.3.2" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" } }, - "@typescript-eslint/scope-manager": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.15.0.tgz", - "integrity": "sha512-EFiZcSKrHh4kWk0pZaa+YNJosvKE50EnmN4IfgjkA3bTHElPtYcd2U37QQkNTqwMCS7LXeDeZzEqnsOH8chjSg==", + "@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", "dev": true, + "peer": true, "requires": { - "@typescript-eslint/types": "5.15.0", - "@typescript-eslint/visitor-keys": "5.15.0" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" } }, - "@typescript-eslint/type-utils": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.15.0.tgz", - "integrity": "sha512-KGeDoEQ7gHieLydujGEFLyLofipe9PIzfvA/41urz4hv+xVxPEbmMQonKSynZ0Ks2xDhJQ4VYjB3DnRiywvKDA==", + "@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", "dev": true, + "peer": true, "requires": { - "@typescript-eslint/utils": "5.15.0", - "debug": "^4.3.2", - "tsutils": "^3.21.0" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" } }, - "@typescript-eslint/types": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.15.0.tgz", - "integrity": "sha512-yEiTN4MDy23vvsIksrShjNwQl2vl6kJeG9YkVJXjXZnkJElzVK8nfPsWKYxcsGWG8GhurYXP4/KGj3aZAxbeOA==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.15.0.tgz", - "integrity": "sha512-Hb0e3dGc35b75xLzixM3cSbG1sSbrTBQDfIScqdyvrfJZVEi4XWAT+UL/HMxEdrJNB8Yk28SKxPLtAhfCbBInA==", + "@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", "dev": true, + "peer": true, "requires": { - "@typescript-eslint/types": "5.15.0", - "@typescript-eslint/visitor-keys": "5.15.0", - "debug": "^4.3.2", - "globby": "^11.0.4", - "is-glob": "^4.0.3", - "semver": "^7.3.5", - "tsutils": "^3.21.0" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" } }, - "@typescript-eslint/utils": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.15.0.tgz", - "integrity": "sha512-081rWu2IPKOgTOhHUk/QfxuFog8m4wxW43sXNOMSCdh578tGJ1PAaWPsj42LOa7pguh173tNlMigsbrHvh/mtA==", + "@webassemblyjs/wast-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", + "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", "dev": true, "requires": { - "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.15.0", - "@typescript-eslint/types": "5.15.0", - "@typescript-eslint/typescript-estree": "5.15.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", + "@xtuc/long": "4.2.2" }, "dependencies": { - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", "dev": true, "requires": { - "eslint-visitor-keys": "^2.0.0" + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", + "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", + "dev": true + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "dev": true } } }, - "@typescript-eslint/visitor-keys": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.15.0.tgz", - "integrity": "sha512-+vX5FKtgvyHbmIJdxMJ2jKm9z2BIlXJiuewI8dsDYMp5LzPUcuTT78Ya5iwvQg3VqSVdmxyM8Anj1Jeq7733ZQ==", + "@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", "dev": true, + "peer": true, "requires": { - "@typescript-eslint/types": "5.15.0", - "eslint-visitor-keys": "^3.0.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true - } + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" } }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, "abab": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", @@ -23794,6 +51927,12 @@ "version": "1.0.0", "dev": true }, + "address": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", + "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==", + "dev": true + }, "adler-32": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.3.0.tgz", @@ -23829,6 +51968,31 @@ "indent-string": "^4.0.0" } }, + "airbnb-js-shims": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/airbnb-js-shims/-/airbnb-js-shims-2.2.1.tgz", + "integrity": "sha512-wJNXPH66U2xjgo1Zwyjf9EydvJ2Si94+vSdk6EERcBfB2VZkeltpqIats0cqIZMLCXP3zcyaUKGYQeIBT6XjsQ==", + "dev": true, + "requires": { + "array-includes": "^3.0.3", + "array.prototype.flat": "^1.2.1", + "array.prototype.flatmap": "^1.2.1", + "es5-shim": "^4.5.13", + "es6-shim": "^0.35.5", + "function.prototype.name": "^1.1.0", + "globalthis": "^1.0.0", + "object.entries": "^1.1.0", + "object.fromentries": "^2.0.0 || ^1.0.0", + "object.getownpropertydescriptors": "^2.0.3", + "object.values": "^1.1.0", + "promise.allsettled": "^1.0.0", + "promise.prototype.finally": "^3.1.0", + "string.prototype.matchall": "^4.0.0 || ^3.0.1", + "string.prototype.padend": "^3.0.0", + "string.prototype.padstart": "^3.0.0", + "symbol.prototype.description": "^1.0.0" + } + }, "ajv": { "version": "6.12.6", "dev": true, @@ -23839,6 +52003,20 @@ "uri-js": "^4.2.2" } }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "dev": true, + "requires": {} + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "requires": {} + }, "ansi-align": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", @@ -23875,6 +52053,12 @@ "version": "3.2.0", "dev": true }, + "ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true + }, "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -23886,6 +52070,15 @@ "color-convert": "^2.0.1" } }, + "ansi-to-html": { + "version": "0.6.15", + "resolved": "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.6.15.tgz", + "integrity": "sha512-28ijx2aHJGdzbs+O5SNQF65r6rrKYnkuwTYm8lZlChuoJ9P1vVzIpWO20sQTqTPDXYp6NFwk326vApTtLVFXpQ==", + "dev": true, + "requires": { + "entities": "^2.0.0" + } + }, "ansicolors": { "version": "0.2.1" }, @@ -23903,6 +52096,12 @@ } } }, + "app-root-dir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/app-root-dir/-/app-root-dir-1.0.2.tgz", + "integrity": "sha1-OBh+wt6nV3//Az/8sSFyaS/24Rg=", + "dev": true + }, "aproba": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", @@ -23954,6 +52153,30 @@ "integrity": "sha1-oMoMvCmltz6Dbuvhy/bF4OTrgvk=", "dev": true }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-find": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-find/-/array-find-1.0.0.tgz", + "integrity": "sha1-bI4obRHtdoMn+OYuzuhzU8o+eLg=", + "dev": true + }, "array-find-index": { "version": "1.0.2", "dev": true @@ -23981,6 +52204,18 @@ "array-union": { "version": "2.1.0" }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, "array.prototype.flat": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz", @@ -23992,6 +52227,30 @@ "es-abstract": "^1.19.0" } }, + "array.prototype.flatmap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz", + "integrity": "sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0" + } + }, + "array.prototype.map": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/array.prototype.map/-/array.prototype.map-1.0.4.tgz", + "integrity": "sha512-Qds9QnX7A0qISY7JT5WuJO0NJPE9CMlC6JzHQfhpqAAQQzufVRoeH7EzUY5GcPTx72voG8LV/5eo+b8Qi8hmhA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "es-array-method-boxes-properly": "^1.0.0", + "is-string": "^1.0.7" + } + }, "arrify": { "version": "1.0.1", "dev": true @@ -24002,6 +52261,65 @@ "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", "dev": true }, + "asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assert-never": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/assert-never/-/assert-never-1.2.1.tgz", + "integrity": "sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, "ast-types": { "version": "0.13.4", "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", @@ -24017,6 +52335,13 @@ "async": { "version": "1.5.2" }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true, + "optional": true + }, "async-retry": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", @@ -24041,6 +52366,39 @@ "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", "dev": true }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "autoprefixer": { + "version": "9.8.8", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz", + "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==", + "dev": true, + "requires": { + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001109", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "picocolors": "^0.2.1", + "postcss": "^7.0.32", + "postcss-value-parser": "^4.1.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + } + } + }, "aws-sdk": { "version": "2.1078.0", "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1078.0.tgz", @@ -24064,6 +52422,13 @@ } } }, + "babel-core": { + "version": "7.0.0-bridge.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", + "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==", + "dev": true, + "requires": {} + }, "babel-jest": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", @@ -24080,6 +52445,154 @@ "slash": "^3.0.0" } }, + "babel-literal-to-ast": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/babel-literal-to-ast/-/babel-literal-to-ast-2.1.0.tgz", + "integrity": "sha512-CxfpQ0ysQ0bZOhlaPgcWjl79Em16Rhqc6++UAFn0A3duiXmuyhhj8yyl9PYbj0I0CyjrHovdDbp2QEKT7uIMxw==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.6", + "@babel/traverse": "^7.1.6", + "@babel/types": "^7.1.6" + } + }, + "babel-loader": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.4.tgz", + "integrity": "sha512-8dytA3gcvPPPv4Grjhnt8b5IIiTcq/zeXOPk4iTYI0SVXcsmuGg7JtBRDp8S9X+gJfhQ8ektjXZlDu1Bb33U8A==", + "dev": true, + "requires": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "dependencies": { + "find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + } + } + }, + "babel-plugin-apply-mdx-type-prop": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/babel-plugin-apply-mdx-type-prop/-/babel-plugin-apply-mdx-type-prop-1.6.22.tgz", + "integrity": "sha512-VefL+8o+F/DfK24lPZMtJctrCVOfgbqLAGZSkxwhazQv4VxPg3Za/i40fu22KR2m8eEda+IfSOlPLUSIiLcnCQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.10.4", + "@mdx-js/util": "1.6.22" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + } + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-emotion": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/babel-plugin-emotion/-/babel-plugin-emotion-10.2.2.tgz", + "integrity": "sha512-SMSkGoqTbTyUTDeuVuPIWifPdUGkTk1Kf9BWRiXIOIcuyMfsdp2EjeiiFvOzX8NOBvEh/ypKYvUh2rkgAJMCLA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@emotion/hash": "0.8.0", + "@emotion/memoize": "0.7.4", + "@emotion/serialize": "^0.11.16", + "babel-plugin-macros": "^2.0.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^1.0.5", + "find-root": "^1.1.0", + "source-map": "^0.5.7" + }, + "dependencies": { + "babel-plugin-macros": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", + "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "cosmiconfig": "^6.0.0", + "resolve": "^1.12.0" + } + }, + "cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "babel-plugin-extract-import-names": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.6.22.tgz", + "integrity": "sha512-yJ9BsJaISua7d8zNT7oRG1ZLBJCIdZ4PZqmH8qa9N5AK01ifk3fnkc98AXhtzE7UkfCsEumvoQWgoYLhOnJ7jQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.10.4" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + } + } + }, + "babel-plugin-graphql-tag": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-graphql-tag/-/babel-plugin-graphql-tag-3.3.0.tgz", + "integrity": "sha512-27qfJhFJ2jQg+ktcC3cdppE2RrXZ5uiDz+39YC5lhkmftWPuJW8ET9Ehskwv7ujScZ1jSKhs5/JZKlESCkwIBg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/parser": "^7.3.2", + "babel-literal-to-ast": "^2.1.0", + "debug": "^4.1.1" + } + }, "babel-plugin-istanbul": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", @@ -24105,6 +52618,98 @@ "@types/babel__traverse": "^7.0.6" } }, + "babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", + "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.1", + "semver": "^6.1.1" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", + "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.1", + "core-js-compat": "^3.21.0" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", + "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.1" + } + }, + "babel-plugin-syntax-jsx": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", + "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=", + "dev": true + }, + "babel-plugin-transform-vite-meta-env": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-vite-meta-env/-/babel-plugin-transform-vite-meta-env-1.0.3.tgz", + "integrity": "sha512-eyfuDEXrMu667TQpmctHeTlJrZA6jXYHyEJFjcM0yEa60LS/LXlOg2PBbMb8DVS+V9CnTj/j9itdlDVMcY2zEg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.9", + "@types/babel__core": "^7.1.12" + } + }, + "babel-plugin-transform-vite-meta-glob": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-vite-meta-glob/-/babel-plugin-transform-vite-meta-glob-1.0.3.tgz", + "integrity": "sha512-JW3VnwUjJqpj0FM0vJFxrGdxSBcHOa0j5YMvvtXYPmFshroq53nbK9dqRETgjXlMrfIz0oU/6ki+u1GdVWdNHA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.9", + "@types/babel__core": "^7.1.12", + "glob": "^7.1.6" + }, + "dependencies": { + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, "babel-preset-current-node-syntax": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", @@ -24135,10 +52740,69 @@ "babel-preset-current-node-syntax": "^1.0.0" } }, + "babel-preset-vite": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/babel-preset-vite/-/babel-preset-vite-1.0.4.tgz", + "integrity": "sha512-RZS/wNfEUD8aMliObxqlPw4ZR7R5OsT1G2IHd5nuUmiYKS6zemur8aZ5WPbfQwPpTPe9VEjcrxQA/6PKBWRTkg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.9", + "@types/babel__core": "^7.1.12", + "babel-plugin-transform-vite-meta-env": "1.0.3", + "babel-plugin-transform-vite-meta-glob": "1.0.3" + } + }, + "babel-walk": { + "version": "3.0.0-canary-5", + "resolved": "https://registry.npmjs.org/babel-walk/-/babel-walk-3.0.0-canary-5.tgz", + "integrity": "sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==", + "dev": true, + "requires": { + "@babel/types": "^7.9.6" + } + }, + "bail": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", + "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", + "dev": true + }, "balanced-match": { "version": "1.0.2", "dev": true }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, "base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -24150,6 +52814,12 @@ "safe-buffer": "5.1.2" } }, + "batch-processor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/batch-processor/-/batch-processor-1.0.0.tgz", + "integrity": "sha1-dclcMrdI4IUNEMKxaPa9vpiRrOg=", + "dev": true + }, "bcryptjs": { "version": "2.4.3" }, @@ -24159,6 +52829,21 @@ "integrity": "sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==", "dev": true }, + "better-opn": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-2.1.1.tgz", + "integrity": "sha512-kIPXZS5qwyKiX/HcRvDYfmBQUa8XP17I0mYZZ0y4UhpYOSvtsLHDYqmomS+Mj20aDvD3knEiQ0ecQy2nhio3yA==", + "dev": true, + "requires": { + "open": "^7.0.3" + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, "bignumber.js": { "version": "9.0.1" }, @@ -24168,9 +52853,34 @@ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + }, + "dependencies": { + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + } + } + }, "bluebird": { "version": "3.7.2" }, + "bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", + "dev": true + }, "body-parser": { "version": "1.19.2", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", @@ -24208,6 +52918,12 @@ } } }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, "bottleneck": { "version": "2.19.5", "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", @@ -24269,23 +52985,129 @@ "fill-range": "^7.0.1" } }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, "browser-process-hrtime": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", "dev": true }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dev": true, + "requires": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dev": true, + "requires": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, "browserslist": { - "version": "4.17.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.3.tgz", - "integrity": "sha512-59IqHJV5VGdcJZ+GZ2hU5n4Kv3YiASzW6Xk5g9tf5a/MAzGeFwgGWU39fVzNIOVcgB3+Gp+kiQu0HEfTVU/3VQ==", + "version": "4.20.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz", + "integrity": "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001264", - "electron-to-chromium": "^1.3.857", + "caniuse-lite": "^1.0.30001317", + "electron-to-chromium": "^1.4.84", "escalade": "^3.1.1", - "node-releases": "^1.1.77", - "picocolors": "^0.2.1" + "node-releases": "^2.0.2", + "picocolors": "^1.0.0" + }, + "dependencies": { + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + } } }, "bs-logger": { @@ -24323,6 +53145,18 @@ "buffer-writer": { "version": "2.0.0" }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, "builtins": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", @@ -24386,6 +53220,31 @@ } } }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, "cachedir": { "version": "2.2.0", "dev": true @@ -24398,15 +53257,37 @@ "get-intrinsic": "^1.0.2" } }, + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", + "dev": true + }, "callsites": { "version": "3.1.0", "dev": true }, + "camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, + "requires": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, "camelcase": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" }, + "camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true + }, "camelcase-keys": { "version": "6.2.2", "dev": true, @@ -24498,7 +53379,6 @@ "graphql-type-json": "^0.3.2", "graphql-upload": "^13.0.0", "html-to-text": "^8.1.0", - "husky": "^7.0.4", "jest": "^27.5.1", "jsondiffpatch": "^0.4.1", "jsonwebtoken": "^8.5.1", @@ -24533,12 +53413,280 @@ "xlsx": "^0.18.4" } }, + "camino-ui": { + "version": "file:packages/ui", + "requires": { + "@babel/eslint-parser": "^7.17.0", + "@babel/preset-env": "^7.16.11", + "@juggle/resize-observer": "^3.3.1", + "@mapbox/stylelint-processor-arbitrary-tags": "^0.4.0", + "@rollup/plugin-inject": "^4.0.4", + "@semantic-release/changelog": "^6.0.1", + "@semantic-release/git": "^10.0.1", + "@sentry/browser": "^6.18.2", + "@sentry/integrations": "^6.18.2", + "@storybook/addon-actions": "^6.4.19", + "@storybook/addon-controls": "^6.4.19", + "@storybook/addon-postcss": "^2.0.0", + "@storybook/addon-storyshots": "^6.4.19", + "@storybook/vue3": "^6.4.19", + "@types/jest": "^27.4.1", + "@types/leaflet": "^1.7.9", + "@types/leaflet.markercluster": "^1.4.6", + "@types/webpack-env": "^1.16.3", + "@typescript-eslint/parser": "^5.15.0", + "@uppy/core": "^2.1.6", + "@uppy/tus": "^2.2.0", + "@vitejs/plugin-vue": "^2.2.4", + "@vue/eslint-config-prettier": "^7.0.0", + "@vue/eslint-config-standard": "^6.1.0", + "@vue/test-utils": "^2.0.0-rc.17", + "@vue/vue3-jest": "27.0.0-alpha.4", + "babel-core": "^7.0.0-bridge.0", + "babel-jest": "^27.5.1", + "babel-loader": "^8.2.3", + "babel-plugin-graphql-tag": "^3.3.0", + "babel-preset-vite": "^1.0.4", + "chalk": "^5.0.1", + "chart.js": "^3.7.1", + "choices.js": "^10.1.0", + "codecov": "^3.8.3", + "commitizen": "^4.2.4", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "core-js": "^3.21.1", + "cross-env": "^7.0.3", + "cross-fetch": "^3.1.5", + "cz-conventional-changelog": "^3.3.0", + "dotenv": "^16.0.0", + "email-validator": "^2.0.4", + "eslint": "^7.32.0", + "eslint-config-prettier": "^8.5.0", + "eslint-config-standard": "^16.0.3", + "eslint-plugin-import": "^2.25.4", + "eslint-plugin-jest": "^26.1.1", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-promise": "^5.2.0", + "eslint-plugin-vue": "^7.19.1", + "express": "^4.17.3", + "file-saver": "^2.0.5", + "graphql": "^16.3.0", + "graphql-react": "^15.0.0", + "graphql-tag": "^2.12.6", + "html-webpack-plugin": "^5.5.0", + "http-proxy-middleware": "^2.0.4", + "jest": "^27.5.1", + "jest-fetch-mock": "^3.0.3", + "jest-serializer-vue": "^2.0.2", + "jest-transform-stub": "^2.0.0", + "jest-util": "^27.5.1", + "json2csv": "^5.0.7", + "jsondiffpatch": "^0.4.1", + "leaflet": "1.7.1", + "leaflet-fullscreen": "^1.0.2", + "leaflet-gesture-handling": "^1.2.2", + "leaflet-markers-canvas": "^0.2.2", + "leaflet.markercluster": "^1.5.3", + "lint-staged": "^12.3.6", + "npm-check-updates": "^12.5.3", + "pixrem": "^5.0.0", + "postcss-button": "^0.3.17", + "postcss-calc": "^8.2.4", + "postcss-color-mod-function": "^3.0.3", + "postcss-grid-fluid": "^0.3.4", + "postcss-grid-system": "^0.5.2", + "postcss-import": "14.0.2", + "postcss-inline-svg": "5.0.0", + "postcss-loader": "^6.2.1", + "postcss-normalize": "^10.0.1", + "postcss-preset-env": "^7.4.2", + "postcss-typescale": "^0.2.3", + "prettier": "^2.6.0", + "rbush": "^3.0.1", + "semantic-release": "^19.0.2", + "snarkdown": "^2.0.0", + "standard-version": "^9.3.2", + "stylelint": "^14.6.0", + "stylelint-config-prettier": "^9.0.3", + "stylelint-config-standard": "^25.0.0", + "ts-jest": "^27.1.3", + "typescript": "^4.6.2", + "vite": "^2.8.6", + "vue": "^3.2.31", + "vue-loader": "^17.0.0", + "vue-meta": "^2.4.0", + "vue-router": "^4.0.14", + "vuex": "^4.0.2", + "vuex-router-sync": "^6.0.0-rc.1" + }, + "dependencies": { + "@eslint/eslintrc": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + } + }, + "@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@vue/eslint-config-standard": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@vue/eslint-config-standard/-/eslint-config-standard-6.1.0.tgz", + "integrity": "sha512-9+hrEyflDzsGdlBDl9jPV5DIYUx1TOU5OSQqRDKCrNumrxRj5HRWKuk+ocXWnha6uoNRtLC24mY7d/MwqvBCNw==", + "dev": true, + "requires": { + "eslint-config-standard": "^16.0.3", + "eslint-import-resolver-node": "^0.3.4", + "eslint-import-resolver-webpack": "^0.13.1" + } + }, + "chalk": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.0.1.tgz", + "integrity": "sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==", + "dev": true + }, + "eslint": { + "version": "7.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "dev": true, + "requires": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, + "eslint-config-standard": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-16.0.3.tgz", + "integrity": "sha512-x4fmJL5hGqNJKGHSjnLdgA6U6h1YW/G2dW9fA+cyVur4SK6lyue8+UgNKWlZtUDTXvgKDD/Oa3GQjmB5kjtVvg==", + "dev": true, + "requires": {} + }, + "eslint-plugin-promise": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-5.2.0.tgz", + "integrity": "sha512-SftLb1pUG01QYq2A/hGAWfDRXqYD82zE7j7TopDOyNdU+7SvvoXREls/+PRTY17vUXzXnZA/zfnyKgRH6x4JJw==", + "dev": true, + "requires": {} + }, + "espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "requires": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + } + } + }, "caniuse-lite": { - "version": "1.0.30001265", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001265.tgz", - "integrity": "sha512-YzBnspggWV5hep1m9Z6sZVLOt7vrju8xWooFAgN6BA5qvy98qPAPb7vNUzypFaoh2pb3vlfzbDO8tB57UPGbtw==", + "version": "1.0.30001319", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001319.tgz", + "integrity": "sha512-xjlIAFHucBRSMUo1kb5D4LYgcN1M45qdKP++lhqowDpwJwGkpIRTt5qQqnhxjj1vHcI7nrJxWhCC1ATrCEBTcw==", "dev": true }, + "capture-exit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", + "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", + "dev": true, + "requires": { + "rsvp": "^4.8.4" + } + }, "cardinal": { "version": "0.4.4", "requires": { @@ -24546,6 +53694,18 @@ "redeyed": "~0.4.0" } }, + "case-sensitive-paths-webpack-plugin": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", + "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==", + "dev": true + }, + "ccount": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz", + "integrity": "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==", + "dev": true + }, "cerbere": { "version": "0.2.3", "requires": { @@ -24585,10 +53745,66 @@ "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true }, + "character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "dev": true + }, + "character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "dev": true + }, + "character-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", + "integrity": "sha1-x84o821LzZdE5f/CxfzeHHMmH8A=", + "dev": true, + "requires": { + "is-regex": "^1.0.3" + } + }, + "character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "dev": true + }, + "charcodes": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/charcodes/-/charcodes-0.2.0.tgz", + "integrity": "sha512-Y4kiDb+AM4Ecy58YkuZrrSRJBDQdQ2L+NyS1vHHFtNtUjgutcZfx3yp1dAONI/oPaPmyGfCLx5CxL+zauIMyKQ==", + "dev": true + }, "chardet": { "version": "0.7.0", "dev": true }, + "chart.js": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-3.7.1.tgz", + "integrity": "sha512-8knRegQLFnPQAheZV8MjxIXc5gQEfDFD897BJgv/klO/vtIyFFmgMXrNfgrXpbTr/XbTturxRgxIXx/Y+ASJBA==", + "dev": true + }, + "choices.js": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/choices.js/-/choices.js-10.1.0.tgz", + "integrity": "sha512-NtrFt7c7ZQEGmkWsAV+EHynJhADWoZ82JEfg1+vQ9MMKJD4Ax2rzYPxXe+Q64i0HgUgWG/XTN3gN2pB8UFFFlA==", + "requires": { + "deepmerge": "^4.2.2", + "fuse.js": "^6.5.3", + "redux": "^4.1.2" + }, + "dependencies": { + "fuse.js": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-6.5.3.tgz", + "integrity": "sha512-sA5etGE7yD/pOqivZRBvUBd/NaL2sjAu6QuSaFoe1H2BrJSkH/T/UXAJ8CdXdw7DvY3Hs8CXKYkDWX7RiP5KOg==" + } + } + }, "chokidar": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", @@ -24619,6 +53835,12 @@ "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", "dev": true }, + "chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true + }, "ci-info": { "version": "3.2.0", "dev": true @@ -24627,12 +53849,123 @@ "version": "8.2.1", "dev": true }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, "cjs-module-lexer": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", "dev": true }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "clean-css": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.2.4.tgz", + "integrity": "sha512-nKseG8wCzEuji/4yrgM/5cthL9oTDc5UOQyFMvW/Q53oP6gLH690o1NbuTh6Y18nujr7BxlsFuS7gXLnLzKJGg==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + } + }, "clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", @@ -24791,6 +54124,50 @@ } } }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "dependencies": { + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "clone-regexp": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-1.0.1.tgz", + "integrity": "sha512-Fcij9IwRW27XedRIJnSOEupS7RVcXtObJXbcUOX93UCLqqOdRpkvzKywOOSizmEK/Is3S/RHX9dLdfo6R1Q1mw==", + "dev": true, + "requires": { + "is-regexp": "^1.0.0", + "is-supported-regexp-flag": "^1.0.0" + } + }, "clone-response": { "version": "1.0.2", "dev": true, @@ -24798,6 +54175,12 @@ "mimic-response": "^1.0.0" } }, + "clsx": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz", + "integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==", + "dev": true + }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -24822,12 +54205,28 @@ "resolved": "https://registry.npmjs.org/codepage/-/codepage-1.15.0.tgz", "integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==" }, + "collapse-white-space": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.6.tgz", + "integrity": "sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==", + "dev": true + }, "collect-v8-coverage": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", "dev": true }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, "color": { "version": "3.0.0", "requires": { @@ -24868,6 +54267,12 @@ "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", "dev": true }, + "colord": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.2.tgz", + "integrity": "sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ==", + "dev": true + }, "colorette": { "version": "2.0.16", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", @@ -24886,12 +54291,40 @@ "text-hex": "1.0.x" } }, + "combine-errors": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/combine-errors/-/combine-errors-3.0.3.tgz", + "integrity": "sha1-9N9nQAg+VwOjGBEQwrEFUfAD2oY=", + "dev": true, + "requires": { + "custom-error-instance": "2.1.1", + "lodash.uniqby": "4.5.0" + }, + "dependencies": { + "lodash.uniqby": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.5.0.tgz", + "integrity": "sha1-o6F7v2LutiQPSRhG6XwcTipeHiE=", + "dev": true, + "requires": { + "lodash._baseiteratee": "~4.7.0", + "lodash._baseuniq": "~4.6.0" + } + } + } + }, "combined-stream": { "version": "1.0.8", "requires": { "delayed-stream": "~1.0.0" } }, + "comma-separated-tokens": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz", + "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==", + "dev": true + }, "commander": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", @@ -24978,6 +54411,12 @@ "version": "1.8.0", "dev": true }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, "compare-versions": { "version": "3.6.0", "dev": true @@ -25016,6 +54455,12 @@ } } }, + "compute-scroll-into-view": { + "version": "1.0.17", + "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.17.tgz", + "integrity": "sha512-j4dx+Fb0URmzbwwMUrhqWM2BEWHdFGx+qZ9qqASHRPqvTYdqvWnHg0H1hIbcyLnvgnoNAVMlwkepyqM3DaIFUg==", + "dev": true + }, "concat-map": { "version": "0.0.1", "dev": true @@ -25029,6 +54474,44 @@ "typedarray": "^0.0.6" } }, + "condense-newlines": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/condense-newlines/-/condense-newlines-0.2.1.tgz", + "integrity": "sha1-PemFVTE5R10yUCyDsC9gaE0kxV8=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-whitespace": "^0.3.0", + "kind-of": "^3.0.2" + }, + "dependencies": { + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, "configstore": { "version": "5.0.1", "requires": { @@ -25051,12 +54534,39 @@ } } }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==" + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, "console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", "dev": true }, + "constantinople": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-4.0.1.tgz", + "integrity": "sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==", + "dev": true, + "requires": { + "@babel/parser": "^7.6.0", + "@babel/types": "^7.6.1" + } + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, "content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -25362,10 +54872,6 @@ "requires": { "readable-stream": "3" } - }, - "yargs-parser": { - "version": "20.2.7", - "dev": true } } }, @@ -25526,10 +55032,6 @@ "requires": { "readable-stream": "3" } - }, - "yargs-parser": { - "version": "20.2.7", - "dev": true } } }, @@ -25724,10 +55226,6 @@ "requires": { "readable-stream": "3" } - }, - "yargs-parser": { - "version": "20.2.7", - "dev": true } } }, @@ -25760,6 +55258,97 @@ "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.3.tgz", "integrity": "sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ==" }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + }, + "dependencies": { + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "copy-to-clipboard": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz", + "integrity": "sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw==", + "dev": true, + "requires": { + "toggle-selection": "^1.0.6" + } + }, + "core-js": { + "version": "3.21.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.21.1.tgz", + "integrity": "sha512-FRq5b/VMrWlrmCzwRrpDYNxyHP9BcAZC+xHJaqTgIE5091ZV1NTmyh0sGOg5XqpnHvR0svdy0sv1gWA1zmhxig==", + "dev": true + }, + "core-js-compat": { + "version": "3.21.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.21.1.tgz", + "integrity": "sha512-gbgX5AUvMb8gwxC7FLVWYT7Kkgu/y7+h/h1X43yJkNqhlK2fuYyQimqvKGNZFAY6CKii/GFKJ2cp/1/42TN36g==", + "dev": true, + "requires": { + "browserslist": "^4.19.1", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true + } + } + }, + "core-js-pure": { + "version": "3.21.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.21.1.tgz", + "integrity": "sha512-12VZfFIu+wyVbBebyHmRTuEE/tZrB4tJToWcwAMcsp3h4+sHR+fMJWbKpYiCRWlhFBq+KNyO8rIV9rTkeVmznQ==", + "dev": true + }, "core-util-is": { "version": "1.0.2" }, @@ -25783,6 +55372,285 @@ "yaml": "^1.10.0" } }, + "cp-file": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-7.0.0.tgz", + "integrity": "sha512-0Cbj7gyvFVApzpK/uhCtQ/9kE9UnYpxMzaq5nQQC/Dh4iaj5fxp7iEFIullrYwzj8nf0qnsI1Qsx34hAeAebvw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "nested-error-stacks": "^2.0.0", + "p-event": "^4.1.0" + } + }, + "cpy": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/cpy/-/cpy-8.1.2.tgz", + "integrity": "sha512-dmC4mUesv0OYH2kNFEidtf/skUwv4zePmGeepjyyJ0qTo5+8KhA1o99oIAwVVLzQMAeDJml74d6wPPKb6EZUTg==", + "dev": true, + "requires": { + "arrify": "^2.0.1", + "cp-file": "^7.0.0", + "globby": "^9.2.0", + "has-glob": "^1.0.0", + "junk": "^3.1.0", + "nested-error-stacks": "^2.1.0", + "p-all": "^2.1.0", + "p-filter": "^2.1.0", + "p-map": "^3.0.0" + }, + "dependencies": { + "@nodelib/fs.stat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", + "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "dev": true, + "requires": { + "path-type": "^3.0.0" + } + }, + "fast-glob": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", + "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", + "dev": true, + "requires": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "globby": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", + "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "array-union": "^1.0.2", + "dir-glob": "^2.2.2", + "fast-glob": "^2.2.6", + "glob": "^7.1.3", + "ignore": "^4.0.3", + "pify": "^4.0.1", + "slash": "^2.0.0" + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + } + } + }, + "p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, "crc-32": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.1.tgz", @@ -25799,6 +55667,51 @@ } } }, + "create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, "create-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", @@ -25816,6 +55729,15 @@ "cross-spawn": "^7.0.1" } }, + "cross-fetch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "dev": true, + "requires": { + "node-fetch": "2.6.7" + } + }, "cross-spawn": { "version": "7.0.3", "requires": { @@ -25824,6 +55746,25 @@ "which": "^2.0.1" } }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, "crypto-random-string": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-3.3.1.tgz", @@ -25832,6 +55773,157 @@ "type-fest": "^0.8.1" } }, + "css": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", + "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.0" + } + }, + "css-blank-pseudo": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz", + "integrity": "sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.9" + } + }, + "css-functions-list": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.0.1.tgz", + "integrity": "sha512-PriDuifDt4u4rkDgnqRCLnjfMatufLmWNfQnGCq34xZwpY3oabwhB9SqRBmuvWUgndbemCFlKqg+nO7C2q0SBw==", + "dev": true + }, + "css-has-pseudo": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz", + "integrity": "sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.9" + } + }, + "css-loader": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.6.0.tgz", + "integrity": "sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "cssesc": "^3.0.0", + "icss-utils": "^4.1.1", + "loader-utils": "^1.2.3", + "normalize-path": "^3.0.0", + "postcss": "^7.0.32", + "postcss-modules-extract-imports": "^2.0.0", + "postcss-modules-local-by-default": "^3.0.2", + "postcss-modules-scope": "^2.2.0", + "postcss-modules-values": "^3.0.0", + "postcss-value-parser": "^4.1.0", + "schema-utils": "^2.7.0", + "semver": "^6.3.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "css-prefers-color-scheme": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz", + "integrity": "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==", + "dev": true, + "requires": {} + }, + "css-select": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-3.1.2.tgz", + "integrity": "sha512-qmss1EihSuBNWNNhHjxzxSfJoFBM/lERB/Q4EnsJQQC62R2evJDW481091oAdOr9uh46/0n4nrg0It5cAnj1RA==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^4.0.0", + "domhandler": "^4.0.0", + "domutils": "^2.4.3", + "nth-check": "^2.0.0" + } + }, + "css-unit-converter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.2.tgz", + "integrity": "sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA==", + "dev": true + }, + "css-what": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-4.0.0.tgz", + "integrity": "sha512-teijzG7kwYfNVsUh2H/YN62xW3KK9YhXEgSlbxMlcyjPNvdKJqFx5lrwlJgoFP1ZHlB89iGDlo/JyshKeRhv5A==", + "dev": true + }, + "cssdb": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-6.5.0.tgz", + "integrity": "sha512-Rh7AAopF2ckPXe/VBcoUS9JrCZNSyc60+KpgE6X25vpVxA32TmiqvExjkfhwP4wGSb6Xe8Z/JIyGqwgx/zZYFA==", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, "cssom": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", @@ -25855,6 +55947,12 @@ } } }, + "csstype": { + "version": "2.6.20", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.20.tgz", + "integrity": "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==", + "dev": true + }, "currently-unhandled": { "version": "0.4.1", "dev": true, @@ -25862,6 +55960,18 @@ "array-find-index": "^1.0.1" } }, + "custom-error-instance": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/custom-error-instance/-/custom-error-instance-2.1.1.tgz", + "integrity": "sha1-PPY5FIemYppiR+sMoM4ACBt+Nho=", + "dev": true + }, + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "dev": true + }, "cz-conventional-changelog": { "version": "3.3.0", "dev": true, @@ -25985,6 +56095,12 @@ "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", "dev": true }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, "decompress-response": { "version": "3.3.0", "dev": true, @@ -26003,6 +56119,12 @@ "deep-is": { "version": "0.1.3" }, + "deep-object-diff": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/deep-object-diff/-/deep-object-diff-1.1.7.tgz", + "integrity": "sha512-QkgBca0mL08P6HiOjoqvmm6xOAl2W6CT2+34Ljhg0OeFan8cwlcdq8jrLKsBBuUFAZLsN5b6y491KdKEoSo9lg==", + "dev": true + }, "deepmerge": { "version": "4.2.2" }, @@ -26017,6 +56139,24 @@ "object-keys": "^1.0.12" } }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, "degenerator": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-3.0.2.tgz", @@ -26111,11 +56251,30 @@ "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", "dev": true }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, "destroy": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" }, + "detab": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detab/-/detab-2.0.4.tgz", + "integrity": "sha512-8zdsQA5bIkoRECvCrNKPla84lyoR7DSAyf7p0YgXzBO9PDJx8KntPUay7NS6yp+KdxdVtiE5SpHKtbp2ZQyA9g==", + "dev": true, + "requires": { + "repeat-string": "^1.5.4" + } + }, "detect-file": { "version": "1.0.0", "dev": true @@ -26128,6 +56287,33 @@ "version": "3.1.0", "dev": true }, + "detect-port": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.3.0.tgz", + "integrity": "sha512-E+B1gzkl2gqxt1IhUzwjrxBKRqx1UzC3WLONHinn8S3T6lwV/agVCyitiFOsGJ/eYuEUBvD71MZHy3Pv1G9doQ==", + "dev": true, + "requires": { + "address": "^1.0.1", + "debug": "^2.6.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, "dezalgo": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz", @@ -26159,6 +56345,25 @@ "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==" }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, "dir-glob": { "version": "3.0.1", "requires": { @@ -26179,6 +56384,21 @@ "esutils": "^2.0.2" } }, + "doctypes": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", + "integrity": "sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=", + "dev": true + }, + "dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "requires": { + "utila": "~0.4" + } + }, "dom-serializer": { "version": "1.3.2", "requires": { @@ -26187,6 +56407,18 @@ "entities": "^2.0.0" } }, + "dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", + "dev": true + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, "domelementtype": { "version": "2.2.0" }, @@ -26208,24 +56440,44 @@ } }, "domhandler": { - "version": "4.2.0", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", "requires": { "domelementtype": "^2.2.0" } }, "domutils": { - "version": "2.6.0", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", "requires": { "dom-serializer": "^1.0.1", "domelementtype": "^2.2.0", "domhandler": "^4.2.0" } }, + "dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "dotenv": { "version": "16.0.0", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.0.tgz", "integrity": "sha512-qD9WU0MPM4SWLPJy/r2Be+2WgQj8plChsyrCNQzW/0WjvcJQiKQJ9mH3ZgB3fxbUUxgc/11ZJ0Fi5KiimWGz2Q==" }, + "dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "dev": true + }, "dotgitignore": { "version": "2.1.0", "dev": true, @@ -26265,6 +56517,19 @@ } } }, + "downshift": { + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/downshift/-/downshift-6.1.7.tgz", + "integrity": "sha512-cVprZg/9Lvj/uhYRxELzlu1aezRcgPWBjTvspiGTVEU64gF5pRdSRKFVLcxqsZC637cLAGMbL40JavEfWnqgNg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.14.8", + "compute-scroll-into-view": "^1.0.17", + "prop-types": "^15.7.2", + "react-is": "^17.0.2", + "tslib": "^2.3.0" + } + }, "duplexer2": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", @@ -26307,20 +56572,100 @@ "safe-buffer": "^5.0.1" } }, + "editorconfig": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", + "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", + "dev": true, + "requires": { + "commander": "^2.19.0", + "lru-cache": "^4.1.5", + "semver": "^5.6.0", + "sigmund": "^1.0.1" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + }, "ee-first": { "version": "1.1.1" }, "electron-to-chromium": { - "version": "1.3.864", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.864.tgz", - "integrity": "sha512-v4rbad8GO6/yVI92WOeU9Wgxc4NA0n4f6P1FvZTY+jyY7JHEhw3bduYu60v3Q1h81Cg6eo4ApZrFPuycwd5hGw==", + "version": "1.4.90", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.90.tgz", + "integrity": "sha512-ZwKgSA0mQMyEhz+NR0F8dRzkrCLeHLzLkjx/CWf16+zV85hQ6meXPQbKanvhnpkYb7b2uJNj+enQJ/N877ND4Q==", "dev": true }, + "element-resize-detector": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/element-resize-detector/-/element-resize-detector-1.2.4.tgz", + "integrity": "sha512-Fl5Ftk6WwXE0wqCgNoseKWndjzZlDCwuPTcoVZfCP9R3EHQF8qUtr3YUPNETegRBOKqQKPW3n4kiIWngGi8tKg==", + "dev": true, + "requires": { + "batch-processor": "1.0.0" + } + }, + "elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dev": true, + "requires": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, "email-regex": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/email-regex/-/email-regex-4.0.0.tgz", "integrity": "sha512-OxR2NqoYS3ZikqOkju2krRTyxngwjJ5Wh4yalpTqbBnUOr+LLwwjY2x5Sksruw6TieyQDswE5Pc83Eh6RQj3GA==" }, + "email-validator": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/email-validator/-/email-validator-2.0.4.tgz", + "integrity": "sha512-gYCwo7kh5S3IDyZPLZf6hSS0MnZT8QmJFqYvbqlDZSbwdZlY6QZWxJ4i/6UhITOJ4XzyI647Bm2MXKCLqnJ4nQ==", + "dev": true + }, "emittery": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", @@ -26333,6 +56678,23 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "emotion-theming": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/emotion-theming/-/emotion-theming-10.3.0.tgz", + "integrity": "sha512-mXiD2Oj7N9b6+h/dC6oLf9hwxbtKHQjoIqtodEyL8CpkN4F3V4IK/BT4D0C7zSs4BBFOu4UlPJbvvBLa88SGEA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.5.5", + "@emotion/weak-memoize": "0.2.5", + "hoist-non-react-statics": "^3.3.0" + } + }, "enabled": { "version": "2.0.0" }, @@ -26365,6 +56727,17 @@ "once": "^1.4.0" } }, + "enhanced-resolve": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + } + }, "enquirer": { "version": "2.3.6", "dev": true, @@ -26403,6 +56776,15 @@ "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", "dev": true }, + "errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, "error-ex": { "version": "1.3.2", "dev": true, @@ -26438,6 +56820,43 @@ "unbox-primitive": "^1.0.1" } }, + "es-array-method-boxes-properly": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", + "dev": true + }, + "es-get-iterator": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz", + "integrity": "sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.0", + "has-symbols": "^1.0.1", + "is-arguments": "^1.1.0", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.5", + "isarray": "^2.0.5" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } + } + }, + "es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true, + "peer": true + }, "es-to-primitive": { "version": "1.2.1", "dev": true, @@ -26447,6 +56866,186 @@ "is-symbol": "^1.0.2" } }, + "es5-shim": { + "version": "4.6.5", + "resolved": "https://registry.npmjs.org/es5-shim/-/es5-shim-4.6.5.tgz", + "integrity": "sha512-vfQ4UAai8szn0sAubCy97xnZ4sJVDD1gt/Grn736hg8D7540wemIb1YPrYZSTqlM2H69EQX1or4HU/tSwRTI3w==", + "dev": true + }, + "es6-shim": { + "version": "0.35.6", + "resolved": "https://registry.npmjs.org/es6-shim/-/es6-shim-0.35.6.tgz", + "integrity": "sha512-EmTr31wppcaIAgblChZiuN/l9Y7DPyw8Xtbg7fIVngn6zMW+IEBJDJngeKC3x6wr0V/vcA2wqeFnaw1bFJbDdA==", + "dev": true + }, + "esbuild": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.27.tgz", + "integrity": "sha512-MZQt5SywZS3hA9fXnMhR22dv0oPGh6QtjJRIYbgL1AeqAoQZE+Qn5ppGYQAoHv/vq827flj4tIJ79Mrdiwk46Q==", + "dev": true, + "requires": { + "esbuild-android-64": "0.14.27", + "esbuild-android-arm64": "0.14.27", + "esbuild-darwin-64": "0.14.27", + "esbuild-darwin-arm64": "0.14.27", + "esbuild-freebsd-64": "0.14.27", + "esbuild-freebsd-arm64": "0.14.27", + "esbuild-linux-32": "0.14.27", + "esbuild-linux-64": "0.14.27", + "esbuild-linux-arm": "0.14.27", + "esbuild-linux-arm64": "0.14.27", + "esbuild-linux-mips64le": "0.14.27", + "esbuild-linux-ppc64le": "0.14.27", + "esbuild-linux-riscv64": "0.14.27", + "esbuild-linux-s390x": "0.14.27", + "esbuild-netbsd-64": "0.14.27", + "esbuild-openbsd-64": "0.14.27", + "esbuild-sunos-64": "0.14.27", + "esbuild-windows-32": "0.14.27", + "esbuild-windows-64": "0.14.27", + "esbuild-windows-arm64": "0.14.27" + } + }, + "esbuild-android-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.27.tgz", + "integrity": "sha512-LuEd4uPuj/16Y8j6kqy3Z2E9vNY9logfq8Tq+oTE2PZVuNs3M1kj5Qd4O95ee66yDGb3isaOCV7sOLDwtMfGaQ==", + "dev": true, + "optional": true + }, + "esbuild-android-arm64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.27.tgz", + "integrity": "sha512-E8Ktwwa6vX8q7QeJmg8yepBYXaee50OdQS3BFtEHKrzbV45H4foMOeEE7uqdjGQZFBap5VAqo7pvjlyA92wznQ==", + "dev": true, + "optional": true + }, + "esbuild-darwin-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.27.tgz", + "integrity": "sha512-czw/kXl/1ZdenPWfw9jDc5iuIYxqUxgQ/Q+hRd4/3udyGGVI31r29LCViN2bAJgGvQkqyLGVcG03PJPEXQ5i2g==", + "dev": true, + "optional": true + }, + "esbuild-darwin-arm64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.27.tgz", + "integrity": "sha512-BEsv2U2U4o672oV8+xpXNxN9bgqRCtddQC6WBh4YhXKDcSZcdNh7+6nS+DM2vu7qWIWNA4JbRG24LUUYXysimQ==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.27.tgz", + "integrity": "sha512-7FeiFPGBo+ga+kOkDxtPmdPZdayrSzsV9pmfHxcyLKxu+3oTcajeZlOO1y9HW+t5aFZPiv7czOHM4KNd0tNwCA==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-arm64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.27.tgz", + "integrity": "sha512-8CK3++foRZJluOWXpllG5zwAVlxtv36NpHfsbWS7TYlD8S+QruXltKlXToc/5ZNzBK++l6rvRKELu/puCLc7jA==", + "dev": true, + "optional": true + }, + "esbuild-linux-32": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.27.tgz", + "integrity": "sha512-qhNYIcT+EsYSBClZ5QhLzFzV5iVsP1YsITqblSaztr3+ZJUI+GoK8aXHyzKd7/CKKuK93cxEMJPpfi1dfsOfdw==", + "dev": true, + "optional": true + }, + "esbuild-linux-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.27.tgz", + "integrity": "sha512-ESjck9+EsHoTaKWlFKJpPZRN26uiav5gkI16RuI8WBxUdLrrAlYuYSndxxKgEn1csd968BX/8yQZATYf/9+/qg==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.27.tgz", + "integrity": "sha512-JnnmgUBdqLQO9hoNZQqNHFWlNpSX82vzB3rYuCJMhtkuaWQEmQz6Lec1UIxJdC38ifEghNTBsF9bbe8dFilnCw==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.27.tgz", + "integrity": "sha512-no6Mi17eV2tHlJnqBHRLekpZ2/VYx+NfGxKcBE/2xOMYwctsanCaXxw4zapvNrGE9X38vefVXLz6YCF8b1EHiQ==", + "dev": true, + "optional": true + }, + "esbuild-linux-mips64le": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.27.tgz", + "integrity": "sha512-NolWP2uOvIJpbwpsDbwfeExZOY1bZNlWE/kVfkzLMsSgqeVcl5YMen/cedRe9mKnpfLli+i0uSp7N+fkKNU27A==", + "dev": true, + "optional": true + }, + "esbuild-linux-ppc64le": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.27.tgz", + "integrity": "sha512-/7dTjDvXMdRKmsSxKXeWyonuGgblnYDn0MI1xDC7J1VQXny8k1qgNp6VmrlsawwnsymSUUiThhkJsI+rx0taNA==", + "dev": true, + "optional": true + }, + "esbuild-linux-riscv64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.27.tgz", + "integrity": "sha512-D+aFiUzOJG13RhrSmZgrcFaF4UUHpqj7XSKrIiCXIj1dkIkFqdrmqMSOtSs78dOtObWiOrFCDDzB24UyeEiNGg==", + "dev": true, + "optional": true + }, + "esbuild-linux-s390x": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.27.tgz", + "integrity": "sha512-CD/D4tj0U4UQjELkdNlZhQ8nDHU5rBn6NGp47Hiz0Y7/akAY5i0oGadhEIg0WCY/HYVXFb3CsSPPwaKcTOW3bg==", + "dev": true, + "optional": true + }, + "esbuild-netbsd-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.27.tgz", + "integrity": "sha512-h3mAld69SrO1VoaMpYl3a5FNdGRE/Nqc+E8VtHOag4tyBwhCQXxtvDDOAKOUQexBGca0IuR6UayQ4ntSX5ij1Q==", + "dev": true, + "optional": true + }, + "esbuild-openbsd-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.27.tgz", + "integrity": "sha512-xwSje6qIZaDHXWoPpIgvL+7fC6WeubHHv18tusLYMwL+Z6bEa4Pbfs5IWDtQdHkArtfxEkIZz77944z8MgDxGw==", + "dev": true, + "optional": true + }, + "esbuild-sunos-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.27.tgz", + "integrity": "sha512-/nBVpWIDjYiyMhuqIqbXXsxBc58cBVH9uztAOIfWShStxq9BNBik92oPQPJ57nzWXRNKQUEFWr4Q98utDWz7jg==", + "dev": true, + "optional": true + }, + "esbuild-windows-32": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.27.tgz", + "integrity": "sha512-Q9/zEjhZJ4trtWhFWIZvS/7RUzzi8rvkoaS9oiizkHTTKd8UxFwn/Mm2OywsAfYymgUYm8+y2b+BKTNEFxUekw==", + "dev": true, + "optional": true + }, + "esbuild-windows-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.27.tgz", + "integrity": "sha512-b3y3vTSl5aEhWHK66ngtiS/c6byLf6y/ZBvODH1YkBM+MGtVL6jN38FdHUsZasCz9gFwYs/lJMVY9u7GL6wfYg==", + "dev": true, + "optional": true + }, + "esbuild-windows-arm64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.27.tgz", + "integrity": "sha512-I/reTxr6TFMcR5qbIkwRGvldMIaiBu2+MP0LlD7sOlNXrfqIl9uNjsuxFPGEG4IRomjfQ5q8WT+xlF/ySVkqKg==", + "dev": true, + "optional": true + }, "escalade": { "version": "3.1.1" }, @@ -26667,6 +57266,71 @@ } } }, + "eslint-import-resolver-webpack": { + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-webpack/-/eslint-import-resolver-webpack-0.13.2.tgz", + "integrity": "sha512-XodIPyg1OgE2h5BDErz3WJoK7lawxKTJNhgPNafRST6csC/MZC+L5P6kKqsZGRInpbgc02s/WZMrb4uGJzcuRg==", + "dev": true, + "requires": { + "array-find": "^1.0.0", + "debug": "^3.2.7", + "enhanced-resolve": "^0.9.1", + "find-root": "^1.1.0", + "has": "^1.0.3", + "interpret": "^1.4.0", + "is-core-module": "^2.7.0", + "is-regex": "^1.1.4", + "lodash": "^4.17.21", + "resolve": "^1.20.0", + "semver": "^5.7.1" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "enhanced-resolve": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz", + "integrity": "sha1-TW5omzcl+GCQknzMhs2fFjW4ni4=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.2.0", + "tapable": "^0.1.8" + } + }, + "interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true + }, + "memory-fs": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.2.0.tgz", + "integrity": "sha1-8rslNovBIeORwlIN6Slpyu4KApA=", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "tapable": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.1.10.tgz", + "integrity": "sha1-KcNXB8K3DlDQdIK10gLo7URtr9Q=", + "dev": true + } + } + }, "eslint-module-utils": { "version": "2.7.2", "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.2.tgz", @@ -26829,6 +57493,15 @@ } } }, + "eslint-plugin-prettier": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.0.0.tgz", + "integrity": "sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ==", + "dev": true, + "requires": { + "prettier-linter-helpers": "^1.0.0" + } + }, "eslint-plugin-promise": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.0.0.tgz", @@ -26849,6 +57522,58 @@ "@microsoft/tsdoc-config": "0.15.2" } }, + "eslint-plugin-vue": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-7.20.0.tgz", + "integrity": "sha512-oVNDqzBC9h3GO+NTgWeLMhhGigy6/bQaQbHS+0z7C4YEu/qK/yxHvca/2PTZtGNPsCrHwOTgKMrwu02A9iPBmw==", + "dev": true, + "requires": { + "eslint-utils": "^2.1.0", + "natural-compare": "^1.4.0", + "semver": "^6.3.0", + "vue-eslint-parser": "^7.10.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + }, + "espree": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "vue-eslint-parser": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.11.0.tgz", + "integrity": "sha512-qh3VhDLeh773wjgNTl7ss0VejY9bMMa0GoDG2fQVyDzRFdiU3L7fw74tWZDHNQXdZqxO3EveQroa9ct39D2nqg==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "eslint-scope": "^5.1.1", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.2.1", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^6.3.0" + } + } + } + }, "eslint-scope": { "version": "5.1.1", "dev": true, @@ -26934,6 +57659,12 @@ "estraverse": { "version": "4.3.0" }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, "esutils": { "version": "2.0.3" }, @@ -26955,6 +57686,22 @@ "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "exec-sh": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz", + "integrity": "sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==", + "dev": true + }, "execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -26972,6 +57719,15 @@ "strip-final-newline": "^2.0.0" } }, + "execall": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execall/-/execall-1.0.0.tgz", + "integrity": "sha1-c9CQTjlbPKsGWLCNCewlMH8pu3M=", + "dev": true, + "requires": { + "clone-regexp": "^1.0.0" + } + }, "exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", @@ -26983,6 +57739,110 @@ "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz", "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==" }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, "expand-tilde": { "version": "2.0.2", "dev": true, @@ -27102,6 +57962,15 @@ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, "external-editor": { "version": "3.1.0", "dev": true, @@ -27111,18 +57980,67 @@ "tmp": "^0.0.33" } }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "extract-files": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/extract-files/-/extract-files-11.0.0.tgz", + "integrity": "sha512-FuoE1qtbJ4bBVvv94CC7s0oTnKUGvQs+Rjf1L2SJFfS+HTVVjhPFtehPdQ0JiGPqVNfSSZvL5yzHHQq2Z4WNhQ==", + "dev": true + }, + "extract-from-css": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/extract-from-css/-/extract-from-css-0.4.4.tgz", + "integrity": "sha1-HqffLnx8brmSL6COitrqSG9vj5I=", + "dev": true, + "requires": { + "css": "^2.1.0" + } + }, "fast-deep-equal": { "version": "3.1.3" }, + "fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, "fast-glob": { - "version": "3.2.5", + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", "requires": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.0", + "glob-parent": "^5.1.2", "merge2": "^1.3.0", - "micromatch": "^4.0.2", - "picomatch": "^2.2.1" + "micromatch": "^4.0.4" } }, "fast-json-stable-stringify": { @@ -27168,12 +58086,27 @@ "fast-xml-parser": { "version": "3.19.0" }, + "fastest-levenshtein": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", + "dev": true + }, "fastq": { "version": "1.11.0", "requires": { "reusify": "^1.0.4" } }, + "fault": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz", + "integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==", + "dev": true, + "requires": { + "format": "^0.2.0" + } + }, "fb-watchman": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", @@ -27212,6 +58145,79 @@ "flat-cache": "^3.0.4" } }, + "file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "file-saver": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz", + "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==", + "dev": true + }, + "file-system-cache": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/file-system-cache/-/file-system-cache-1.0.5.tgz", + "integrity": "sha1-hCWbNqK7uNPW6xAh0xMv/mTP/08=", + "dev": true, + "requires": { + "bluebird": "^3.3.5", + "fs-extra": "^0.30.0", + "ramda": "^0.21.0" + }, + "dependencies": { + "fs-extra": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0", + "path-is-absolute": "^1.0.0", + "rimraf": "^2.2.8" + } + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, "file-uri-to-path": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-2.0.0.tgz", @@ -27246,6 +58252,87 @@ } } }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, "find-node-modules": { "version": "2.1.2", "dev": true, @@ -27304,9 +58391,131 @@ "version": "3.1.1", "dev": true }, + "flatten": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", + "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==", + "dev": true + }, + "flow-parser": { + "version": "0.174.1", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.174.1.tgz", + "integrity": "sha512-nDMOvlFR+4doLpB3OJpseHZ7uEr3ENptlF6qMas/kzQmNcLzMwfQeFX0gGJ/+em7UdldB/nGsk55tDTOvjbCuw==", + "dev": true + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, "fn.name": { "version": "1.1.0" }, + "follow-redirects": { + "version": "1.14.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", + "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==" + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "fork-ts-checker-webpack-plugin": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.0.tgz", + "integrity": "sha512-cS178Y+xxtIjEUorcHddKS7yCMlrDPV31mt47blKKRfMd70Kxu5xruAFE2o9sDY6wVC5deuob/u/alD04YYHnw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@types/json-schema": "^7.0.5", + "chalk": "^4.1.0", + "chokidar": "^3.4.2", + "cosmiconfig": "^6.0.0", + "deepmerge": "^4.2.2", + "fs-extra": "^9.0.0", + "glob": "^7.1.6", + "memfs": "^3.1.2", + "minimatch": "^3.0.4", + "schema-utils": "2.7.0", + "semver": "^7.3.2", + "tapable": "^1.0.0" + }, + "dependencies": { + "cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + } + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "schema-utils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, "form-data": { "version": "3.0.1", "requires": { @@ -27315,6 +58524,12 @@ "mime-types": "^2.1.12" } }, + "format": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", + "integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=", + "dev": true + }, "formidable": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz", @@ -27332,6 +58547,21 @@ "frac": { "version": "1.1.2" }, + "fraction.js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, "fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", @@ -27380,6 +58610,24 @@ "minipass": "^3.0.0" } }, + "fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", + "dev": true + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, "fs.realpath": { "version": "1.0.0", "dev": true @@ -27424,10 +58672,34 @@ "function-bind": { "version": "1.1.1" }, + "function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + } + }, "functional-red-black-tree": { "version": "1.0.1", "dev": true }, + "functions-have-names": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.2.tgz", + "integrity": "sha512-bLgc3asbWdwPbx2mNk2S49kmJCuQeu0nfmaOgbs8WIyzzkw3r4htszdIi9Q9EMezDPTYuJx2wvjZ/EwgAthpnA==", + "dev": true + }, + "fuse.js": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-3.6.1.tgz", + "integrity": "sha512-hT9yh/tiinkmirKrlv4KWOjztdoZo1mx9Qh4KvWqC7isoXwdUY3PNWUxceF4/qO9R6riA2C29jdTOeQOIROjgw==", + "dev": true + }, "gauge": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.3.tgz", @@ -27700,6 +58972,12 @@ "ftp": "^0.3.10" } }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, "getopts": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/getopts/-/getopts-2.3.0.tgz", @@ -27763,6 +59041,31 @@ "is-glob": "^4.0.1" } }, + "glob-promise": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/glob-promise/-/glob-promise-3.4.0.tgz", + "integrity": "sha512-q08RJ6O+eJn+dVanerAndJwIcumgbDdYiUT7zFQl3Wm1xD6fBKtah7H8ZJChj4wP+8C+QfeVy8xautR7rdmKEw==", + "dev": true, + "requires": { + "@types/glob": "*" + } + }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "dev": true, + "requires": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, "global-dirs": { "version": "0.1.1", "dev": true, @@ -27817,19 +59120,34 @@ } } }, + "globalthis": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.2.tgz", + "integrity": "sha512-ZQnSFO1la8P7auIOQECnm0sSuoMeaSq0EEdXMBFF2QJO4uNcwbyhSgG3MruWNbFTqCLmxVwGOl7LZ9kASvHdeQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3" + } + }, "globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "requires": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", "slash": "^3.0.0" } }, + "globjoin": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", + "integrity": "sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=", + "dev": true + }, "google-auth-library": { "version": "7.12.0", "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-7.12.0.tgz", @@ -27893,6 +59211,17 @@ "graphql-fields": { "version": "2.0.3" }, + "graphql-react": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/graphql-react/-/graphql-react-15.0.0.tgz", + "integrity": "sha512-isqUWv7nLioxHT09LlZN6RWCvWBVkJUN27RCvoQ8BpflnmxkB0u03/XFQK90+5Y78/G3mdqrcA1J9hGX2V1Xkg==", + "dev": true, + "requires": { + "extract-files": "^11.0.0", + "isobject": "^4.0.0", + "react-waterfall-render": "^2.0.0" + } + }, "graphql-scalars": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/graphql-scalars/-/graphql-scalars-1.15.0.tgz", @@ -27901,6 +59230,15 @@ "tslib": "~2.3.0" } }, + "graphql-tag": { + "version": "2.12.6", + "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", + "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", + "dev": true, + "requires": { + "tslib": "^2.1.0" + } + }, "graphql-type-json": { "version": "0.3.2", "requires": {} @@ -27990,8 +59328,30 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, + "has-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-glob/-/has-glob-1.0.0.tgz", + "integrity": "sha1-mqqe7b/7G6OZCnsAEPtnjuAIEgc=", + "dev": true, + "requires": { + "is-glob": "^3.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, "has-symbols": { - "version": "1.0.2", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true }, "has-tostringtag": { @@ -28009,15 +59369,206 @@ "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", "dev": true }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, "has-yarn": { "version": "2.1.0", "dev": true }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, "hash-stream-validation": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/hash-stream-validation/-/hash-stream-validation-0.2.4.tgz", "integrity": "sha512-Gjzu0Xn7IagXVkSu9cSFuK1fqzwtLwFhNhVL8IFJijRNMgUttFbBSIAzKuSIrsFMO1+g1RlsoN49zPIbwPDMGQ==" }, + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "dev": true + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hast-to-hyperscript": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz", + "integrity": "sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA==", + "dev": true, + "requires": { + "@types/unist": "^2.0.3", + "comma-separated-tokens": "^1.0.0", + "property-information": "^5.3.0", + "space-separated-tokens": "^1.0.0", + "style-to-object": "^0.3.0", + "unist-util-is": "^4.0.0", + "web-namespaces": "^1.0.0" + } + }, + "hast-util-from-parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-6.0.1.tgz", + "integrity": "sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA==", + "dev": true, + "requires": { + "@types/parse5": "^5.0.0", + "hastscript": "^6.0.0", + "property-information": "^5.0.0", + "vfile": "^4.0.0", + "vfile-location": "^3.2.0", + "web-namespaces": "^1.0.0" + } + }, + "hast-util-parse-selector": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz", + "integrity": "sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==", + "dev": true + }, + "hast-util-raw": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-6.0.1.tgz", + "integrity": "sha512-ZMuiYA+UF7BXBtsTBNcLBF5HzXzkyE6MLzJnL605LKE8GJylNjGc4jjxazAHUtcwT5/CEt6afRKViYB4X66dig==", + "dev": true, + "requires": { + "@types/hast": "^2.0.0", + "hast-util-from-parse5": "^6.0.0", + "hast-util-to-parse5": "^6.0.0", + "html-void-elements": "^1.0.0", + "parse5": "^6.0.0", + "unist-util-position": "^3.0.0", + "vfile": "^4.0.0", + "web-namespaces": "^1.0.0", + "xtend": "^4.0.0", + "zwitch": "^1.0.0" + } + }, + "hast-util-to-parse5": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-6.0.0.tgz", + "integrity": "sha512-Lu5m6Lgm/fWuz8eWnrKezHtVY83JeRGaNQ2kn9aJgqaxvVkFCZQBEhgodZUDUvoodgyROHDb3r5IxAEdl6suJQ==", + "dev": true, + "requires": { + "hast-to-hyperscript": "^9.0.0", + "property-information": "^5.0.0", + "web-namespaces": "^1.0.0", + "xtend": "^4.0.0", + "zwitch": "^1.0.0" + } + }, + "hastscript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz", + "integrity": "sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==", + "dev": true, + "requires": { + "@types/hast": "^2.0.0", + "comma-separated-tokens": "^1.0.0", + "hast-util-parse-selector": "^2.0.0", + "property-information": "^5.0.0", + "space-separated-tokens": "^1.0.0" + } + }, "he": { "version": "1.2.0" }, @@ -28027,6 +59578,49 @@ "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==", "dev": true }, + "highlight.js": { + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", + "dev": true + }, + "history": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.0.0.tgz", + "integrity": "sha512-3NyRMKIiFSJmIPdq7FxkNMJkQ7ZEtVblOQ38VtKaA0zZMW1Eo6Q6W8oDKEflr1kNNTItSnk4JMCO1deeSgbLLg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.6" + } + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dev": true, + "requires": { + "react-is": "^16.7.0" + }, + "dependencies": { + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + } + } + }, "homedir-polyfill": { "version": "1.0.3", "dev": true, @@ -28053,12 +59647,39 @@ "whatwg-encoding": "^1.0.5" } }, + "html-entities": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz", + "integrity": "sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==", + "dev": true + }, "html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, + "html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "dev": true, + "requires": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + } + }, + "html-tags": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.1.0.tgz", + "integrity": "sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==", + "dev": true + }, "html-to-text": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/html-to-text/-/html-to-text-8.1.0.tgz", @@ -28072,6 +59693,33 @@ "selderee": "^0.6.0" } }, + "html-void-elements": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-1.0.5.tgz", + "integrity": "sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w==", + "dev": true + }, + "html-webpack-plugin": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", + "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", + "dev": true, + "requires": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "dependencies": { + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true + } + } + }, "htmlparser2": { "version": "6.1.0", "requires": { @@ -28106,6 +59754,16 @@ } } }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, "http-proxy-agent": { "version": "4.0.1", "requires": { @@ -28114,6 +59772,31 @@ "debug": "4" } }, + "http-proxy-middleware": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.4.tgz", + "integrity": "sha512-m/4FxX17SUvz4lJ5WPXOHDUuCwIqXLfLHs1s0uZ3oYjhoXlx9csYxaOa0ElDEJ+h8Q4iJ1s+lTMbiCa4EXIJqg==", + "requires": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "dependencies": { + "is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==" + } + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, "https-proxy-agent": { "version": "5.0.0", "requires": { @@ -28148,11 +59831,38 @@ "safer-buffer": ">= 2.1.2 < 3" } }, + "icss-utils": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", + "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", + "dev": true, + "requires": { + "postcss": "^7.0.14" + }, + "dependencies": { + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + } + } + }, "ieee754": { "version": "1.1.13", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, "ignore": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", @@ -28217,6 +59927,12 @@ "version": "4.0.0", "dev": true }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, "infer-owner": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", @@ -28238,6 +59954,12 @@ "version": "1.3.8", "dev": true }, + "inline-style-parser": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", + "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==", + "dev": true + }, "inquirer": { "version": "6.5.2", "dev": true, @@ -28328,6 +60050,15 @@ "interpret": { "version": "2.2.0" }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, "ip": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", @@ -28338,6 +60069,41 @@ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "dev": true + }, + "is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dev": true, + "requires": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + } + }, + "is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, "is-arrayish": { "version": "0.2.1", "dev": true @@ -28362,12 +60128,35 @@ "call-bind": "^1.0.2" } }, + "is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true + }, "is-callable": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", "dev": true }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + }, + "dependencies": { + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + } + } + }, "is-core-module": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", @@ -28376,10 +60165,68 @@ "has": "^1.0.3" } }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, "is-date-object": { "version": "1.0.4", "dev": true }, + "is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "dev": true + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true + }, + "is-dom": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-dom/-/is-dom-1.1.0.tgz", + "integrity": "sha512-u82f6mvhYxRPKpw8V1N0W8ce1xXwOrQtgGcxl6UCL5zBmZu3is/18K0rR7uFCnMDuAsS/3W54mGL4vsaFUQlEQ==", + "dev": true, + "requires": { + "is-object": "^1.0.1", + "is-window": "^1.0.2" + } + }, + "is-expression": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-4.0.0.tgz", + "integrity": "sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "object-assign": "^4.1.1" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, "is-extglob": { "version": "2.1.1" }, @@ -28391,6 +60238,12 @@ "version": "2.0.0", "dev": true }, + "is-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==", + "dev": true + }, "is-generator-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", @@ -28405,6 +60258,12 @@ "is-extglob": "^2.1.1" } }, + "is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "dev": true + }, "is-installed-globally": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", @@ -28438,6 +60297,12 @@ "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", "dev": true }, + "is-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "dev": true + }, "is-negative-zero": { "version": "2.0.1", "dev": true @@ -28455,6 +60320,12 @@ "version": "1.0.5", "dev": true }, + "is-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz", + "integrity": "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==", + "dev": true + }, "is-path-cwd": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", @@ -28483,6 +60354,12 @@ "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", "dev": true }, + "is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true + }, "is-regex": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", @@ -28493,6 +60370,18 @@ "has-tostringtag": "^1.0.0" } }, + "is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", + "dev": true + }, + "is-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "dev": true + }, "is-shared-array-buffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", @@ -28511,6 +60400,12 @@ "has-tostringtag": "^1.0.0" } }, + "is-supported-regexp-flag": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-supported-regexp-flag/-/is-supported-regexp-flag-1.0.1.tgz", + "integrity": "sha512-3vcJecUUrpgCqc/ca0aWeNu64UGgxcvO60K/Fkr1N6RSvfGCTU60UKN68JDmKokgba0rFFJs12EnzOQa14ubKQ==", + "dev": true + }, "is-symbol": { "version": "1.0.4", "dev": true, @@ -28541,10 +60436,43 @@ "call-bind": "^1.0.0" } }, + "is-whitespace": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-whitespace/-/is-whitespace-0.3.0.tgz", + "integrity": "sha1-Fjnssb4DauxppUy7QBz77XEUq38=", + "dev": true + }, + "is-whitespace-character": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz", + "integrity": "sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==", + "dev": true + }, + "is-window": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-window/-/is-window-1.0.2.tgz", + "integrity": "sha1-LIlspT25feRdPDMTOmXYyfVjSA0=", + "dev": true + }, "is-windows": { "version": "1.0.2", "dev": true }, + "is-word-character": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.4.tgz", + "integrity": "sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==", + "dev": true + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + }, "is-yarn-global": { "version": "0.3.0", "dev": true @@ -28555,6 +60483,12 @@ "isexe": { "version": "2.0.0" }, + "isobject": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz", + "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==", + "dev": true + }, "issue-parser": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-6.0.0.tgz", @@ -28630,6 +60564,22 @@ "iterall": { "version": "1.3.0" }, + "iterate-iterator": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/iterate-iterator/-/iterate-iterator-1.0.2.tgz", + "integrity": "sha512-t91HubM4ZDQ70M9wqp+pcNpu8OyJ9UAtXntT/Bcsvp5tZMnz9vRa+IunKXeI8AnfZMTv0jNuVEmGeLSMjVvfPw==", + "dev": true + }, + "iterate-value": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/iterate-value/-/iterate-value-1.0.2.tgz", + "integrity": "sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ==", + "dev": true, + "requires": { + "es-get-iterator": "^1.0.2", + "iterate-iterator": "^1.0.1" + } + }, "java-properties": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-1.0.2.tgz", @@ -28807,6 +60757,16 @@ "jest-util": "^27.5.1" } }, + "jest-fetch-mock": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/jest-fetch-mock/-/jest-fetch-mock-3.0.3.tgz", + "integrity": "sha512-Ux1nWprtLrdrH4XwE7O7InRY6psIi3GOsqNESJgMJ+M5cv4A8Lh7SN9d2V2kKRZ8ebAfcd1LNyZguAOb6JiDqw==", + "dev": true, + "requires": { + "cross-fetch": "^3.0.4", + "promise-polyfill": "^8.1.3" + } + }, "jest-get-type": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", @@ -29028,6 +60988,15 @@ "graceful-fs": "^4.2.9" } }, + "jest-serializer-vue": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/jest-serializer-vue/-/jest-serializer-vue-2.0.2.tgz", + "integrity": "sha1-sjjvKGNX7GtIBCG9RxRQUJh9WbM=", + "dev": true, + "requires": { + "pretty": "2.0.0" + } + }, "jest-snapshot": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", @@ -29058,6 +61027,301 @@ "semver": "^7.3.2" } }, + "jest-specific-snapshot": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jest-specific-snapshot/-/jest-specific-snapshot-4.0.0.tgz", + "integrity": "sha512-YdW5P/MVwOizWR0MJwURxdrjdXvdG2MMpXKVGr7dZ2YrBmE6E6Ab74UL3DOYmGmzaCnNAW1CL02pY5MTHE3ulQ==", + "dev": true, + "requires": { + "jest-snapshot": "^26.3.0" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.14", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", + "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "diff-sequences": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", + "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", + "dev": true + }, + "expect": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz", + "integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "ansi-styles": "^4.0.0", + "jest-get-type": "^26.3.0", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-regex-util": "^26.0.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "jest-diff": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", + "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + } + }, + "jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "dev": true + }, + "jest-haste-map": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz", + "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.1.2", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^26.0.0", + "jest-serializer": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "micromatch": "^4.0.2", + "sane": "^4.0.3", + "walker": "^1.0.7" + } + }, + "jest-matcher-utils": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz", + "integrity": "sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + } + }, + "jest-message-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", + "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2", + "slash": "^3.0.0", + "stack-utils": "^2.0.2" + } + }, + "jest-regex-util": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", + "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", + "dev": true + }, + "jest-resolve": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", + "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" + } + }, + "jest-serializer": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz", + "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==", + "dev": true, + "requires": { + "@types/node": "*", + "graceful-fs": "^4.2.4" + } + }, + "jest-snapshot": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz", + "integrity": "sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.0.0", + "chalk": "^4.0.0", + "expect": "^26.6.2", + "graceful-fs": "^4.2.4", + "jest-diff": "^26.6.2", + "jest-get-type": "^26.3.0", + "jest-haste-map": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-resolve": "^26.6.2", + "natural-compare": "^1.4.0", + "pretty-format": "^26.6.2", + "semver": "^7.3.2" + } + }, + "jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + } + }, + "jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + } + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + } + } + } + }, + "jest-transform-stub": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jest-transform-stub/-/jest-transform-stub-2.0.0.tgz", + "integrity": "sha512-lspHaCRx/mBbnm3h4uMMS3R5aZzMwyNpNIJLXj4cEsV0mIUtS4IjYJLSoyjRCtnxb6RIGJ4NL2quZzfIeNhbkg==", + "dev": true + }, "jest-util": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", @@ -29149,6 +61413,36 @@ "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz", "integrity": "sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==" }, + "js-base64": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", + "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==", + "dev": true + }, + "js-beautify": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.0.tgz", + "integrity": "sha512-yuck9KirNSCAwyNJbqW+BxJqJ0NLJ4PwBUzQQACl5O3qHMBXVkXb/rD0ilh/Lat/tn88zSZ+CAHOlk0DsY7GuQ==", + "dev": true, + "requires": { + "config-chain": "^1.1.12", + "editorconfig": "^0.15.3", + "glob": "^7.1.3", + "nopt": "^5.0.0" + } + }, + "js-string-escape": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", + "integrity": "sha1-4mJbrbwNZ8dTPp7cEGjFh65BN+8=", + "dev": true + }, + "js-stringify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", + "integrity": "sha1-Fzb939lyTyijaCrcYjCufk6Weds=", + "dev": true + }, "js-tokens": { "version": "4.0.0", "dev": true @@ -29161,6 +61455,192 @@ "esprima": "^4.0.0" } }, + "jscodeshift": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.7.1.tgz", + "integrity": "sha512-YMkZSyoc8zg5woZL23cmWlnFLPH/mHilonGA7Qbzs7H6M4v4PH0Qsn4jeDyw+CHhVoAnm9UxQyB0Yw1OT+mktA==", + "dev": true, + "requires": { + "@babel/core": "^7.1.6", + "@babel/parser": "^7.1.6", + "@babel/plugin-proposal-class-properties": "^7.1.0", + "@babel/plugin-proposal-object-rest-spread": "^7.0.0", + "@babel/preset-env": "^7.1.6", + "@babel/preset-flow": "^7.0.0", + "@babel/preset-typescript": "^7.1.0", + "@babel/register": "^7.0.0", + "babel-core": "^7.0.0-bridge.0", + "colors": "^1.1.2", + "flow-parser": "0.*", + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "neo-async": "^2.5.0", + "node-dir": "^0.1.17", + "recast": "^0.18.1", + "temp": "^0.8.1", + "write-file-atomic": "^2.3.0" + }, + "dependencies": { + "ast-types": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.3.tgz", + "integrity": "sha512-XTZ7xGML849LkQP86sWdQzfhwbt3YwIO6MqbX9mUNYY98VKaaVZP7YNNm70IpwecbkkxmfC5IYAzOQ/2p29zRA==", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + } + } + }, + "recast": { + "version": "0.18.10", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.18.10.tgz", + "integrity": "sha512-XNvYvkfdAN9QewbrxeTOjgINkdY/odTgTS56ZNEWL9Ml0weT4T3sFtvnTuF+Gxyu46ANcRm1ntrF6F5LAJPAaQ==", + "dev": true, + "requires": { + "ast-types": "0.13.3", + "esprima": "~4.0.0", + "private": "^0.1.8", + "source-map": "~0.6.1" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + } + } + }, "jsdom": { "version": "16.7.0", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", @@ -29247,6 +61727,25 @@ "version": "5.0.1", "dev": true }, + "json2csv": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/json2csv/-/json2csv-5.0.7.tgz", + "integrity": "sha512-YRZbUnyaJZLZUJSRi2G/MqahCyRv9n/ds+4oIetjDF3jWQA7AG7iSeKTiZiCNqtMZM7HDyt0e/W6lEnoGEmMGA==", + "dev": true, + "requires": { + "commander": "^6.1.0", + "jsonparse": "^1.3.1", + "lodash.get": "^4.4.2" + }, + "dependencies": { + "commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true + } + } + }, "json5": { "version": "2.2.0", "dev": true, @@ -29362,6 +61861,16 @@ } } }, + "jstransformer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", + "integrity": "sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM=", + "dev": true, + "requires": { + "is-promise": "^2.0.0", + "promise": "^7.0.1" + } + }, "jszip": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.7.1.tgz", @@ -29373,6 +61882,12 @@ "set-immediate-shim": "~1.0.1" } }, + "junk": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz", + "integrity": "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==", + "dev": true + }, "jwa": { "version": "1.4.1", "requires": { @@ -29399,10 +61914,25 @@ "version": "6.0.3", "dev": true }, + "klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.9" + } + }, "kleur": { "version": "3.0.3", "dev": true }, + "klona": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", + "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", + "dev": true + }, "knex": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/knex/-/knex-1.0.4.tgz", @@ -29433,6 +61963,12 @@ } } }, + "known-css-properties": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.24.0.tgz", + "integrity": "sha512-RTSoaUAfLvpR357vWzAz/50Q/BmHfmE6ETSWfutT0AJiw10e6CmcdYRQJlLRd95B53D0Y2aD1jSxD3V3ySF+PA==", + "dev": true + }, "kuler": { "version": "2.0.0" }, @@ -29443,6 +61979,59 @@ "package-json": "^6.3.0" } }, + "lazy-universal-dotenv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lazy-universal-dotenv/-/lazy-universal-dotenv-3.0.1.tgz", + "integrity": "sha512-prXSYk799h3GY3iOWnC6ZigYzMPjxN2svgjJ9shk7oMadSNX3wXy0B6F32PMJv7qtMnrIbUxoEHzbutvxR2LBQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.5.0", + "app-root-dir": "^1.0.2", + "core-js": "^3.0.4", + "dotenv": "^8.0.0", + "dotenv-expand": "^5.1.0" + }, + "dependencies": { + "dotenv": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", + "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", + "dev": true + } + } + }, + "leaflet": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.7.1.tgz", + "integrity": "sha512-/xwPEBidtg69Q3HlqPdU3DnrXQOvQU/CCHA1tcDQVzOwm91YMYaILjNp7L4Eaw5Z4sOYdbBz6koWyibppd8Zqw==", + "dev": true + }, + "leaflet-fullscreen": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/leaflet-fullscreen/-/leaflet-fullscreen-1.0.2.tgz", + "integrity": "sha1-CcYcS6xF9jsu4Sav2H5c2XZQ/Bs=", + "dev": true + }, + "leaflet-gesture-handling": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/leaflet-gesture-handling/-/leaflet-gesture-handling-1.2.2.tgz", + "integrity": "sha512-Blf5V4PoNphWkzL7Y1qge+Spkd4OCQ2atjwUNhMhLIcjKzPcBH++x/lwOinaR9jSqLWqJ6oKYO8d0XdTffy4hQ==", + "dev": true + }, + "leaflet-markers-canvas": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/leaflet-markers-canvas/-/leaflet-markers-canvas-0.2.2.tgz", + "integrity": "sha512-UU/98qrmljhU6Xl3lrsUAUke4Qb/p8BCfmhiw7L1hHtkVMxdRYgwk7RwUW9QNoPbhnmuyxsc90whKjWVVP5cNw==", + "dev": true, + "requires": {} + }, + "leaflet.markercluster": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.3.tgz", + "integrity": "sha512-vPTw/Bndq7eQHjLBVlWpnGeLa3t+3zGiuM7fJwCkiMFq+nmRuG3RI3f7f4N4TDX7T4NpbAXpR2+NTRSEGfCSeA==", + "dev": true, + "requires": {} + }, "leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -29644,6 +62233,44 @@ } } }, + "loader-runner": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", + "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", + "dev": true, + "peer": true + }, + "loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "localforage": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz", + "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==", + "dev": true, + "requires": { + "lie": "3.1.1" + }, + "dependencies": { + "lie": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", + "integrity": "sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=", + "dev": true, + "requires": { + "immediate": "~3.0.5" + } + } + } + }, "locate-path": { "version": "2.0.0", "dev": true, @@ -29655,12 +62282,64 @@ "lodash": { "version": "4.17.21" }, + "lodash._baseiteratee": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash._baseiteratee/-/lodash._baseiteratee-4.7.0.tgz", + "integrity": "sha1-NKm1VDVycnw9sueO2uPA6eZr0QI=", + "dev": true, + "requires": { + "lodash._stringtopath": "~4.8.0" + } + }, + "lodash._basetostring": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-4.12.0.tgz", + "integrity": "sha1-kyfJ3FFYhmt/pLnUL0Y45XZt2d8=", + "dev": true + }, + "lodash._baseuniq": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash._baseuniq/-/lodash._baseuniq-4.6.0.tgz", + "integrity": "sha1-DrtE5FaBSveQXGIS+iybLVG4Qeg=", + "dev": true, + "requires": { + "lodash._createset": "~4.0.0", + "lodash._root": "~3.0.0" + } + }, + "lodash._createset": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/lodash._createset/-/lodash._createset-4.0.3.tgz", + "integrity": "sha1-D0ZZ+7CddRlPqeK4imZE02PJ/iY=", + "dev": true + }, + "lodash._root": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", + "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", + "dev": true + }, + "lodash._stringtopath": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/lodash._stringtopath/-/lodash._stringtopath-4.8.0.tgz", + "integrity": "sha1-lBvPDmQmbl/B1m/tCmlZVExXaCQ=", + "dev": true, + "requires": { + "lodash._basetostring": "~4.12.0" + } + }, "lodash.capitalize": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz", "integrity": "sha1-+CbJtOKoUR2E46yinbBeGk87cqk=", "dev": true }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, "lodash.deburr": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/lodash.deburr/-/lodash.deburr-4.1.0.tgz", @@ -29676,8 +62355,7 @@ "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", - "dev": true, - "optional": true + "dev": true }, "lodash.includes": { "version": "4.3.0" @@ -29718,12 +62396,24 @@ "lodash.once": { "version": "4.1.1" }, + "lodash.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=", + "dev": true + }, "lodash.truncate": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", "dev": true }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, "lodash.uniqby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", @@ -29870,6 +62560,15 @@ "version": "2.0.1", "dev": true }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, "loud-rejection": { "version": "1.6.0", "dev": true, @@ -29878,10 +62577,29 @@ "signal-exit": "^3.0.0" } }, + "lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "requires": { + "tslib": "^2.0.3" + } + }, "lowercase-keys": { "version": "1.0.1", "dev": true }, + "lowlight": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-1.20.0.tgz", + "integrity": "sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==", + "dev": true, + "requires": { + "fault": "^1.0.0", + "highlight.js": "~10.7.0" + } + }, "lru_map": { "version": "0.3.3" }, @@ -29895,6 +62613,15 @@ "version": "2.3.9", "dev": true }, + "magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.8" + } + }, "make-dir": { "version": "3.1.0", "requires": { @@ -29967,10 +62694,44 @@ "tmpl": "1.0.5" } }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, "map-obj": { "version": "4.2.1", "dev": true }, + "map-or-similar": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/map-or-similar/-/map-or-similar-1.5.0.tgz", + "integrity": "sha1-beJlMXSt+12e3DPGnT6Sobdvrwg=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "markdown-escapes": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz", + "integrity": "sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==", + "dev": true + }, + "markdown-to-jsx": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.1.7.tgz", + "integrity": "sha512-VI3TyyHlGkO8uFle0IOibzpO1c1iJDcXcS/zBrQrXQQvJ2tpdwVzVZ7XdKsyRz1NdRmre4dqQkMZzUHaKIG/1w==", + "dev": true, + "requires": {} + }, "marked": { "version": "4.0.12", "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.12.tgz", @@ -30039,14 +62800,260 @@ } } }, + "mathml-tag-names": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", + "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", + "dev": true + }, "matomo-tracker": { "version": "2.2.4" }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mdast-squeeze-paragraphs": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-4.0.0.tgz", + "integrity": "sha512-zxdPn69hkQ1rm4J+2Cs2j6wDEv7O17TfXTJ33tl/+JPIoEmtV9t2ZzBM5LPHE8QlHsmVD8t3vPKCyY3oH+H8MQ==", + "dev": true, + "requires": { + "unist-util-remove": "^2.0.0" + } + }, + "mdast-util-definitions": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz", + "integrity": "sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==", + "dev": true, + "requires": { + "unist-util-visit": "^2.0.0" + } + }, + "mdast-util-to-hast": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-10.0.1.tgz", + "integrity": "sha512-BW3LM9SEMnjf4HXXVApZMt8gLQWVNXc3jryK0nJu/rOXPOnlkUjmdkDlmxMirpbU9ILncGFIwLH/ubnWBbcdgA==", + "dev": true, + "requires": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "mdast-util-definitions": "^4.0.0", + "mdurl": "^1.0.0", + "unist-builder": "^2.0.0", + "unist-util-generated": "^1.0.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^2.0.0" + } + }, + "mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", + "dev": true + }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" }, + "memfs": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.1.tgz", + "integrity": "sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw==", + "dev": true, + "requires": { + "fs-monkey": "1.0.3" + } + }, + "memoizerific": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/memoizerific/-/memoizerific-1.11.3.tgz", + "integrity": "sha1-fIekZGREwy11Q4VwkF8tvRsagFo=", + "dev": true, + "requires": { + "map-or-similar": "^1.5.0" + } + }, + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "meow": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", + "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", + "dev": true, + "requires": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize": "^1.2.0", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "dependencies": { + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "requires": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "dependencies": { + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } + } + }, + "type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true + } + } + }, "merge": { "version": "2.1.1", "dev": true @@ -30069,6 +63076,12 @@ "mgrs": { "version": "1.0.0" }, + "microevent.ts": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/microevent.ts/-/microevent.ts-0.1.1.tgz", + "integrity": "sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g==", + "dev": true + }, "micromatch": { "version": "4.0.4", "requires": { @@ -30076,6 +63089,24 @@ "picomatch": "^2.2.3" } }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, "mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", @@ -30086,6 +63117,15 @@ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==" }, + "mime-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/mime-match/-/mime-match-1.0.2.tgz", + "integrity": "sha1-P4fDHprxpf1IX7nbE0Qosju7e6g=", + "dev": true, + "requires": { + "wildcard": "^1.1.0" + } + }, "mime-types": { "version": "2.1.34", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", @@ -30104,10 +63144,31 @@ "version": "1.0.1", "dev": true }, + "min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "dev": true, + "requires": { + "dom-walk": "^0.1.0" + } + }, "min-indent": { "version": "1.0.1", "dev": true }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, "minimatch": { "version": "3.0.4", "dev": true, @@ -30204,6 +63265,97 @@ "yallist": "^4.0.0" } }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + }, + "dependencies": { + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + } + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, "mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -30226,6 +63378,52 @@ "moo": { "version": "0.5.1" }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + }, + "dependencies": { + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, "ms": { "version": "2.1.2" }, @@ -30233,6 +63431,80 @@ "version": "0.0.7", "dev": true }, + "namespace-emitter": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/namespace-emitter/-/namespace-emitter-2.0.1.tgz", + "integrity": "sha512-N/sMKHniSDJBjfrkbS/tpkPj4RAbvW3mr8UAzvlMHyun93XEm83IAvhWtJVHo+RHn/oO8Job5YN4b+wRjSVp5g==", + "dev": true + }, + "nan": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", + "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", + "dev": true, + "optional": true + }, + "nanoid": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", + "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", + "dev": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, "natural-compare": { "version": "1.4.0", "dev": true @@ -30266,11 +63538,42 @@ "integrity": "sha1-5tq3/r9a2Bbqgc9cYpxaDr3nLBo=", "dev": true }, + "nested-error-stacks": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz", + "integrity": "sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug==", + "dev": true + }, "netmask": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==" }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "requires": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node-dir": { + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", + "integrity": "sha1-X1Zl2TNRM1yqvvjxxVRRbPXx5OU=", + "dev": true, + "requires": { + "minimatch": "^3.0.2" + } + }, "node-emoji": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", @@ -30338,6 +63641,69 @@ "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", "dev": true }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + } + } + }, "node-mailjet": { "version": "3.3.7", "resolved": "https://registry.npmjs.org/node-mailjet/-/node-mailjet-3.3.7.tgz", @@ -30351,9 +63717,9 @@ } }, "node-releases": { - "version": "1.1.77", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.77.tgz", - "integrity": "sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", + "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==", "dev": true }, "nodemon": { @@ -30429,6 +63795,18 @@ "remove-trailing-separator": "^1.0.1" } }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "normalize-selector": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/normalize-selector/-/normalize-selector-0.2.0.tgz", + "integrity": "sha1-0LFF62kRicY6eNIB3E/bEpPvDAM=", + "dev": true + }, "npm": { "version": "8.3.1", "resolved": "https://registry.npmjs.org/npm/-/npm-8.3.1.tgz", @@ -32425,10 +65803,25 @@ "set-blocking": "^2.0.0" } }, + "nth-check": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, "null-check": { "version": "1.0.0", "dev": true }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, "nwsapi": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", @@ -32438,6 +65831,80 @@ "object-assign": { "version": "4.1.1" }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, "object-inspect": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", @@ -32453,6 +65920,23 @@ "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.8.tgz", "integrity": "sha512-YJjNZrlXJFM42wTBn6zgOJVar9KFJvzx6sTWDte8sWZF//cnjl0BxHNpfZx+ZffXX63A9q0b1zsFiBX4g4X5KA==" }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, "object.assign": { "version": "4.1.2", "dev": true, @@ -32463,6 +65947,56 @@ "object-keys": "^1.1.1" } }, + "object.entries": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", + "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "object.fromentries": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", + "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz", + "integrity": "sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, "object.values": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", @@ -32557,6 +66091,16 @@ } } }, + "open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "dev": true, + "requires": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + } + }, "optionator": { "version": "0.9.1", "dev": true, @@ -32569,16 +66113,54 @@ "word-wrap": "^1.2.3" } }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, "os-tmpdir": { "version": "1.0.2", "dev": true }, + "overlayscrollbars": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/overlayscrollbars/-/overlayscrollbars-1.13.1.tgz", + "integrity": "sha512-gIQfzgGgu1wy80EB4/6DaJGHMEGmizq27xHIESrzXq0Y/J0Ay1P3DWk6tuVmEPIZH15zaBlxeEJOqdJKmowHCQ==", + "dev": true + }, + "p-all": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-all/-/p-all-2.1.0.tgz", + "integrity": "sha512-HbZxz5FONzz/z2gJfk6bFca0BCiSRF8jU3yCsWOen/vR6lZjfPOu/e7L3uFzTW1i0H8TlC3vqQstEJPQL4/uLA==", + "dev": true, + "requires": { + "p-map": "^2.0.0" + }, + "dependencies": { + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true + } + } + }, "p-each-series": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==", "dev": true }, + "p-event": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-4.2.0.tgz", + "integrity": "sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==", + "dev": true, + "requires": { + "p-timeout": "^3.1.0" + } + }, "p-filter": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-2.1.0.tgz", @@ -32641,16 +66223,6 @@ "requires": { "eventemitter3": "^4.0.4", "p-timeout": "^3.2.0" - }, - "dependencies": { - "p-timeout": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", - "requires": { - "p-finally": "^1.0.0" - } - } } }, "p-reduce": { @@ -32677,6 +66249,14 @@ } } }, + "p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "requires": { + "p-finally": "^1.0.0" + } + }, "p-try": { "version": "2.2.0", "dev": true @@ -32836,11 +66416,59 @@ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" }, - "parent-module": { - "version": "1.0.1", + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "dev": true, + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "requires": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "parent-module": { + "version": "1.0.1", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dev": true, + "requires": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", "dev": true, "requires": { - "callsites": "^3.0.0" + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" } }, "parse-github-repo-url": { @@ -32890,6 +66518,34 @@ "parseurl": { "version": "1.3.3" }, + "pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, "path-exists": { "version": "3.0.0", "dev": true @@ -32912,6 +66568,19 @@ "path-type": { "version": "4.0.0" }, + "pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, "pg": { "version": "8.7.3", "resolved": "https://registry.npmjs.org/pg/-/pg-8.7.3.tgz", @@ -32970,7 +66639,9 @@ "dev": true }, "picomatch": { - "version": "2.2.3" + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" }, "pidtree": { "version": "0.5.0", @@ -32994,11 +66665,34 @@ } }, "pirates": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.4.tgz", - "integrity": "sha512-ZIrVPH+A52Dw84R0L3/VS9Op04PuQ2SEoJL6bkshmiTic/HldyW9Tf7oH5mhJZBK7NmDx27vSMrYEXPXclpDKw==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", "dev": true }, + "pixrem": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pixrem/-/pixrem-5.0.0.tgz", + "integrity": "sha512-ugJ4Imy92u55zeznaN/5d7iqOBIZjZ7q10/T+dcd0IuFtbLlsGDvAUabFu1cafER+G9f0T1WtTqvzm4KAdcDgQ==", + "dev": true, + "requires": { + "browserslist": "^4.3.6", + "postcss": "^7.0.7", + "reduce-css-calc": "^2.1.5" + }, + "dependencies": { + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + } + } + }, "pkg-conf": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", @@ -33063,6 +66757,24 @@ } } }, + "pnp-webpack-plugin": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz", + "integrity": "sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==", + "dev": true, + "requires": { + "ts-pnp": "^1.1.6" + } + }, + "polished": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/polished/-/polished-4.1.4.tgz", + "integrity": "sha512-Nq5Mbza+Auo7N3sQb1QMFaQiDO+4UexWuSGR7Cjb4Sw11SZIJcrrFtiZ+L0jT9MBsUsxDboHVASbCLbE1rnECg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.16.7" + } + }, "polygon-clipping": { "version": "0.15.3", "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.3.tgz", @@ -33071,6 +66783,671 @@ "splaytree": "^3.1.0" } }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "postcss": { + "version": "8.4.12", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.12.tgz", + "integrity": "sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==", + "dev": true, + "requires": { + "nanoid": "^3.3.1", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "dependencies": { + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + } + } + }, + "postcss-attribute-case-insensitive": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.0.tgz", + "integrity": "sha512-b4g9eagFGq9T5SWX4+USfVyjIb3liPnjhHHRMP7FMB2kFVpYyfEscV0wP3eaXhKlcHKUut8lt5BGoeylWA/dBQ==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.2" + } + }, + "postcss-browser-comments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-4.0.0.tgz", + "integrity": "sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg==", + "dev": true, + "requires": {} + }, + "postcss-button": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/postcss-button/-/postcss-button-0.3.17.tgz", + "integrity": "sha512-LbJCmxw5JbeoAmB8V1lmDSXuWVI3jpYBcXkoYnXC45J4ylklyqJysk06/jySj9C3q+r0ypXMM1UTVJcGnueOzw==", + "dev": true, + "requires": { + "postcss": "^7.0.17" + }, + "dependencies": { + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + } + } + }, + "postcss-calc": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", + "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-clamp": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz", + "integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-color-functional-notation": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.2.tgz", + "integrity": "sha512-DXVtwUhIk4f49KK5EGuEdgx4Gnyj6+t2jBSEmxvpIK9QI40tWrpS2Pua8Q7iIZWBrki2QOaeUdEaLPPa91K0RQ==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-color-hex-alpha": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.3.tgz", + "integrity": "sha512-fESawWJCrBV035DcbKRPAVmy21LpoyiXdPTuHUfWJ14ZRjY7Y7PA6P4g8z6LQGYhU1WAxkTxjIjurXzoe68Glw==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-color-mod-function": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz", + "integrity": "sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ==", + "dev": true, + "requires": { + "@csstools/convert-colors": "^1.4.0", + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + } + } + }, + "postcss-color-rebeccapurple": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.0.2.tgz", + "integrity": "sha512-SFc3MaocHaQ6k3oZaFwH8io6MdypkUtEy/eXzXEB1vEQlO3S3oDc/FSZA8AsS04Z25RirQhlDlHLh3dn7XewWw==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-custom-media": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.0.tgz", + "integrity": "sha512-FvO2GzMUaTN0t1fBULDeIvxr5IvbDXcIatt6pnJghc736nqNgsGao5NT+5+WVLAQiTt6Cb3YUms0jiPaXhL//g==", + "dev": true, + "requires": {} + }, + "postcss-custom-properties": { + "version": "12.1.5", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.5.tgz", + "integrity": "sha512-FHbbB/hRo/7cxLGkc2NS7cDRIDN1oFqQnUKBiyh4b/gwk8DD8udvmRDpUhEK836kB8ggUCieHVOvZDnF9XhI3g==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-custom-selectors": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.0.tgz", + "integrity": "sha512-/1iyBhz/W8jUepjGyu7V1OPcGbc636snN1yXEQCinb6Bwt7KxsiU7/bLQlp8GwAXzCh7cobBU5odNn/2zQWR8Q==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.4" + } + }, + "postcss-dir-pseudo-class": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.4.tgz", + "integrity": "sha512-I8epwGy5ftdzNWEYok9VjW9whC4xnelAtbajGv4adql4FIF09rnrxnA9Y8xSHN47y7gqFIv10C5+ImsLeJpKBw==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.9" + } + }, + "postcss-double-position-gradients": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.1.tgz", + "integrity": "sha512-jM+CGkTs4FcG53sMPjrrGE0rIvLDdCrqMzgDC5fLI7JHDO7o6QG8C5TQBtExb13hdBdoH9C2QVbG4jo2y9lErQ==", + "dev": true, + "requires": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-env-function": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.6.tgz", + "integrity": "sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-flexbugs-fixes": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.1.tgz", + "integrity": "sha512-9SiofaZ9CWpQWxOwRh1b/r85KD5y7GgvsNt1056k6OYLvWUun0czCvogfJgylC22uJTwW1KzY3Gz65NZRlvoiQ==", + "dev": true, + "requires": { + "postcss": "^7.0.26" + }, + "dependencies": { + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + } + } + }, + "postcss-focus-visible": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz", + "integrity": "sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.9" + } + }, + "postcss-focus-within": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz", + "integrity": "sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.9" + } + }, + "postcss-font-variant": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", + "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==", + "dev": true, + "requires": {} + }, + "postcss-gap-properties": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.3.tgz", + "integrity": "sha512-rPPZRLPmEKgLk/KlXMqRaNkYTUpE7YC+bOIQFN5xcu1Vp11Y4faIXv6/Jpft6FMnl6YRxZqDZG0qQOW80stzxQ==", + "dev": true, + "requires": {} + }, + "postcss-grid-fluid": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/postcss-grid-fluid/-/postcss-grid-fluid-0.3.4.tgz", + "integrity": "sha512-HuXvASgRhOHiSCQsIeTY1qSBNaC2oMBIUO9lQbSP7CFjNkYQfPe+Bm15djTPY8GIGOTwVsCyFE8YUWfMq+FVPw==", + "dev": true, + "requires": { + "postcss": "^7.0.17" + }, + "dependencies": { + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + } + } + }, + "postcss-grid-system": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/postcss-grid-system/-/postcss-grid-system-0.5.2.tgz", + "integrity": "sha512-BR5zSvKENNoQuxvLc2DfLTFLxy4C/aQmjMDmrK1LRdVBbqr6OLG5bf1yd5P1rgClRkd3NEKRWYg3/LnLVKHHjw==", + "dev": true, + "requires": {} + }, + "postcss-image-set-function": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.6.tgz", + "integrity": "sha512-KfdC6vg53GC+vPd2+HYzsZ6obmPqOk6HY09kttU19+Gj1nC3S3XBVEXDHxkhxTohgZqzbUb94bKXvKDnYWBm/A==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-import": { + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.0.2.tgz", + "integrity": "sha512-BJ2pVK4KhUyMcqjuKs9RijV5tatNzNa73e/32aBVE/ejYPe37iH+6vAu9WvqUkB5OAYgLHzbSvzHnorybJCm9g==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + } + }, + "postcss-initial": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz", + "integrity": "sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==", + "dev": true, + "requires": {} + }, + "postcss-inline-svg": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-inline-svg/-/postcss-inline-svg-5.0.0.tgz", + "integrity": "sha512-Agqkrn91Qgi+KAO+cTvUS1IAZbHPD4sryPoG0q5U0ThokL4UGoMcmwvNV6tDoRp69B5tgD1VNkn9P09E+xpQAg==", + "dev": true, + "requires": { + "css-select": "^3.1.0", + "dom-serializer": "^1.1.0", + "htmlparser2": "^5.0.1", + "postcss-value-parser": "^4.0.0" + }, + "dependencies": { + "domhandler": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.3.0.tgz", + "integrity": "sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1" + } + }, + "htmlparser2": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-5.0.1.tgz", + "integrity": "sha512-vKZZra6CSe9qsJzh0BjBGXo8dvzNsq/oGvsjfRdOrrryfeD9UOBEEQdeoqCRmKZchF5h2zOBMQ6YuQ0uRUmdbQ==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^3.3.0", + "domutils": "^2.4.2", + "entities": "^2.0.0" + } + } + } + }, + "postcss-lab-function": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.1.2.tgz", + "integrity": "sha512-isudf5ldhg4fk16M8viAwAbg6Gv14lVO35N3Z/49NhbwPQ2xbiEoHgrRgpgQojosF4vF7jY653ktB6dDrUOR8Q==", + "dev": true, + "requires": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-loader": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", + "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", + "dev": true, + "requires": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.5" + } + }, + "postcss-logical": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz", + "integrity": "sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==", + "dev": true, + "requires": {} + }, + "postcss-media-minmax": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz", + "integrity": "sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==", + "dev": true, + "requires": {} + }, + "postcss-media-query-parser": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", + "integrity": "sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=", + "dev": true + }, + "postcss-modules-extract-imports": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", + "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", + "dev": true, + "requires": { + "postcss": "^7.0.5" + }, + "dependencies": { + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + } + } + }, + "postcss-modules-local-by-default": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz", + "integrity": "sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==", + "dev": true, + "requires": { + "icss-utils": "^4.1.1", + "postcss": "^7.0.32", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + } + } + }, + "postcss-modules-scope": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz", + "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==", + "dev": true, + "requires": { + "postcss": "^7.0.6", + "postcss-selector-parser": "^6.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + } + } + }, + "postcss-modules-values": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz", + "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==", + "dev": true, + "requires": { + "icss-utils": "^4.0.0", + "postcss": "^7.0.6" + }, + "dependencies": { + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + } + } + }, + "postcss-nesting": { + "version": "10.1.3", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.1.3.tgz", + "integrity": "sha512-wUC+/YCik4wH3StsbC5fBG1s2Z3ZV74vjGqBFYtmYKlVxoio5TYGM06AiaKkQPPlkXWn72HKfS7Cw5PYxnoXSw==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.9" + } + }, + "postcss-normalize": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize/-/postcss-normalize-10.0.1.tgz", + "integrity": "sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA==", + "dev": true, + "requires": { + "@csstools/normalize.css": "*", + "postcss-browser-comments": "^4", + "sanitize.css": "*" + } + }, + "postcss-opacity-percentage": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.2.tgz", + "integrity": "sha512-lyUfF7miG+yewZ8EAk9XUBIlrHyUE6fijnesuz+Mj5zrIHIEw6KcIZSOk/elVMqzLvREmXB83Zi/5QpNRYd47w==", + "dev": true + }, + "postcss-overflow-shorthand": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.3.tgz", + "integrity": "sha512-CxZwoWup9KXzQeeIxtgOciQ00tDtnylYIlJBBODqkgS/PU2jISuWOL/mYLHmZb9ZhZiCaNKsCRiLp22dZUtNsg==", + "dev": true, + "requires": {} + }, + "postcss-page-break": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", + "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==", + "dev": true, + "requires": {} + }, + "postcss-place": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.4.tgz", + "integrity": "sha512-MrgKeiiu5OC/TETQO45kV3npRjOFxEHthsqGtkh3I1rPbZSbXGD/lZVi9j13cYh+NA8PIAPyk6sGjT9QbRyvSg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-preset-env": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.4.3.tgz", + "integrity": "sha512-dlPA65g9KuGv7YsmGyCKtFkZKCPLkoVMUE3omOl6yM+qrynVHxFvf0tMuippIrXB/sB/MyhL1FgTIbrO+qMERg==", + "dev": true, + "requires": { + "@csstools/postcss-color-function": "^1.0.3", + "@csstools/postcss-font-format-keywords": "^1.0.0", + "@csstools/postcss-hwb-function": "^1.0.0", + "@csstools/postcss-ic-unit": "^1.0.0", + "@csstools/postcss-is-pseudo-class": "^2.0.1", + "@csstools/postcss-normalize-display-values": "^1.0.0", + "@csstools/postcss-oklab-function": "^1.0.2", + "@csstools/postcss-progressive-custom-properties": "^1.3.0", + "autoprefixer": "^10.4.4", + "browserslist": "^4.20.2", + "css-blank-pseudo": "^3.0.3", + "css-has-pseudo": "^3.0.4", + "css-prefers-color-scheme": "^6.0.3", + "cssdb": "^6.5.0", + "postcss-attribute-case-insensitive": "^5.0.0", + "postcss-clamp": "^4.1.0", + "postcss-color-functional-notation": "^4.2.2", + "postcss-color-hex-alpha": "^8.0.3", + "postcss-color-rebeccapurple": "^7.0.2", + "postcss-custom-media": "^8.0.0", + "postcss-custom-properties": "^12.1.5", + "postcss-custom-selectors": "^6.0.0", + "postcss-dir-pseudo-class": "^6.0.4", + "postcss-double-position-gradients": "^3.1.1", + "postcss-env-function": "^4.0.6", + "postcss-focus-visible": "^6.0.4", + "postcss-focus-within": "^5.0.4", + "postcss-font-variant": "^5.0.0", + "postcss-gap-properties": "^3.0.3", + "postcss-image-set-function": "^4.0.6", + "postcss-initial": "^4.0.1", + "postcss-lab-function": "^4.1.2", + "postcss-logical": "^5.0.4", + "postcss-media-minmax": "^5.0.0", + "postcss-nesting": "^10.1.3", + "postcss-opacity-percentage": "^1.1.2", + "postcss-overflow-shorthand": "^3.0.3", + "postcss-page-break": "^3.0.4", + "postcss-place": "^7.0.4", + "postcss-pseudo-class-any-link": "^7.1.1", + "postcss-replace-overflow-wrap": "^4.0.0", + "postcss-selector-not": "^5.0.0", + "postcss-value-parser": "^4.2.0" + }, + "dependencies": { + "autoprefixer": { + "version": "10.4.4", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.4.tgz", + "integrity": "sha512-Tm8JxsB286VweiZ5F0anmbyGiNI3v3wGv3mz9W+cxEDYB/6jbnj6GM9H9mK3wIL8ftgl+C07Lcwb8PG5PCCPzA==", + "dev": true, + "requires": { + "browserslist": "^4.20.2", + "caniuse-lite": "^1.0.30001317", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + } + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + } + } + }, + "postcss-pseudo-class-any-link": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.1.tgz", + "integrity": "sha512-JRoLFvPEX/1YTPxRxp1JO4WxBVXJYrSY7NHeak5LImwJ+VobFMwYDQHvfTXEpcn+7fYIeGkC29zYFhFWIZD8fg==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.9" + } + }, + "postcss-replace-overflow-wrap": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", + "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", + "dev": true, + "requires": {} + }, + "postcss-resolve-nested-selector": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", + "integrity": "sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4=", + "dev": true + }, + "postcss-safe-parser": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", + "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", + "dev": true, + "requires": {} + }, + "postcss-selector-not": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-5.0.0.tgz", + "integrity": "sha512-/2K3A4TCP9orP4TNS7u3tGdRFVKqz/E6pX3aGnriPG0jU78of8wsUcqE4QAhWEU0d+WnMSF93Ah3F//vUtK+iQ==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "postcss-selector-parser": { + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz", + "integrity": "sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-typescale": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/postcss-typescale/-/postcss-typescale-0.2.3.tgz", + "integrity": "sha512-hbHccnobyhoV6IPYYpgkvGGhv4E80xvQgqK58sSVTxXHAcyMclcepZ9oWVMB5cQB8ZcspickI96/ddbai8K1rA==", + "dev": true, + "requires": { + "postcss": "^7.0.17" + }, + "dependencies": { + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + } + } + }, + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "postcss-values-parser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz", + "integrity": "sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg==", + "dev": true, + "requires": { + "flatten": "^1.0.2", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, "postgres-array": { "version": "2.0.0" }, @@ -33086,6 +67463,29 @@ "xtend": "^4.0.0" } }, + "preact": { + "version": "10.6.6", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.6.6.tgz", + "integrity": "sha512-dgxpTFV2vs4vizwKohYKkk7g7rmp1wOOcfd4Tz3IB3Wi+ivZzsn/SpeKJhRENSE+n8sUfsAl4S3HiCVT923ABw==", + "dev": true + }, + "preact-render-to-string": { + "version": "5.1.20", + "resolved": "https://registry.npmjs.org/preact-render-to-string/-/preact-render-to-string-5.1.20.tgz", + "integrity": "sha512-ivh2oOGzth0o7XqbatWUQ81WQGoJwSqDKP5z917SoqTWYCAr7dlBzMv3SAMTAu3Gr5g47BJwrvyO44H2Y10ubg==", + "dev": true, + "requires": { + "pretty-format": "^3.8.0" + }, + "dependencies": { + "pretty-format": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-3.8.0.tgz", + "integrity": "sha1-v77VbV6ad2ZF9LH/eqGjrE+jw4U=", + "dev": true + } + } + }, "prelude-ls": { "version": "1.2.1", "dev": true @@ -33095,7 +67495,9 @@ "dev": true }, "prettier": { - "version": "2.3.0", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.0.tgz", + "integrity": "sha512-m2FgJibYrBGGgQXNzfd0PuDGShJgRavjUoRCw1mZERIWVSXF0iLzLm+aOqTAbLnC3n6JzUhAA8uZnFVghHJ86A==", "dev": true }, "prettier-eslint": { @@ -33324,6 +67726,36 @@ } } }, + "prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "requires": { + "fast-diff": "^1.1.2" + } + }, + "pretty": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pretty/-/pretty-2.0.0.tgz", + "integrity": "sha1-rbx5YLe7/iiaVX3F9zdhmiINBqU=", + "dev": true, + "requires": { + "condense-newlines": "^0.2.1", + "extend-shallow": "^2.0.1", + "js-beautify": "^1.6.12" + } + }, + "pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "dev": true, + "requires": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, "pretty-format": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", @@ -33341,17 +67773,41 @@ } } }, + "pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", + "dev": true + }, "printj": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/printj/-/printj-1.2.3.tgz", "integrity": "sha512-sanczS6xOJOg7IKDvi4sGOUOe7c1tsEzjwlLFH/zgwx/uyImVM9/rgBkc8AfiQa/Vg54nRd8mkm9yI7WV/O+WA==" }, + "prismjs": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.27.0.tgz", + "integrity": "sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==", + "dev": true + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, "proc-log": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.0.tgz", "integrity": "sha512-I/35MfCX2H8jBUhKN8JB8nmqvQo/nKdrBodBY7L3RhDSPPyvOHwLYNmPuhwuJq7a7C3vgFKWGQM+ecPStcvOHA==", "dev": true }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, "process-nextick-args": { "version": "2.0.1" }, @@ -33368,12 +67824,27 @@ "wkt-parser": "^1.3.1" } }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "requires": { + "asap": "~2.0.3" + } + }, "promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", "dev": true }, + "promise-polyfill": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.2.3.tgz", + "integrity": "sha512-Og0+jCRQetV84U8wVjMNccfGCnMQ9mGs9Hv78QFe+pSDD3gWTpz0y+1QCuxy5d/vBFuZ3iwP2eycAkvqIMPmWg==", + "dev": true + }, "promise-retry": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", @@ -33384,6 +67855,31 @@ "retry": "^0.12.0" } }, + "promise.allsettled": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/promise.allsettled/-/promise.allsettled-1.0.5.tgz", + "integrity": "sha512-tVDqeZPoBC0SlzJHzWGZ2NKAguVq2oiYj7gbggbiTvH2itHohijTp7njOUA0aQ/nl+0lr/r6egmhoYu63UZ/pQ==", + "dev": true, + "requires": { + "array.prototype.map": "^1.0.4", + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1", + "get-intrinsic": "^1.1.1", + "iterate-value": "^1.0.2" + } + }, + "promise.prototype.finally": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/promise.prototype.finally/-/promise.prototype.finally-3.1.3.tgz", + "integrity": "sha512-EXRF3fC9/0gz4qkt/f5EP5iW4kj9oFpBICNpCNOb/52+8nlHIX07FPLbi/q4qYBQ1xZqivMzTpNQSnArVASolQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, "prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", @@ -33394,6 +67890,58 @@ "sisteransi": "^1.0.5" } }, + "prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + }, + "dependencies": { + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + } + } + }, + "proper-lockfile": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-2.0.1.tgz", + "integrity": "sha1-FZ+wYZPTIAP0s2kd0uwaY0qoDR0=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "retry": "^0.10.0" + }, + "dependencies": { + "retry": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", + "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=", + "dev": true + } + } + }, + "property-information": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz", + "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==", + "dev": true, + "requires": { + "xtend": "^4.0.0" + } + }, + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", + "dev": true + }, "proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -33448,6 +67996,18 @@ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, "psl": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", @@ -33458,6 +68018,152 @@ "version": "1.1.8", "dev": true }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "pug": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.2.tgz", + "integrity": "sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw==", + "dev": true, + "requires": { + "pug-code-gen": "^3.0.2", + "pug-filters": "^4.0.0", + "pug-lexer": "^5.0.1", + "pug-linker": "^4.0.0", + "pug-load": "^3.0.0", + "pug-parser": "^6.0.0", + "pug-runtime": "^3.0.1", + "pug-strip-comments": "^2.0.0" + } + }, + "pug-attrs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-3.0.0.tgz", + "integrity": "sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==", + "dev": true, + "requires": { + "constantinople": "^4.0.1", + "js-stringify": "^1.0.2", + "pug-runtime": "^3.0.0" + } + }, + "pug-code-gen": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.2.tgz", + "integrity": "sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg==", + "dev": true, + "requires": { + "constantinople": "^4.0.1", + "doctypes": "^1.1.0", + "js-stringify": "^1.0.2", + "pug-attrs": "^3.0.0", + "pug-error": "^2.0.0", + "pug-runtime": "^3.0.0", + "void-elements": "^3.1.0", + "with": "^7.0.0" + } + }, + "pug-error": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-2.0.0.tgz", + "integrity": "sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ==", + "dev": true + }, + "pug-filters": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-4.0.0.tgz", + "integrity": "sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==", + "dev": true, + "requires": { + "constantinople": "^4.0.1", + "jstransformer": "1.0.0", + "pug-error": "^2.0.0", + "pug-walk": "^2.0.0", + "resolve": "^1.15.1" + } + }, + "pug-lexer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-5.0.1.tgz", + "integrity": "sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==", + "dev": true, + "requires": { + "character-parser": "^2.2.0", + "is-expression": "^4.0.0", + "pug-error": "^2.0.0" + } + }, + "pug-linker": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-4.0.0.tgz", + "integrity": "sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==", + "dev": true, + "requires": { + "pug-error": "^2.0.0", + "pug-walk": "^2.0.0" + } + }, + "pug-load": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-3.0.0.tgz", + "integrity": "sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "pug-walk": "^2.0.0" + } + }, + "pug-parser": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-6.0.0.tgz", + "integrity": "sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==", + "dev": true, + "requires": { + "pug-error": "^2.0.0", + "token-stream": "1.0.0" + } + }, + "pug-runtime": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-3.0.1.tgz", + "integrity": "sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==", + "dev": true + }, + "pug-strip-comments": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-2.0.0.tgz", + "integrity": "sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==", + "dev": true, + "requires": { + "pug-error": "^2.0.0" + } + }, + "pug-walk": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-2.0.0.tgz", + "integrity": "sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==", + "dev": true + }, "pump": { "version": "3.0.0", "requires": { @@ -33499,6 +68205,18 @@ "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, "queue-microtask": { "version": "1.2.3" }, @@ -33506,9 +68224,21 @@ "version": "4.0.1", "dev": true }, + "quickselect": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz", + "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==", + "dev": true + }, "railroad-diagrams": { "version": "1.0.0" }, + "ramda": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.21.0.tgz", + "integrity": "sha1-oAGr7bP/YQd9T/HVd9RN536NCjU=", + "dev": true + }, "randexp": { "version": "0.4.6", "requires": { @@ -33516,6 +68246,25 @@ "ret": "~0.1.10" } }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, "range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -33539,6 +68288,38 @@ } } }, + "raw-loader": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz", + "integrity": "sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "rbush": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/rbush/-/rbush-3.0.1.tgz", + "integrity": "sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==", + "dev": true, + "requires": { + "quickselect": "^2.0.0" + } + }, "rc": { "version": "1.2.8", "dev": true, @@ -33578,11 +68359,217 @@ } } }, + "react": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", + "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "dev": true, + "peer": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "react-colorful": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/react-colorful/-/react-colorful-5.5.1.tgz", + "integrity": "sha512-M1TJH2X3RXEt12sWkpa6hLc/bbYS0H6F4rIqjQZ+RxNBstpY67d9TrFXtqdZwhpmBXcCwEi7stKqFue3ZRkiOg==", + "dev": true, + "requires": {} + }, + "react-dom": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", + "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", + "dev": true, + "peer": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "scheduler": "^0.20.2" + } + }, + "react-draggable": { + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/react-draggable/-/react-draggable-4.4.4.tgz", + "integrity": "sha512-6e0WdcNLwpBx/YIDpoyd2Xb04PB0elrDrulKUgdrIlwuYvxh5Ok9M+F8cljm8kPXXs43PmMzek9RrB1b7mLMqA==", + "dev": true, + "requires": { + "clsx": "^1.1.1", + "prop-types": "^15.6.0" + } + }, + "react-fast-compare": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz", + "integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==", + "dev": true + }, + "react-helmet-async": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.2.3.tgz", + "integrity": "sha512-mCk2silF53Tq/YaYdkl2sB+/tDoPnaxN7dFS/6ZLJb/rhUY2EWGI5Xj2b4jHppScMqY45MbgPSwTxDchKpZ5Kw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.12.5", + "invariant": "^2.2.4", + "prop-types": "^15.7.2", + "react-fast-compare": "^3.2.0", + "shallowequal": "^1.1.0" + } + }, + "react-inspector": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/react-inspector/-/react-inspector-5.1.1.tgz", + "integrity": "sha512-GURDaYzoLbW8pMGXwYPDBIv6nqei4kK7LPRZ9q9HCZF54wqXz/dnylBp/kfE9XmekBhHvLDdcYeyIwSrvtOiWg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.0.0", + "is-dom": "^1.0.0", + "prop-types": "^15.0.0" + } + }, "react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" }, + "react-popper": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-2.2.5.tgz", + "integrity": "sha512-kxGkS80eQGtLl18+uig1UIf9MKixFSyPxglsgLBxlYnyDf65BiY9B3nZSc6C9XUNDgStROB0fMQlTEz1KxGddw==", + "dev": true, + "requires": { + "react-fast-compare": "^3.0.1", + "warning": "^4.0.2" + } + }, + "react-popper-tooltip": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/react-popper-tooltip/-/react-popper-tooltip-3.1.1.tgz", + "integrity": "sha512-EnERAnnKRptQBJyaee5GJScWNUKQPDD2ywvzZyUjst/wj5U64C8/CnSYLNEmP2hG0IJ3ZhtDxE8oDN+KOyavXQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.12.5", + "@popperjs/core": "^2.5.4", + "react-popper": "^2.2.4" + } + }, + "react-router": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.2.2.tgz", + "integrity": "sha512-/MbxyLzd7Q7amp4gDOGaYvXwhEojkJD5BtExkuKmj39VEE0m3l/zipf6h2WIB2jyAO0lI6NGETh4RDcktRm4AQ==", + "dev": true, + "requires": { + "history": "^5.2.0" + }, + "dependencies": { + "history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.6" + } + } + } + }, + "react-router-dom": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.2.2.tgz", + "integrity": "sha512-AtYEsAST7bDD4dLSQHDnk/qxWLJdad5t1HFa1qJyUrCeGgEuCSw0VB/27ARbF9Fi/W5598ujvJOm3ujUCVzuYQ==", + "dev": true, + "requires": { + "history": "^5.2.0", + "react-router": "6.2.2" + }, + "dependencies": { + "history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.6" + } + } + } + }, + "react-shallow-renderer": { + "version": "16.14.1", + "resolved": "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.14.1.tgz", + "integrity": "sha512-rkIMcQi01/+kxiTE9D3fdS959U1g7gs+/rborw++42m1O9FAQiNI/UNRZExVUoAOprn4umcXf+pFRou8i4zuBg==", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "react-is": "^16.12.0 || ^17.0.0" + } + }, + "react-sizeme": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/react-sizeme/-/react-sizeme-3.0.2.tgz", + "integrity": "sha512-xOIAOqqSSmKlKFJLO3inBQBdymzDuXx4iuwkNcJmC96jeiOg5ojByvL+g3MW9LPEsojLbC6pf68zOfobK8IPlw==", + "dev": true, + "requires": { + "element-resize-detector": "^1.2.2", + "invariant": "^2.2.4", + "shallowequal": "^1.1.0", + "throttle-debounce": "^3.0.1" + } + }, + "react-syntax-highlighter": { + "version": "13.5.3", + "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-13.5.3.tgz", + "integrity": "sha512-crPaF+QGPeHNIblxxCdf2Lg936NAHKhNhuMzRL3F9ct6aYXL3NcZtCL0Rms9+qVo6Y1EQLdXGypBNSbPL/r+qg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.3.1", + "highlight.js": "^10.1.1", + "lowlight": "^1.14.0", + "prismjs": "^1.21.0", + "refractor": "^3.1.0" + } + }, + "react-test-renderer": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-17.0.2.tgz", + "integrity": "sha512-yaQ9cB89c17PUb0x6UfWRs7kQCorVdHlutU1boVPEsB8IDZH6n9tHxMacc3y0JoXOJUsZb/t/Mb8FUWMKaM7iQ==", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "react-is": "^17.0.2", + "react-shallow-renderer": "^16.13.1", + "scheduler": "^0.20.2" + } + }, + "react-textarea-autosize": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.3.3.tgz", + "integrity": "sha512-2XlHXK2TDxS6vbQaoPbMOfQ8GK7+irc2fVK6QFIcC8GOnH3zI/v481n+j1L0WaPVvKxwesnY93fEfH++sus2rQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.10.2", + "use-composed-ref": "^1.0.0", + "use-latest": "^1.0.0" + } + }, + "react-waterfall-render": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/react-waterfall-render/-/react-waterfall-render-2.0.0.tgz", + "integrity": "sha512-PCox1jrpL72KAHVdRTQmo4/O7ElrVmnvExrJU04ioOg9qrYcXtctPC41xVCjTbqzZjes8KCdEfaAS3KolZiUOw==", + "dev": true, + "requires": {} + }, + "read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", + "dev": true, + "requires": { + "pify": "^2.3.0" + } + }, "read-package-json": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.0.tgz", @@ -33699,6 +68686,29 @@ "picomatch": "^2.2.1" } }, + "recast": { + "version": "0.20.5", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.20.5.tgz", + "integrity": "sha512-E5qICoPoNL4yU0H0NoBDntNB0Q5oMSNh9usFctYniLBluTthi3RsQVBXIJNbApOlvSwW/RGxIuokPcAc59J5fQ==", + "dev": true, + "requires": { + "ast-types": "0.14.2", + "esprima": "~4.0.0", + "source-map": "~0.6.1", + "tslib": "^2.0.1" + }, + "dependencies": { + "ast-types": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz", + "integrity": "sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==", + "dev": true, + "requires": { + "tslib": "^2.0.1" + } + } + } + }, "rechoir": { "version": "0.6.2", "dev": true, @@ -33725,12 +68735,148 @@ } } }, + "reduce-css-calc": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-2.1.8.tgz", + "integrity": "sha512-8liAVezDmUcH+tdzoEGrhfbGcP7nOV4NkGE3a74+qqvE7nt9i4sKLGBuZNOnpI4WiGksiNPklZxva80061QiPg==", + "dev": true, + "requires": { + "css-unit-converter": "^1.1.1", + "postcss-value-parser": "^3.3.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "redux": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.1.2.tgz", + "integrity": "sha512-SH8PglcebESbd/shgf6mii6EIoRM0zrQyjcuQ+ojmfxjTtE0z9Y8pa62iA/OJ58qjP6j27uyW4kUF4jl/jd6sw==", + "requires": { + "@babel/runtime": "^7.9.2" + } + }, + "refractor": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/refractor/-/refractor-3.6.0.tgz", + "integrity": "sha512-MY9W41IOWxxk31o+YvFCNyNzdkc9M20NoZK5vq6jkv4I/uh2zkWcfudj0Q1fovjUQJrNewS9NMzeTtqPf+n5EA==", + "dev": true, + "requires": { + "hastscript": "^6.0.0", + "parse-entities": "^2.0.0", + "prismjs": "~1.27.0" + } + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", + "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", + "dev": true, + "requires": { + "regenerate": "^1.4.2" + } + }, + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + }, + "regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "regexp.prototype.flags": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz", + "integrity": "sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, "regexpp": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true }, + "regexpu-core": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz", + "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==", + "dev": true, + "requires": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.0.1", + "regjsgen": "^0.6.0", + "regjsparser": "^0.8.2", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" + } + }, "registry-auth-token": { "version": "4.2.1", "dev": true, @@ -33745,6 +68891,154 @@ "rc": "^1.2.8" } }, + "regjsgen": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", + "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", + "dev": true + }, + "regjsparser": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", + "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true + }, + "remark-footnotes": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/remark-footnotes/-/remark-footnotes-2.0.0.tgz", + "integrity": "sha512-3Clt8ZMH75Ayjp9q4CorNeyjwIxHFcTkaektplKGl2A1jNGEUey8cKL0ZC5vJwfcD5GFGsNLImLG/NGzWIzoMQ==", + "dev": true + }, + "remark-mdx": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-1.6.22.tgz", + "integrity": "sha512-phMHBJgeV76uyFkH4rvzCftLfKCr2RZuF+/gmVcaKrpsihyzmhXjA0BEMDaPTXG5y8qZOKPVo83NAOX01LPnOQ==", + "dev": true, + "requires": { + "@babel/core": "7.12.9", + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-proposal-object-rest-spread": "7.12.1", + "@babel/plugin-syntax-jsx": "7.12.1", + "@mdx-js/util": "1.6.22", + "is-alphabetical": "1.0.4", + "remark-parse": "8.0.3", + "unified": "9.2.0" + }, + "dependencies": { + "@babel/core": { + "version": "7.12.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz", + "integrity": "sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.5", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.5", + "@babel/parser": "^7.12.7", + "@babel/template": "^7.12.7", + "@babel/traverse": "^7.12.9", + "@babel/types": "^7.12.7", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", + "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.12.1" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz", + "integrity": "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "remark-parse": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.3.tgz", + "integrity": "sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==", + "dev": true, + "requires": { + "ccount": "^1.0.0", + "collapse-white-space": "^1.0.2", + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "is-word-character": "^1.0.0", + "markdown-escapes": "^1.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "trim": "0.0.1", + "trim-trailing-lines": "^1.0.0", + "unherit": "^1.0.4", + "unist-util-remove-position": "^2.0.0", + "vfile-location": "^3.0.0", + "xtend": "^4.0.1" + } + }, + "remark-squeeze-paragraphs": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-squeeze-paragraphs/-/remark-squeeze-paragraphs-4.0.0.tgz", + "integrity": "sha512-8qRqmL9F4nuLPIgl92XUuxI3pFxize+F1H0e/W3llTk0UsjJaj01+RrirkMw7P21RKe4X6goQhYRSvNWX+70Rw==", + "dev": true, + "requires": { + "mdast-squeeze-paragraphs": "^4.0.0" + } + }, "remote-git-tags": { "version": "3.0.0", "dev": true @@ -33752,6 +69046,52 @@ "remove-trailing-separator": { "version": "1.1.0" }, + "renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "dev": true, + "requires": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "css-select": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.2.1.tgz", + "integrity": "sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^5.1.0", + "domhandler": "^4.3.0", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + } + }, + "css-what": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", + "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", + "dev": true + } + } + }, + "repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, "repeating": { "version": "2.0.1", "dev": true, @@ -33770,11 +69110,19 @@ "version": "0.8.7", "dev": true }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" + }, "resolve": { - "version": "1.20.0", + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" } }, "resolve-cwd": { @@ -33805,6 +69153,12 @@ "global-dirs": "^0.1.1" } }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, "resolve.exports": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", @@ -33873,6 +69227,31 @@ "glob": "^7.1.3" } }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "rollup": { + "version": "2.70.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.70.1.tgz", + "integrity": "sha512-CRYsI5EuzLbXdxC6RnYhOuRdtz4bhejPMSWjsFLfVM/7w/85n2szZv6yExqUXsBdz5KT8eoubeyDUDjhLHEslA==", + "dev": true, + "requires": { + "fsevents": "~2.3.2" + } + }, + "rsvp": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", + "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", + "dev": true + }, "run-async": { "version": "2.4.1", "dev": true @@ -33883,6 +69262,23 @@ "queue-microtask": "^1.2.2" } }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "^1.1.1" + }, + "dependencies": { + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + } + } + }, "rxjs": { "version": "6.6.7", "dev": true, @@ -33899,6 +69295,15 @@ "safe-buffer": { "version": "5.1.2" }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, "safe-stable-stringify": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.3.1.tgz", @@ -33907,6 +69312,252 @@ "safer-buffer": { "version": "2.1.2" }, + "sane": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", + "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", + "dev": true, + "requires": { + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + } + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "sanitize.css": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/sanitize.css/-/sanitize.css-13.0.0.tgz", + "integrity": "sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA==", + "dev": true + }, "sax": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", @@ -33921,6 +69572,27 @@ "xmlchars": "^2.2.0" } }, + "scheduler": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", + "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + } + }, "selderee": { "version": "0.6.0", "requires": { @@ -34128,6 +69800,42 @@ } } }, + "serialize-javascript": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "serve-favicon": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.5.0.tgz", + "integrity": "sha1-k10kDN/g9YBTB/3+ln2IlCosvPA=", + "dev": true, + "requires": { + "etag": "~1.8.1", + "fresh": "0.5.2", + "ms": "2.1.1", + "parseurl": "~1.3.2", + "safe-buffer": "5.1.1" + }, + "dependencies": { + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + } + } + }, "serve-static": { "version": "1.14.2", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", @@ -34150,11 +69858,71 @@ "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, "setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==", + "dev": true + }, "sharkdown": { "version": "0.1.1", "requires": { @@ -34239,6 +70007,12 @@ "object-inspect": "^1.9.0" } }, + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", + "dev": true + }, "signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", @@ -34356,6 +70130,177 @@ "resolved": "https://registry.npmjs.org/snakeize/-/snakeize-0.1.0.tgz", "integrity": "sha1-EMCI2LWOsHazIpu1oE4jLOEmQi0=" }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "snarkdown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/snarkdown/-/snarkdown-2.0.0.tgz", + "integrity": "sha512-MgL/7k/AZdXCTJiNgrO7chgDqaB9FGM/1Tvlcenenb7div6obaDATzs16JhFyHHBGodHT3B7RzRc5qk8pFhg3A==", + "dev": true + }, "socks": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", @@ -34376,10 +70321,35 @@ "socks": "^2.6.1" } }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, "source-map": { "version": "0.6.1", "devOptional": true }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, "source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", @@ -34390,6 +70360,24 @@ "source-map": "^0.6.0" } }, + "source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "dev": true + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "space-separated-tokens": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz", + "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==", + "dev": true + }, "spawn-error-forwarder": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/spawn-error-forwarder/-/spawn-error-forwarder-1.0.0.tgz", @@ -34424,6 +70412,12 @@ "version": "3.0.8", "dev": true }, + "specificity": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/specificity/-/specificity-0.4.1.tgz", + "integrity": "sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg==", + "dev": true + }, "splaytree": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.0.tgz", @@ -34436,6 +70430,57 @@ "through": "2" } }, + "split-lines": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/split-lines/-/split-lines-1.1.0.tgz", + "integrity": "sha1-Oruo9ZhhQUL5240nq2q4dWYqHgk=", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, "split2": { "version": "3.2.2", "requires": { @@ -34484,6 +70529,12 @@ "minipass": "^3.1.1" } }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, "stack-trace": { "version": "0.0.10" }, @@ -34840,9 +70891,95 @@ "requires": { "readable-stream": "3" } + } + } + }, + "state-toggle": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz", + "integrity": "sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } }, - "yargs-parser": { - "version": "20.2.7", + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", "dev": true } } @@ -34850,6 +70987,22 @@ "statuses": { "version": "1.5.0" }, + "store2": { + "version": "2.13.2", + "resolved": "https://registry.npmjs.org/store2/-/store2-2.13.2.tgz", + "integrity": "sha512-CMtO2Uneg3SAz/d6fZ/6qbqqQHi2ynq6/KzMD/26gTkiEShCcpqFfTHgOxsE0egAq6SX3FmN4CeSqn8BzXQkJg==", + "dev": true + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, "stream-combiner2": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", @@ -34860,12 +71013,35 @@ "readable-stream": "^2.0.2" } }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, "stream-events": { "version": "1.0.5", "requires": { "stubs": "^3.0.0" } }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, "stream-shift": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", @@ -34917,6 +71093,44 @@ } } }, + "string.prototype.matchall": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz", + "integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1", + "get-intrinsic": "^1.1.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "regexp.prototype.flags": "^1.4.1", + "side-channel": "^1.0.4" + } + }, + "string.prototype.padend": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.3.tgz", + "integrity": "sha512-jNIIeokznm8SD/TZISQsZKYu7RJyheFNt84DUPrh482GC8RVp2MKqm2O5oBRdGxbDQoXrhhWtPIWQOiy20svUg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "string.prototype.padstart": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/string.prototype.padstart/-/string.prototype.padstart-3.1.3.tgz", + "integrity": "sha512-NZydyOMtYxpTjGqp0VN5PYUF/tsU15yDMZnUdj16qRUIUiMJkHHSDElYyQFrMu+/WloTpA7MQSiADhBicDfaoA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, "string.prototype.trimend": { "version": "1.0.4", "dev": true, @@ -34950,6 +71164,12 @@ "version": "4.0.0", "dev": true }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, "strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", @@ -34970,6 +71190,209 @@ "stubs": { "version": "3.0.0" }, + "style-loader": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.3.0.tgz", + "integrity": "sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^2.7.0" + } + }, + "style-search": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", + "integrity": "sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI=", + "dev": true + }, + "style-to-object": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.3.0.tgz", + "integrity": "sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==", + "dev": true, + "requires": { + "inline-style-parser": "0.1.1" + } + }, + "stylelint": { + "version": "14.6.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-14.6.0.tgz", + "integrity": "sha512-Xk2sqXYPi9nXgq70nBiZkbQm/QOOKd83NBTaBE1fXEWAEeRlgHnKC/E7kJFlT6K0SaNDOK5yIvR7GFPGsNLuOg==", + "dev": true, + "requires": { + "balanced-match": "^2.0.0", + "colord": "^2.9.2", + "cosmiconfig": "^7.0.1", + "css-functions-list": "^3.0.1", + "debug": "^4.3.3", + "execall": "^2.0.0", + "fast-glob": "^3.2.11", + "fastest-levenshtein": "^1.0.12", + "file-entry-cache": "^6.0.1", + "get-stdin": "^8.0.0", + "global-modules": "^2.0.0", + "globby": "^11.1.0", + "globjoin": "^0.1.4", + "html-tags": "^3.1.0", + "ignore": "^5.2.0", + "import-lazy": "^4.0.0", + "imurmurhash": "^0.1.4", + "is-plain-object": "^5.0.0", + "known-css-properties": "^0.24.0", + "mathml-tag-names": "^2.1.3", + "meow": "^9.0.0", + "micromatch": "^4.0.4", + "normalize-path": "^3.0.0", + "normalize-selector": "^0.2.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.12", + "postcss-media-query-parser": "^0.2.3", + "postcss-resolve-nested-selector": "^0.1.1", + "postcss-safe-parser": "^6.0.0", + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0", + "resolve-from": "^5.0.0", + "specificity": "^0.4.1", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "style-search": "^0.1.0", + "supports-hyperlinks": "^2.2.0", + "svg-tags": "^1.0.0", + "table": "^6.8.0", + "v8-compile-cache": "^2.3.0", + "write-file-atomic": "^4.0.1" + }, + "dependencies": { + "balanced-match": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", + "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", + "dev": true + }, + "clone-regexp": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-2.2.0.tgz", + "integrity": "sha512-beMpP7BOtTipFuW8hrJvREQ2DrRu3BE7by0ZpibtfBA+qfHYvMGTc2Yb1JMYPKg/JUw0CHYvpg796aNTSW9z7Q==", + "dev": true, + "requires": { + "is-regexp": "^2.0.0" + } + }, + "execall": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/execall/-/execall-2.0.0.tgz", + "integrity": "sha512-0FU2hZ5Hh6iQnarpRtQurM/aAvp3RIbfvgLHrcqJYzhXyV2KFruhuChf9NC6waAhiUR7FFtlugkI4p7f2Fqlow==", + "dev": true, + "requires": { + "clone-regexp": "^2.1.0" + } + }, + "global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "dev": true, + "requires": { + "global-prefix": "^3.0.0" + } + }, + "global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "dev": true, + "requires": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + } + }, + "import-lazy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-regexp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-2.1.0.tgz", + "integrity": "sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA==", + "dev": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "write-file-atomic": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.1.tgz", + "integrity": "sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + } + } + } + }, + "stylelint-config-prettier": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/stylelint-config-prettier/-/stylelint-config-prettier-9.0.3.tgz", + "integrity": "sha512-5n9gUDp/n5tTMCq1GLqSpA30w2sqWITSSEiAWQlpxkKGAUbjcemQ0nbkRvRUa0B1LgD3+hCvdL7B1eTxy1QHJg==", + "dev": true, + "requires": {} + }, + "stylelint-config-recommended": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-7.0.0.tgz", + "integrity": "sha512-yGn84Bf/q41J4luis1AZ95gj0EQwRX8lWmGmBwkwBNSkpGSpl66XcPTulxGa/Z91aPoNGuIGBmFkcM1MejMo9Q==", + "dev": true, + "requires": {} + }, + "stylelint-config-standard": { + "version": "25.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-25.0.0.tgz", + "integrity": "sha512-21HnP3VSpaT1wFjFvv9VjvOGDtAviv47uTp3uFmzcN+3Lt+RYRv6oAplLaV51Kf792JSxJ6svCJh/G18E9VnCA==", + "dev": true, + "requires": { + "stylelint-config-recommended": "^7.0.0" + } + }, "superagent": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/superagent/-/superagent-6.1.0.tgz", @@ -35120,12 +71543,41 @@ "supports-color": "^7.0.0" } }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" + }, + "svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=", + "dev": true + }, "symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", "dev": true }, + "symbol.prototype.description": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/symbol.prototype.description/-/symbol.prototype.description-1.0.5.tgz", + "integrity": "sha512-x738iXRYsrAt9WBhRCVG5BtIC3B7CUkFwbHW2zOvGtwM33s7JjrCDyq8V0zgMYVb5ymsL8+qkzzpANH63CPQaQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-symbol-description": "^1.0.0", + "has-symbols": "^1.0.2", + "object.getownpropertydescriptors": "^2.1.2" + } + }, + "synchronous-promise": { + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/synchronous-promise/-/synchronous-promise-2.0.15.tgz", + "integrity": "sha512-k8uzYIkIVwmT+TcglpdN50pS2y1BDcUnBPK9iJeGu0Pl1lOI8pD6wtzgw91Pjpe+RxtTncw32tLxs/R0yNL2Mg==", + "dev": true + }, "table": { "version": "6.8.0", "resolved": "https://registry.npmjs.org/table/-/table-6.8.0.tgz", @@ -35176,6 +71628,12 @@ } } }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true + }, "tar": { "version": "6.1.11", "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", @@ -35207,6 +71665,42 @@ "uuid": "^8.0.0" } }, + "telejson": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/telejson/-/telejson-5.3.3.tgz", + "integrity": "sha512-PjqkJZpzEggA9TBpVtJi1LVptP7tYtXB6rEubwlHap76AMjzvOdKX41CxyaW7ahhzDU1aftXnMCx5kAPDZTQBA==", + "dev": true, + "requires": { + "@types/is-function": "^1.0.0", + "global": "^4.4.0", + "is-function": "^1.0.2", + "is-regex": "^1.1.2", + "is-symbol": "^1.0.3", + "isobject": "^4.0.0", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3" + } + }, + "temp": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz", + "integrity": "sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==", + "dev": true, + "requires": { + "rimraf": "~2.6.2" + }, + "dependencies": { + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, "temp-dir": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", @@ -35261,6 +71755,116 @@ } } }, + "terser": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.12.1.tgz", + "integrity": "sha512-NXbs+7nisos5E+yXwAD+y7zrcTkMqb0dEJxIGtSKPdCBzopf7ni4odPul2aechpV7EXNvOudYOX2bb5tln1jbQ==", + "dev": true, + "requires": { + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" + }, + "dependencies": { + "acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "dev": true + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } + } + }, + "terser-webpack-plugin": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz", + "integrity": "sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ==", + "dev": true, + "requires": { + "cacache": "^15.0.5", + "find-cache-dir": "^3.3.1", + "jest-worker": "^26.5.0", + "p-limit": "^3.0.2", + "schema-utils": "^3.0.0", + "serialize-javascript": "^5.0.1", + "source-map": "^0.6.1", + "terser": "^5.3.4", + "webpack-sources": "^1.4.3" + }, + "dependencies": { + "cacache": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "dev": true, + "requires": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + } + }, + "find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + } + }, + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, "test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -35294,6 +71898,12 @@ "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", "dev": true }, + "throttle-debounce": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-3.0.1.tgz", + "integrity": "sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==", + "dev": true + }, "through": { "version": "2.3.8" }, @@ -35308,6 +71918,15 @@ "tildify": { "version": "2.0.0" }, + "timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, "tmp": { "version": "0.0.33", "dev": true, @@ -35321,25 +71940,117 @@ "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", "dev": true }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", "dev": true }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, "to-readable-stream": { "version": "1.0.0", "dev": true }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, "to-regex-range": { "version": "5.0.1", "requires": { "is-number": "^7.0.0" } }, + "toggle-selection": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", + "integrity": "sha1-bkWxJj8gF/oKzH2J14sVuL932jI=", + "dev": true + }, "toidentifier": { "version": "1.0.0" }, + "token-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-1.0.0.tgz", + "integrity": "sha1-zCAOqyYT9BZtJ/+a/HylbUnfbrQ=", + "dev": true + }, "touch": { "version": "3.1.0", "dev": true, @@ -35382,17 +72093,41 @@ "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=", "dev": true }, + "trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "dev": true + }, "trim-newlines": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", "dev": true }, + "trim-trailing-lines": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz", + "integrity": "sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==", + "dev": true + }, "triple-beam": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==" }, + "trough": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", + "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", + "dev": true + }, + "ts-dedent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", + "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", + "dev": true + }, "ts-jest": { "version": "27.1.3", "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.3.tgz", @@ -35407,14 +72142,27 @@ "make-error": "1.x", "semver": "7.x", "yargs-parser": "20.x" - }, - "dependencies": { - "yargs-parser": { - "version": "20.2.7", - "dev": true - } } }, + "ts-loader": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-8.3.0.tgz", + "integrity": "sha512-MgGly4I6cStsJy27ViE32UoqxPTN9Xly4anxxVyaIWR+9BGxboV4EyJBGfR3RePV7Ksjj3rHmPZJeIt+7o4Vag==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "enhanced-resolve": "^4.0.0", + "loader-utils": "^2.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4" + } + }, + "ts-map": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ts-map/-/ts-map-1.0.3.tgz", + "integrity": "sha512-vDWbsl26LIcPGmDpoVzjEP6+hvHZkBkLW7JpvwbCv/5IYPJlsbzCVXY3wsCeAxAUeTclNOUZxnLdGh3VBD/J6w==", + "dev": true + }, "ts-node": { "version": "10.7.0", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.7.0.tgz", @@ -35447,6 +72195,38 @@ } } }, + "ts-pnp": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz", + "integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==", + "dev": true + }, + "tsconfig": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-7.0.0.tgz", + "integrity": "sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==", + "dev": true, + "requires": { + "@types/strip-bom": "^3.0.0", + "@types/strip-json-comments": "0.0.30", + "strip-bom": "^3.0.0", + "strip-json-comments": "^2.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + } + } + }, "tsconfig-paths": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz", @@ -35494,6 +72274,35 @@ } } }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "tus-js-client": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tus-js-client/-/tus-js-client-2.3.1.tgz", + "integrity": "sha512-QEM7ySnthWT+wwePLTXVSQP8vBLCy0ZoJNDGFzNlsU+YVoK2WevIZwcRnKyo962xhYMiABe3aMvXvk4Ln+VRzQ==", + "dev": true, + "requires": { + "buffer-from": "^0.1.1", + "combine-errors": "^3.0.3", + "is-stream": "^2.0.0", + "js-base64": "^2.6.1", + "lodash.throttle": "^4.1.1", + "proper-lockfile": "^2.0.1", + "url-parse": "^1.5.7" + }, + "dependencies": { + "buffer-from": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-0.1.2.tgz", + "integrity": "sha512-RiWIenusJsmI2KcvqQABB83tLxCByE3upSP8QU3rJDMVFGPWLvPQJt/O1Su9moRWeH7d+Q2HYb68f6+v+tw2vg==", + "dev": true + } + } + }, "tus-node-server": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/tus-node-server/-/tus-node-server-0.5.2.tgz", @@ -35619,39 +72428,195 @@ "which-boxed-primitive": "^1.0.2" } }, - "undefsafe": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", - "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", - "dev": true - }, - "unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", + "dev": true + }, + "unfetch": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.2.0.tgz", + "integrity": "sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==", + "dev": true + }, + "unherit": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz", + "integrity": "sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==", + "dev": true, + "requires": { + "inherits": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", + "dev": true + }, + "unified": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz", + "integrity": "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==", + "dev": true, + "requires": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + }, + "dependencies": { + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true + } + } + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "unique-string": { + "version": "2.0.0", + "requires": { + "crypto-random-string": "^2.0.0" + }, + "dependencies": { + "crypto-random-string": { + "version": "2.0.0" + } + } + }, + "unist-builder": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-2.0.3.tgz", + "integrity": "sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==", + "dev": true + }, + "unist-util-generated": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.6.tgz", + "integrity": "sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==", + "dev": true + }, + "unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "dev": true + }, + "unist-util-position": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.1.0.tgz", + "integrity": "sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==", + "dev": true + }, + "unist-util-remove": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-2.1.0.tgz", + "integrity": "sha512-J8NYPyBm4baYLdCbjmf1bhPu45Cr1MWTm77qd9istEkzWpnN6O9tMsEbB2JhNnBCqGENRqEWomQ+He6au0B27Q==", + "dev": true, + "requires": { + "unist-util-is": "^4.0.0" + } + }, + "unist-util-remove-position": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz", + "integrity": "sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==", + "dev": true, + "requires": { + "unist-util-visit": "^2.0.0" + } + }, + "unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", "dev": true, "requires": { - "unique-slug": "^2.0.0" + "@types/unist": "^2.0.2" } }, - "unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "unist-util-visit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", "dev": true, "requires": { - "imurmurhash": "^0.1.4" + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" } }, - "unique-string": { - "version": "2.0.0", + "unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "dev": true, "requires": { - "crypto-random-string": "^2.0.0" - }, - "dependencies": { - "crypto-random-string": { - "version": "2.0.0" - } + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" } }, "universal-user-agent": { @@ -35672,6 +72637,59 @@ "unpipe": { "version": "1.0.0" }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true, + "optional": true + }, "update-notifier": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", @@ -35692,23 +72710,6 @@ "semver": "^7.3.4", "semver-diff": "^3.1.1", "xdg-basedir": "^4.0.0" - }, - "dependencies": { - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "requires": { - "ci-info": "^2.0.0" - } - } } }, "uri-js": { @@ -35717,6 +72718,12 @@ "punycode": "^2.1.0" } }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, "url": { "version": "0.10.3", "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", @@ -35739,6 +72746,40 @@ "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", "dev": true }, + "url-loader": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", + "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "mime-types": "^2.1.27", + "schema-utils": "^3.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, "url-parse-lax": { "version": "3.0.0", "dev": true, @@ -35755,15 +72796,83 @@ "fast-url-parser": "^1.1.3" } }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "use-composed-ref": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.2.1.tgz", + "integrity": "sha512-6+X1FLlIcjvFMAeAD/hcxDT8tmyrWnbSPMU0EnxQuDLIxokuFzWliXBiYZuGIx+mrAMLBw0WFfCkaPw8ebzAhw==", + "dev": true, + "requires": {} + }, + "use-isomorphic-layout-effect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.1.tgz", + "integrity": "sha512-L7Evj8FGcwo/wpbv/qvSfrkHFtOpCzvM5yl2KVyDJoylVuSvzphiiasmjgQPttIGBAy2WKiBNR98q8w7PiNgKQ==", + "dev": true, + "requires": {} + }, + "use-latest": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-latest/-/use-latest-1.2.0.tgz", + "integrity": "sha512-d2TEuG6nSLKQLAfW3By8mKr8HurOlTkul0sOpxbClIv4SQ4iOd7BYr7VIzdbktUCnv7dua/60xzd8igMU6jmyw==", + "dev": true, + "requires": { + "use-isomorphic-layout-effect": "^1.0.0" + } + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, "util-deprecate": { "version": "1.0.2" }, + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, "utils-merge": { "version": "1.0.1" }, "uuid": { "version": "8.3.2" }, + "uuid-browser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/uuid-browser/-/uuid-browser-3.1.0.tgz", + "integrity": "sha1-DwWkCu90+eWVHiDvv0SxGHHlZBA=", + "dev": true + }, "v8-compile-cache": { "version": "2.3.0", "dev": true @@ -35817,6 +72926,53 @@ "vary": { "version": "1.1.2" }, + "vfile": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" + } + }, + "vfile-location": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.2.0.tgz", + "integrity": "sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==", + "dev": true + }, + "vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + } + }, + "vite": { + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-2.8.6.tgz", + "integrity": "sha512-e4H0QpludOVKkmOsRyqQ7LTcMUDF3mcgyNU4lmi0B5JUbe0ZxeBBl8VoZ8Y6Rfn9eFKYtdXNPcYK97ZwH+K2ug==", + "dev": true, + "requires": { + "esbuild": "^0.14.14", + "fsevents": "~2.3.2", + "postcss": "^8.4.6", + "resolve": "^1.22.0", + "rollup": "^2.59.0" + } + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true + }, "vm2": { "version": "3.9.8", "resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.8.tgz", @@ -35838,12 +72994,111 @@ } } }, + "void-elements": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", + "integrity": "sha1-YU9/v42AHwu18GYfWy9XhXUOTwk=", + "dev": true + }, "vscode-textmate": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-5.2.0.tgz", "integrity": "sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==", "dev": true }, + "vue": { + "version": "3.2.31", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.31.tgz", + "integrity": "sha512-odT3W2tcffTiQCy57nOT93INw1auq5lYLLYtWpPYQQYQOOdHiqFct9Xhna6GJ+pJQaF67yZABraH47oywkJgFw==", + "dev": true, + "requires": { + "@vue/compiler-dom": "3.2.31", + "@vue/compiler-sfc": "3.2.31", + "@vue/runtime-dom": "3.2.31", + "@vue/server-renderer": "3.2.31", + "@vue/shared": "3.2.31" + } + }, + "vue-docgen-api": { + "version": "4.44.22", + "resolved": "https://registry.npmjs.org/vue-docgen-api/-/vue-docgen-api-4.44.22.tgz", + "integrity": "sha512-r99SeIZRqVsu1MJ49sgSmONFbqWXN9HnPxS1W1hfhOGKVqgfBWzXpJsexBuLN7XIerQM8Y1908S7AAV6GJVbRQ==", + "dev": true, + "requires": { + "@babel/parser": "^7.13.12", + "@babel/types": "^7.13.12", + "@vue/compiler-dom": "^3.2.0", + "@vue/compiler-sfc": "^3.2.0", + "ast-types": "0.14.2", + "hash-sum": "^1.0.2", + "lru-cache": "^4.1.5", + "pug": "^3.0.2", + "recast": "0.20.5", + "ts-map": "^1.0.3", + "vue-inbrowser-compiler-utils": "^4.44.22" + }, + "dependencies": { + "ast-types": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz", + "integrity": "sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==", + "dev": true, + "requires": { + "tslib": "^2.0.1" + } + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + }, + "vue-docgen-loader": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/vue-docgen-loader/-/vue-docgen-loader-1.5.0.tgz", + "integrity": "sha512-LKZ8mxeIQ44uSUMTplnwOXbC4bO4E2vyZDTbn7/1QlVwJPEIjk3ahL0DA1m27IEw6YTlHOwtWS0PrHmDkFgyAg==", + "dev": true, + "requires": { + "clone": "^2.1.2", + "jscodeshift": "^0.7.0", + "loader-utils": "^1.2.3", + "querystring": "^0.2.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, "vue-eslint-parser": { "version": "7.1.1", "dev": true, @@ -35871,6 +73126,84 @@ } } }, + "vue-inbrowser-compiler-demi": { + "version": "4.44.22", + "resolved": "https://registry.npmjs.org/vue-inbrowser-compiler-demi/-/vue-inbrowser-compiler-demi-4.44.22.tgz", + "integrity": "sha512-J+VcduUx6iwj3cfz+huB2yhwrhL8Gk4cmXe4gspURfmDMc9uukgiDWJEEDUHQCxFT+R/zA4uQgBjKexWcHZKUw==", + "dev": true, + "requires": {} + }, + "vue-inbrowser-compiler-utils": { + "version": "4.44.22", + "resolved": "https://registry.npmjs.org/vue-inbrowser-compiler-utils/-/vue-inbrowser-compiler-utils-4.44.22.tgz", + "integrity": "sha512-wOW6JSG+YXzrYMglP6AVkERM+1Yp371UT88eTkkZe4z/LFRuTGhZZFUKV1u9SuUEwIzd0nC+seEVzLdEwGGZvA==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "vue-inbrowser-compiler-demi": "^4.44.22" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + } + } + }, + "vue-loader": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-17.0.0.tgz", + "integrity": "sha512-OWSXjrzIvbF2LtOUmxT3HYgwwubbfFelN8PAP9R9dwpIkj48TVioHhWWSx7W7fk+iF5cgg3CBJRxwTdtLU4Ecg==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "hash-sum": "^2.0.0", + "loader-utils": "^2.0.0" + }, + "dependencies": { + "hash-sum": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz", + "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==", + "dev": true + } + } + }, + "vue-meta": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/vue-meta/-/vue-meta-2.4.0.tgz", + "integrity": "sha512-XEeZUmlVeODclAjCNpWDnjgw+t3WA6gdzs6ENoIAgwO1J1d5p1tezDhtteLUFwcaQaTtayRrsx7GL6oXp/m2Jw==", + "dev": true, + "requires": { + "deepmerge": "^4.2.2" + } + }, + "vue-router": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.0.14.tgz", + "integrity": "sha512-wAO6zF9zxA3u+7AkMPqw9LjoUCjSxfFvINQj3E/DceTt6uEz1XZLraDhdg2EYmvVwTBSGlLYsUw8bDmx0754Mw==", + "dev": true, + "requires": { + "@vue/devtools-api": "^6.0.0" + } + }, + "vuex": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vuex/-/vuex-4.0.2.tgz", + "integrity": "sha512-M6r8uxELjZIK8kTKDGgZTYX/ahzblnzC4isU1tpmEuOIIKmV+TRdc+H4s8ds2NuZ7wpUTdGRzJRtoj+lI+pc0Q==", + "dev": true, + "requires": { + "@vue/devtools-api": "^6.0.0-beta.11" + } + }, + "vuex-router-sync": { + "version": "6.0.0-rc.1", + "resolved": "https://registry.npmjs.org/vuex-router-sync/-/vuex-router-sync-6.0.0-rc.1.tgz", + "integrity": "sha512-pzVrX/rmQsDjJiKPAjgKxpkxWdiBBQmxATFA6eFyS2Tmo6jauq8iDk9BWxkw41/OA+pbq4wkONRC0aeErDw8GQ==", + "dev": true, + "requires": {} + }, "w3c-hr-time": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", @@ -35898,12 +73231,524 @@ "makeerror": "1.0.12" } }, + "warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "watchpack": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", + "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "dev": true, + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "watchpack-chokidar2": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", + "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", + "dev": true, + "optional": true, + "requires": { + "chokidar": "^2.1.8" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "optional": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true, + "optional": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "optional": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "optional": true + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "optional": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "optional": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "optional": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "optional": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true, + "optional": true + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "optional": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "optional": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "optional": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "optional": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "optional": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "optional": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "optional": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + } + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "optional": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "optional": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "web-namespaces": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-1.1.4.tgz", + "integrity": "sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==", + "dev": true + }, "webidl-conversions": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", "dev": true }, + "webpack": { + "version": "5.70.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.70.0.tgz", + "integrity": "sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw==", + "dev": true, + "peer": true, + "requires": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.9.2", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.3.1", + "webpack-sources": "^3.2.3" + }, + "dependencies": { + "@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "dev": true, + "peer": true + }, + "acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "dev": true, + "peer": true + }, + "acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "dev": true, + "peer": true, + "requires": {} + }, + "enhanced-resolve": { + "version": "5.9.2", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz", + "integrity": "sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA==", + "dev": true, + "peer": true, + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "peer": true + }, + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "peer": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "peer": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "peer": true + }, + "terser-webpack-plugin": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", + "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", + "dev": true, + "peer": true, + "requires": { + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1", + "terser": "^5.7.2" + } + }, + "webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "peer": true + } + } + }, + "webpack-dev-middleware": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz", + "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==", + "dev": true, + "requires": { + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true + }, + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + } + } + }, + "webpack-hot-middleware": { + "version": "2.25.1", + "resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.25.1.tgz", + "integrity": "sha512-Koh0KyU/RPYwel/khxbsDz9ibDivmUbrRuKSSQvW42KSDdO4w23WI3SkHpSUKHE76LrFnnM/L7JCrpBwu8AXYw==", + "dev": true, + "requires": { + "ansi-html-community": "0.0.8", + "html-entities": "^2.1.0", + "querystring": "^0.2.0", + "strip-ansi": "^6.0.0" + } + }, + "webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "dev": true, + "requires": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", + "dev": true + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + } + } + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "webpack-virtual-modules": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.2.2.tgz", + "integrity": "sha512-kDUmfm3BZrei0y+1NTHJInejzxfhtU8eDj2M7OKb2IWrPFAeO1SOH2KuQ68MSZu9IGEHcxbkKKR1v18FrUSOmA==", + "dev": true, + "requires": { + "debug": "^3.0.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, "wgs84": { "version": "0.0.0" }, @@ -35987,6 +73832,12 @@ } } }, + "wildcard": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-1.1.2.tgz", + "integrity": "sha1-pwIEUwhNjNLv5wup02liY94XEKU=", + "dev": true + }, "winston": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/winston/-/winston-3.6.0.tgz", @@ -36041,6 +73892,18 @@ } } }, + "with": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/with/-/with-7.0.2.tgz", + "integrity": "sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==", + "dev": true, + "requires": { + "@babel/parser": "^7.9.6", + "@babel/types": "^7.9.6", + "assert-never": "^1.2.1", + "babel-walk": "3.0.0-canary-5" + } + }, "wkt-parser": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/wkt-parser/-/wkt-parser-1.3.1.tgz", @@ -36061,6 +73924,24 @@ "version": "1.0.0", "dev": true }, + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "worker-rpc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/worker-rpc/-/worker-rpc-0.1.1.tgz", + "integrity": "sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg==", + "dev": true, + "requires": { + "microevent.ts": "~0.1.1" + } + }, "wrap-ansi": { "version": "7.0.0", "dev": true, @@ -36191,13 +74072,15 @@ "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.0" } - }, - "yargs-parser": { - "version": "20.2.7", - "dev": true } } }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true + }, "yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", @@ -36205,6 +74088,12 @@ }, "yocto-queue": { "version": "0.1.0" + }, + "zwitch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", + "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", + "dev": true } } } diff --git a/package.json b/package.json index a5d5d1b7fb12c7edcacf8bf265c03bba293fc18c..2ad7f28aa71dd0e5acb6881240f49670bfb17612 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,8 @@ "version": "1.0.0", "description": "Le cadastre minier numérique ouvert", "workspaces": [ - "packages/api" + "packages/api", + "packages/ui" ], "private": true, "repository": { @@ -16,9 +17,18 @@ }, "homepage": "https://github.com/MTES-MCT/camino#readme", "scripts": { - "prepare": "husky install" + "prepare": "husky install", + "test": "npm run test -w packages/api && npm run test -w packages/ui" + }, + "lint-staged": { + "packages/ui/*.{js,ts,vue}": "eslint --cache --fix", + "packages/ui/*.css": "stylelint --fix", + "packages/ui/*.{js,css}": "prettier --write", + "packages/api/*.{js,ts}": "eslint --cache --fix", + "packages/api/*.{ts,js,graphql}": "prettier --write" }, "devDependencies": { - "husky": "^7.0.4" + "husky": "^7.0.4", + "lint-staged": "^12.3.6" } } diff --git a/packages/api/Dockerfile b/packages/api/Dockerfile deleted file mode 100644 index a20ffcc08597a2d1ab1aaa4931848d45a3ccb3a8..0000000000000000000000000000000000000000 --- a/packages/api/Dockerfile +++ /dev/null @@ -1,29 +0,0 @@ -FROM node:16.12-alpine as build-stage -WORKDIR /app - -COPY package*.json ./ - -# On désactive husky -RUN npm set-script prepare "" -RUN npm ci --only=prod - -COPY tsconfig.json ./ -COPY src src/ -RUN npm run build - -FROM node:16.12-alpine as production-stage -WORKDIR /app - -# redirige les logs sur le collecteur de logs docker -# cf le Dockerfile de nginx -# https://github.com/nginxinc/docker-nginx/blob/8921999083def7ba43a06fabd5f80e4406651353/mainline/jessie/Dockerfile#L21-L23 -RUN ln -sf /dev/stdout /app/app.log - -COPY --from=build-stage /app/package.json ./ -COPY --from=build-stage /app/dist ./dist -COPY --from=build-stage /app/node_modules ./node_modules -# nous avons besoin des sources pour lancer certains scripts manuellement -COPY --from=build-stage /app/src ./src -COPY --from=build-stage /app/tsconfig.json ./ - -CMD ["npm", "start"] diff --git a/packages/api/Dockerfile.docs b/packages/api/Dockerfile.docs deleted file mode 100644 index 616b4168eb12b09334886aee0eb27638ca01afe1..0000000000000000000000000000000000000000 --- a/packages/api/Dockerfile.docs +++ /dev/null @@ -1,2 +0,0 @@ -FROM nginx -COPY docs /usr/share/nginx/html diff --git a/packages/api/README.md b/packages/api/README.md index 40bcbe79f812ae1c5c928304a8cf5cffc0a57346..74a2fceb7b75318faaf461fd46565ae508e619f5 100644 --- a/packages/api/README.md +++ b/packages/api/README.md @@ -1,14 +1,5 @@ # API de Camino -[![Tests Status][ci-img]][ci] [![codecov][codecov-img]][codecov] [![Dependency Status][dep-img]][dep] - -[ci-img]: https://github.com/MTES-MCT/camino-api/workflows/Tests/badge.svg -[ci]: https://github.com/MTES-MCT/camino-api/actions -[codecov-img]: https://codecov.io/gh/MTES-MCT/camino-api/branch/master/graph/badge.svg -[codecov]: https://codecov.io/gh/MTES-MCT/camino-api -[dep-img]: https://david-dm.org/MTES-MCT/camino-api.svg -[dep]: https://david-dm.org/MTES-MCT/camino-api - > API de Camino, le cadastre minier numérique ouvert: [api.camino.beta.gouv.fr](https://api.camino.beta.gouv.fr) L'API de Camino expose les propriétés des titres et autorisations du domaine minier français. @@ -22,17 +13,3 @@ Pour plus de détail sur le périmètre de l'API, voir [cette page](https://cami ## Documentation La documentation de l'API est disponible ici: [docs.camino.beta.gouv.fr](https://docs.camino.beta.gouv.fr). - ---- - -## Crédits - -[La Fabrique Numérique, Ministère de la transition écologique et solidaire](https://www.ecologique-solidaire.gouv.fr/inauguration-fabrique-numerique-lincubateur-des-ministeres-charges-lecologie-et-des-territoires) - ---- - -## Licence - -Camino API, le cadastre minier numérique ouvert - -[AGPL 3 ou plus récent](https://spdx.org/licenses/AGPL-3.0-or-later.html) diff --git a/packages/api/docker-compose.docs.yml b/packages/api/docker-compose.docs.yml deleted file mode 100644 index 7f77495e1af8e3b9111cf86671a8bc60b610a63b..0000000000000000000000000000000000000000 --- a/packages/api/docker-compose.docs.yml +++ /dev/null @@ -1,21 +0,0 @@ -version: '3' - -services: - app: - container_name: camino_api_docs - image: caminofr/camino-api-docs - environment: - VIRTUAL_HOST: ${URL} - VIRTUAL_PORT: ${PORT} - LETSENCRYPT_HOST: ${URL} - LETSENCRYPT_EMAIL: ${LETSENCRYPT_EMAIL} - expose: - - ${PORT} - networks: - - default - - nginx-proxy - restart: always - -networks: - nginx-proxy: - external: true diff --git a/packages/api/docker-compose.local.yml b/packages/api/docker-compose.local.yml deleted file mode 100644 index 85782566daed80b8fb10e5efe7c6291aa9699e22..0000000000000000000000000000000000000000 --- a/packages/api/docker-compose.local.yml +++ /dev/null @@ -1,58 +0,0 @@ -version: '3' - -services: - app: - container_name: camino_api_app - build: . - depends_on: - - db - environment: - VIRTUAL_HOST: ${URL} - VIRTUAL_PORT: ${PORT} - PGHOST: db - expose: - - ${PORT} - networks: - - default - - nginx-proxy - volumes: - - files:/app/files - - ./.env:/app/.env - - cron: - container_name: camino_api_cron - build: . - command: node ./dist/src/cron.js - depends_on: - - db - environment: - PGHOST: db - networks: - - default - - nginx-proxy - volumes: - - files:/app/files - - ./.env:/app/.env - - db: - container_name: camino_api_db - image: postgis/postgis:12-3.2 - environment: - PGUSER: ${PGUSER} - POSTGRES_USER: ${PGUSER} - POSTGRES_PASSWORD: ${PGPASSWORD} - POSTGRES_DB: ${PGDATABASE} - expose: - - ${PGPORT} - networks: - - default - volumes: - - data:/var/lib/postgresql/data - -volumes: - data: {} - files: - -networks: - nginx-proxy: - external: true diff --git a/packages/api/docker-compose.localhost.yml b/packages/api/docker-compose.localhost.yml deleted file mode 100644 index 7142beae373b869b9e3f73f54b9f55ab8516d1e8..0000000000000000000000000000000000000000 --- a/packages/api/docker-compose.localhost.yml +++ /dev/null @@ -1,32 +0,0 @@ -version: '3' - -services: - app: - container_name: camino_api_app - image: node:16.12-alpine - volumes: - - ./:/app - working_dir: /app - depends_on: - - db - environment: - PGHOST: db - ports: - - ${PORT}:${PORT} - command: npm run dev - - db: - container_name: camino_api_db - image: postgis/postgis:12-3.2 - environment: - PGUSER: ${PGUSER} - POSTGRES_USER: ${PGUSER} - POSTGRES_PASSWORD: ${PGPASSWORD} - POSTGRES_DB: ${PGDATABASE} - expose: - - ${PGPORT} - volumes: - - data:/var/lib/postgresql/data - -volumes: - data: {} diff --git a/packages/api/package.json b/packages/api/package.json index 086c2506098cc8723dca2a7df4200ed4b596266b..576e9fec5a27185e8b1c63ebca34a7d938598e44 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -22,7 +22,6 @@ "scripts": { "bim": "npm i && npm run build && npm run db:recreate && npm run db:import", "build": "rm -rf dist && tsc && mkdir -p ./dist/src/api/graphql && cp -r ./src/api/graphql/schemas ./dist/src/api/graphql", - "commit": "lint-staged && git-cz", "daily": "node ./dist/src/scripts/daily.js", "monthly": "node ./dist/src/scripts/monthly.js", "db:dump": "pg_dump --host=localhost --username=postgres --clean --if-exists --format=c --no-owner --no-privileges --dbname=camino --file=./backups/camino.sql", @@ -152,7 +151,6 @@ "eslint-plugin-standard": "^5.0.0", "eslint-plugin-tsdoc": "^0.2.14", "jest": "^27.5.1", - "lint-staged": "^12.3.6", "nodemon": "^2.0.15", "npm-check-updates": "^12.5.3", "pg-escape": "^0.2.0", @@ -219,10 +217,6 @@ "path": "./node_modules/cz-conventional-changelog" } }, - "lint-staged": { - "*.{js,ts}": "eslint --cache --fix", - "*.{ts,js,graphql}": "prettier --write" - }, "release": { "branches": [ "master" diff --git a/packages/api/src/config/index.ts b/packages/api/src/config/index.ts index fa71ff800019c155820f470a56c163a8c6548084..86fedebfda9339a3e716f9f5882526a288520599 100644 --- a/packages/api/src/config/index.ts +++ b/packages/api/src/config/index.ts @@ -1,10 +1,5 @@ -// virtualHost est défini seulement si -// l'application tourne dans un container docker -// voir le fichier DockerFile - const debug = process.env.NODE_DEBUG === 'true' -const virtualHost = process.env.VIRTUAL_HOST -const port = Number(process.env.PORT) -const url = virtualHost ? `http://${virtualHost}/` : `http://localhost:${port}/` +const port = Number(process.env.API_PORT) +const url = `http://localhost:${port}/` export { port, url, debug } diff --git a/packages/ui/.editorconfig b/packages/ui/.editorconfig new file mode 100644 index 0000000000000000000000000000000000000000..7053c49a045c91bd8b3015c1cf3d1f6da21660d8 --- /dev/null +++ b/packages/ui/.editorconfig @@ -0,0 +1,5 @@ +[*.{js,jsx,ts,tsx,vue}] +indent_style = space +indent_size = 2 +trim_trailing_whitespace = true +insert_final_newline = true diff --git a/packages/ui/.eslintignore b/packages/ui/.eslintignore new file mode 100644 index 0000000000000000000000000000000000000000..9b1c8b133c966006ff025957aa43c7de7bc04be8 --- /dev/null +++ b/packages/ui/.eslintignore @@ -0,0 +1 @@ +/dist diff --git a/packages/ui/.gitignore b/packages/ui/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..e769033023c115791eb17b534bd5b8365cbf2c6e --- /dev/null +++ b/packages/ui/.gitignore @@ -0,0 +1,10 @@ +.DS_Store +.env +.env.development +.env.production +/dist +/coverage +node_modules +/.idea/ +*.iml +.eslintcache diff --git a/packages/ui/.ncurc.json b/packages/ui/.ncurc.json new file mode 100644 index 0000000000000000000000000000000000000000..ebaa0a8ba79989b010209b92a7c54d21551c21f1 --- /dev/null +++ b/packages/ui/.ncurc.json @@ -0,0 +1,12 @@ +{ + "upgrade": true, + "reject": [ + "eslint", + "eslint-plugin-vue", + "eslint-plugin-promise", + "postcss-button", + "postcss-grid-fluid" , + "postcss-typescale", + "graphql-react" + ] +} diff --git a/packages/ui/.prettierignore b/packages/ui/.prettierignore new file mode 100644 index 0000000000000000000000000000000000000000..eb189029a320b51c964f3086ed806003826358b5 --- /dev/null +++ b/packages/ui/.prettierignore @@ -0,0 +1,6 @@ +/node_modules/** +/dist/** +/tests/unit/coverage/** +src/styles/icons/icons.css +src/styles/system/forms.css +src/styles/settings.css diff --git a/packages/ui/.storybook/main.js b/packages/ui/.storybook/main.js new file mode 100644 index 0000000000000000000000000000000000000000..c507da4c9ae40dc37978fc09a7e7551d72d1d273 --- /dev/null +++ b/packages/ui/.storybook/main.js @@ -0,0 +1,16 @@ +module.exports = { + stories: ['../src/**/*.stories.@(js|jsx|ts|tsx)'], + addons: [ + '@storybook/addon-actions', + '@storybook/addon-controls', + { + name: '@storybook/addon-postcss', + options: { + postcssLoaderOptions: { + implementation: require('postcss') + } + } + } + ], + framework: '@storybook/vue3' +} diff --git a/packages/ui/.storybook/preview.js b/packages/ui/.storybook/preview.js new file mode 100644 index 0000000000000000000000000000000000000000..ad720e989005416e219f4be81ad17aabbbdfeb9a --- /dev/null +++ b/packages/ui/.storybook/preview.js @@ -0,0 +1,11 @@ +import '../src/styles/styles.css' + +export const parameters = { + actions: { argTypesRegex: '^on.*' }, + controls: { + matchers: { + color: /(background|color)$/i, + date: /Date$/ + } + } +} diff --git a/packages/ui/CHANGELOG.md b/packages/ui/CHANGELOG.md new file mode 100644 index 0000000000000000000000000000000000000000..7b3e8b40a0ee47a74beb12d431c2cd794f33d940 --- /dev/null +++ b/packages/ui/CHANGELOG.md @@ -0,0 +1,2035 @@ +# [0.34.0](https://github.com/MTES-MCT/camino-ui/compare/v0.33.0...v0.34.0) (2022-03-17) + + +### Bug Fixes + +* **carte:** corrige les fonds de cartes IGN et supprime les fonds de cartes obsolètes ([#493](https://github.com/MTES-MCT/camino-ui/issues/493)) ([93cf770](https://github.com/MTES-MCT/camino-ui/commit/93cf770dc4535cad7c3500b21a9385bccaeab206)) + + +### Features + +* **apropos:** remplace l’équipe de la page « À propos » par un lien vers la page de l’incubateur ([#494](https://github.com/MTES-MCT/camino-ui/issues/494)) ([a0d8774](https://github.com/MTES-MCT/camino-ui/commit/a0d87741859f92cae9d0780b852add588ef17f38)) +* **étapes:** autorise les utilisateurs pouvant modifier à supprimer aussi une étape ([#491](https://github.com/MTES-MCT/camino-ui/issues/491)) ([863697c](https://github.com/MTES-MCT/camino-ui/commit/863697ca548b64ddf156f57d081ccd9752a711db)) +* **login:** mettre le nom de l’utilisateur connecté à la place du bouton 'bonhomme' ([#495](https://github.com/MTES-MCT/camino-ui/issues/495)) ([e41f9fc](https://github.com/MTES-MCT/camino-ui/commit/e41f9fc681418f0b026573233674f7d0ddf14758)) +* **style:** ajoute une barre horizontale sous les champs d’édition ([78c4294](https://github.com/MTES-MCT/camino-ui/commit/78c4294050ba3eff73551a1d1ca6c6a12396436c)) + +# [0.33.0](https://github.com/MTES-MCT/camino-ui/compare/v0.32.0...v0.33.0) (2022-03-01) + + +### Bug Fixes + +* **activité:** corrige la suppression d’une activité ([#488](https://github.com/MTES-MCT/camino-ui/issues/488)) ([8e0a2df](https://github.com/MTES-MCT/camino-ui/commit/8e0a2dfe6b68699e1e474176bb5443437fcbe80d)) + + +### Features + +* **étapes:** ajoute la sections décisions annexes lors de l’édition d’une étape ([#486](https://github.com/MTES-MCT/camino-ui/issues/486)) ([f1f65b1](https://github.com/MTES-MCT/camino-ui/commit/f1f65b18e4dbccb15c19c510d5abe312522cda2d)) +* **périmètre:** désactive la saisie de lot de points ([#487](https://github.com/MTES-MCT/camino-ui/issues/487)) ([2f9bced](https://github.com/MTES-MCT/camino-ui/commit/2f9bced2c065a16dc6446e91455f3142094f7328)) + +# [0.32.0](https://github.com/MTES-MCT/camino-ui/compare/v0.31.0...v0.32.0) (2022-02-21) + + +### Bug Fixes + +* **étape:** corrige la possibilité de supprimer un titulaire d’une étape ([9677572](https://github.com/MTES-MCT/camino-ui/commit/9677572774b8b9ee3db7ece7a8a6966781c54d68)) + + +### Features + +* **àpropos:** déplace Davy dans la liste des anciens de Camino ([#477](https://github.com/MTES-MCT/camino-ui/issues/477)) ([d43e2de](https://github.com/MTES-MCT/camino-ui/commit/d43e2deb1ecb45e9be54829f01273308051fdb7f)) +* **démarche:** ajoute la possibilité de mettre une description sur une démarche ([#476](https://github.com/MTES-MCT/camino-ui/issues/476)) ([962888f](https://github.com/MTES-MCT/camino-ui/commit/962888fde959e20be018e026afd6e3f6d2b76626)) +* **document:** utilise les paramètres du navigateur pour télécharger les documents ([#475](https://github.com/MTES-MCT/camino-ui/issues/475)) ([054cfb0](https://github.com/MTES-MCT/camino-ui/commit/054cfb075ddda93b33454ba7e3292d09d38af6f0)) +* **graphql:** réactive le cache sur les requêtes GraphQL ([#481](https://github.com/MTES-MCT/camino-ui/issues/481)) ([bb2738b](https://github.com/MTES-MCT/camino-ui/commit/bb2738b83af5a6e72ec1f65e499925da10a6d5e2)) +* **titres:** permet de filtrer les titres avec l’identifiant unique d’une entreprise ([c313a6d](https://github.com/MTES-MCT/camino-ui/commit/c313a6d51ff6fdcb2c64e1465b4f681ca27089de)) +* **titres:** permet de filtrer les titres par une liste d’identifiants uniques ([21f246e](https://github.com/MTES-MCT/camino-ui/commit/21f246e602c37096cbd0eda46815ed588d38b89b)) +* **titres:** utilise l’identifiant unique des substances pour filtrer les titres ([0166057](https://github.com/MTES-MCT/camino-ui/commit/0166057bfc69067add7fe75121b42415a0b5374a)) +* **travaux:** rend visible la liste des travaux que par les administrations ([#479](https://github.com/MTES-MCT/camino-ui/issues/479)) ([8380e5b](https://github.com/MTES-MCT/camino-ui/commit/8380e5bc600ca46cd4c8e6772b895a6d23595c01)) +* **typeform:** ajoute un formulaire de satisfaction ([#482](https://github.com/MTES-MCT/camino-ui/issues/482)) ([c59ba5a](https://github.com/MTES-MCT/camino-ui/commit/c59ba5a50b42731196002d997dd47a9232c59f2f)) +* **utilisateur:** ne peut pas créer d’utilisateur d’une administration/entreprise sans entité ([e2633cd](https://github.com/MTES-MCT/camino-ui/commit/e2633cd9cc0a61ab9cd00a330864e78441f4d99d)) + +# Changelog + +All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. + +## [0.31.0](https://github.com/MTES-MCT/camino-ui/compare/v0.30.0...v0.31.0) (2022-01-25) + + +### Features + +* **autocomplete:** implémente un input d'autocomplétion ([#451](https://github.com/MTES-MCT/camino-ui/issues/451)) ([3c4b352](https://github.com/MTES-MCT/camino-ui/commit/3c4b3524e26a7bd8516b0213e4942a1f5d47b968)) +* **axm:** ajoute l’aide lors d’une demande d’AXM par l’opérateur ([#463](https://github.com/MTES-MCT/camino-ui/issues/463)) ([fcb6233](https://github.com/MTES-MCT/camino-ui/commit/fcb6233823b6d9b7169e8572434b94ae914c1267)) +* **étape:** modifie le libellé des documents spécifiques à l’étape courante ([#461](https://github.com/MTES-MCT/camino-ui/issues/461)) ([816c2df](https://github.com/MTES-MCT/camino-ui/commit/816c2df22f3b7c96647b20f480a615d45d4a7a41)) +* **travaux:** ajoute une nouvelle page dédiée aux démarches de travaux ([#462](https://github.com/MTES-MCT/camino-ui/issues/462)) ([ad4943b](https://github.com/MTES-MCT/camino-ui/commit/ad4943b8187b680b25a0847d12fe2afb81c8c776)) + + +### Bug Fixes + +* **autocomplete:** harmonise la couleur highlight ([#468](https://github.com/MTES-MCT/camino-ui/issues/468)) ([3961677](https://github.com/MTES-MCT/camino-ui/commit/39616778ac624fd48fad6405c8380ef46b7621be)) +* **cerbère:** corrige la connexion via Cerbère ([#470](https://github.com/MTES-MCT/camino-ui/issues/470)) ([4342e56](https://github.com/MTES-MCT/camino-ui/commit/4342e5612ceb4ad8225920807565d801ae718efd)) +* **connexion:** corrige la réinitialisation du mot de passe ([#472](https://github.com/MTES-MCT/camino-ui/issues/472)) ([8c58ac8](https://github.com/MTES-MCT/camino-ui/commit/8c58ac8bcd679abeb3af079addce02714ff9c7c6)) +* **dropdown:** corrige le bug de superposition ([#465](https://github.com/MTES-MCT/camino-ui/issues/465)) ([8fd6404](https://github.com/MTES-MCT/camino-ui/commit/8fd64047a5dc514a82cc43aa0a487954311ff7be)) +* **popup:** corrige la barre verticale dans les popups ([#466](https://github.com/MTES-MCT/camino-ui/issues/466)) ([87ad7da](https://github.com/MTES-MCT/camino-ui/commit/87ad7daf55b9ba1fca23a977cb1970a97341f2d0)) +* **titres:** affiche correctement les périmètres les titres en cours de demande pour les opérateurs ([#467](https://github.com/MTES-MCT/camino-ui/issues/467)) ([d7bf03e](https://github.com/MTES-MCT/camino-ui/commit/d7bf03ef0fdb8ede3bb6bb979c3f03b13c65dbd1)) +* **travaux:** corrige le filtrage des travaux ([#473](https://github.com/MTES-MCT/camino-ui/issues/473)) ([7fe6fc0](https://github.com/MTES-MCT/camino-ui/commit/7fe6fc0421f5164c8dcf819a96e04f144d0b0f8f)) + +## [0.30.0](https://github.com/MTES-MCT/camino-ui/compare/v0.29.0...v0.30.0) (2022-01-13) + + +### Features + +* **authentification:** utilise les cookies pour gérer l’authentification ([#446](https://github.com/MTES-MCT/camino-ui/issues/446)) ([35dc059](https://github.com/MTES-MCT/camino-ui/commit/35dc059baeebc5bb0f6ae50bbb0c4ee32ae37318)) +* **carte:** ajoute la légende sur le fond de carte du Sdom ([#455](https://github.com/MTES-MCT/camino-ui/issues/455)) ([ec1ae65](https://github.com/MTES-MCT/camino-ui/commit/ec1ae6508db4a845c9b9ffeeec0f5f3ccb07532e)) +* **cookies:** supprime les cookies Matomo ([#447](https://github.com/MTES-MCT/camino-ui/issues/447)) ([fb63230](https://github.com/MTES-MCT/camino-ui/commit/fb63230d3caf96a924789f57284d1a1706b87c9a)) +* **étape:** affiche des messages lors de l’édition d’une étape ([#452](https://github.com/MTES-MCT/camino-ui/issues/452)) ([4617808](https://github.com/MTES-MCT/camino-ui/commit/46178087f0d8c2ed99954c6604c7df1f9cb22213)) +* **icons:** met à jour l'icône d'aide ([c296563](https://github.com/MTES-MCT/camino-ui/commit/c2965637804a616129119566eef6772c694bc793)) +* **icons:** met à jours les icônes de la page d'accueil selon le DSFR ([2dbf293](https://github.com/MTES-MCT/camino-ui/commit/2dbf2935aba216a0601a07c1667a6dde0a9e184a)) +* **ign:** met à jour le flux pour afficher le plan IGN ([#448](https://github.com/MTES-MCT/camino-ui/issues/448)) ([95c7de8](https://github.com/MTES-MCT/camino-ui/commit/95c7de87c69f360966d3434ae38cf5af6e29ec47)) +* **pdf:** ajoute les CSP nécessaires pour les prévisualisation des PDFs ([e3db23f](https://github.com/MTES-MCT/camino-ui/commit/e3db23f21400f74b63a462ba85bc7cc9f34a7695)) +* **téléchargement:** utilise directement l’url pour télécharger les fichiers ([#460](https://github.com/MTES-MCT/camino-ui/issues/460)) ([f7701dd](https://github.com/MTES-MCT/camino-ui/commit/f7701ddbb51c9c376dc7fa26a80dcedb6dd59f64)) +* **titres:** transforme les messages en alertes qui contiennent un message et peut-être un lien ([#454](https://github.com/MTES-MCT/camino-ui/issues/454)) ([47902ca](https://github.com/MTES-MCT/camino-ui/commit/47902ca8b43876b7f24340c549223b5a502cab23)) + + +### Bug Fixes + +* **activites:** corrige la prévisualisation des activités ([#456](https://github.com/MTES-MCT/camino-ui/issues/456)) ([c70f7ed](https://github.com/MTES-MCT/camino-ui/commit/c70f7edc14bfe094401dbe06fef29e88a52117e8)) +* **aide:** corrige l’affichage de l’aide sur le bouton enregistrer d’une étape ([#457](https://github.com/MTES-MCT/camino-ui/issues/457)) ([e132c9f](https://github.com/MTES-MCT/camino-ui/commit/e132c9f867c4f7e9e9510117d3c96cec8d4a1bf4)) +* **icone:** corrige l’icone du globe, sa taille est définie par la CSS et non par le SVG ([#458](https://github.com/MTES-MCT/camino-ui/issues/458)) ([3f37a52](https://github.com/MTES-MCT/camino-ui/commit/3f37a52d291fe22a2174f5acf22c0078d0a13004)) +* **téléversement:** corrige le téléversement suite à la mise en place des cookies ([#449](https://github.com/MTES-MCT/camino-ui/issues/449)) ([add4a0b](https://github.com/MTES-MCT/camino-ui/commit/add4a0bf3e49fc0bb9af54524baa6f262cb0b782)) +* **utilisateur:** corrige la création d’utilisateur en passant correctement le jeton ([#459](https://github.com/MTES-MCT/camino-ui/issues/459)) ([f7cb1c3](https://github.com/MTES-MCT/camino-ui/commit/f7cb1c3266943bc07cef577cf9f72a8ee6bdde4a)) + +## [0.29.0](https://github.com/MTES-MCT/camino-ui/compare/v0.28.0...v0.29.0) (2021-12-15) + + +### Features + +* **demande:** permet le téléchargement des documents de l'étape Demande en .zip ([#442](https://github.com/MTES-MCT/camino-ui/issues/442)) ([70743d1](https://github.com/MTES-MCT/camino-ui/commit/70743d12d87e9b794b0f12c5a6f97bc0c4359657)) +* **document:** implémente la préviz des document PDFs dans un nouvel onglet ([e2e266a](https://github.com/MTES-MCT/camino-ui/commit/e2e266a9bb8f7cb15c4ece280dc9515f9bc12b59)) +* **document:** implémente la préviz des documents avec PDF.js ([8ceb0cf](https://github.com/MTES-MCT/camino-ui/commit/8ceb0cf2a9e3a2a067077d95d56e36a565443bc7)) + + +### Bug Fixes + +* **document:** permet l'ouverture de gros fichier PDF sur tous les navigateurs ([11ef475](https://github.com/MTES-MCT/camino-ui/commit/11ef475a3cc24f39ba273cc3abc66dea95637c42)) +* **travaux:** corrige la visibilité de l’onglet travaux pour les administrations locales ([#444](https://github.com/MTES-MCT/camino-ui/issues/444)) ([b00440f](https://github.com/MTES-MCT/camino-ui/commit/b00440f850a42eeae32e24d353838687004ef2fa)) + +## [0.28.0](https://github.com/MTES-MCT/camino-ui/compare/v0.27.0...v0.28.0) (2021-12-13) + + +### Features + +* **activites:** commence l'implémentation des infobulles à Preview et ActiviteEdition pour types 'gra' et 'grp' ([f91c188](https://github.com/MTES-MCT/camino-ui/commit/f91c18854eaa728d4112fe188a457be94e35ec4d)) +* **activites:** termine l'implémentation des infobulles à Preview et ActiviteEdition pour types 'gra' et 'grp' ([63658f4](https://github.com/MTES-MCT/camino-ui/commit/63658f4c952ee2f0286939e4bc689807a8f386e4)) +* **sdom:** vérifie les documents obligatoires en fonction des zones de SDOM ([#438](https://github.com/MTES-MCT/camino-ui/issues/438)) ([b186388](https://github.com/MTES-MCT/camino-ui/commit/b18638867dff2e3a8e725351d71c006f67189bad)) + + +### Bug Fixes + +* **abonnement:** précise l’intitulé du bouton pour s’abonner à un titre ([8c0cbaa](https://github.com/MTES-MCT/camino-ui/commit/8c0cbaa8067074e2fb0e8896af4e86bcc3a5e0d9)) +* **acitvites:** retire l'attribut 'primaire' des boutons d'éditions sur la liste ([26891c8](https://github.com/MTES-MCT/camino-ui/commit/26891c818f3e6e4f2ed3935b5e061851ce15dc25)) + +## [0.27.0](https://github.com/MTES-MCT/camino-ui/compare/v0.26.0...v0.27.0) (2021-12-01) + + +### Features + +* **page/admin:** complète les informations sur l'envoi des emails ([#432](https://github.com/MTES-MCT/camino-ui/issues/432)) ([6b555f7](https://github.com/MTES-MCT/camino-ui/commit/6b555f7dd9a055ee0a8d02a358ae3e72592614e3)) +* **proprietes:** masque l'affichage des dates début/fin pour admin ([#434](https://github.com/MTES-MCT/camino-ui/issues/434)) ([a596e80](https://github.com/MTES-MCT/camino-ui/commit/a596e80dc142f69aa5b4c0e7dc8d8510d3e72338)) +* **titre:** permet aux utilisateurs de s’abonner à un titre ([#433](https://github.com/MTES-MCT/camino-ui/issues/433)) ([41684e1](https://github.com/MTES-MCT/camino-ui/commit/41684e12bce44d1b5c7155f0ac4c906936097f98)) + + +### Bug Fixes + +* **guyane:** corrige les coordonnées de la Guyane sur la carte ([#436](https://github.com/MTES-MCT/camino-ui/issues/436)) ([77bdbf3](https://github.com/MTES-MCT/camino-ui/commit/77bdbf368fb9c3152f9c565dc407a1af9f271126)) + +## [0.26.0](https://github.com/MTES-MCT/camino-ui/compare/v0.25.0...v0.26.0) (2021-11-23) + + +### Features + +* **étape:** calcule automatiquement la surface à partir du périmètre ([#426](https://github.com/MTES-MCT/camino-ui/issues/426)) ([33d60c8](https://github.com/MTES-MCT/camino-ui/commit/33d60c89183a7c64fe2eede6c48abdb1dea7d6fb)) +* **sdom:** affiche les zones du SDOM sur les titres ([#424](https://github.com/MTES-MCT/camino-ui/issues/424)) ([3961490](https://github.com/MTES-MCT/camino-ui/commit/3961490aa904cbebee6bcfe6ca4279385bf34e09)) + + +### Bug Fixes + +* **accordion:** corrige le rognage de l'infobulle ([#428](https://github.com/MTES-MCT/camino-ui/issues/428)) ([9f135ca](https://github.com/MTES-MCT/camino-ui/commit/9f135ca050cdee993b5f184878755a90781b6bad)) +* **accordion:** corriger l'overflow pour les infobulles ([#429](https://github.com/MTES-MCT/camino-ui/issues/429)) ([c3b5449](https://github.com/MTES-MCT/camino-ui/commit/c3b5449c0e7a28a4304452d66f6769e93118725a)) +* **administrations:** harmonise étiquette affichée pour type activité ([#421](https://github.com/MTES-MCT/camino-ui/issues/421)) ([047c51a](https://github.com/MTES-MCT/camino-ui/commit/047c51ac5b433f180a4f63ba3cc798c0e3b74c79)) +* **document:** corrige l'erreur dans modifications de document ([#427](https://github.com/MTES-MCT/camino-ui/issues/427)) ([ee25009](https://github.com/MTES-MCT/camino-ui/commit/ee250094849a94473e203810ecfb73861bd56d87)) +* **email:** ajoute un email à la liste avec le bouton entrée ([#422](https://github.com/MTES-MCT/camino-ui/issues/422)) ([0b532db](https://github.com/MTES-MCT/camino-ui/commit/0b532dbd8b6170c43c158eacb1acbfb099f33cda)) +* **justificatifs:** permet de télécharger les justificatifs pendant l’édition d’une étape ([#425](https://github.com/MTES-MCT/camino-ui/issues/425)) ([3cb707e](https://github.com/MTES-MCT/camino-ui/commit/3cb707e6e61790f5d59671e6b8699e9beeb86607)) +* **surface:** désactive l’héritage de la surface lors de l’import d’un nouveau périmètre ([#430](https://github.com/MTES-MCT/camino-ui/issues/430)) ([ada72c4](https://github.com/MTES-MCT/camino-ui/commit/ada72c4178dcc18c278fe57acc4983d5c0854992)) +* **upload:** corrige la séquence de téléversement pour éviter les fichiers perdus ([#414](https://github.com/MTES-MCT/camino-ui/issues/414)) ([cc01c8b](https://github.com/MTES-MCT/camino-ui/commit/cc01c8b0cc250e908a330d358932a173ece90afc)) + +## [0.25.0](https://github.com/MTES-MCT/camino-ui/compare/v0.24.0...v0.25.0) (2021-11-10) + + +### Features + +* **administration:** notification par email sur activités ([#411](https://github.com/MTES-MCT/camino-ui/issues/411)) ([585ec55](https://github.com/MTES-MCT/camino-ui/commit/585ec550481154022da0ce64142ec8c5275e26b8)) +* **étape:** rend la durée obligatoire pour les demandes d’ARM et d’AXM ([#418](https://github.com/MTES-MCT/camino-ui/issues/418)) ([578d5a1](https://github.com/MTES-MCT/camino-ui/commit/578d5a1f42a28fda11dbd9c2920631b6ced4cf64)) +* **historique:** ajoute une nouvelle page pour afficher les différentes actions sur les titres ([#415](https://github.com/MTES-MCT/camino-ui/issues/415)) ([fff138e](https://github.com/MTES-MCT/camino-ui/commit/fff138ec7a976d8cf8cdfd9883a04973cd53efb9)) +* **sdom:** ajout du fond de carte SDOM Guyane ([#420](https://github.com/MTES-MCT/camino-ui/issues/420)) ([383e662](https://github.com/MTES-MCT/camino-ui/commit/383e662dcbae761d386f9846389c703eb7767411)) + + +### Bug Fixes + +* **carte:** corrige l’affichage des marqueurs quand celui-ci est large ([#419](https://github.com/MTES-MCT/camino-ui/issues/419)) ([06b7c80](https://github.com/MTES-MCT/camino-ui/commit/06b7c808eebce7d5f159be0fd0b60525cf0c6bd4)) +* **liste:** corrige certains bugs avec le filtrage des listes ([d96c419](https://github.com/MTES-MCT/camino-ui/commit/d96c419911fe88e0f663eb67546f3307e181a500)) +* **liste:** corrige l’initialisation des filtres dans certaines listes ([4043ed9](https://github.com/MTES-MCT/camino-ui/commit/4043ed95ab7134f1901e5d4b174a172dc38e98bb)) + +## [0.24.0](https://github.com/MTES-MCT/camino-ui/compare/v0.23.0...v0.24.0) (2021-10-25) + + +### Features + +* **buttons:** améliore l'UX avec des boutons plus clairs ([#395](https://github.com/MTES-MCT/camino-ui/issues/395)) ([b912222](https://github.com/MTES-MCT/camino-ui/commit/b91222207721ef941918b1065e8d702bbda386a7)) +* **login:** applique le style CTA aux boutons de connexion ([#404](https://github.com/MTES-MCT/camino-ui/issues/404)) ([08eb0d6](https://github.com/MTES-MCT/camino-ui/commit/08eb0d6e1d518d89fa211e97d9e1ef02c25dc451)) +* **métas:** ajoute une nouvelle page de métas permettant de configurer une démarche ([#401](https://github.com/MTES-MCT/camino-ui/issues/401)) ([ae6790d](https://github.com/MTES-MCT/camino-ui/commit/ae6790ddab133cbd4e18dca292d260a0cd25197d)) + + +### Bug Fixes + +* **button:** corrige le design de boutons après régression ([#412](https://github.com/MTES-MCT/camino-ui/issues/412)) ([f544a52](https://github.com/MTES-MCT/camino-ui/commit/f544a52140dab0cd4d85239eee8b5259cd9a654d)) +* **buttons:** corrige la fonte sur le bouton primary ([#406](https://github.com/MTES-MCT/camino-ui/issues/406)) ([bb07c75](https://github.com/MTES-MCT/camino-ui/commit/bb07c7531dc065cdf64503bfb79e3117817210da)) +* **buttons:** restaure les couleurs de btn-border, ajoute les CTAs manquants ([#400](https://github.com/MTES-MCT/camino-ui/issues/400)) ([dd2cd9c](https://github.com/MTES-MCT/camino-ui/commit/dd2cd9c0d9eceab243e0caf65c3e60e88468748d)) +* **css:** corrige un problème d'import SVG dans le CSS ([#403](https://github.com/MTES-MCT/camino-ui/issues/403)) ([9192d0d](https://github.com/MTES-MCT/camino-ui/commit/9192d0dc714c12e7d17190592417e6c752db4213)) +* **document:** corrige une régression sur l'upload de doc d'entreprise ([#402](https://github.com/MTES-MCT/camino-ui/issues/402)) ([30f0a9c](https://github.com/MTES-MCT/camino-ui/commit/30f0a9cde3a8966dc0327ee705b4e78fce1a1e0d)) +* **étape:** corrige l’arrondi du bouton pour déplier une étape ([#409](https://github.com/MTES-MCT/camino-ui/issues/409)) ([f5b0f0c](https://github.com/MTES-MCT/camino-ui/commit/f5b0f0c9de2b876519bb59ab6efafd4d7984679f)) +* **métas:** corrige certains bugs graphiques dans les pages métas ([#410](https://github.com/MTES-MCT/camino-ui/issues/410)) ([30b3184](https://github.com/MTES-MCT/camino-ui/commit/30b31841806ccec979716c5a5871788e6eae87a7)) +* corrige les problèmes de layout en utilisant word-break ([#407](https://github.com/MTES-MCT/camino-ui/issues/407)) ([e74a880](https://github.com/MTES-MCT/camino-ui/commit/e74a880c8f8ebff89b6c17b708a9e5dda423ec83)) +* **métas:** corrige les pages de métas ([#408](https://github.com/MTES-MCT/camino-ui/issues/408)) ([9cdbfb2](https://github.com/MTES-MCT/camino-ui/commit/9cdbfb296437195dafbc1f0e575ecfcc9ac97b3e)) +* **titre:** corrige l’ajout de références lors de la création d’un titre ([#399](https://github.com/MTES-MCT/camino-ui/issues/399)) ([6608791](https://github.com/MTES-MCT/camino-ui/commit/6608791b76de7b0623112e1ef211a659d635622b)) + +## [0.23.0](https://github.com/MTES-MCT/camino-ui/compare/v0.22.84...v0.23.0) (2021-10-06) + + +### Features + +* **titre:** permet d’ajouter manuellement une administration sur un titre ([#391](https://github.com/MTES-MCT/camino-ui/issues/391)) ([789cb43](https://github.com/MTES-MCT/camino-ui/commit/789cb43af05808378230088bae3a62092e5b4e8c)) +* **titres:** affiche sur la carte les périmètres des ARM en cours de demande pour les entreprises ([#389](https://github.com/MTES-MCT/camino-ui/issues/389)) ([aa2cc17](https://github.com/MTES-MCT/camino-ui/commit/aa2cc17615fc58abd04a8c7ae805c72d821629b4)) +* **upload:** renforce les capacités de téléversement ([#385](https://github.com/MTES-MCT/camino-ui/issues/385)) ([4340e8c](https://github.com/MTES-MCT/camino-ui/commit/4340e8c73274e9f83cc03e46de44d0ca967aefd6)) + + +### Bug Fixes + +* **accueil:** corrige le lien de l’accueil quand on est sur une page introuvable ([#396](https://github.com/MTES-MCT/camino-ui/issues/396)) ([3fcb34d](https://github.com/MTES-MCT/camino-ui/commit/3fcb34de1c471674a3a208205b10ccb192025ccc)) +* **etape:** corrige bug d'accès à référence de pointReference ([#394](https://github.com/MTES-MCT/camino-ui/issues/394)) ([a0c34ee](https://github.com/MTES-MCT/camino-ui/commit/a0c34eeef5c76d0238ee14ebe74848d7600314c2)) +* **étape:** corrige l’ajout manuel d’un périmètre sur une étape ([#388](https://github.com/MTES-MCT/camino-ui/issues/388)) ([2ea9683](https://github.com/MTES-MCT/camino-ui/commit/2ea968312a56e4b4653cf5e880d407510d1d339b)) +* **git:** corrige husky ([#392](https://github.com/MTES-MCT/camino-ui/issues/392)) ([de9d455](https://github.com/MTES-MCT/camino-ui/commit/de9d4552a839c93e71026e797d94aea25517ff09)) + +### [0.22.84](https://github.com/MTES-MCT/camino-ui/compare/v0.22.83...v0.22.84) (2021-09-27) + + +### Features + +* **àpropos:** mise à jour de la page « à propos » de l’équipe ([#380](https://github.com/MTES-MCT/camino-ui/issues/380)) ([9198266](https://github.com/MTES-MCT/camino-ui/commit/9198266a36f290e6bee30165be24ccb265ec52e7)) +* **logs:** affiche les modifications effectuées par les utilisateurs ([#386](https://github.com/MTES-MCT/camino-ui/issues/386)) ([29c1ed7](https://github.com/MTES-MCT/camino-ui/commit/29c1ed73a0a3833ace701c6f1918ee4667181089)) +* **métas:** permet l’ajout d’un nouveau type de document dans les métas ([#382](https://github.com/MTES-MCT/camino-ui/issues/382)) ([3397c15](https://github.com/MTES-MCT/camino-ui/commit/3397c15b2da42f0b0a7a58a5b726738517b37599)) + + +### Bug Fixes + +* **étape:** corrige l’import d’un périmètre d’une étape ([#387](https://github.com/MTES-MCT/camino-ui/issues/387)) ([2e7b020](https://github.com/MTES-MCT/camino-ui/commit/2e7b0208ddabe719d8abc330b3604d6d325dd011)) +* **map:** corrige nullité de '_latLngToNewLayerPoint' et 'this._map' ([#384](https://github.com/MTES-MCT/camino-ui/issues/384)) ([ba73630](https://github.com/MTES-MCT/camino-ui/commit/ba7363027603e47099b981f5effabc294320c457)) +* **tests:** corrige les scripts de tests locaux 'simple' et 'watch' ([#383](https://github.com/MTES-MCT/camino-ui/issues/383)) ([7fdb23d](https://github.com/MTES-MCT/camino-ui/commit/7fdb23d220df01427308d29baa8198ffa5672c4f)) + +### [0.22.83](https://github.com/MTES-MCT/camino-ui/compare/v0.22.82...v0.22.83) (2021-09-13) + + +### Features + +* **documents:** ajoute une description sur les types de documents ([#377](https://github.com/MTES-MCT/camino-ui/issues/377)) ([e93bf5e](https://github.com/MTES-MCT/camino-ui/commit/e93bf5e9bb858de4644b498c10ee438b6697c951)) + + +### Bug Fixes + +* **étape:** repenser l'UX du bouton Enregistrer sur le formulaire ([#374](https://github.com/MTES-MCT/camino-ui/issues/374)) ([310c6b1](https://github.com/MTES-MCT/camino-ui/commit/310c6b1980472a6872103da28c658b540552ed01)) +* **fichier:** désactive les raccourcis clavier pendant le téléversement d’un fichier ([#378](https://github.com/MTES-MCT/camino-ui/issues/378)) ([f59f56c](https://github.com/MTES-MCT/camino-ui/commit/f59f56c1d877b64fbd4ad3235aeedf9d693812c9)) +* **titre:** ajoute les documents obligatoires pour les ARM mécanisées ([#375](https://github.com/MTES-MCT/camino-ui/issues/375)) ([f538277](https://github.com/MTES-MCT/camino-ui/commit/f53827795823c8cd2e95775175970a5338f57a79)) +* **titre:** corrige l'affichage du lien du titre en doublon ([#373](https://github.com/MTES-MCT/camino-ui/issues/373)) ([f5a0e64](https://github.com/MTES-MCT/camino-ui/commit/f5a0e64029a2fec0ee4f0e88b141a9b4410e83a4)) + +### [0.22.82](https://github.com/MTES-MCT/camino-ui/compare/v0.22.81...v0.22.82) (2021-09-06) + + +### Features + +* **périmètre:** permet l’import du périmètre d’un titre via un fichier shape ou geojson ([#372](https://github.com/MTES-MCT/camino-ui/issues/372)) ([f74ba54](https://github.com/MTES-MCT/camino-ui/commit/f74ba54859b5113a6fae3156095cd708dcdd83db)) +* **titre:** optimise la suppression d'un titre ([c51bbf5](https://github.com/MTES-MCT/camino-ui/commit/c51bbf5a5acde028e997d531ba0223ee8d27d846)) + + +### Bug Fixes + +* **pagination:** réinitialise la pagination si la page courante n'existe pas ([069964d](https://github.com/MTES-MCT/camino-ui/commit/069964dbfc09db84b0ae95f81401ad93b020110b)) + +### [0.22.81](https://github.com/MTES-MCT/camino-ui/compare/v0.22.80...v0.22.81) (2021-08-05) + + +### Features + +* **métas:** permet d'ajouter des métas pour les travaux ([ebf44d1](https://github.com/MTES-MCT/camino-ui/commit/ebf44d157265ad1d4b33078c8f3f1a46668e09d4)) + +### [0.22.80](https://github.com/MTES-MCT/camino-ui/compare/v0.22.79...v0.22.80) (2021-08-05) + + +### Features + +* **arm:** simplifie le formulaire d'ajout de demande d'ARM pour les opérateurs ([#371](https://github.com/MTES-MCT/camino-ui/issues/371)) ([b244895](https://github.com/MTES-MCT/camino-ui/commit/b2448950f0423fe8a4e5471d102722d570998c90)) + + +### Bug Fixes + +* **démarche:** utilise le slug pour ajouter une nouvelle étape à une démarche ([c1551c2](https://github.com/MTES-MCT/camino-ui/commit/c1551c258d6abb12d66796b1048512daaa873bec)) +* **étape:** corrige l’affichage de l’aide sur les demandes d’ARM ([572ac0b](https://github.com/MTES-MCT/camino-ui/commit/572ac0bb425e8fec6fe63d82a86652511d0a6726)) +* **utilisateurs:** supprime les requêtes inutiles pendant la modification d'un utilisateur ([32d4934](https://github.com/MTES-MCT/camino-ui/commit/32d49344c6d8021f25db9840ab7ced5d5989e9df)) + +### [0.22.79](https://github.com/MTES-MCT/camino-ui/compare/v0.22.78...v0.22.79) (2021-08-02) + +### [0.22.78](https://github.com/MTES-MCT/camino-ui/compare/v0.22.77...v0.22.78) (2021-07-21) + + +### Features + +* **étape:** améliore la gestion des documents sur les étapes ([#369](https://github.com/MTES-MCT/camino-ui/issues/369)) ([b065c4e](https://github.com/MTES-MCT/camino-ui/commit/b065c4e77cc1b9093c720b17effb5cfce07a1d35)) +* **metas:** affiche l'id et le nom des metas dans les relations ([#367](https://github.com/MTES-MCT/camino-ui/issues/367)) ([84f8e0e](https://github.com/MTES-MCT/camino-ui/commit/84f8e0e21ef5dba652c41a3a26f807ab13d03bee)) + +### [0.22.77](https://github.com/MTES-MCT/camino-ui/compare/v0.22.76...v0.22.77) (2021-07-07) + + +### Features + +* **justificatifs:** améliore l’interface pour éditer les justificatifs d’une étape ([#368](https://github.com/MTES-MCT/camino-ui/issues/368)) ([375f12a](https://github.com/MTES-MCT/camino-ui/commit/375f12a66acbd0f6d2ebfefb17b3ce8fcb06e9f0)) + + +### Bug Fixes + +* **étape:** redirige vers l’étape que si on a son identifiant ([6b30d56](https://github.com/MTES-MCT/camino-ui/commit/6b30d56ad102bb245164e75e6a0e251748acc729)) + +### [0.22.76](https://github.com/MTES-MCT/camino-ui/compare/v0.22.75...v0.22.76) (2021-07-02) + + +### Features + +* **autoupdate:** met à jour le site automatiquement après la livraison d'une nouvelle version ([#365](https://github.com/MTES-MCT/camino-ui/issues/365)) ([b7cb2a8](https://github.com/MTES-MCT/camino-ui/commit/b7cb2a8bf32ca5654b80efbe99d6ad17033405e0)) +* **connexion:** utilise des labels pour les champs du formulaire de connexion ([5ba4f2c](https://github.com/MTES-MCT/camino-ui/commit/5ba4f2c84b46e8a055c381e49dda69f58f9bd3fc)) + + +### Bug Fixes + +* **documents:** corrige la modification d’un document sans modifier le fichier ([a494748](https://github.com/MTES-MCT/camino-ui/commit/a494748b5f40ae27dc576ad33e3ce5424b6cc116)) +* **filtres:** corrige le tracking des filtres vers matomo ([#364](https://github.com/MTES-MCT/camino-ui/issues/364)) ([d3a1750](https://github.com/MTES-MCT/camino-ui/commit/d3a1750f723ae7b48726c4a3ba57f149cab2e1a0)) +* **firefox:** renomme le fichier de matomo pour corriger le lancement en dev avec Firefox ([6e91e04](https://github.com/MTES-MCT/camino-ui/commit/6e91e045920edf84e312bfe60b56d3dc39b8d2a6)) +* **matomo:** corrige la content security policy pour Matomo ([29fd35b](https://github.com/MTES-MCT/camino-ui/commit/29fd35b89bd175514abc20e66c9dbdf64004640e)) + +### [0.22.75](https://github.com/MTES-MCT/camino-ui/compare/v0.22.74...v0.22.75) (2021-06-24) + + +### Features + +* **arm:** ajoute un message d'aide sur la demande d'ARM à destination des entreprises ([ccfc05d](https://github.com/MTES-MCT/camino-ui/commit/ccfc05d1f6217ca910cb7afac944a2a2e486c042)) + + +### Bug Fixes + +* **activités:** corrige l'affichage des Statuts des travaux ([3c8e8f4](https://github.com/MTES-MCT/camino-ui/commit/3c8e8f4e023eeb66ce88fc17305e80262719053d)) +* **étape:** corrige l’enregistrement des étapes avec des justificatifs ([d5e1f61](https://github.com/MTES-MCT/camino-ui/commit/d5e1f618ec05b25003cf9b316c1535761d0bbbc0)) +* **matomo:** corrige la configuration matomo avec vue 3 ([#363](https://github.com/MTES-MCT/camino-ui/issues/363)) ([2c99a1a](https://github.com/MTES-MCT/camino-ui/commit/2c99a1ab5c69ffdcb09f2c89707da0584c1104f9)) + +### [0.22.74](https://github.com/MTES-MCT/camino-ui/compare/v0.22.73...v0.22.74) (2021-06-21) + + +### Features + +* **étape:** n'affiche pas les dates pour les entreprises sur des arms ([c2000e4](https://github.com/MTES-MCT/camino-ui/commit/c2000e483d4bb30dec6db386610d332a2157473c)) +* **justificatifs:** sélectionne le justificatif qui vient juste d’être ajouté via la popup ([#357](https://github.com/MTES-MCT/camino-ui/issues/357)) ([737f84e](https://github.com/MTES-MCT/camino-ui/commit/737f84efe05fed5dd19edec3b485d9d32eabf421)) + + +### Bug Fixes + +* **carte:** rend les périmètres des titres cliquables quand les marqueurs sont cachés ([#359](https://github.com/MTES-MCT/camino-ui/issues/359)) ([065c53b](https://github.com/MTES-MCT/camino-ui/commit/065c53b0ddf9b27c4f959e40b2af5bb1e14cfd96)) + +### [0.22.73](https://github.com/MTES-MCT/camino-ui/compare/v0.22.72...v0.22.73) (2021-06-15) + + +### Bug Fixes + +* **activités:** permet d’ajouter les fichiers sur les activités ([e0c58ac](https://github.com/MTES-MCT/camino-ui/commit/e0c58ac840f38e10a2bc3311da6365abcd66aef2)) +* **documents:** corrige le style des boutons dans la popup d’édition d’un document ([39c3c2a](https://github.com/MTES-MCT/camino-ui/commit/39c3c2a11110f02effba303e7c76b0ae70d39b3a)) + +### [0.22.72](https://github.com/MTES-MCT/camino-ui/compare/v0.22.71...v0.22.72) (2021-06-14) + + +### Features + +* **étape:** permet d’ajouter à la volée les documents dans une étape ([#353](https://github.com/MTES-MCT/camino-ui/issues/353)) ([42ea50e](https://github.com/MTES-MCT/camino-ui/commit/42ea50e85c40fd1c291eb3064e1832e6b18c7461)) +* ajoute un document d'entreprise lors de l'édition d'une étape ([#351](https://github.com/MTES-MCT/camino-ui/issues/351)) ([93c1593](https://github.com/MTES-MCT/camino-ui/commit/93c159368ca0c74c887e45dda79317fb72d35e76)) +* améliore l'ergonomie de la dépose de demande ([#352](https://github.com/MTES-MCT/camino-ui/issues/352)) ([393aa6e](https://github.com/MTES-MCT/camino-ui/commit/393aa6e1fdfdcbb1636155a579d4f25fcd654bc9)) +* supprime le widget mailjet ([#354](https://github.com/MTES-MCT/camino-ui/issues/354)) ([c8081e5](https://github.com/MTES-MCT/camino-ui/commit/c8081e582e8c17da2ba2daa88fc2d20fbf9f1fc0)) + +### [0.22.71](https://github.com/MTES-MCT/camino-ui/compare/v0.22.70...v0.22.71) (2021-06-02) + + +### Features + +* affiche la carte sur les étapes ([#347](https://github.com/MTES-MCT/camino-ui/issues/347)) ([36f9cdf](https://github.com/MTES-MCT/camino-ui/commit/36f9cdf88857ed18dff2df7b28fe19a7444b6857)) +* **documents:** permet de télécharger les documents dans la page de l’étape ([#346](https://github.com/MTES-MCT/camino-ui/issues/346)) ([b98d78e](https://github.com/MTES-MCT/camino-ui/commit/b98d78e8e4955bacfd19b54d7e8d4908733b0d68)) +* affiche le bouton pour déposer une demande de titre ([#343](https://github.com/MTES-MCT/camino-ui/issues/343)) ([20661e1](https://github.com/MTES-MCT/camino-ui/commit/20661e10cf360d48930920d9727db4a16893bb39)) +* améliore l'affichage de la prévisualisation d'étape ([#341](https://github.com/MTES-MCT/camino-ui/issues/341)) ([cb9dcb2](https://github.com/MTES-MCT/camino-ui/commit/cb9dcb24e7343cab20293144087e27535a2eae08)) +* prévisualise l'étape avant validation ([#339](https://github.com/MTES-MCT/camino-ui/issues/339)) ([132ee46](https://github.com/MTES-MCT/camino-ui/commit/132ee46c733923f2e2550c2171733254adc5e6b9)) +* utilise la nouvelle interface pour créer les étapes ([#342](https://github.com/MTES-MCT/camino-ui/issues/342)) ([3081882](https://github.com/MTES-MCT/camino-ui/commit/308188227a98c9349a3eeaf532d7ad1674022611)) +* **étape:** ajoute les propriétés manquantes dans page d’édition d’une étape ([#335](https://github.com/MTES-MCT/camino-ui/issues/335)) ([67add21](https://github.com/MTES-MCT/camino-ui/commit/67add218534e22bf98d151ce2abfb02adc58701e)) +* **justificatifs:** ajoute l’édition des métas des justificatifs ([#337](https://github.com/MTES-MCT/camino-ui/issues/337)) ([20361ce](https://github.com/MTES-MCT/camino-ui/commit/20361ce333c38a988e08b5628a064dd9e10e4dbc)) +* **justificatifs:** ajoute un bloc permettant de lier les justificatifs dans une étape ([#338](https://github.com/MTES-MCT/camino-ui/issues/338)) ([8474623](https://github.com/MTES-MCT/camino-ui/commit/8474623febba34805ef9d735c7d51113ceb1e310)) + + +### Bug Fixes + +* corrige l'édition de l'étape ([#345](https://github.com/MTES-MCT/camino-ui/issues/345)) ([c563d4c](https://github.com/MTES-MCT/camino-ui/commit/c563d4c834eddfe8deb568994c6daeee812d93c0)), closes [#343](https://github.com/MTES-MCT/camino-ui/issues/343) +* élargi la popup ([#350](https://github.com/MTES-MCT/camino-ui/issues/350)) ([3428c4f](https://github.com/MTES-MCT/camino-ui/commit/3428c4f5ed0e1ebcadb86ddb03f71518d73fcfcd)) +* **points:** corrige l’enregistrement des points renseignés sur une étape ([#344](https://github.com/MTES-MCT/camino-ui/issues/344)) ([5d25f5b](https://github.com/MTES-MCT/camino-ui/commit/5d25f5bf8886e9bf0d05aabe888a1c7526e502ff)) + +### [0.22.70](https://github.com/MTES-MCT/camino-ui/compare/v0.22.69...v0.22.70) (2021-05-19) + + +### Features + +* ajoute une demande de titre ([#325](https://github.com/MTES-MCT/camino-ui/issues/325)) ([bd84dfc](https://github.com/MTES-MCT/camino-ui/commit/bd84dfc111db57c5e2f088c2e83ddf313dfed7a3)) +* ajoute une interface d'édition des étapes ([#330](https://github.com/MTES-MCT/camino-ui/issues/330)) ([ae259d3](https://github.com/MTES-MCT/camino-ui/commit/ae259d304d1676c25f29dc84aac6e8bc237c19b4)) +* édite une étape ([#334](https://github.com/MTES-MCT/camino-ui/issues/334)) ([eafe749](https://github.com/MTES-MCT/camino-ui/commit/eafe74926735cce8c624f92ac8faaa86d6941cb0)) +* **entreprise:** ajoute une propriété titresCreation ([#323](https://github.com/MTES-MCT/camino-ui/issues/323)) ([fb4f6ce](https://github.com/MTES-MCT/camino-ui/commit/fb4f6cea70b81ca0b8fa9114f802713521e7d033)) +* vérifie si l’application est à jour à chaque appel à l’API ([#322](https://github.com/MTES-MCT/camino-ui/issues/322)) ([b18f292](https://github.com/MTES-MCT/camino-ui/commit/b18f2924cd9d741ccbc34ffd994c59b8edbd35eb)) +* **demande:** initialise la mécanisation des demandes mécanisées ([#318](https://github.com/MTES-MCT/camino-ui/issues/318)) ([62ad238](https://github.com/MTES-MCT/camino-ui/commit/62ad2381c626dc953d050c7170b898bb189b552e)) + + +### Bug Fixes + +* **glossaire:** corrige l'affichage des définitions du glossaire ([#333](https://github.com/MTES-MCT/camino-ui/issues/333)) ([078abc2](https://github.com/MTES-MCT/camino-ui/commit/078abc2eb1ee8fdc8f8aaae21f95c0b5acbd7da8)) +* **statistiques:** ajoute les années 2017 et 2018 ([#332](https://github.com/MTES-MCT/camino-ui/issues/332)) ([b19828e](https://github.com/MTES-MCT/camino-ui/commit/b19828e2227891665e981aef634c44cdb005ed3e)) +* corrige l'édition des champs json ([#331](https://github.com/MTES-MCT/camino-ui/issues/331)) ([5efab2e](https://github.com/MTES-MCT/camino-ui/commit/5efab2e81a975f3344e974d9bbed0d1e905dc23e)) +* corrige le lien vers une page entreprise ([#327](https://github.com/MTES-MCT/camino-ui/issues/327)) ([7527058](https://github.com/MTES-MCT/camino-ui/commit/752705875a899b44b30242d2eda63759aa8d4c23)) +* **étape:** corrige l’affichage des dates dans les sections ([#326](https://github.com/MTES-MCT/camino-ui/issues/326)) ([66ab32d](https://github.com/MTES-MCT/camino-ui/commit/66ab32d50a9c4938609aa242885f4af23c7de1b7)) +* **étapes:** les éléments de type radio et checkbox ne sont plus optionnels ([#320](https://github.com/MTES-MCT/camino-ui/issues/320)) ([e2b2c72](https://github.com/MTES-MCT/camino-ui/commit/e2b2c72d16875544ae307fa06c8c6fb1392ae0e7)) +* **map:** corrige les erreurs de type 'this._map is null' lors des zooms ([#321](https://github.com/MTES-MCT/camino-ui/issues/321)) ([c0f86fa](https://github.com/MTES-MCT/camino-ui/commit/c0f86fa67f0d1970bb8b93a974fc58d738588316)) +* **stats:** corrige les échelles et légendes des pages statistiques ([#319](https://github.com/MTES-MCT/camino-ui/issues/319)) ([bb1cf80](https://github.com/MTES-MCT/camino-ui/commit/bb1cf80272affac65accdec4f4782645df05fb44)) +* formate la date dans une section ([#317](https://github.com/MTES-MCT/camino-ui/issues/317)) ([ba452f1](https://github.com/MTES-MCT/camino-ui/commit/ba452f161d65274e959d15f10af4bbbc7cdaa856)) + +### [0.22.69](https://github.com/MTES-MCT/camino-ui/compare/v0.22.68...v0.22.69) (2021-05-04) + + +### Bug Fixes + +* **métas:** corrige une erreur lorsqu'on clique sur une entête ([#315](https://github.com/MTES-MCT/camino-ui/issues/315)) ([531c4e0](https://github.com/MTES-MCT/camino-ui/commit/531c4e02b7a57ea0de6de0f5ea2f86a466028024)) +* corrige le téléchargement de fichier sur ff60 ([1d86964](https://github.com/MTES-MCT/camino-ui/commit/1d869640fdd5b55e0295c8c085d39b21c0478868)) +* **contenu:** corrige une erreur lors de l’utilisation de champ multiple dans les étapes ([6c0d29f](https://github.com/MTES-MCT/camino-ui/commit/6c0d29fac090904e6931a93c737c8580efdcc498)) + +### [0.22.68](https://github.com/MTES-MCT/camino-ui/compare/v0.22.67...v0.22.68) (2021-04-27) + + +### Features + +* affiche les descriptions des types d'activités ([#307](https://github.com/MTES-MCT/camino-ui/issues/307)) ([71c05ca](https://github.com/MTES-MCT/camino-ui/commit/71c05caaa8c99f695f321825c03269ed47fb2360)) + + +### Bug Fixes + +* **titres:** initialise les filtres en fonction des paramètres d'url ([499829d](https://github.com/MTES-MCT/camino-ui/commit/499829db5ee32bde125e57cbe4e09a5cb78c9f76)) +* corrige l'affichage des stats ([#309](https://github.com/MTES-MCT/camino-ui/issues/309)) ([0315cac](https://github.com/MTES-MCT/camino-ui/commit/0315cacdc69aa46a353930a21915d6d760246977)) +* masque le bouton d'ouverture d'une étape si elle est vide ([05a2403](https://github.com/MTES-MCT/camino-ui/commit/05a240377ef13fa386a6e7809f7fecffb3d03718)) +* rend compatible avec les vieilles versions de firefox ([#310](https://github.com/MTES-MCT/camino-ui/issues/310)) ([48a7c12](https://github.com/MTES-MCT/camino-ui/commit/48a7c1265e44635295cfcd1ec76627132ebaa8fb)) +* **statistiques:** corrige l'affichage des graphs ([#308](https://github.com/MTES-MCT/camino-ui/issues/308)) ([d7daa64](https://github.com/MTES-MCT/camino-ui/commit/d7daa6401062810583c33ca3ae49c063e25f433b)) + +### [0.22.67](https://github.com/MTES-MCT/camino-ui/compare/v0.22.66...v0.22.67) (2021-04-21) + + +### Features + +* **activités:** affiche une description pour les types d'activité ([#300](https://github.com/MTES-MCT/camino-ui/issues/300)) ([8b18ee4](https://github.com/MTES-MCT/camino-ui/commit/8b18ee47f98edf611fe62ba89a651641e3de6971)) +* **fichier:** prend en compte les nouveaux éléments de type fichier ([#301](https://github.com/MTES-MCT/camino-ui/issues/301)) ([3202c87](https://github.com/MTES-MCT/camino-ui/commit/3202c87f8200dd24679112ac96d86ac4dd03963a)) +* ajoute des étapes de travaux ([#302](https://github.com/MTES-MCT/camino-ui/issues/302)) ([85a2009](https://github.com/MTES-MCT/camino-ui/commit/85a2009ae4ab6d57c860fc510f22a9fdfa4ea3af)) +* ajoute un indicateur de chargement de fichier ([#291](https://github.com/MTES-MCT/camino-ui/issues/291)) ([bab9c9d](https://github.com/MTES-MCT/camino-ui/commit/bab9c9de0635ab772507d8f07842c3e607224589)) +* édite les méta-données des travaux ([#303](https://github.com/MTES-MCT/camino-ui/issues/303)) ([9fdeee1](https://github.com/MTES-MCT/camino-ui/commit/9fdeee148390d277cde7e2a7617c85099a92fc6c)) +* **étapes:** vérifie si toutes les sections obligatoires sont renseignées ([#286](https://github.com/MTES-MCT/camino-ui/issues/286)) ([0c05f19](https://github.com/MTES-MCT/camino-ui/commit/0c05f19d7de5ebc1a0d7990819d15fa414f3f9d5)) +* **map:** corrige le sélecteur de fond de carte sur la page d'un titre ([#299](https://github.com/MTES-MCT/camino-ui/issues/299)) ([f9427d6](https://github.com/MTES-MCT/camino-ui/commit/f9427d6a5e67b70b392b33b86167872f589d8570)) +* **sections:** permet d’avoir des éléments multiple dans les sections ([#293](https://github.com/MTES-MCT/camino-ui/issues/293)) ([cde4999](https://github.com/MTES-MCT/camino-ui/commit/cde49999a52c2b3b63ab7de67ee47e265dedc024)) +* **sections:** récupère les sections du type d’étape lors de la récupération de l’héritage ([#289](https://github.com/MTES-MCT/camino-ui/issues/289)) ([7e9c706](https://github.com/MTES-MCT/camino-ui/commit/7e9c706f6832712afe9de2fdce25a56e35932eaf)) + + +### Bug Fixes + +* **activités:** corrige la vérification de complétion ([a296008](https://github.com/MTES-MCT/camino-ui/commit/a29600891c568f556e5ea91da9902c49d620956e)) +* **carte:** corrige une erreur quand l’utilisateur change de page pendant un chargement ([#297](https://github.com/MTES-MCT/camino-ui/issues/297)) ([3766ec6](https://github.com/MTES-MCT/camino-ui/commit/3766ec67f1d42ff53391f1e46927d8672c4265bb)) +* **dateformat:** corrige l'erreur sur dateFormat (édition d'étapes) ([#292](https://github.com/MTES-MCT/camino-ui/issues/292)) ([5eeac56](https://github.com/MTES-MCT/camino-ui/commit/5eeac564004d2981ef4cf4fd5d7d87367ececc5c)) +* **démarches:** corrige le sélecteur de types d'étape ([818f9c3](https://github.com/MTES-MCT/camino-ui/commit/818f9c3616e9816e37e92d12492ecf30edb5555a)) +* **documents:** corrige une erreur pendant le chargement des métas ([#294](https://github.com/MTES-MCT/camino-ui/issues/294)) ([b8712d7](https://github.com/MTES-MCT/camino-ui/commit/b8712d7f171545c55393c93c0fa4821a30edeaeb)) +* **documents:** supprime la colonne répertoire ([#306](https://github.com/MTES-MCT/camino-ui/issues/306)) ([533c07d](https://github.com/MTES-MCT/camino-ui/commit/533c07db83f39d99cfb7b1b424a740546298995f)) +* **etape:** corrige l’erreur pendant le changement de type d’étape ([#305](https://github.com/MTES-MCT/camino-ui/issues/305)) ([7161886](https://github.com/MTES-MCT/camino-ui/commit/7161886120f93cbc569a33dc5dfd6fff9464ead0)) +* **étape:** corrige le changement de type lors de l'édition ([1fa4800](https://github.com/MTES-MCT/camino-ui/commit/1fa4800facab7887fb1cee95ea835031523b8922)) +* **étape:** corrige le sélecteur de type ([b95ad9b](https://github.com/MTES-MCT/camino-ui/commit/b95ad9bbba1c373ca61608612b26b7e244136608)) +* **étape:** corrige le sélection des types disponibles lors de la création d’une étape ([1ebfd6b](https://github.com/MTES-MCT/camino-ui/commit/1ebfd6bb8fd08785f0df2a58742afe6c91dd11cb)) +* **map:** corrige les sélecteurs de fond de carte et de type de marker ([#296](https://github.com/MTES-MCT/camino-ui/issues/296)) ([99a6c30](https://github.com/MTES-MCT/camino-ui/commit/99a6c307e241771efd7fb169d74bff2dc14b3d16)) +* corrige l'affichage des métas et le téléchargement ([#287](https://github.com/MTES-MCT/camino-ui/issues/287)) ([da3262f](https://github.com/MTES-MCT/camino-ui/commit/da3262fe110d7af8cffb82074070851332fd2891)) +* corrige le zoom sur leaflet ([#290](https://github.com/MTES-MCT/camino-ui/issues/290)) ([bcddee7](https://github.com/MTES-MCT/camino-ui/commit/bcddee7df9a1d2073ddb3bf9b52e02edaa53b24f)) +* corrige les liens depuis la page statistiques ([893fa7f](https://github.com/MTES-MCT/camino-ui/commit/893fa7f3ea479637fa8fd2f3b41715b143abf737)) +* formate le contenu des champs lors de la validation au clavier ([#288](https://github.com/MTES-MCT/camino-ui/issues/288)) ([e8874a7](https://github.com/MTES-MCT/camino-ui/commit/e8874a7efa8de9acf99daa3380f11ef97eb7a3c7)) +* **menu:** corrige temporairement le menu en attendant la nouvelle version du routeur ([3fc9e4c](https://github.com/MTES-MCT/camino-ui/commit/3fc9e4c035685a0430298eff15a2005b55d23ab8)) + +### [0.22.66](https://github.com/MTES-MCT/camino-ui/compare/v0.22.65...v0.22.66) (2021-03-30) + + +### Features + +* **activités:** édite les métas ([#282](https://github.com/MTES-MCT/camino-ui/issues/282)) ([b9e72cd](https://github.com/MTES-MCT/camino-ui/commit/b9e72cd5f3e0af96bb7827154e1d92c36807b93e)) +* **documents:** édite les types de documents pour chaque type d’étapes ([#276](https://github.com/MTES-MCT/camino-ui/issues/276)) ([1534318](https://github.com/MTES-MCT/camino-ui/commit/15343183f820122e85182794f13f13159bb13e13)) + + +### Bug Fixes + +* **entreprises:** corrige une erreur pourun utilisateur déconnecté ([#281](https://github.com/MTES-MCT/camino-ui/issues/281)) ([68d8dd8](https://github.com/MTES-MCT/camino-ui/commit/68d8dd80343024f8d7145e6ce4c12abd1d355182)) +* **métas:** corrige les métas de Types de travaux - Types d’étapes ([1e0a8c7](https://github.com/MTES-MCT/camino-ui/commit/1e0a8c7047ad981fc2a5ac56b81f4e676f53f1a1)) + +### [0.22.65](https://github.com/MTES-MCT/camino-ui/compare/v0.22.64...v0.22.65) (2021-03-23) + + +### Features + +* **carte:** ajoute une option pour masquer la trame ([#278](https://github.com/MTES-MCT/camino-ui/issues/278)) ([f127c94](https://github.com/MTES-MCT/camino-ui/commit/f127c94d243732d52b0f44a76b9965f4be0e9d91)) +* **travaux:** masque le statut ([f52fbc4](https://github.com/MTES-MCT/camino-ui/commit/f52fbc4dfd074b69c1e7dc0d4d39df98656e83b7)) +* met à jour les permissions ([#277](https://github.com/MTES-MCT/camino-ui/issues/277)) ([0819e12](https://github.com/MTES-MCT/camino-ui/commit/0819e12dbe8d344ad09f91583f8a5ca96dadb974)) + + +### Bug Fixes + +* **titres:** corrige l’affichage du bouton de création de titres ([#280](https://github.com/MTES-MCT/camino-ui/issues/280)) ([df91de9](https://github.com/MTES-MCT/camino-ui/commit/df91de9e5da30f4303016a36c5ec8f7ad3e80b72)) +* **travaux:** corrige des problèmes de mise en page ([#279](https://github.com/MTES-MCT/camino-ui/issues/279)) ([bb93650](https://github.com/MTES-MCT/camino-ui/commit/bb936506f8e5c34b81f9962e86c00fa9d32c756f)) +* **travaux:** corrige l'affichage du statut ([15bf4b3](https://github.com/MTES-MCT/camino-ui/commit/15bf4b34d1aa7e1c2c844a92b4de35b65c716c38)) + +### [0.22.64](https://github.com/MTES-MCT/camino-ui/compare/v0.22.63...v0.22.64) (2021-03-17) + + +### Features + +* **administration:** édite les restrictions sur les types d'activités ([#272](https://github.com/MTES-MCT/camino-ui/issues/272)) ([d557260](https://github.com/MTES-MCT/camino-ui/commit/d55726089d09a60e83f77fd539746b6381c5c8b9)) + + +### Bug Fixes + +* **activités:** prévisualise les champs facultatifs ([#273](https://github.com/MTES-MCT/camino-ui/issues/273)) ([0939407](https://github.com/MTES-MCT/camino-ui/commit/0939407d181bc335844bff77a262a88adcd2cbea)) +* **administrations:** corrige l’interface pour définir les permissions d’une adminstrations ([#275](https://github.com/MTES-MCT/camino-ui/issues/275)) ([8ecf193](https://github.com/MTES-MCT/camino-ui/commit/8ecf193384ccb6a8cbcaf2f2c3fc8cb153526e32)) +* **édition d'étape:** corrige une erreur lors de l'initialisation de l'héritage ([#274](https://github.com/MTES-MCT/camino-ui/issues/274)) ([3354c5c](https://github.com/MTES-MCT/camino-ui/commit/3354c5cb197b264e8ab64400619e9c0c07d83c5d)) + +### [0.22.63](https://github.com/MTES-MCT/camino-ui/compare/v0.22.62...v0.22.63) (2021-03-08) + + +### Features + +* édite la propriété "opérateur" sur les entreprises ([#267](https://github.com/MTES-MCT/camino-ui/issues/267)) ([b2913f3](https://github.com/MTES-MCT/camino-ui/commit/b2913f30f91354024a3364a90f5b566fdd71b7e2)) +* hérite les contenus entres les étapes ([#261](https://github.com/MTES-MCT/camino-ui/issues/261)) ([318128a](https://github.com/MTES-MCT/camino-ui/commit/318128a52b327abab5d0592feeae07321fd7d92c)) +* met à jour les profils de l'équipe ([#207](https://github.com/MTES-MCT/camino-ui/issues/207)) ([e6ac29d](https://github.com/MTES-MCT/camino-ui/commit/e6ac29dd9d494a895dfb95de9c7bf16c5f73d696)) + + +### Bug Fixes + +* corrige une erreur si aucune référence de point n'est opposable ([#271](https://github.com/MTES-MCT/camino-ui/issues/271)) ([4d23989](https://github.com/MTES-MCT/camino-ui/commit/4d2398926126af7bd8101b7a253707965fde9397)) +* **etape:** affiche le type de titre dans la pop-up de suppression d'étape ([#270](https://github.com/MTES-MCT/camino-ui/issues/270)) ([2dc9527](https://github.com/MTES-MCT/camino-ui/commit/2dc9527f30308788247d77efe3db246a54bba605)) +* corrige la marge sur le bouton supprimer des activités ([633fd68](https://github.com/MTES-MCT/camino-ui/commit/633fd68272369adfbd5e14ffdd212c65ad7c8bdb)) +* **a-propos:** corrige le nom de l'intrapreneuse ([#268](https://github.com/MTES-MCT/camino-ui/issues/268)) ([354798d](https://github.com/MTES-MCT/camino-ui/commit/354798d6d928e82a5d6e07aa8ff5c4767c0cb9bc)) +* **a-propos:** corrige les dates d'arrivée ([#269](https://github.com/MTES-MCT/camino-ui/issues/269)) ([6e77086](https://github.com/MTES-MCT/camino-ui/commit/6e7708658012db9b0bae5452e0d237d5fd92a61b)) +* **coordonnees:** corrige l'erreur de saisie de coordonnées vides ([#264](https://github.com/MTES-MCT/camino-ui/issues/264)) ([a70188b](https://github.com/MTES-MCT/camino-ui/commit/a70188b8d832031a4d5625f4a297c8a47cfedee5)) +* **étape:** supprime l’ancienne colonne « ordre » des métas des statuts d’étapes ([#266](https://github.com/MTES-MCT/camino-ui/issues/266)) ([0cbf37a](https://github.com/MTES-MCT/camino-ui/commit/0cbf37a4c0a023d2903a2192e5a06d2991667f5a)) +* **rapport:** corrige l'onglet courant ('Droits miniers' par défaut) ([#265](https://github.com/MTES-MCT/camino-ui/issues/265)) ([0d3eefe](https://github.com/MTES-MCT/camino-ui/commit/0d3eefe691580f056c1880f58e93f8e2fbcb6956)) +* corrige la validation au clavier de la date d'une étape ([f126d48](https://github.com/MTES-MCT/camino-ui/commit/f126d48f8c8d74bc9133df178fee0877dd699e78)) + +### [0.22.62](https://github.com/MTES-MCT/camino-ui/compare/v0.22.61...v0.22.62) (2021-03-02) + + +### Features + +* **héritage:** ajoute l’héritage de l’incertitude entre 2 étapes fondamentales ([#260](https://github.com/MTES-MCT/camino-ui/issues/260)) ([320ca6c](https://github.com/MTES-MCT/camino-ui/commit/320ca6c548389a579e6ac7765521f4c8a11dcbc3)) +* hérite les propriétés entre les étapes ([#258](https://github.com/MTES-MCT/camino-ui/issues/258)) ([1e741c6](https://github.com/MTES-MCT/camino-ui/commit/1e741c62ba67d3f64aa513838431e83bf902dbd3)) + + +### Bug Fixes + +* affiche l'incertitude sur la date ([c316fda](https://github.com/MTES-MCT/camino-ui/commit/c316fda41f6dd8dc67cc137f40e0aeaf5de9981b)) +* **étape:** utilise la bonne date pour la récupération des métas lors de la modification d’une étape ([#263](https://github.com/MTES-MCT/camino-ui/issues/263)) ([0f18db0](https://github.com/MTES-MCT/camino-ui/commit/0f18db05290dfa5011de17ca05b196ccb6b46b06)) +* initialise les incertitudes si la propriété est modifiée ([#262](https://github.com/MTES-MCT/camino-ui/issues/262)) ([0698efb](https://github.com/MTES-MCT/camino-ui/commit/0698efb4a077c01c50892de1f7936f6bb320d5b6)) + +### [0.22.61](https://github.com/MTES-MCT/camino-ui/compare/v0.22.60...v0.22.61) (2021-02-18) + + +### Features + +* **démarches:** ajoute la colonne 'Références' dans la liste ([#256](https://github.com/MTES-MCT/camino-ui/issues/256)) ([4eb088c](https://github.com/MTES-MCT/camino-ui/commit/4eb088c234519bfe9ae7f28a28e90a21e21ae7f4)) +* **liste:** ajoute la colonne 'périmètre' à la liste des titres ([#253](https://github.com/MTES-MCT/camino-ui/issues/253)) ([cbf714d](https://github.com/MTES-MCT/camino-ui/commit/cbf714d189d04547af391749d5c1df0823eddabe)) + + +### Bug Fixes + +* corrige la valeur par défaut des champs de saisie des coordonnées ([#254](https://github.com/MTES-MCT/camino-ui/issues/254)) ([d78b9f3](https://github.com/MTES-MCT/camino-ui/commit/d78b9f3c45b448db1f51db38accbbfb81113ef5f)) +* masque l'icone si l'étape ne contient aucune propriété ([#255](https://github.com/MTES-MCT/camino-ui/issues/255)) ([62af1b6](https://github.com/MTES-MCT/camino-ui/commit/62af1b62eff81e245a40e1f04671e2e06fd8cd92)) + +### [0.22.60](https://github.com/MTES-MCT/camino-ui/compare/v0.22.59...v0.22.60) (2021-02-15) + + +### Features + +* **liste:** ajoute les régions et les départements dans la liste des titres ([#250](https://github.com/MTES-MCT/camino-ui/issues/250)) ([a15f8cc](https://github.com/MTES-MCT/camino-ui/commit/a15f8cc3e6ce552c5a81ca4c3fdd362b3fb573e3)) +* ajoute un bouton pour supprimer une activité ([c63c677](https://github.com/MTES-MCT/camino-ui/commit/c63c6772cc1900e0493932a56685163c295e6ee0)) +* **étape:** initialise la date à aujourd’hui lors de l’ajout d’une étape ([#252](https://github.com/MTES-MCT/camino-ui/issues/252)) ([25d3478](https://github.com/MTES-MCT/camino-ui/commit/25d3478a8841d9d8236236ff32453615362b938e)) +* **liste:** ajoute la colonne 'Références' dans la liste de titres ([#248](https://github.com/MTES-MCT/camino-ui/issues/248)) ([b6a2f09](https://github.com/MTES-MCT/camino-ui/commit/b6a2f0944707cf430e8f1008e34772ae5bdfe2c9)) +* **statistiques:** ajoute le graph des stocks de concessions granulats marins ([#247](https://github.com/MTES-MCT/camino-ui/issues/247)) ([eb67819](https://github.com/MTES-MCT/camino-ui/commit/eb678193f2a9ea8ff247a2072a2ee4f57071713c)) + + +### Bug Fixes + +* **utilisateur:** permet d’affecter un utilisateur à son administration ([#251](https://github.com/MTES-MCT/camino-ui/issues/251)) ([d279ccd](https://github.com/MTES-MCT/camino-ui/commit/d279ccdf113ea9fb31063c8b6527ccdc719a26a6)) +* limite la liste des entreprises lors de l'ajout d'une entreprise ([#249](https://github.com/MTES-MCT/camino-ui/issues/249)) ([0c64234](https://github.com/MTES-MCT/camino-ui/commit/0c64234418d19912d13cfcb86294641fe87b2d6d)) + +### [0.22.59](https://github.com/MTES-MCT/camino-ui/compare/v0.22.56...v0.22.59) (2021-02-08) + + +### Features + +* met à jour le nom du ministère et les coordonnées ([#243](https://github.com/MTES-MCT/camino-ui/issues/243)) ([432bb3f](https://github.com/MTES-MCT/camino-ui/commit/432bb3f35d65cb50440ccb04d2370ffcf9183e94)) +* **activités:** prend en compte les documents optionnels ([#241](https://github.com/MTES-MCT/camino-ui/issues/241)) ([bcfe8e6](https://github.com/MTES-MCT/camino-ui/commit/bcfe8e6cb14dfefe19f8a15959ed2db30711edc9)) + + +### Bug Fixes + +* **entreprise:** permet de désarchiver une entreprise ([0384393](https://github.com/MTES-MCT/camino-ui/commit/038439310452387cb7d2f2cb39d5595ec3d594f4)) +* **metas:** ajoute la majuscule manquante sur Types des administrations ([5d38d58](https://github.com/MTES-MCT/camino-ui/commit/5d38d58b3776879e8cb0ec39fdeb11f2e0abb13c)) +* ajoute une majuscule sur le titre des métas ([4af2c19](https://github.com/MTES-MCT/camino-ui/commit/4af2c19e57dd81d7f430397927f192ff60a39303)) +* **activités:** affiche correctement les sections des activités dans le formulaire ([#245](https://github.com/MTES-MCT/camino-ui/issues/245)) ([3086de7](https://github.com/MTES-MCT/camino-ui/commit/3086de7c4663ecbf8f1942ff9d2dfe9b106a4c78)) +* **statistiques:** corrige les libellés et ajoute les liens vers les titres ([#246](https://github.com/MTES-MCT/camino-ui/issues/246)) ([a7a63be](https://github.com/MTES-MCT/camino-ui/commit/a7a63becc7b4b10117bf8e40b07697b7a722d07f)) +* édite les nouveaux champs d'unité ([0421c73](https://github.com/MTES-MCT/camino-ui/commit/0421c73913271142d769be826bd2f719270befb6)) + +### [0.22.58](https://github.com/MTES-MCT/camino-ui/compare/v0.22.57...v0.22.58) (2021-02-05) + + +### Features + +* met à jour le nom du ministère et les coordonnées ([#243](https://github.com/MTES-MCT/camino-ui/issues/243)) ([432bb3f](https://github.com/MTES-MCT/camino-ui/commit/432bb3f35d65cb50440ccb04d2370ffcf9183e94)) + + +### Bug Fixes + +* ajoute une majuscule sur le titre des métas ([4af2c19](https://github.com/MTES-MCT/camino-ui/commit/4af2c19e57dd81d7f430397927f192ff60a39303)) +* **activités:** affiche correctement les sections des activités dans le formulaire ([#245](https://github.com/MTES-MCT/camino-ui/issues/245)) ([3086de7](https://github.com/MTES-MCT/camino-ui/commit/3086de7c4663ecbf8f1942ff9d2dfe9b106a4c78)) +* **statistiques:** corrige les libellés et ajoute les liens vers les titres ([#246](https://github.com/MTES-MCT/camino-ui/issues/246)) ([a7a63be](https://github.com/MTES-MCT/camino-ui/commit/a7a63becc7b4b10117bf8e40b07697b7a722d07f)) +* édite les nouveaux champs d'unité ([0421c73](https://github.com/MTES-MCT/camino-ui/commit/0421c73913271142d769be826bd2f719270befb6)) + +### [0.22.57](https://github.com/MTES-MCT/camino-ui/compare/v0.22.56...v0.22.57) (2021-02-01) + + +### Features + +* **activités:** prend en compte les documents optionnels ([#241](https://github.com/MTES-MCT/camino-ui/issues/241)) ([bcfe8e6](https://github.com/MTES-MCT/camino-ui/commit/bcfe8e6cb14dfefe19f8a15959ed2db30711edc9)) + +### [0.22.56](https://github.com/MTES-MCT/camino-ui/compare/v0.22.53...v0.22.56) (2021-01-25) + + +### Features + +* **demarches:** conditionne l'affichage du bouton de création de démarches ([#229](https://github.com/MTES-MCT/camino-ui/issues/229)) ([014e02e](https://github.com/MTES-MCT/camino-ui/commit/014e02ebfdb77da34cbcdbcec2225ef845639d37)) +* **édition d'étape:** sélectionne la date avant le type ([#237](https://github.com/MTES-MCT/camino-ui/issues/237)) ([5d274d5](https://github.com/MTES-MCT/camino-ui/commit/5d274d553d5443d46efd2f53816179a80552dd6f)) +* **statistiques:** améliorer le rendu ([#233](https://github.com/MTES-MCT/camino-ui/issues/233)) ([320d720](https://github.com/MTES-MCT/camino-ui/commit/320d7209233cace81e89aea7ed1e4bee9f02d3c9)) +* **statistiques:** corrige le commentaire introductif sur la page guyane ([#225](https://github.com/MTES-MCT/camino-ui/issues/225)) ([91183e5](https://github.com/MTES-MCT/camino-ui/commit/91183e5b47118cd167d70ae1ed9a86c52b79e6b4)) +* **statistiques:** désactive l’affichage des statistiques des granulats marins ([ee84d7b](https://github.com/MTES-MCT/camino-ui/commit/ee84d7bb53d10ff2fbc508b42b53055ba01d37cf)) +* édite les métas ([#224](https://github.com/MTES-MCT/camino-ui/issues/224)) ([75d1ff7](https://github.com/MTES-MCT/camino-ui/commit/75d1ff76f5e5f6f27fb6dd0be1d83f8b4408291b)) + + +### Bug Fixes + +* **document:** interverti les champs uri et url ([#236](https://github.com/MTES-MCT/camino-ui/issues/236)) ([4ad2035](https://github.com/MTES-MCT/camino-ui/commit/4ad20351956b0db69e3800e92655dd558f440a0e)) +* **documents:** ajoute un bouton qui pointe vers les uri ([d55af9b](https://github.com/MTES-MCT/camino-ui/commit/d55af9bb6fc02ac9ef544f56cf44a74aea394ab2)) +* **édition d'étape:** autorise l'édition de la date ([0aec1d6](https://github.com/MTES-MCT/camino-ui/commit/0aec1d678e610d216f1514b68f5e46c85b1bce3f)) +* **entreprise:** empêche de choisir un amodiataire si il est titulaire ([#228](https://github.com/MTES-MCT/camino-ui/issues/228)) ([44b859b](https://github.com/MTES-MCT/camino-ui/commit/44b859b39767c8ff84f4ec7f4e6e26d9ce604f3f)) +* **entreprises:** ne peut pas mettre 2 fois le même titulaires sur une étape ([#223](https://github.com/MTES-MCT/camino-ui/issues/223)) ([b2b2ad3](https://github.com/MTES-MCT/camino-ui/commit/b2b2ad30d2aa8d01e944437328651d1be5b1f84b)) +* **étape:** initialise correctement le type d’étape lors de la modification d’une étape ([8102819](https://github.com/MTES-MCT/camino-ui/commit/8102819cee3c6f6aeb127b78530051ffbcd9a4c7)) +* **statistiques:** corrige l'affichage des granulats marins ([#235](https://github.com/MTES-MCT/camino-ui/issues/235)) ([fcfa94e](https://github.com/MTES-MCT/camino-ui/commit/fcfa94e5aa0f5c295ed20761d41203b1963c0493)) +* **statistiques:** corrige le libellé des surfaces sur les concessions ([#238](https://github.com/MTES-MCT/camino-ui/issues/238)) ([eae9e87](https://github.com/MTES-MCT/camino-ui/commit/eae9e87746fdf82faa3fbfd67471c083e2d3f918)) +* **statistiques:** corrige le titre lde la page ([#239](https://github.com/MTES-MCT/camino-ui/issues/239)) ([05efe97](https://github.com/MTES-MCT/camino-ui/commit/05efe979955760348a7f6237daf3fec663a628c5)) +* **statistiques:** corrige une faute d'orthographe ([#240](https://github.com/MTES-MCT/camino-ui/issues/240)) ([d66640f](https://github.com/MTES-MCT/camino-ui/commit/d66640f0063d0b47a4c3a358b7bd1ae43a6bbc4d)) +* affiche l'arrière plan des périmètres de concessions f ([7390e65](https://github.com/MTES-MCT/camino-ui/commit/7390e651f65c1c4b9d3de7756f86e719b76e0e25)) +* change l'icone d'un lien url ([dc9b185](https://github.com/MTES-MCT/camino-ui/commit/dc9b185d939d276533eedf5ae0321e91dbdd0e3a)) +* corrige l'affichage des statistiques ([#234](https://github.com/MTES-MCT/camino-ui/issues/234)) ([c5a04b0](https://github.com/MTES-MCT/camino-ui/commit/c5a04b046e034d61e720e5900be180a015715b80)) +* supprime l'édition de tables de jointure inutilisées ([9d1777f](https://github.com/MTES-MCT/camino-ui/commit/9d1777f687974385a5ac3652e95c6dff52989016)) + +### [0.22.55](https://github.com/MTES-MCT/camino-ui/compare/v0.22.54...v0.22.55) (2020-12-22) + + +### Features + +* **demarches:** conditionne l'affichage du bouton de création de démarches ([#229](https://github.com/MTES-MCT/camino-ui/issues/229)) ([014e02e](https://github.com/MTES-MCT/camino-ui/commit/014e02ebfdb77da34cbcdbcec2225ef845639d37)) +* **statistiques:** corrige le commentaire introductif sur la page guyane ([#225](https://github.com/MTES-MCT/camino-ui/issues/225)) ([91183e5](https://github.com/MTES-MCT/camino-ui/commit/91183e5b47118cd167d70ae1ed9a86c52b79e6b4)) +* **statistiques:** désactive l’affichage des statistiques des granulats marins ([ee84d7b](https://github.com/MTES-MCT/camino-ui/commit/ee84d7bb53d10ff2fbc508b42b53055ba01d37cf)) +* édite les métas ([#224](https://github.com/MTES-MCT/camino-ui/issues/224)) ([75d1ff7](https://github.com/MTES-MCT/camino-ui/commit/75d1ff76f5e5f6f27fb6dd0be1d83f8b4408291b)) + + +### Bug Fixes + +* **étape:** initialise correctement le type d’étape lors de la modification d’une étape ([8102819](https://github.com/MTES-MCT/camino-ui/commit/8102819cee3c6f6aeb127b78530051ffbcd9a4c7)) +* supprime l'édition de tables de jointure inutilisées ([9d1777f](https://github.com/MTES-MCT/camino-ui/commit/9d1777f687974385a5ac3652e95c6dff52989016)) +* **entreprise:** empêche de choisir un amodiataire si il est titulaire ([#228](https://github.com/MTES-MCT/camino-ui/issues/228)) ([44b859b](https://github.com/MTES-MCT/camino-ui/commit/44b859b39767c8ff84f4ec7f4e6e26d9ce604f3f)) + +### [0.22.54](https://github.com/MTES-MCT/camino-ui/compare/v0.22.53...v0.22.54) (2020-12-08) + + +### Bug Fixes + +* affiche l'arrière plan des périmètres de concessions f ([7390e65](https://github.com/MTES-MCT/camino-ui/commit/7390e651f65c1c4b9d3de7756f86e719b76e0e25)) +* **entreprises:** ne peut pas mettre 2 fois le même titulaires sur une étape ([#223](https://github.com/MTES-MCT/camino-ui/issues/223)) ([b2b2ad3](https://github.com/MTES-MCT/camino-ui/commit/b2b2ad30d2aa8d01e944437328651d1be5b1f84b)) + +### [0.22.53](https://github.com/MTES-MCT/camino-ui/compare/v0.22.52...v0.22.53) (2020-11-30) + + +### Bug Fixes + +* corrige le motif du type inconnu ([2840a12](https://github.com/MTES-MCT/camino-ui/commit/2840a12e8d4479b1d98143ea28024afdf1d86fa8)) + +### [0.22.52](https://github.com/MTES-MCT/camino-ui/compare/v0.22.51...v0.22.52) (2020-11-30) + + +### Bug Fixes + +* corrige le style des concessions f ([f2b3bde](https://github.com/MTES-MCT/camino-ui/commit/f2b3bdeed039304bdfcbae84f858cb545677493e)) + +### [0.22.51](https://github.com/MTES-MCT/camino-ui/compare/v0.22.50...v0.22.51) (2020-11-30) + + +### Features + +* ajoute les styles des types et domaines inconnus ([#222](https://github.com/MTES-MCT/camino-ui/issues/222)) ([c7299e1](https://github.com/MTES-MCT/camino-ui/commit/c7299e1e088f8cd0935f0f00d4f57b408817cd8c)) +* **carte:** utilise le centre du titre pour afficher les marqueurs ([#215](https://github.com/MTES-MCT/camino-ui/issues/215)) ([4a665fe](https://github.com/MTES-MCT/camino-ui/commit/4a665fe6832384a92a340b303d868490c53fac7f)) +* affiche les marqueurs sur un canvas ([#220](https://github.com/MTES-MCT/camino-ui/issues/220)) ([471f140](https://github.com/MTES-MCT/camino-ui/commit/471f140975201e71f785c6f06cf2e4bafcd46e25)) + + +### Bug Fixes + +* corrige la modification d’une étape avec des entreprises archivées ([#221](https://github.com/MTES-MCT/camino-ui/issues/221)) ([f283ec5](https://github.com/MTES-MCT/camino-ui/commit/f283ec58cd84645e20c735507d4ab0fe32eb9ae2)) + +### [0.22.50](https://github.com/MTES-MCT/camino-ui/compare/v0.22.49...v0.22.50) (2020-11-19) + + +### Features + +* **entreprise:** permet d’archiver une entreprise ([#213](https://github.com/MTES-MCT/camino-ui/issues/213)) ([ba95641](https://github.com/MTES-MCT/camino-ui/commit/ba95641e4e20f11f2c11c9c61cc776563a8480fb)) +* **etapes:** pouvoir définir le type d’une propriété number ([#212](https://github.com/MTES-MCT/camino-ui/issues/212)) ([a61e6fd](https://github.com/MTES-MCT/camino-ui/commit/a61e6fde6ff08f6c92e700d95ea58871f1e3d651)) +* ajoute des options 'integer' et 'negative' sur le champs nombre ([#211](https://github.com/MTES-MCT/camino-ui/issues/211)) ([80ed5d4](https://github.com/MTES-MCT/camino-ui/commit/80ed5d4b91c05970ca57f2c3849612e426f8e296)) + + +### Bug Fixes + +* **entreprises:** corrige le retour sur la liste des entreprises ([#219](https://github.com/MTES-MCT/camino-ui/issues/219)) ([5229572](https://github.com/MTES-MCT/camino-ui/commit/5229572ad5fe16b292148803de68d6c5c92f7ad9)) +* corrige l'import d'un composant ([1335f8e](https://github.com/MTES-MCT/camino-ui/commit/1335f8e44ca68b65d7b6110cd313cb8c02c73f9d)) + +### [0.22.49](https://github.com/MTES-MCT/camino-ui/compare/v0.22.46...v0.22.49) (2020-11-04) + + +### Features + +* **administration:** édite les permission ([#210](https://github.com/MTES-MCT/camino-ui/issues/210)) ([fc5645c](https://github.com/MTES-MCT/camino-ui/commit/fc5645c8dc8895563494fe5bed04aede080e9db4)) +* ajoute les administrations ([#205](https://github.com/MTES-MCT/camino-ui/issues/205)) ([f3898ab](https://github.com/MTES-MCT/camino-ui/commit/f3898abc70b97bfd1f9b95479bcde26efbe9b916)) +* édite une administration ([#208](https://github.com/MTES-MCT/camino-ui/issues/208)) ([1a9747d](https://github.com/MTES-MCT/camino-ui/commit/1a9747d191611c8cff05d390c455002ae8d54e80)) +* **documents:** masque les boutons si l’utilisateur n’a pas les permissions ([#195](https://github.com/MTES-MCT/camino-ui/issues/195)) ([970816d](https://github.com/MTES-MCT/camino-ui/commit/970816d1852ce969bd7f6fb2ae357a965286145f)) +* **sentry:** active Sentry et Matomo via des variables d’environnement ([#198](https://github.com/MTES-MCT/camino-ui/issues/198)) ([7ad575e](https://github.com/MTES-MCT/camino-ui/commit/7ad575eb93dd858f875929013aecc01109a01671)) + + +### Bug Fixes + +* affiche le nom complet des domaines dans le selecteur de permissions ([91da4d1](https://github.com/MTES-MCT/camino-ui/commit/91da4d1ea5bdea900dfd15a9a304af674a7bf80f)) +* ajoute une icone pour le changement d'email ([9003235](https://github.com/MTES-MCT/camino-ui/commit/90032351cc3388306866bfa6c8c573d6a212dfc6)) +* corrige l'enregistrement des activités ([#202](https://github.com/MTES-MCT/camino-ui/issues/202)) ([920d2ec](https://github.com/MTES-MCT/camino-ui/commit/920d2ec50035567e14add0179ef19f387fc5b0ae)) +* corrige la CSP pour le chragement asynchrone ([3007449](https://github.com/MTES-MCT/camino-ui/commit/30074490197235f0b5aaf2c93e7d9e278bbfcd4c)) +* corrige la csp pour les styles de chartjs ([c72f622](https://github.com/MTES-MCT/camino-ui/commit/c72f6229b24a7cae208c4257ae6bae022ac7a646)) +* corrige la csp pour matomo ([2e2c71c](https://github.com/MTES-MCT/camino-ui/commit/2e2c71cce5ce3b5c8e4b41d325cedbc07ee632e5)) +* corrige la liste d'administration lors de l'édition d'un utilisateur ([0f45ee6](https://github.com/MTES-MCT/camino-ui/commit/0f45ee667b012a27ba35d94bd337969efc4068a9)) +* corrige la mise en page sur safari ([#200](https://github.com/MTES-MCT/camino-ui/issues/200)) ([f9e7d66](https://github.com/MTES-MCT/camino-ui/commit/f9e7d66e5ebc06f9a5d5ca0fe2c388e8f3ce37d1)) +* corrige le selecteur de type d'administrations ([00a2670](https://github.com/MTES-MCT/camino-ui/commit/00a2670ee5311db31ac21a55383943ae88ee7cc5)) +* corrige une faute de français ([29a221e](https://github.com/MTES-MCT/camino-ui/commit/29a221ee015c202d65442a195dc0d78be8ed0b6a)) +* **api:** utilise le refreshToken sur les appels à l’API Rest qui échouent ([#203](https://github.com/MTES-MCT/camino-ui/issues/203)) ([4e54d81](https://github.com/MTES-MCT/camino-ui/commit/4e54d811f1c25fddfe07b62864ab2b38c34899c7)) +* **nombre:** formate la saisie des nombres en français ([#192](https://github.com/MTES-MCT/camino-ui/issues/192)) ([981584f](https://github.com/MTES-MCT/camino-ui/commit/981584fc4dd50330436046b77145be1299458248)) +* **nombres:** formater l'affichage des nombre au standard français ([#179](https://github.com/MTES-MCT/camino-ui/issues/179)) ([75473db](https://github.com/MTES-MCT/camino-ui/commit/75473db6117602fe012b16c90320d86819e291ce)) +* **stats:** corrige une description ([#194](https://github.com/MTES-MCT/camino-ui/issues/194)) ([815bb08](https://github.com/MTES-MCT/camino-ui/commit/815bb08748794e7f008e5879e1ae8c91a3d20f7e)) +* **utilisateur:** vérifie la nouvelle adresse email lors de sa modification ([#199](https://github.com/MTES-MCT/camino-ui/issues/199)) ([c0f37dd](https://github.com/MTES-MCT/camino-ui/commit/c0f37ddab0b39f6038fcea6fc00d0e83808dc36a)) + +### [0.22.48](https://github.com/MTES-MCT/camino-ui/compare/v0.22.47...v0.22.48) (2020-10-20) + + +### Features + +* ajoute les administrations ([#205](https://github.com/MTES-MCT/camino-ui/issues/205)) ([f3898ab](https://github.com/MTES-MCT/camino-ui/commit/f3898abc70b97bfd1f9b95479bcde26efbe9b916)) + + +### Bug Fixes + +* corrige la liste d'administration lors de l'édition d'un utilisateur ([0f45ee6](https://github.com/MTES-MCT/camino-ui/commit/0f45ee667b012a27ba35d94bd337969efc4068a9)) +* corrige une faute de français ([29a221e](https://github.com/MTES-MCT/camino-ui/commit/29a221ee015c202d65442a195dc0d78be8ed0b6a)) +* **api:** utilise le refreshToken sur les appels à l’API Rest qui échouent ([#203](https://github.com/MTES-MCT/camino-ui/issues/203)) ([4e54d81](https://github.com/MTES-MCT/camino-ui/commit/4e54d811f1c25fddfe07b62864ab2b38c34899c7)) +* corrige l'enregistrement des activités ([#202](https://github.com/MTES-MCT/camino-ui/issues/202)) ([920d2ec](https://github.com/MTES-MCT/camino-ui/commit/920d2ec50035567e14add0179ef19f387fc5b0ae)) +* corrige la CSP pour le chragement asynchrone ([3007449](https://github.com/MTES-MCT/camino-ui/commit/30074490197235f0b5aaf2c93e7d9e278bbfcd4c)) +* corrige la mise en page sur safari ([#200](https://github.com/MTES-MCT/camino-ui/issues/200)) ([f9e7d66](https://github.com/MTES-MCT/camino-ui/commit/f9e7d66e5ebc06f9a5d5ca0fe2c388e8f3ce37d1)) + +### [0.22.47](https://github.com/MTES-MCT/camino-ui/compare/v0.22.46...v0.22.47) (2020-10-07) + + +### Features + +* **documents:** masque les boutons si l’utilisateur n’a pas les permissions ([#195](https://github.com/MTES-MCT/camino-ui/issues/195)) ([970816d](https://github.com/MTES-MCT/camino-ui/commit/970816d1852ce969bd7f6fb2ae357a965286145f)) +* **sentry:** active Sentry et Matomo via des variables d’environnement ([#198](https://github.com/MTES-MCT/camino-ui/issues/198)) ([7ad575e](https://github.com/MTES-MCT/camino-ui/commit/7ad575eb93dd858f875929013aecc01109a01671)) + + +### Bug Fixes + +* ajoute une icone pour le changement d'email ([9003235](https://github.com/MTES-MCT/camino-ui/commit/90032351cc3388306866bfa6c8c573d6a212dfc6)) +* corrige la csp pour les styles de chartjs ([c72f622](https://github.com/MTES-MCT/camino-ui/commit/c72f6229b24a7cae208c4257ae6bae022ac7a646)) +* **nombre:** formate la saisie des nombres en français ([#192](https://github.com/MTES-MCT/camino-ui/issues/192)) ([981584f](https://github.com/MTES-MCT/camino-ui/commit/981584fc4dd50330436046b77145be1299458248)) +* **stats:** corrige une description ([#194](https://github.com/MTES-MCT/camino-ui/issues/194)) ([815bb08](https://github.com/MTES-MCT/camino-ui/commit/815bb08748794e7f008e5879e1ae8c91a3d20f7e)) +* **utilisateur:** vérifie la nouvelle adresse email lors de sa modification ([#199](https://github.com/MTES-MCT/camino-ui/issues/199)) ([c0f37dd](https://github.com/MTES-MCT/camino-ui/commit/c0f37ddab0b39f6038fcea6fc00d0e83808dc36a)) +* corrige la csp pour matomo ([2e2c71c](https://github.com/MTES-MCT/camino-ui/commit/2e2c71cce5ce3b5c8e4b41d325cedbc07ee632e5)) +* **nombres:** formater l'affichage des nombre au standard français ([#179](https://github.com/MTES-MCT/camino-ui/issues/179)) ([75473db](https://github.com/MTES-MCT/camino-ui/commit/75473db6117602fe012b16c90320d86819e291ce)) + +### [0.22.46](https://github.com/MTES-MCT/camino-ui/compare/v0.22.45...v0.22.46) (2020-09-29) + + +### Features + +* met à jour le logo de l'état ([#188](https://github.com/MTES-MCT/camino-ui/issues/188)) ([5afa5e0](https://github.com/MTES-MCT/camino-ui/commit/5afa5e007d4fc12eaf94f20db1243a1482de4a29)) +* ouvre une section lorsqu'elle est modifiée ([#187](https://github.com/MTES-MCT/camino-ui/issues/187)) ([cf63db3](https://github.com/MTES-MCT/camino-ui/commit/cf63db3670b36de0948561c69605706774899a62)) +* **documents:** accepte des .pdf jusqu'à 30 mo ([#183](https://github.com/MTES-MCT/camino-ui/issues/183)) ([d14cdca](https://github.com/MTES-MCT/camino-ui/commit/d14cdca98ba5434ddbb3d48fbe84c3034209c907)) +* **forêts:** affiche le nom des forêts sur chaque titre ([#184](https://github.com/MTES-MCT/camino-ui/issues/184)) ([fcbc017](https://github.com/MTES-MCT/camino-ui/commit/fcbc0179e443f9bd95b9a55f3eb0bf7b4faa8c65)) +* **sécurité:** ajoute la gestion du refresh token ([#177](https://github.com/MTES-MCT/camino-ui/issues/177)) ([9398e1a](https://github.com/MTES-MCT/camino-ui/commit/9398e1a6e49a73b6585e91055adf95791b4f9944)) +* **statistique:** change le libellé des champs surface ([#181](https://github.com/MTES-MCT/camino-ui/issues/181)) ([4cce082](https://github.com/MTES-MCT/camino-ui/commit/4cce0825e261df0ccde508e943785c9fdff9176c)) + + +### Bug Fixes + +* corrige l'affichage du selecteur et des onglets ([#182](https://github.com/MTES-MCT/camino-ui/issues/182)) ([a609109](https://github.com/MTES-MCT/camino-ui/commit/a60910929918f18f1e3c274aea5a7d391e18df16)) +* corrige la saisie de d'étape de travaux ([5c2e5d4](https://github.com/MTES-MCT/camino-ui/commit/5c2e5d42619e0b8085aad188bcaa01d722d620be)) +* corrige la saisie des nombres ([417bc7b](https://github.com/MTES-MCT/camino-ui/commit/417bc7b273b17706218ff6e522f8a634198b8556)) +* corrige la saisie des nombres sur les vieux Firefox ([#186](https://github.com/MTES-MCT/camino-ui/issues/186)) ([3b997aa](https://github.com/MTES-MCT/camino-ui/commit/3b997aa83742e8f7476e20d6d4c15024bd2281ac)) +* corrige la saisie des nombres sur les vieux Firefox ([#189](https://github.com/MTES-MCT/camino-ui/issues/189)) ([181862a](https://github.com/MTES-MCT/camino-ui/commit/181862a9260ddcd855441cce19d938953687ca14)) +* corrige la visibilité d'un document d'entreprise ([5d1895d](https://github.com/MTES-MCT/camino-ui/commit/5d1895de41b9bcb2962bb05db9e7cf2eae89a5ba)) +* corrige les accès direct sur la page des titres ([#180](https://github.com/MTES-MCT/camino-ui/issues/180)) ([6490ebb](https://github.com/MTES-MCT/camino-ui/commit/6490ebb03a5360151495fbb98a0fc1570ea484e5)) +* corrige une erreur lors de la selection d'étapes incluses ([afa1a7d](https://github.com/MTES-MCT/camino-ui/commit/afa1a7d044f73f4c68508c5f610880b30fc6f1e9)) +* désactive l'élément "statistique" du menu ([#178](https://github.com/MTES-MCT/camino-ui/issues/178)) ([97f731a](https://github.com/MTES-MCT/camino-ui/commit/97f731aa069a543d4a2dd48b478e15c04c2569ea)) +* vérifie les types des paramètres d'url ([711f269](https://github.com/MTES-MCT/camino-ui/commit/711f269d57c60b3bba3cf1cdf986ea41c5372a76)) +* **authentification:** corrige la création de son compte ([#185](https://github.com/MTES-MCT/camino-ui/issues/185)) ([1a5aa94](https://github.com/MTES-MCT/camino-ui/commit/1a5aa94a9c9f7a40298ad3f2661a77f00e04901e)) + +### [0.22.45](https://github.com/MTES-MCT/camino-ui/compare/v0.22.43...v0.22.45) (2020-09-18) + + +### Features + +* affiches une page statistiques Guyane ([#170](https://github.com/MTES-MCT/camino-ui/issues/170)) ([53d7932](https://github.com/MTES-MCT/camino-ui/commit/53d793246ff08e2b59b803736f66e333674cfb02)) +* **carte:** ajoute un bouton pour cadrer tous les marqueurs ([#169](https://github.com/MTES-MCT/camino-ui/issues/169)) ([e9f6922](https://github.com/MTES-MCT/camino-ui/commit/e9f69225b6b0b05981b133666b474492c2fa3952)) +* affiche les filtres actifs ([#168](https://github.com/MTES-MCT/camino-ui/issues/168)) ([caa69e1](https://github.com/MTES-MCT/camino-ui/commit/caa69e1ab668f00685a764fcd90f31a65c2fcc3a)) +* **filtres:** ajoute un bouton qui permet de réinitialiser les filtres ([#163](https://github.com/MTES-MCT/camino-ui/issues/163)) ([7d555bc](https://github.com/MTES-MCT/camino-ui/commit/7d555bc35663258f45efa579ef42a9451b45d917)) +* **geo:** gère les virgules et les espaces quand l'utilisateur saisit des coordonnées décimales ([#166](https://github.com/MTES-MCT/camino-ui/issues/166)) ([ef43949](https://github.com/MTES-MCT/camino-ui/commit/ef43949496ec2f1a53e7af893905a2229f926b08)) +* **stats:** améliore la page statistiques ([#159](https://github.com/MTES-MCT/camino-ui/issues/159)) ([5060cad](https://github.com/MTES-MCT/camino-ui/commit/5060cada6b1e2f0d4dc7d347ab617f2bf7a49949)) +* ajoute Nicolas Petitot dans l'équipe ([#161](https://github.com/MTES-MCT/camino-ui/issues/161)) ([538d51b](https://github.com/MTES-MCT/camino-ui/commit/538d51baf018d9cc8c7e9ef2066d4c64f76d5bbd)) + + +### Bug Fixes + +* **statistiques:** corrige l’unité de la statistique Protection de l’environnement ([25c6ef4](https://github.com/MTES-MCT/camino-ui/commit/25c6ef4860eb21dd0f02670c66ef42f1b7b48960)) +* affiche l'étiquette des étapes incluses et exclues ([#172](https://github.com/MTES-MCT/camino-ui/issues/172)) ([fa2d3ad](https://github.com/MTES-MCT/camino-ui/commit/fa2d3adcb7d4e19167ef983d52b4b59a946b760f)) +* corrige des fautes remarques ([e828c5d](https://github.com/MTES-MCT/camino-ui/commit/e828c5d4a3e2c6b7653bbdfc3d7a87a98924d1f5)) +* corrige l'affichage des statistiques ([#176](https://github.com/MTES-MCT/camino-ui/issues/176)) ([24d47c4](https://github.com/MTES-MCT/camino-ui/commit/24d47c4fa668c23e1875d07744a20bd471b2abff)) +* corrige la mise en page des statistiques ([#175](https://github.com/MTES-MCT/camino-ui/issues/175)) ([d7e35d4](https://github.com/MTES-MCT/camino-ui/commit/d7e35d4fc8ab8306916509b888f34e12020aba83)) +* **activité:** corrige le dépot des rapports d’activités qui n’ont pas de document ([#160](https://github.com/MTES-MCT/camino-ui/issues/160)) ([71b7854](https://github.com/MTES-MCT/camino-ui/commit/71b78541ba466908a5c5f9076068b92fd3e8fc37)) +* **coordonnées:** enlève la valeur par défaut ([#171](https://github.com/MTES-MCT/camino-ui/issues/171)) ([286a1ea](https://github.com/MTES-MCT/camino-ui/commit/286a1ea4f620a94dc4874f925578f8cb4393f682)) +* **démarches:** améliore l’affichage des filtres d’étapes ([#174](https://github.com/MTES-MCT/camino-ui/issues/174)) ([9f9f15a](https://github.com/MTES-MCT/camino-ui/commit/9f9f15af22fae4e17ab17f07ff1b2b1a489fdb2f)) +* corrige l'affichage des pages stats ([45a73fc](https://github.com/MTES-MCT/camino-ui/commit/45a73fcc8691911dd9ab6fa194bf3e27ad131eb2)) +* **activité:** permet de valider les rapports d’activités où tous les champs sont optionnels ([#162](https://github.com/MTES-MCT/camino-ui/issues/162)) ([e5d167a](https://github.com/MTES-MCT/camino-ui/commit/e5d167aba3ed6d266f52102b6bc1a6b23b86355d)) +* **stats:** améliore la page statistiques ([#164](https://github.com/MTES-MCT/camino-ui/issues/164)) ([2721bd2](https://github.com/MTES-MCT/camino-ui/commit/2721bd25ba4c81cbf39ea22ebb6fbe502b58068a)) + +### [0.22.44](https://github.com/MTES-MCT/camino-ui/compare/v0.22.43...v0.22.44) (2020-08-27) + + +### Features + +* ajoute Nicolas Petitot dans l'équipe ([#161](https://github.com/MTES-MCT/camino-ui/issues/161)) ([538d51b](https://github.com/MTES-MCT/camino-ui/commit/538d51baf018d9cc8c7e9ef2066d4c64f76d5bbd)) + + +### Bug Fixes + +* **activité:** corrige le dépot des rapports d’activités qui n’ont pas de document ([#160](https://github.com/MTES-MCT/camino-ui/issues/160)) ([71b7854](https://github.com/MTES-MCT/camino-ui/commit/71b78541ba466908a5c5f9076068b92fd3e8fc37)) +* **activité:** permet de valider les rapports d’activités où tous les champs sont optionnels ([#162](https://github.com/MTES-MCT/camino-ui/issues/162)) ([e5d167a](https://github.com/MTES-MCT/camino-ui/commit/e5d167aba3ed6d266f52102b6bc1a6b23b86355d)) + +### [0.22.43](https://github.com/MTES-MCT/camino-ui/compare/v0.22.42...v0.22.43) (2020-08-04) + + +### Features + +* ajoute les travaux ([#156](https://github.com/MTES-MCT/camino-ui/issues/156)) ([799ad37](https://github.com/MTES-MCT/camino-ui/commit/799ad374eb7b7db7f3cb28bd5fa88a84a2c8a378)) +* **activités:** ajoute des documents lors de l'enregistrement ([a43852c](https://github.com/MTES-MCT/camino-ui/commit/a43852c9f84ba9b786c2bcfd73d406fe6629a7f3)) + + +### Bug Fixes + +* **activité:** masque le bouton d'ajout de document ([506a472](https://github.com/MTES-MCT/camino-ui/commit/506a4726f7435b3dd775acf1b00001ce98571480)) +* **date:** change la date maximum du selecteur ([f99091a](https://github.com/MTES-MCT/camino-ui/commit/f99091a0a5cd61866184ed7924181e1a3aa1cbef)) +* corrige l'upload ([6d048d4](https://github.com/MTES-MCT/camino-ui/commit/6d048d4fb86c3a4a0aea20e093c53db32ea18a2e)) +* corrige les pages 404 ([8203e97](https://github.com/MTES-MCT/camino-ui/commit/8203e97305b8f2e7af332e7a8818e7d58dde8ab4)) + +### [0.22.42](https://github.com/MTES-MCT/camino-ui/compare/v0.22.40...v0.22.42) (2020-07-23) + + +### Features + +* enregistre l'ordre des substances ([316b172](https://github.com/MTES-MCT/camino-ui/commit/316b17227cd5f48bbda745f0174e3d320168c258)) + + +### Bug Fixes + +* corrige le téléchargement des documents ([b8dca70](https://github.com/MTES-MCT/camino-ui/commit/b8dca701052c220787fee266a0168c723797d071)) + +### [0.22.41](https://github.com/MTES-MCT/camino-ui/compare/v0.22.40...v0.22.41) (2020-07-22) + +### [0.22.40](https://github.com/MTES-MCT/camino-ui/compare/v0.22.39...v0.22.40) (2020-07-22) + +### [0.22.39](https://github.com/MTES-MCT/camino-ui/compare/v0.22.37...v0.22.39) (2020-07-22) + + +### Features + +* **activités:** ajoute des filtres ([#144](https://github.com/MTES-MCT/camino-ui/issues/144)) ([2541dd7](https://github.com/MTES-MCT/camino-ui/commit/2541dd7025e80aba85e3e5de34b97bbd07cbb7ce)) + + +### Bug Fixes + +* affiche un message d'erreur explicite si l'api ne répond pas ([18117fb](https://github.com/MTES-MCT/camino-ui/commit/18117fbfb48b67c6c2c75b17d873f14edd1777dd)) +* **filtres:** corrige une erreur "navigation redondante" ([#146](https://github.com/MTES-MCT/camino-ui/issues/146)) ([a751573](https://github.com/MTES-MCT/camino-ui/commit/a7515734f43f5f26faa5800956acae42f750703b)) +* **footer:** renomme le lien vers la documentation ([#147](https://github.com/MTES-MCT/camino-ui/issues/147)) ([ec945e8](https://github.com/MTES-MCT/camino-ui/commit/ec945e842ad0318cdebf51adae895d4b82bb6d35)) +* **glossaire:** corrige la couleur des statuts de titre ([#148](https://github.com/MTES-MCT/camino-ui/issues/148)) ([1a40c00](https://github.com/MTES-MCT/camino-ui/commit/1a40c00dbc35d86de5b4e62995e9d335d4abb7f8)) + +### [0.22.38](https://github.com/MTES-MCT/camino-ui/compare/v0.22.37...v0.22.38) (2020-07-15) + + +### Features + +* **activités:** ajoute des filtres ([#144](https://github.com/MTES-MCT/camino-ui/issues/144)) ([2541dd7](https://github.com/MTES-MCT/camino-ui/commit/2541dd7025e80aba85e3e5de34b97bbd07cbb7ce)) + + +### Bug Fixes + +* **filtres:** corrige une erreur "navigation redondante" ([#146](https://github.com/MTES-MCT/camino-ui/issues/146)) ([a751573](https://github.com/MTES-MCT/camino-ui/commit/a7515734f43f5f26faa5800956acae42f750703b)) +* **footer:** renomme le lien vers la documentation ([#147](https://github.com/MTES-MCT/camino-ui/issues/147)) ([ec945e8](https://github.com/MTES-MCT/camino-ui/commit/ec945e842ad0318cdebf51adae895d4b82bb6d35)) +* **glossaire:** corrige la couleur des statuts de titre ([#148](https://github.com/MTES-MCT/camino-ui/issues/148)) ([1a40c00](https://github.com/MTES-MCT/camino-ui/commit/1a40c00dbc35d86de5b4e62995e9d335d4abb7f8)) + +### [0.22.37](https://github.com/MTES-MCT/camino-ui/compare/v0.22.36...v0.22.37) (2020-07-01) + + +### Features + +* récupère la couleur des statuts des démarches ([#145](https://github.com/MTES-MCT/camino-ui/issues/145)) ([29ab1e6](https://github.com/MTES-MCT/camino-ui/commit/29ab1e6bb5d6d3ca8c0518916785046d9e776242)) +* **documentation:** ajoute un lien dans le footer ([#143](https://github.com/MTES-MCT/camino-ui/issues/143)) ([a244efa](https://github.com/MTES-MCT/camino-ui/commit/a244efa47eb2a3b48ed3dca5cbf70a5a2cc3e4d5)) +* **glossaire:** ajoute un sommaire et met en page ([#138](https://github.com/MTES-MCT/camino-ui/issues/138)) ([ec05ec5](https://github.com/MTES-MCT/camino-ui/commit/ec05ec5395b75fd41dc126b7e610ac5523a6bcbb)) +* **titres:** ajoute la pagination côté serveur sur la liste de titres ([#131](https://github.com/MTES-MCT/camino-ui/issues/131)) ([1d0f1be](https://github.com/MTES-MCT/camino-ui/commit/1d0f1bec5817011cbf61c944f8708294c18b417d)) +* **titres:** requête les titres dans un périmètre ([#136](https://github.com/MTES-MCT/camino-ui/issues/136)) ([40b9076](https://github.com/MTES-MCT/camino-ui/commit/40b9076595bdeeea8f0017ff1046c19718c59d0c)) + + +### Bug Fixes + +* met en forme les listes ([77100f2](https://github.com/MTES-MCT/camino-ui/commit/77100f2063837cbbc014a408b23342e7289510d8)) +* **carte:** corrige une erreur sur les motifs ([f71aa23](https://github.com/MTES-MCT/camino-ui/commit/f71aa23f2e0279537c6293c14a3a7f62f12d8174)) +* **documents:** corrige l'affichage de l'étiquette ([680a07b](https://github.com/MTES-MCT/camino-ui/commit/680a07b24b59898f358ef29ca94993be8ef9eb59)) +* **documents:** n'affiche l'étiquette que si le parent est modifiable ([#135](https://github.com/MTES-MCT/camino-ui/issues/135)) ([bf97b64](https://github.com/MTES-MCT/camino-ui/commit/bf97b6417fc82722922b434b5c3db7dfa9d36b3a)) +* **entreprise:** corrige une erreur sur la liste de titre ([340bf66](https://github.com/MTES-MCT/camino-ui/commit/340bf6625f7dc5903f1c12c5ab8e700a97f40282)) +* **titres:** empêche de changer de vue pendant le chargement ([#141](https://github.com/MTES-MCT/camino-ui/issues/141)) ([201ba07](https://github.com/MTES-MCT/camino-ui/commit/201ba070c3ba5717c18035a7d1eaed712b0c2d13)) +* **ui:** corrige une erreur bloquante sur IE11 ([#142](https://github.com/MTES-MCT/camino-ui/issues/142)) ([17d0854](https://github.com/MTES-MCT/camino-ui/commit/17d08549044443d4a60c79d5bcb87e664e2e9eb5)) +* corrige le chargement des pages ([#140](https://github.com/MTES-MCT/camino-ui/issues/140)) ([7a3737d](https://github.com/MTES-MCT/camino-ui/commit/7a3737d20c8a3436d9284e6a4febded0db7b0358)) +* modifie le lien vers la documentation des flux ([#134](https://github.com/MTES-MCT/camino-ui/issues/134)) ([f2906e5](https://github.com/MTES-MCT/camino-ui/commit/f2906e5510a0716b25bb36737b4fa2c2da584034)) +* recharge les titres lorsque la position sur la carte change ([#137](https://github.com/MTES-MCT/camino-ui/issues/137)) ([19bba1b](https://github.com/MTES-MCT/camino-ui/commit/19bba1b157f6043841458fb84f7e14b5dbaeb72d)) +* **titres:** corrige l'affichage de la table ([5be4604](https://github.com/MTES-MCT/camino-ui/commit/5be4604abcf5a66eea4b60c92f17a931820ab76d)) + +### [0.22.36](https://github.com/MTES-MCT/camino-ui/compare/v0.22.35...v0.22.36) (2020-06-17) + + +### Features + +* **carte:** affiche le nom du titulaire sur un titre ([3de3459](https://github.com/MTES-MCT/camino-ui/commit/3de3459b217d8e81d98efe04e7dac8a5e4057a3e)) +* **carte:** propose une option pour désactiver les marqueurs ([87a8468](https://github.com/MTES-MCT/camino-ui/commit/87a84682ed82469d0ff9e982b4c34531c4eee26a)) +* crée un nouveau sélecteur de date ([#130](https://github.com/MTES-MCT/camino-ui/issues/130)) ([9911e66](https://github.com/MTES-MCT/camino-ui/commit/9911e662d31043bc72d0b3f55207f6e8f662043c)) +* **utilisateurs:** rassemble les champs 'noms' et 'prénoms' du filtre en un seul champ ([#129](https://github.com/MTES-MCT/camino-ui/issues/129)) ([f8f2a1b](https://github.com/MTES-MCT/camino-ui/commit/f8f2a1bf9f97152b3fda07e7742c67cc387f6bfa)) + + +### Bug Fixes + +* **activités:** corrige une erreur lorsqu'un champs numérique est vide ([#132](https://github.com/MTES-MCT/camino-ui/issues/132)) ([28ee7f4](https://github.com/MTES-MCT/camino-ui/commit/28ee7f4c63afef097082b6c448fa344b14608996)) +* **document:** corrige une erreur lors du choix de la visibilité ([371b6ab](https://github.com/MTES-MCT/camino-ui/commit/371b6ab0839250f5e8767ea96538e21058eb24e2)) +* corrige une erreur lors du rechargement d'une page titre ([bf6803f](https://github.com/MTES-MCT/camino-ui/commit/bf6803fa1918c22f5f84489ee493d46491361ec7)) + +### [0.22.35](https://github.com/MTES-MCT/camino-ui/compare/v0.22.34...v0.22.35) (2020-06-10) + + +### Features + +* ajoute une page glossaire ([#124](https://github.com/MTES-MCT/camino-ui/issues/124)) ([3c01fe2](https://github.com/MTES-MCT/camino-ui/commit/3c01fe21c9cfa7033a24284889098f37c6cb3991)) +* **activités:** ajoute le filtre par statut de rapport d'activité ([#120](https://github.com/MTES-MCT/camino-ui/issues/120)) ([b99fd6b](https://github.com/MTES-MCT/camino-ui/commit/b99fd6bd2555027a7a9939af8d3753c3e5cf51cc)) +* ajoute des documents sur les entreprises et activités ([#121](https://github.com/MTES-MCT/camino-ui/issues/121)) ([f6b7992](https://github.com/MTES-MCT/camino-ui/commit/f6b7992cf16e538dd2c75bbd37308e1a86e4adef)) + + +### Bug Fixes + +* corirge l'orthographe de `inclus` ([#126](https://github.com/MTES-MCT/camino-ui/issues/126)) ([5d52a5f](https://github.com/MTES-MCT/camino-ui/commit/5d52a5f89fcd2d9c741fd25c19b3937db043ac46)) +* corrige l'édition des documents pour les entreprises ([9fbcd74](https://github.com/MTES-MCT/camino-ui/commit/9fbcd740980d1c5d6b98a4761bd8ce973a1df06e)) +* corrige une erreur de permissions lors de l'ajout d'un document ([04b089f](https://github.com/MTES-MCT/camino-ui/commit/04b089f8c26c1a8248e3592e6def588c130156c5)) +* **démarches:** affiche le bouton "téléchargements" ([#127](https://github.com/MTES-MCT/camino-ui/issues/127)) ([9278101](https://github.com/MTES-MCT/camino-ui/commit/9278101f717d0893fd2478b8789fe7c86c216d6e)) +* **filtres:** corrige une erreur sur les cases à cocher ([#123](https://github.com/MTES-MCT/camino-ui/issues/123)) ([66f7d0b](https://github.com/MTES-MCT/camino-ui/commit/66f7d0b8e50268ed99b8216b7248c6b8786970e1)) +* **stats:** corrige le format de rendu des mots-clés de recherche ([#122](https://github.com/MTES-MCT/camino-ui/issues/122)) ([569c117](https://github.com/MTES-MCT/camino-ui/commit/569c117da9ed98aa85cf3ffb1ac4c669cf06a48e)) + +### [0.22.34](https://github.com/MTES-MCT/camino-ui/compare/v0.22.33...v0.22.34) (2020-06-02) + + +### Bug Fixes + +* **matomo:** corrige le tracking des recherches ([#116](https://github.com/MTES-MCT/camino-ui/issues/116)) ([40d020b](https://github.com/MTES-MCT/camino-ui/commit/40d020b8dd8645f8088fc59a6c42006d5084a674)) +* affiche une erreur si un utilisateur déconnecté visite les pages `activités` et `utilisateurs` ([168333b](https://github.com/MTES-MCT/camino-ui/commit/168333b4472dd4a074b47acc816a0f4484157156)) + +### [0.22.33](https://github.com/MTES-MCT/camino-ui/compare/v0.22.32...v0.22.33) (2020-05-20) + + +### Features + +* **activités:** ajoute des filtres par noms, entreprises, etc. ([#111](https://github.com/MTES-MCT/camino-ui/issues/111)) ([97a1af9](https://github.com/MTES-MCT/camino-ui/commit/97a1af9993439ad4cc7131d8170c02e204a639af)) +* **entreprises:** gère les paramètres d'url ([#104](https://github.com/MTES-MCT/camino-ui/issues/104)) ([a845087](https://github.com/MTES-MCT/camino-ui/commit/a84508715908d3f3a11403d5094777b496fe14fa)) +* **footer:** ajoute un lien vers les tuto vidéos ([#110](https://github.com/MTES-MCT/camino-ui/issues/110)) ([e5dd61a](https://github.com/MTES-MCT/camino-ui/commit/e5dd61afc1dc8e6d6a32a746cc08e5d3a3da8c10)) +* **matomo:** améliore le paramétrage de Matomo ([#107](https://github.com/MTES-MCT/camino-ui/issues/107)) ([540241c](https://github.com/MTES-MCT/camino-ui/commit/540241c1116da2ff747ea1379c0bff80af7cac1c)) +* renomme les listes d'entreprises et d'activités en 'elements' ([#113](https://github.com/MTES-MCT/camino-ui/issues/113)) ([74c4b38](https://github.com/MTES-MCT/camino-ui/commit/74c4b38ee129dfc52e091b00556d8187baf67b24)) + + +### Bug Fixes + +* ajoute un fond sur les champs du formulaire de création de compte ([6173769](https://github.com/MTES-MCT/camino-ui/commit/617376913ab8035918afb867f32576112a41e10a)) +* corrige des problèmes d'affichage ([627756c](https://github.com/MTES-MCT/camino-ui/commit/627756c9e30bb9503eeca91f93ab3134b0f13656)) +* corrige l'édition d'utilisateur et d'étape ([7824d05](https://github.com/MTES-MCT/camino-ui/commit/7824d0507521127b2eca52210f07114427dfcc3b)) +* **activité:** recharge la page après la mise à jour ([#115](https://github.com/MTES-MCT/camino-ui/issues/115)) ([d81eb5f](https://github.com/MTES-MCT/camino-ui/commit/d81eb5f8065cc536659430fbf3d5b47e7f79cb69)) +* **carto:** rend visible le motif des autorisations de recherche ([cc44335](https://github.com/MTES-MCT/camino-ui/commit/cc44335fa0d03b33c8bc99ef6a3b4d7946fb8a88)) +* **documents:** empêche d'enregistrer si aucun type n'est sélectionné ([#112](https://github.com/MTES-MCT/camino-ui/issues/112)) ([46fcf95](https://github.com/MTES-MCT/camino-ui/commit/46fcf9597328f522079d3198e0140098490f9c73)) +* **menu:** désactive le lien lorsqu'on est sur la page correspondante ([4fc6651](https://github.com/MTES-MCT/camino-ui/commit/4fc6651109c4c158c4a343b4c1a342b3d10c38f5)) + +### [0.22.32](https://github.com/MTES-MCT/camino-ui/compare/v0.22.29...v0.22.32) (2020-05-18) + + +### Features + +* **utilisateurs:** gère les paramètres d'url ([#105](https://github.com/MTES-MCT/camino-ui/issues/105)) ([566d805](https://github.com/MTES-MCT/camino-ui/commit/566d805105aa517ebf63b819d22703ceaca22050)) +* télécharge les exports de données côté serveur ([#103](https://github.com/MTES-MCT/camino-ui/issues/103)) ([e7a87a4](https://github.com/MTES-MCT/camino-ui/commit/e7a87a4ba8a632a46da37cdf48dfacbec7495c84)) +* **démarches:** filtre par nom de titres, titulaires, substances, etc. ([#102](https://github.com/MTES-MCT/camino-ui/issues/102)) ([c4f84df](https://github.com/MTES-MCT/camino-ui/commit/c4f84df3487a181a8687c32f6bd647347c2cacfc)) +* **design:** améliore le style des statuts ([33892ab](https://github.com/MTES-MCT/camino-ui/commit/33892ab024880d5c1c471bbeeac4ed15af6bf15b)) +* ajoute le statut dans l'étiquette du titre ([24b69d3](https://github.com/MTES-MCT/camino-ui/commit/24b69d310e70a1304aaea4676bca4024c4f0839d)) +* optimise la hiérarchie des informations ([#100](https://github.com/MTES-MCT/camino-ui/issues/100)) ([eda6b69](https://github.com/MTES-MCT/camino-ui/commit/eda6b6935ed948b1ecbd8067adb3ad5fe8d9d961)) +* **activités:** gère les paramètres d'url ([#97](https://github.com/MTES-MCT/camino-ui/issues/97)) ([210488b](https://github.com/MTES-MCT/camino-ui/commit/210488bc8566585d1b38ddc76d2b0e9163386ccc)) + + +### Bug Fixes + +* **utilisateurs:** corrige le paramètre des permissions ([#108](https://github.com/MTES-MCT/camino-ui/issues/108)) ([44f192a](https://github.com/MTES-MCT/camino-ui/commit/44f192a26a087cc46eb5f5381823dd3285877d6b)) +* corrige le tri des démarches ([#106](https://github.com/MTES-MCT/camino-ui/issues/106)) ([54a3f23](https://github.com/MTES-MCT/camino-ui/commit/54a3f23fccc7d3b7f56895a1309fbc7294f4bb7a)) +* **design:** affiche la date en dehors du statut sur les étapes ([9844b80](https://github.com/MTES-MCT/camino-ui/commit/9844b80fbbc8078fe832580dd874fdbdb88c14a8)) +* **design:** corrige des problèmes de lisibilité ([ad3eeb9](https://github.com/MTES-MCT/camino-ui/commit/ad3eeb9bfeea3bc3c3bea07aae8dbaeddc359edf)) +* **utilisateur:** recharge la page si l'id change ([ad7d432](https://github.com/MTES-MCT/camino-ui/commit/ad7d43235760a9ab31710a36442c0c49fd16a374)) +* corrige des problèmes d'affichage ([226e602](https://github.com/MTES-MCT/camino-ui/commit/226e6021871388f368c6b0cb13e6a50b2584745c)) +* uniformise les marges ([c093486](https://github.com/MTES-MCT/camino-ui/commit/c093486dbf8921482c91a94450f509dc489af886)) + +### [0.22.31](https://github.com/MTES-MCT/camino-ui/compare/v0.22.30...v0.22.31) (2020-05-12) + + +### Features + +* télécharge les exports de données côté serveur ([#103](https://github.com/MTES-MCT/camino-ui/issues/103)) ([e7a87a4](https://github.com/MTES-MCT/camino-ui/commit/e7a87a4ba8a632a46da37cdf48dfacbec7495c84)) +* **démarches:** filtre par nom de titres, titulaires, substances, etc. ([#102](https://github.com/MTES-MCT/camino-ui/issues/102)) ([c4f84df](https://github.com/MTES-MCT/camino-ui/commit/c4f84df3487a181a8687c32f6bd647347c2cacfc)) + + +### Bug Fixes + +* corrige le tri des démarches ([#106](https://github.com/MTES-MCT/camino-ui/issues/106)) ([54a3f23](https://github.com/MTES-MCT/camino-ui/commit/54a3f23fccc7d3b7f56895a1309fbc7294f4bb7a)) + +### [0.22.30](https://github.com/MTES-MCT/camino-ui/compare/v0.22.29...v0.22.30) (2020-05-05) + + +### Features + +* **design:** améliore le style des statuts ([33892ab](https://github.com/MTES-MCT/camino-ui/commit/33892ab024880d5c1c471bbeeac4ed15af6bf15b)) +* ajoute le statut dans l'étiquette du titre ([24b69d3](https://github.com/MTES-MCT/camino-ui/commit/24b69d310e70a1304aaea4676bca4024c4f0839d)) +* optimise la hiérarchie des informations ([#100](https://github.com/MTES-MCT/camino-ui/issues/100)) ([eda6b69](https://github.com/MTES-MCT/camino-ui/commit/eda6b6935ed948b1ecbd8067adb3ad5fe8d9d961)) +* **activités:** gère les paramètres d'url ([#97](https://github.com/MTES-MCT/camino-ui/issues/97)) ([210488b](https://github.com/MTES-MCT/camino-ui/commit/210488bc8566585d1b38ddc76d2b0e9163386ccc)) + + +### Bug Fixes + +* **design:** affiche la date en dehors du statut sur les étapes ([9844b80](https://github.com/MTES-MCT/camino-ui/commit/9844b80fbbc8078fe832580dd874fdbdb88c14a8)) +* **design:** corrige des problèmes de lisibilité ([ad3eeb9](https://github.com/MTES-MCT/camino-ui/commit/ad3eeb9bfeea3bc3c3bea07aae8dbaeddc359edf)) +* **utilisateur:** recharge la page si l'id change ([ad7d432](https://github.com/MTES-MCT/camino-ui/commit/ad7d43235760a9ab31710a36442c0c49fd16a374)) +* corrige des problèmes d'affichage ([226e602](https://github.com/MTES-MCT/camino-ui/commit/226e6021871388f368c6b0cb13e6a50b2584745c)) +* uniformise les marges ([c093486](https://github.com/MTES-MCT/camino-ui/commit/c093486dbf8921482c91a94450f509dc489af886)) + +### [0.22.29](https://github.com/MTES-MCT/camino-ui/compare/v0.22.28...v0.22.29) (2020-04-27) + + +### Bug Fixes + +* corrige une erreur dans la config de l'url des titres ([88b03bc](https://github.com/MTES-MCT/camino-ui/commit/88b03bc99e42bd2a8b76d42ff3d3f138249e6f00)) + +### [0.22.28](https://github.com/MTES-MCT/camino-ui/compare/v0.22.27...v0.22.28) (2020-04-27) + + +### Features + +* gère les paramètres d'url pour les filtres etapesIncluses/etapesExclues ([#99](https://github.com/MTES-MCT/camino-ui/issues/99)) ([defadd9](https://github.com/MTES-MCT/camino-ui/commit/defadd9f03566cd29bbce46177a0fdfe43685ef2)) +* **demarches:** filtre par étapes incluses ou exclues ([#98](https://github.com/MTES-MCT/camino-ui/issues/98)) ([2ca1d88](https://github.com/MTES-MCT/camino-ui/commit/2ca1d88a3b6fcfde83916876a3c03a56e1c5c993)) +* ajoute un lien depuis l'utilisateur vers l'entreprise ([126e86f](https://github.com/MTES-MCT/camino-ui/commit/126e86f5461ba5c6c93cd28511ef225ba1c53293)) +* **carte:** précisie le message sur carte BRGM ([#95](https://github.com/MTES-MCT/camino-ui/issues/95)) ([96be248](https://github.com/MTES-MCT/camino-ui/commit/96be2489bfdbb97933a87e1e74eef9a87e591583)) + + +### Bug Fixes + +* corrige la pagination des tables ([#96](https://github.com/MTES-MCT/camino-ui/issues/96)) ([083ebaf](https://github.com/MTES-MCT/camino-ui/commit/083ebaf4a2dddfa6c611662b0bea0274c69a7906)) +* **stats:** corrige le suivi des téléchargements ([#94](https://github.com/MTES-MCT/camino-ui/issues/94)) ([87ba25f](https://github.com/MTES-MCT/camino-ui/commit/87ba25ffe0b944b190b6233c98b2e65e167edbc6)) + +### [0.22.27](https://github.com/MTES-MCT/camino-ui/compare/v0.22.26...v0.22.27) (2020-04-20) + + +### Features + +* **stats:** enregistre les actions utilisateurs ([#89](https://github.com/MTES-MCT/camino-ui/issues/89)) ([ade3835](https://github.com/MTES-MCT/camino-ui/commit/ade383521adaa5ba2ee3e85ecff7f605edc25d3b)) + + +### Bug Fixes + +* **stats:** corrige l'implémentation des trackers ([6735912](https://github.com/MTES-MCT/camino-ui/commit/6735912f6b77b9bc6d1b3210705c40895a36c968)) +* **stats:** corrige le paramètre site search ([a683bf7](https://github.com/MTES-MCT/camino-ui/commit/a683bf7ee5a7c376515bd9af932d40c7e884ceed)) +* **stats:** corrige les trackers ([45233fa](https://github.com/MTES-MCT/camino-ui/commit/45233fa9b5628563edfb7b5ca1a328c966e18332)) +* corrige une erreur s'il aucun type d'activité n'est retourné par l'API ([09ec1cb](https://github.com/MTES-MCT/camino-ui/commit/09ec1cb47ac8f5c3ada579586cfa3b34edd67014)) +* **utilisateur:** restreint la visibilité de l'édition du mot de passe ([#93](https://github.com/MTES-MCT/camino-ui/issues/93)) ([e96c8ce](https://github.com/MTES-MCT/camino-ui/commit/e96c8cee1579e6cd1457821dd59c23f40a8ea9a9)) +* ajoute une csp 'unsafe eval' qui génère une erreur dans firefox ([56048ac](https://github.com/MTES-MCT/camino-ui/commit/56048ac6564dd7dfe0f5956de6faab81ab8fe277)) +* corrige une requête en doublon lors du chargement de l'app ([f759dcb](https://github.com/MTES-MCT/camino-ui/commit/f759dcb3e3736da7fd4f481489c63f0175dfc037)) +* enlève la position fixe du footer de la popup sur mobile ([36c0e09](https://github.com/MTES-MCT/camino-ui/commit/36c0e09f3e8dca93d5f2a1fea415c656560151f7)) +* vérifie les paramètres d'url ([#92](https://github.com/MTES-MCT/camino-ui/issues/92)) ([769378a](https://github.com/MTES-MCT/camino-ui/commit/769378a46779f2e06247e6c7cf3b512303b3018b)) + +### [0.22.26](https://github.com/MTES-MCT/camino-ui/compare/v0.22.25...v0.22.26) (2020-04-09) + + +### Bug Fixes + +* ajoute des paramètres d'url numériques ([8e8bfe6](https://github.com/MTES-MCT/camino-ui/commit/8e8bfe6e20dc890c2b6b8e2bbc72222d74f34b15)) +* corrige l'affichage des selects ([ce3cac7](https://github.com/MTES-MCT/camino-ui/commit/ce3cac79423abb9d13283d14199bef61174c455e)) +* corrige une erreur lorsqu'il y a un nombre dans un paramètre d'url ([adb7ae2](https://github.com/MTES-MCT/camino-ui/commit/adb7ae2644abfc95f3e1b258b03cc47a334192b7)) +* n'autorise qu'une administration par utilisateur ([3200a95](https://github.com/MTES-MCT/camino-ui/commit/3200a95b0c19bf34d999275d76a20554aff0d229)) + +### [0.22.25](https://github.com/MTES-MCT/camino-ui/compare/v0.22.24...v0.22.25) (2020-03-30) + + +### Features + +* **export:** exporte la nature des titres (exploration ou exploitation) ([#85](https://github.com/MTES-MCT/camino-ui/issues/85)) ([1c43cc9](https://github.com/MTES-MCT/camino-ui/commit/1c43cc90d0d0c2aa2480058b92c6eae408760a9e)) +* ajoute des textures sur les périmètres des titres ([#86](https://github.com/MTES-MCT/camino-ui/issues/86)) ([7f55870](https://github.com/MTES-MCT/camino-ui/commit/7f558706932ca2ab251410553dfe79f8b60bc793)) + + +### Bug Fixes + +* corrige une erreur dans le nom d'une action ([f59a099](https://github.com/MTES-MCT/camino-ui/commit/f59a099c4298d493943554bfbbd2cad5c561ba76)) + +### [0.22.24](https://github.com/MTES-MCT/camino-ui/compare/v0.22.23...v0.22.24) (2020-03-23) + + +### Features + +* ajoute l'authentification avec Cerbère ([#84](https://github.com/MTES-MCT/camino-ui/issues/84)) ([7fcf5cc](https://github.com/MTES-MCT/camino-ui/commit/7fcf5cc0ccede83d36be08520d1dbcd4bfdb32fd)) +* utilise l'api pour obtenir l'url de Cerbère ([8cd88d5](https://github.com/MTES-MCT/camino-ui/commit/8cd88d56f34b3a2c10854abd6bae8b1b3d9ee139)) + +### [0.22.23](https://github.com/MTES-MCT/camino-ui/compare/v0.22.22...v0.22.23) (2020-03-12) + + +### Features + +* **api:** affiche les données spécifiques remontées à la racine titre ([#80](https://github.com/MTES-MCT/camino-ui/issues/80)) ([b03c903](https://github.com/MTES-MCT/camino-ui/commit/b03c903254a3b124ac8d112b11d13b8a2daa92d2)) +* **étape:** affiche les sections dont le contenu est vide ([44c32dd](https://github.com/MTES-MCT/camino-ui/commit/44c32dd645e40b7adacf5caad32a6bf84fe91e4d)) + + +### Bug Fixes + +* **démarches:** évite une double requête lors du changement de filtres ([a359c62](https://github.com/MTES-MCT/camino-ui/commit/a359c62f982c0544984ec8f92606de9605a64989)) +* affiche les contenus non remplis ([#82](https://github.com/MTES-MCT/camino-ui/issues/82)) ([8385fb0](https://github.com/MTES-MCT/camino-ui/commit/8385fb08408e49324dc65b732cf1cdb6f943120d)) +* corrige l'affichage des sections d'activités ([4bbb454](https://github.com/MTES-MCT/camino-ui/commit/4bbb454e1306157849183a47ab8c87f7708af142)) +* corrige l'affichage du contenu d'étapes avec sections spécifiques ([#79](https://github.com/MTES-MCT/camino-ui/issues/79)) ([bac1303](https://github.com/MTES-MCT/camino-ui/commit/bac13035fc260c72e98890f1abee7b2b39c7c448)) +* corrige l'édition d'un document ([d28aa57](https://github.com/MTES-MCT/camino-ui/commit/d28aa57ec404f04cd1d9aa267d7da0e2f5027341)) + +### [0.22.22](https://github.com/MTES-MCT/camino-ui/compare/v0.22.21...v0.22.22) (2020-02-27) + + +### Features + +* affiche le bouton d'ajout d'étapes en fonction des droits ([2bb9b85](https://github.com/MTES-MCT/camino-ui/commit/2bb9b856ff0fe2c6cb48e64bc6f164935695be1f)) +* affiche une liste de démarches ([b8bb3da](https://github.com/MTES-MCT/camino-ui/commit/b8bb3dab3f98073d78dd3b3714e80df45e0f8360)) + + +### Bug Fixes + +* corrige le style des boutons ([a9105c6](https://github.com/MTES-MCT/camino-ui/commit/a9105c67bc0e2442d5916ca50cdc19a202959497)) + +### [0.22.21](https://github.com/MTES-MCT/camino-ui/compare/v0.22.20...v0.22.21) (2020-02-20) + + +### Features + +* ajoute la surface dans la liste des propriétés d'une étape ([#73](https://github.com/MTES-MCT/camino-ui/issues/73)) ([9500538](https://github.com/MTES-MCT/camino-ui/commit/9500538d329ad1e38d2d0f93ddc220ea568e40cd)) +* interdit d'éditer les administrations dont l'utilisateur ne fait pas partie ([6c25a2c](https://github.com/MTES-MCT/camino-ui/commit/6c25a2cc909d9f1d3c3bf0db499b43c6a7a8dbed)) + + +### Bug Fixes + +* corrige des erreurs du au mauvais usage de la prop "native" ([39e9d8c](https://github.com/MTES-MCT/camino-ui/commit/39e9d8cf7ece7b1a845333e48f0465276ae6e36c)) +* corrige l'affichage des administrations pour les super users ([b0c36de](https://github.com/MTES-MCT/camino-ui/commit/b0c36de536fc167ce44cacb3ad499e6c40da89ea)) +* corrige la création d'étape ([8f7d6fd](https://github.com/MTES-MCT/camino-ui/commit/8f7d6fd43924e61da53ae8259754d86c1d3ced5f)) +* n'ajoute que les administrations sélectionnables dans la liste ([1732722](https://github.com/MTES-MCT/camino-ui/commit/1732722441cd35c302708db5db5da8552bca3dfa)) +* n'utilise pas le cache lors du chargement des métas ([a801882](https://github.com/MTES-MCT/camino-ui/commit/a8018826e7b2fd4c030475bf6a7e6732a6865e16)) +* **ui:** affiche le type de titre vue liste et fiche titre ([#75](https://github.com/MTES-MCT/camino-ui/issues/75)) ([5c21318](https://github.com/MTES-MCT/camino-ui/commit/5c21318ec0199f0e6a15d24f70123cedb577f1e3)) + +### [0.22.20](https://github.com/MTES-MCT/camino-ui/compare/v0.22.19...v0.22.20) (2020-02-11) + + +### Features + +* **mentions-legales:** ajouter le directeur de publication ONF ([#69](https://github.com/MTES-MCT/camino-ui/issues/69)) ([02ad85e](https://github.com/MTES-MCT/camino-ui/commit/02ad85ea6f2163bff890a9b959ab3ae4b6fa109c)) +* ajoute des types aux types de titres ([#70](https://github.com/MTES-MCT/camino-ui/issues/70)) ([7578314](https://github.com/MTES-MCT/camino-ui/commit/757831489b9e4324e2ff6aba4ca781fb349d6326)) + + +### Bug Fixes + +* corrige l'affichage du type dans les téléchargements ([0a39115](https://github.com/MTES-MCT/camino-ui/commit/0a3911536e870b0979ddfffb8056e62ad351ba57)) +* corrige la création d'un utilisateur ([#72](https://github.com/MTES-MCT/camino-ui/issues/72)) ([a81998f](https://github.com/MTES-MCT/camino-ui/commit/a81998fb42c4316c84ecfb26d00129c33c76b199)) +* test si les élémnts sont présents dans la page ([9cee314](https://github.com/MTES-MCT/camino-ui/commit/9cee314e070ccbf19ac87e18ea01e29f9ad8ecd7)) + +### [0.22.19](https://github.com/MTES-MCT/camino-ui/compare/v0.22.18...v0.22.19) (2020-01-31) + + +### Features + +* **activité:** met en page le contenu d'une activité ([010f2bc](https://github.com/MTES-MCT/camino-ui/commit/010f2bcfb35ac8d31cec7ae3a17baf72a213bb59)) +* **étape:** affiche le contenu des sections ([9a8ca52](https://github.com/MTES-MCT/camino-ui/commit/9a8ca527ad3ada7392078cba0d7c2b4cd00971e4)) +* **mentions légales:** modifie les directeurs de publication ([#64](https://github.com/MTES-MCT/camino-ui/issues/64)) ([c55aaf7](https://github.com/MTES-MCT/camino-ui/commit/c55aaf7b62fce61fb6a2b4d1e3c240e9b3da94ae)) +* affiche un bloc pour signaler un titre en doublon ([394af90](https://github.com/MTES-MCT/camino-ui/commit/394af90bf105737ddb06d422676ab672214c9542)) + + +### Bug Fixes + +* affiche le bouton de suppression d'un fichier ([2efd5ba](https://github.com/MTES-MCT/camino-ui/commit/2efd5badc7a9a9307ee9fa35156174d3ef2aa9dd)) +* change le message en cas de titre en doublon ([7c00b1f](https://github.com/MTES-MCT/camino-ui/commit/7c00b1f2fe378f3d883fdeb57bb3841ff8c00565)) +* corrige l'affichage d'une activité ([0f8fad7](https://github.com/MTES-MCT/camino-ui/commit/0f8fad7dd80509dadf2e8070202e92ab29a22ed4)) +* corrige l'affichage d'une liste de titres avec des params d'url ([6863489](https://github.com/MTES-MCT/camino-ui/commit/6863489411b84cf539dbbc8f243b5192d0fb01d3)) +* corrige l'affichage du contenu d'étape ([2375550](https://github.com/MTES-MCT/camino-ui/commit/2375550075f987fdc4666f2f2b72a7a327dbbbbf)) +* **utilisateur:** affiche les permissions dans la popup d'édition ([6a91f04](https://github.com/MTES-MCT/camino-ui/commit/6a91f040b9a4d441cbdbea644c7b5f58eba1e5ee)) +* corrige l'enregistrement ([5fde1ba](https://github.com/MTES-MCT/camino-ui/commit/5fde1badc011ffc45f39b3c9a5f7348ef8c93c63)) +* **api:** affiche l'édition des documents en fonction des droits ([#65](https://github.com/MTES-MCT/camino-ui/issues/65)) ([1690d19](https://github.com/MTES-MCT/camino-ui/commit/1690d19819385827044b3074291f6910f5802f06)) +* **étape:** affiche le contenu de l'étape dans l'accordéon ([7beefbf](https://github.com/MTES-MCT/camino-ui/commit/7beefbf3f8e9ab3db47f595308ede34ed1283e61)) + +### [0.22.18](https://github.com/MTES-MCT/camino-ui/compare/v0.22.17...v0.22.18) (2020-01-20) + + +### Bug Fixes + +* supprime un bloc dans l'en†ête de page ([366450e](https://github.com/MTES-MCT/camino-ui/commit/366450e53eaa0284dd2a93e02b65325bdddcf158)) + +### [0.22.17](https://github.com/MTES-MCT/camino-ui/compare/v0.22.16...v0.22.17) (2020-01-20) + + +### Features + +* supprime le badeau de grève ([538f394](https://github.com/MTES-MCT/camino-ui/commit/538f394f99704f68f811cbcae844d592eddc7dc5)) + +### [0.22.16](https://github.com/MTES-MCT/camino-ui/compare/v0.22.15...v0.22.16) (2020-01-20) + + +### Features + +* affiche les amodiataires sur la page entreprise ([a943dc1](https://github.com/MTES-MCT/camino-ui/commit/a943dc142c99492b6ccba2e9b258122da9f0236f)) +* change l'ordre des éléments dans le menu ([f351148](https://github.com/MTES-MCT/camino-ui/commit/f351148025b18b32ca5f1cc79989da4921a46322)) +* **activités:** ajoute un lien dans le menu vers la page des activités ([#63](https://github.com/MTES-MCT/camino-ui/issues/63)) ([ebd2927](https://github.com/MTES-MCT/camino-ui/commit/ebd29274638112849ac97b9bcbcd4a8b59db248d)) +* affiche un bandeau de soutient à la grève ([e7e6f34](https://github.com/MTES-MCT/camino-ui/commit/e7e6f348adea58bd52419258585d54199a8689cc)) +* ajoute le fond de carte ign cadastre ([6c46595](https://github.com/MTES-MCT/camino-ui/commit/6c46595f111b701c4e3b73b9e3a7b680abe811b8)) + + +### Bug Fixes + +* **documents:** affiche l'option "public" ([d778777](https://github.com/MTES-MCT/camino-ui/commit/d778777066844504b4d378bf7f8f4424a4166e2b)) +* construit les fichiers à télécharger au moment du clic ([#62](https://github.com/MTES-MCT/camino-ui/issues/62)) ([ed64e51](https://github.com/MTES-MCT/camino-ui/commit/ed64e51e949778eb7da0a46ab55314844af16c2a)) +* corrige l'affichage du fond de carte parcelles cadastrales ([2a2fd5b](https://github.com/MTES-MCT/camino-ui/commit/2a2fd5b964f61eaba1e1dd73a8917551ce073811)) +* corrige le schéma graphql ([1c277f0](https://github.com/MTES-MCT/camino-ui/commit/1c277f019959cc8c4cbca30c2d80b4b0ea91dfbe)) +* corrige les téléchargements volumineux ([4ce7b03](https://github.com/MTES-MCT/camino-ui/commit/4ce7b03b31b92bf7d4d80f6955fe3205845429f7)) +* reformule le contenu du bandeau ([4f5dc45](https://github.com/MTES-MCT/camino-ui/commit/4f5dc454edb5f859a630609398b779546316a2cb)) +* simplifie le message du bandeau ([7f1da51](https://github.com/MTES-MCT/camino-ui/commit/7f1da512f826932ff96621d170a452a5b5ea69b1)) +* **édition d'étape:** corrige l'effacement de contenu lorsqu'on modifie la date ([#60](https://github.com/MTES-MCT/camino-ui/issues/60)) ([4ecb33e](https://github.com/MTES-MCT/camino-ui/commit/4ecb33e6bdf1d9c327580722422d07d3864e5d4a)) +* **recherche:** prend en compte les tirets dans les champs texte ([#61](https://github.com/MTES-MCT/camino-ui/issues/61)) ([5f79885](https://github.com/MTES-MCT/camino-ui/commit/5f7988562a2c025895dae3c5e05a5bc632494f72)) + +### [0.22.15](https://github.com/MTES-MCT/camino-ui/compare/v0.22.14...v0.22.15) (2019-12-20) + + +### Bug Fixes + +* tests ([7e668f7](https://github.com/MTES-MCT/camino-ui/commit/7e668f7b2f6a2f41efd58af80d918f58aa150b6e)) + +### [0.22.14](https://github.com/MTES-MCT/camino-ui/compare/v0.22.13...v0.22.14) (2019-12-20) + + +### Bug Fixes + +* **activités:** corrige l'affichage des rapports annuels ([914b31c](https://github.com/MTES-MCT/camino-ui/commit/914b31cbacebb0b842a45a2e19751b288acccabd)) +* corrige l'ordre des métas ([#59](https://github.com/MTES-MCT/camino-ui/issues/59)) ([00a2c97](https://github.com/MTES-MCT/camino-ui/commit/00a2c970735b11b842e620772017ae22adfded76)) + +### [0.22.13](https://github.com/MTES-MCT/camino-ui/compare/v0.22.12...v0.22.13) (2019-12-19) + + +### Features + +* **édition:** ajoute un champs date ([9705892](https://github.com/MTES-MCT/camino-ui/commit/970589248527e4a088bbe9e31373b1d4485dbcd7)) + +### [0.22.12](https://github.com/MTES-MCT/camino-ui/compare/v0.22.11...v0.22.12) (2019-12-10) + + +### Features + +* ajoute la surface couverte par le titre dans l'export CSV ([98929e9](https://github.com/MTES-MCT/camino-ui/commit/98929e9b755e92413bf88f16a634ee3699ee3892)) +* ajoute une interface pour les activités ([#56](https://github.com/MTES-MCT/camino-ui/issues/56)) ([d65b2d8](https://github.com/MTES-MCT/camino-ui/commit/d65b2d8390f9dd045caddabdd1d9dfc2222de0a9)) +* **export csv:** ajoute l'adresse des entreprises et amodiataires ([#54](https://github.com/MTES-MCT/camino-ui/issues/54)) ([1fbe623](https://github.com/MTES-MCT/camino-ui/commit/1fbe62344891169848719105a8952ee388df0954)) + + +### Bug Fixes + +* affiche les entreprise dans l'édition d'étape ([a357a6e](https://github.com/MTES-MCT/camino-ui/commit/a357a6e6724bbe439a48e80b0d7240ef9070bf21)) +* corrige une erreur lors du retour sur la page activités ([e26f81b](https://github.com/MTES-MCT/camino-ui/commit/e26f81bd8d0d21d032c905c8b7eda4ea6fe9f83c)) + +### [0.22.11](https://github.com/MTES-MCT/camino-ui/compare/v0.22.8...v0.22.11) (2019-12-06) + + +### Features + +* ajoute deux fonds de carte Géoportail ([#51](https://github.com/MTES-MCT/camino-ui/issues/51)) ([6e105d3](https://github.com/MTES-MCT/camino-ui/commit/6e105d388bf73677da198c88cf65bb48c7b8f2b9)) +* **édition:** n'affiche que les sections ayant du contenu lors de la prévisualisation ([c2143d7](https://github.com/MTES-MCT/camino-ui/commit/c2143d739df81f001ac2f68171ce37507ca160db)) +* **export csv:** ajoute les colonnes régions, départements et communes ([#52](https://github.com/MTES-MCT/camino-ui/issues/52)) ([75c7150](https://github.com/MTES-MCT/camino-ui/commit/75c7150c41768a945b7a84023c47fb10f50adab8)) +* **ui:** limite la liste des types de références métier ([#43](https://github.com/MTES-MCT/camino-ui/issues/43)) ([1f1d2c7](https://github.com/MTES-MCT/camino-ui/commit/1f1d2c7f5342953258faa28b3eac78f4efd30c01)) +* **ui:** prend en compte les paramètres de tri dans l'URL ([#47](https://github.com/MTES-MCT/camino-ui/issues/47)) ([f0914b3](https://github.com/MTES-MCT/camino-ui/commit/f0914b329cf562d575a9324c8b8d11eaa335bdaa)) +* affiche les boutons d'éditions selon les permissions ([#46](https://github.com/MTES-MCT/camino-ui/issues/46)) ([0d50c1f](https://github.com/MTES-MCT/camino-ui/commit/0d50c1fc903020c294c117c72a2ae78eed21f629)) +* charge contextuellement les metas lors de l'édition ([#49](https://github.com/MTES-MCT/camino-ui/issues/49)) ([c3958cb](https://github.com/MTES-MCT/camino-ui/commit/c3958cb449783b7255ee306f536c41c61a94bd1f)) +* restreint les domaines et types de titre en fonction des permissions ([#48](https://github.com/MTES-MCT/camino-ui/issues/48)) ([109ad21](https://github.com/MTES-MCT/camino-ui/commit/109ad213d6f358572e23c2270acc9e70a9df23dd)) + + +### Bug Fixes + +* affiche des infos manquantes dans le fichier csv ([6024cb5](https://github.com/MTES-MCT/camino-ui/commit/6024cb5f59784585f3e8e861fe5b739d72afb8f3)) +* affiche le bouton document qui manque sur certaines étapes ([cd743a8](https://github.com/MTES-MCT/camino-ui/commit/cd743a80559a534820ee11d0eaf6694ea779ad61)) +* corrige l'affichage des points d'un titre ([c40884f](https://github.com/MTES-MCT/camino-ui/commit/c40884fe7eb6241ad8adc9de6b26d9ef0b7bfe9a)) +* corrige l'édition de documents ([8746d7f](https://github.com/MTES-MCT/camino-ui/commit/8746d7f7adaa9fcc1253117de5890648ebbae8e6)) +* corrige la gestion des filtres ([dcd2558](https://github.com/MTES-MCT/camino-ui/commit/dcd255809d0fb7fff7a89a9a23bb653550837dde)) +* corrige le chargement de la liste des types de documents ([e7cbc84](https://github.com/MTES-MCT/camino-ui/commit/e7cbc849087b27cabd5f5bc41a015456130021c1)) +* corrige le chargement des entreprises dans l'initialisation des metas ([d9b00f6](https://github.com/MTES-MCT/camino-ui/commit/d9b00f698c00e3cd2c2668f46028416303e378ea)) +* corrige les permissions sur l'édition de documents ([0b73486](https://github.com/MTES-MCT/camino-ui/commit/0b734862bf0672f0e434150d86de2c7e219ad77e)) +* corrige une erreur lors du chargement des metas ([46fffec](https://github.com/MTES-MCT/camino-ui/commit/46fffec5907d4231b60072e39aa915561c0385e7)) +* initialise la colonne de tri si l'id sélectionnée n'existe pas ([2a0775a](https://github.com/MTES-MCT/camino-ui/commit/2a0775a138bc2ba726515ea557381c258689db4b)) +* supprime un log ([c38bad0](https://github.com/MTES-MCT/camino-ui/commit/c38bad0528eb0990beade6b5d09ba2590bf7651b)) +* **api:** contourne le cache sur certaines requêtes ([dde0ac3](https://github.com/MTES-MCT/camino-ui/commit/dde0ac34cfa8e35985194d793d19c0da6de30191)) +* **export csv:** affiche engagement et surface ([#53](https://github.com/MTES-MCT/camino-ui/issues/53)) ([8bbf9e5](https://github.com/MTES-MCT/camino-ui/commit/8bbf9e556fe375b1a6a8270634cf3a1b85438bf0)) +* désactive les boutons lors de l'édition ([f79d39d](https://github.com/MTES-MCT/camino-ui/commit/f79d39d9f6ca78e2eb38cd122de4d2eb946709c0)) +* **édition:** désactive le bouton supprimer après avoir cliqué dessus ([#50](https://github.com/MTES-MCT/camino-ui/issues/50)) ([4b24dcd](https://github.com/MTES-MCT/camino-ui/commit/4b24dcd8f6b918fbb39d773af3264798db64baad)) +* supprime une erreur 404 si l'utilisateur se loggue ([76edccb](https://github.com/MTES-MCT/camino-ui/commit/76edccbb044d57dd38d3389d8ce361f10be23a0b)) + +### [0.22.10](https://github.com/MTES-MCT/camino-ui/compare/v0.22.9...v0.22.10) (2019-11-27) + + +### Features + +* affiche les boutons d'éditions selon les permissions ([#46](https://github.com/MTES-MCT/camino-ui/issues/46)) ([0d50c1f](https://github.com/MTES-MCT/camino-ui/commit/0d50c1fc903020c294c117c72a2ae78eed21f629)) +* restreint les domaines et types de titre en fonction des permissions ([#48](https://github.com/MTES-MCT/camino-ui/issues/48)) ([109ad21](https://github.com/MTES-MCT/camino-ui/commit/109ad213d6f358572e23c2270acc9e70a9df23dd)) + + +### Bug Fixes + +* corrige l'affichage des points d'un titre ([c40884f](https://github.com/MTES-MCT/camino-ui/commit/c40884fe7eb6241ad8adc9de6b26d9ef0b7bfe9a)) +* corrige les permissions sur l'édition de documents ([0b73486](https://github.com/MTES-MCT/camino-ui/commit/0b734862bf0672f0e434150d86de2c7e219ad77e)) +* corrige une erreur lors du chargement des metas ([46fffec](https://github.com/MTES-MCT/camino-ui/commit/46fffec5907d4231b60072e39aa915561c0385e7)) + +### [0.22.9](https://github.com/MTES-MCT/camino-ui/compare/v0.22.8...v0.22.9) (2019-11-21) + + +### Bug Fixes + +* **api:** contourne le cache sur certaines requêtes ([dde0ac3](https://github.com/MTES-MCT/camino-ui/commit/dde0ac3)) +* corrige l'édition de documents ([8746d7f](https://github.com/MTES-MCT/camino-ui/commit/8746d7f)) +* corrige la gestion des filtres ([dcd2558](https://github.com/MTES-MCT/camino-ui/commit/dcd2558)) +* supprime une erreur 404 si l'utilisateur se loggue ([76edccb](https://github.com/MTES-MCT/camino-ui/commit/76edccb)) + + +### Features + +* **ui:** limite la liste des types de références métier ([#43](https://github.com/MTES-MCT/camino-ui/issues/43)) ([1f1d2c7](https://github.com/MTES-MCT/camino-ui/commit/1f1d2c7)) + +### [0.22.8](https://github.com/MTES-MCT/camino-ui/compare/v0.22.7...v0.22.8) (2019-11-13) + + +### Bug Fixes + +* empêche de valider un rapport si il est incomplet ([4794720](https://github.com/MTES-MCT/camino-ui/commit/4794720)) +* **édition:** empêche de valider un formulaire incomplet ([9e5c2f0](https://github.com/MTES-MCT/camino-ui/commit/9e5c2f0)) +* corrige l'enregistrement d'une étape ([9820683](https://github.com/MTES-MCT/camino-ui/commit/9820683)) +* n'affiche pas les utilisateurs dans la requête sur les titres ([898fb60](https://github.com/MTES-MCT/camino-ui/commit/898fb60)) +* optimise les définitions graphql ([80da07c](https://github.com/MTES-MCT/camino-ui/commit/80da07c)) +* supprime un log inutile ([9da3068](https://github.com/MTES-MCT/camino-ui/commit/9da3068)) + + +### Features + +* **édition:** ajoute une entreprise ([#40](https://github.com/MTES-MCT/camino-ui/issues/40)) ([34e994f](https://github.com/MTES-MCT/camino-ui/commit/34e994f)) +* **édition:** gère l'unicité des étapes pendant l'édition ([#42](https://github.com/MTES-MCT/camino-ui/issues/42)) ([0d2f49e](https://github.com/MTES-MCT/camino-ui/commit/0d2f49e)) +* lie un utilisateur à des entreprises ou des administrations ([#41](https://github.com/MTES-MCT/camino-ui/issues/41)) ([828958c](https://github.com/MTES-MCT/camino-ui/commit/828958c)) + +### [0.22.7](https://github.com/MTES-MCT/camino-ui/compare/v0.22.6...v0.22.7) (2019-10-28) + + +### Bug Fixes + +* **édition de documents:** masque le bouton pendant l'enregistrement ([0ff79b3](https://github.com/MTES-MCT/camino-ui/commit/0ff79b3)) +* classe les entreprises et les administrations par ordre alphabétique ([f60d920](https://github.com/MTES-MCT/camino-ui/commit/f60d920)) +* supprime une instruction erronée ([0d0cdd6](https://github.com/MTES-MCT/camino-ui/commit/0d0cdd6)) +* **édition de documents:** corrige des problèmes d'affichage ([8db280b](https://github.com/MTES-MCT/camino-ui/commit/8db280b)) +* ajoute l'option "public" à l'édition de document ([ad5ca69](https://github.com/MTES-MCT/camino-ui/commit/ad5ca69)) +* corrige la mise en page sur tablette ([dd7a75e](https://github.com/MTES-MCT/camino-ui/commit/dd7a75e)) +* **actvités:** supprime le cartouche d'erreur lors de la validation d'une activité ([3620b19](https://github.com/MTES-MCT/camino-ui/commit/3620b19)) +* **édition:** corrige une erreur lors de l'ajout d'un utilisateur ([7ac8daa](https://github.com/MTES-MCT/camino-ui/commit/7ac8daa)) + + +### Features + +* **édition de documents:** affiche "optionel" sur le champs nom ([ec95e67](https://github.com/MTES-MCT/camino-ui/commit/ec95e67)) +* rend visible le bouton d'ajout de document si la liste est masquée ([ea5d103](https://github.com/MTES-MCT/camino-ui/commit/ea5d103)) +* **édition:** désactive les boutons lors de l'enregistrement ([3cc92a9](https://github.com/MTES-MCT/camino-ui/commit/3cc92a9)) + +### [0.22.6](https://github.com/MTES-MCT/camino-ui/compare/v0.22.5...v0.22.6) (2019-10-23) + + +### Bug Fixes + +* affiche l'icône de dépliage de documents pour les super utilisateurs même s'il l'étape ne possède pas de documents ([5451226](https://github.com/MTES-MCT/camino-ui/commit/5451226)) +* enlève un caractère en trop dans l'affichage des administrations ([412535a](https://github.com/MTES-MCT/camino-ui/commit/412535a)) +* identifie l'utilisateur après un changement de mot de passe ([#38](https://github.com/MTES-MCT/camino-ui/issues/38)) ([5c314c4](https://github.com/MTES-MCT/camino-ui/commit/5c314c4)) + + +### Features + +* **édition d'étape:** sélectionne le statut s'il n'y a q'un seul choix ([72382fe](https://github.com/MTES-MCT/camino-ui/commit/72382fe)) +* ajoute les administrations aux utilisateurs ([#37](https://github.com/MTES-MCT/camino-ui/issues/37)) ([4a0405f](https://github.com/MTES-MCT/camino-ui/commit/4a0405f)) +* ajoute une mention "optionel" sur le champs description ([252ff01](https://github.com/MTES-MCT/camino-ui/commit/252ff01)) +* empêche les durées négatives sur les champs "number" ([5a2925a](https://github.com/MTES-MCT/camino-ui/commit/5a2925a)) +* téléverse des fichiers ([#39](https://github.com/MTES-MCT/camino-ui/issues/39)) ([27e6ad9](https://github.com/MTES-MCT/camino-ui/commit/27e6ad9)) + +### [0.22.5](https://github.com/MTES-MCT/camino-ui/compare/v0.22.4...v0.22.5) (2019-10-16) + + +### Bug Fixes + +* corrige l'affichage de la date ([6cce484](https://github.com/MTES-MCT/camino-ui/commit/6cce484)) +* **activités:** corrige l'affichage des listes ([5ef97f0](https://github.com/MTES-MCT/camino-ui/commit/5ef97f0)) +* **filtres:** prend en compte les champs textes lorsqu'on valide au clavier ([e9fed23](https://github.com/MTES-MCT/camino-ui/commit/e9fed23)) +* affiche les dates correctement quelque soit le fuseau horaire ([15ab04c](https://github.com/MTES-MCT/camino-ui/commit/15ab04c)) +* corrige la construction d'un groupe de points ([36fee75](https://github.com/MTES-MCT/camino-ui/commit/36fee75)) +* corrige un bug d'url qui empêche le chargement des titres ([53b9f11](https://github.com/MTES-MCT/camino-ui/commit/53b9f11)) +* corrige une alerte de vue-router NavigationDuplicated ([809c475](https://github.com/MTES-MCT/camino-ui/commit/809c475)) +* valide les filtres avec la touche "entrée" ([6fe3531](https://github.com/MTES-MCT/camino-ui/commit/6fe3531)) +* **édition d'activité:** affiche un message différent lors de l'enregistrement et de la validation ([4a6d5f2](https://github.com/MTES-MCT/camino-ui/commit/4a6d5f2)) +* **édition d'étape:** supprime le nom du point s'il fait parti d'un lot ([e9a8cff](https://github.com/MTES-MCT/camino-ui/commit/e9a8cff)) +* **table:** affiche le bouton de la dernière page manquant ([3869e73](https://github.com/MTES-MCT/camino-ui/commit/3869e73)) +* met à jour l'url de la page après l'ajout d'une étape ([d3daf6b](https://github.com/MTES-MCT/camino-ui/commit/d3daf6b)) +* **filtres:** corrige la recherche filtrée avec un slash ([#34](https://github.com/MTES-MCT/camino-ui/issues/34)) ([8fcb059](https://github.com/MTES-MCT/camino-ui/commit/8fcb059)) + + +### Features + +* **statistiques:** met à jour les données ([dd279d5](https://github.com/MTES-MCT/camino-ui/commit/dd279d5)) +* **table:** propose le tri par colonne pour une colonne sans intitulé (p.e.: "domaine") ([ccc3473](https://github.com/MTES-MCT/camino-ui/commit/ccc3473)) +* affiche l'étiquette "subsidiaire" dans la liste de points ([19f1390](https://github.com/MTES-MCT/camino-ui/commit/19f1390)) +* améliore la présentation de la liste de points ([#36](https://github.com/MTES-MCT/camino-ui/issues/36)) ([480da0b](https://github.com/MTES-MCT/camino-ui/commit/480da0b)) +* change l'affichage de la liste de points [#33](https://github.com/MTES-MCT/camino-ui/issues/33) ([db1825e](https://github.com/MTES-MCT/camino-ui/commit/db1825e)) +* supprime les unités sur les références de points ([#35](https://github.com/MTES-MCT/camino-ui/issues/35)) ([0a55934](https://github.com/MTES-MCT/camino-ui/commit/0a55934)) + +### [0.22.4](https://github.com/MTES-MCT/camino-ui/compare/v0.22.3...v0.22.4) (2019-10-02) + + +### Bug Fixes + +* **carte:** rafraichit l'affichage après la mise à jour de points ([c1f1470](https://github.com/MTES-MCT/camino-ui/commit/c1f1470)) + + +### Features + +* affiche l'id du système géographique dans le sélecteur ([925a8b6](https://github.com/MTES-MCT/camino-ui/commit/925a8b6)) +* affiche le champs date au format français ([d9e78d1](https://github.com/MTES-MCT/camino-ui/commit/d9e78d1)) +* édite un lot de points de périmètre géo ([#30](https://github.com/MTES-MCT/camino-ui/issues/30)) ([67688fb](https://github.com/MTES-MCT/camino-ui/commit/67688fb)) + +### [0.22.3](https://github.com/MTES-MCT/camino-ui/compare/v0.22.2...v0.22.3) (2019-09-23) + + +### Bug Fixes + +* affiche le tag opposable dans le tableau de coordonnées ([8af9f40](https://github.com/MTES-MCT/camino-ui/commit/8af9f40)) +* corrige erreur Cannot read property 'references' of undefined ([fb8de80](https://github.com/MTES-MCT/camino-ui/commit/fb8de80)) +* définit le format des coordonnnées de références en nombres ([a88d251](https://github.com/MTES-MCT/camino-ui/commit/a88d251)) +* uniformise la description d'un point ([6cf326a](https://github.com/MTES-MCT/camino-ui/commit/6cf326a)) + + +### Features + +* affiche le lien vers la fiche entreprise depuis un titre ([64a3f3d](https://github.com/MTES-MCT/camino-ui/commit/64a3f3d)) +* **entreprise:** rend les entreprises visible au public ([#28](https://github.com/MTES-MCT/camino-ui/issues/28)) ([02501c6](https://github.com/MTES-MCT/camino-ui/commit/02501c6)) + +### [0.22.2](https://github.com/MTES-MCT/camino-ui/compare/v0.22.1...v0.22.2) (2019-08-15) + + +### Bug Fixes + +* corrige les appels à l'API ([892e252](https://github.com/MTES-MCT/camino-ui/commit/892e252)) +* **édition d'étape:** supprime les champs dont les ids sont vides ([a47ec99](https://github.com/MTES-MCT/camino-ui/commit/a47ec99)) + + +### Features + +* affiche l'unités du sytème de coordonnées géo ([375c48b](https://github.com/MTES-MCT/camino-ui/commit/375c48b)) +* ajoute les tags coordonnées opposables et subsidiaires ([8894a41](https://github.com/MTES-MCT/camino-ui/commit/8894a41)) +* ajoute les utilisateurs et les titres dans la vue entreprise ([fe480e7](https://github.com/MTES-MCT/camino-ui/commit/fe480e7)) +* crée un composant table générique ([ba009fb](https://github.com/MTES-MCT/camino-ui/commit/ba009fb)) +* désactive gestureHandling sur la carte en plein écran ([1e77e52](https://github.com/MTES-MCT/camino-ui/commit/1e77e52)) +* édite les références des points géo ([8346309](https://github.com/MTES-MCT/camino-ui/commit/8346309)) +* met à jour l'API ([d19c60e](https://github.com/MTES-MCT/camino-ui/commit/d19c60e)) +* organise les tables par colonnes en clic ([e862856](https://github.com/MTES-MCT/camino-ui/commit/e862856)) + +### [0.22.1](https://github.com/MTES-MCT/camino-ui/compare/v0.22.0...v0.22.1) (2019-07-31) + + +### Bug Fixes + +* ajoute dynamiquement l'url de l'API à la CSP ([29dfc73](https://github.com/MTES-MCT/camino-ui/commit/29dfc73)) +* ajuste l'affichage des clusters ([2b74a41](https://github.com/MTES-MCT/camino-ui/commit/2b74a41)) +* corrige l'édition des points ([2b45137](https://github.com/MTES-MCT/camino-ui/commit/2b45137)) +* corrige la création d'un utilisateur ([213c0bb](https://github.com/MTES-MCT/camino-ui/commit/213c0bb)) +* corrige la création de titres, démarches, étapes ([b98fe00](https://github.com/MTES-MCT/camino-ui/commit/b98fe00)) +* corrige la mise en page de l'entête d'un accordéon ([e9226a2](https://github.com/MTES-MCT/camino-ui/commit/e9226a2)) +* supprime un composant inutile ([bfefc9d](https://github.com/MTES-MCT/camino-ui/commit/bfefc9d)) + + +### Features + +* affiche la carte en plein écran ([25f04f8](https://github.com/MTES-MCT/camino-ui/commit/25f04f8)) +* affiche la durée en années / mois ([328178f](https://github.com/MTES-MCT/camino-ui/commit/328178f)) +* affiche les infos géographiques sur un titre ([581eeed](https://github.com/MTES-MCT/camino-ui/commit/581eeed)) +* ajoute des champs dynamiques sur une étape (pe: ONF) ([b96e7df](https://github.com/MTES-MCT/camino-ui/commit/b96e7df)) +* ajoute une url de serveur d'api ([3daf611](https://github.com/MTES-MCT/camino-ui/commit/3daf611)) +* améliore la mise en page des étapes ([c8ce8b8](https://github.com/MTES-MCT/camino-ui/commit/c8ce8b8)) +* corrige l'extension lors du téléchargement du geojson ([#27](https://github.com/MTES-MCT/camino-ui/issues/27)) ([defa988](https://github.com/MTES-MCT/camino-ui/commit/defa988)) +* regroupe les marqueurs en clusters ([2ff959a](https://github.com/MTES-MCT/camino-ui/commit/2ff959a)) +* uniformise les boutons pour passer de la vue carte à la vue liste ([10d711d](https://github.com/MTES-MCT/camino-ui/commit/10d711d)) + +## [0.22.0](https://github.com/MTES-MCT/camino-ui/compare/v0.21.0...v0.22.0) (2019-07-04) + + +### Bug Fixes + +* corrige un bug lors de l'ajout d'une entreprise vide à un utilisateur ([#24](https://github.com/MTES-MCT/camino-ui/issues/24)) ([97b16a4](https://github.com/MTES-MCT/camino-ui/commit/97b16a4)) +* **export:** corrige le format de la date dans le nom du fichier ([#21](https://github.com/MTES-MCT/camino-ui/issues/21)) ([4905d9b](https://github.com/MTES-MCT/camino-ui/commit/4905d9b)) +* corrige la navigation dans l'historique du navigateur ([747bc10](https://github.com/MTES-MCT/camino-ui/commit/747bc10)) +* **firefox:** prévient un double appel à l'api sur la liste des titres ([4e33bd2](https://github.com/MTES-MCT/camino-ui/commit/4e33bd2)) +* ajoute l'api de preprod à la csp ([a570525](https://github.com/MTES-MCT/camino-ui/commit/a570525)) +* met à jour les filtres lorsqu'un utilisateur se connecte / déconnecte ([3ec6ccd](https://github.com/MTES-MCT/camino-ui/commit/3ec6ccd)) + + +### Build System + +* met à jour les dépendances ([e2a89b1](https://github.com/MTES-MCT/camino-ui/commit/e2a89b1)) +* revient à eslint 5 ([cf19557](https://github.com/MTES-MCT/camino-ui/commit/cf19557)) + + +### Features + +* ajoute le docker-compose de preprod ([2262d71](https://github.com/MTES-MCT/camino-ui/commit/2262d71)) +* ajoute une redirection de stats vers statistiques ([ae94755](https://github.com/MTES-MCT/camino-ui/commit/ae94755)) +* corrige l'édition des étapes ([#25](https://github.com/MTES-MCT/camino-ui/issues/25)) ([c17456e](https://github.com/MTES-MCT/camino-ui/commit/c17456e)) +* télécharge un geojson des titres ([#22](https://github.com/MTES-MCT/camino-ui/issues/22)) ([fb2d9ab](https://github.com/MTES-MCT/camino-ui/commit/fb2d9ab)) + + + +## [0.21.0](https://github.com/MTES-MCT/camino-ui/compare/v0.20.0...v0.21.0) (2019-06-17) + + +### Bug Fixes + +* désactive le lien sur le logo sur la pages titres ([aff40a7](https://github.com/MTES-MCT/camino-ui/commit/aff40a7)) +* supprime un test inutile ([f1e27ee](https://github.com/MTES-MCT/camino-ui/commit/f1e27ee)) + + +### Build System + +* met à jour les dépendances ([8320b8b](https://github.com/MTES-MCT/camino-ui/commit/8320b8b)) + + +### Features + +* affiche la durée en mois ([a6e15c4](https://github.com/MTES-MCT/camino-ui/commit/a6e15c4)) +* ajoute une page entreprise ([18e84ae](https://github.com/MTES-MCT/camino-ui/commit/18e84ae)) +* autorise plusieurs entreprises par utilisateurs ([99661ad](https://github.com/MTES-MCT/camino-ui/commit/99661ad)) + + +### Tests + +* teste l'état des entreprises ([418dffa](https://github.com/MTES-MCT/camino-ui/commit/418dffa)) +* teste si l'api retourne null sur une liste d'entreprises ([5167791](https://github.com/MTES-MCT/camino-ui/commit/5167791)) + + + +## [0.20.0](https://github.com/MTES-MCT/camino-ui/compare/v0.19.0...v0.20.0) (2019-06-11) + + +### Build System + +* met à jour les dépendances ([481eee7](https://github.com/MTES-MCT/camino-ui/commit/481eee7)) +* met à jour les dépendances ([08c70e9](https://github.com/MTES-MCT/camino-ui/commit/08c70e9)) + + +### Features + +* utilise les date de demande, de début et de fin exposées par l'api ([c64a6f9](https://github.com/MTES-MCT/camino-ui/commit/c64a6f9)) + + + +## [0.19.0](https://github.com/MTES-MCT/camino-ui/compare/v0.18.0...v0.19.0) (2019-06-04) + + +### Bug Fixes + +* **carte:** ajoute la dépendance à leaflet.markercluster ([d3d1fe8](https://github.com/MTES-MCT/camino-ui/commit/d3d1fe8)) +* **titres:** corrige la liste des titres qui se charge 2 fois si un utilisateur est connecté ([4c4b513](https://github.com/MTES-MCT/camino-ui/commit/4c4b513)) +* corrige la position du bouton "ajouter un titre" ([8cb7b57](https://github.com/MTES-MCT/camino-ui/commit/8cb7b57)) +* corrige une erreur graphql lors du passage des titres à un titre ([bed037d](https://github.com/MTES-MCT/camino-ui/commit/bed037d)) + + +### Build System + +* met à jour les dépendances ([f7a14c1](https://github.com/MTES-MCT/camino-ui/commit/f7a14c1)) +* met à jour les dépendances (vue-cli@4-alpha) ([e0082e7](https://github.com/MTES-MCT/camino-ui/commit/e0082e7)) + + +### Features + +* **carte:** regroupe les marqueurs en groupes ([#19](https://github.com/MTES-MCT/camino-ui/issues/19)) ([5851251](https://github.com/MTES-MCT/camino-ui/commit/5851251)) + + + +## [0.18.0](https://github.com/MTES-MCT/camino-ui/compare/v0.17.0...v0.18.0) (2019-05-23) + + +### Bug Fixes + +* corrige un problème de chargement des titres lors de la création de compte ([1e83fbc](https://github.com/MTES-MCT/camino-ui/commit/1e83fbc)) +* **fichiers:** affiche l'extension pdf ([8b917fd](https://github.com/MTES-MCT/camino-ui/commit/8b917fd)) +* **fichiers:** retourne une erreur si le fichier est introuvable ([e1cdbcd](https://github.com/MTES-MCT/camino-ui/commit/e1cdbcd)) +* activtés ([780d37e](https://github.com/MTES-MCT/camino-ui/commit/780d37e)) +* affiche les bouton de zoom sur la carte ([a444d13](https://github.com/MTES-MCT/camino-ui/commit/a444d13)) +* affiche une légende "source indisponible" ([10d08f1](https://github.com/MTES-MCT/camino-ui/commit/10d08f1)) +* corrige la fonction de tri des entreprises ([143e98b](https://github.com/MTES-MCT/camino-ui/commit/143e98b)) +* remplace le label "présumé" par une icone ([a03429c](https://github.com/MTES-MCT/camino-ui/commit/a03429c)) +* **fichiers:** ajoute l'extension pdf au fichier téléchargé ([00f01b6](https://github.com/MTES-MCT/camino-ui/commit/00f01b6)) + + +### Build System + +* ajoute codecov ([0ce0930](https://github.com/MTES-MCT/camino-ui/commit/0ce0930)) +* met à jour les dépendances ([f2d126c](https://github.com/MTES-MCT/camino-ui/commit/f2d126c)) +* met à jour les dépendances ([e7383c7](https://github.com/MTES-MCT/camino-ui/commit/e7383c7)) + + +### Features + +* redirige vers la page du titre avec sa nouvelle id lors de la mise à jour ([37fc1d3](https://github.com/MTES-MCT/camino-ui/commit/37fc1d3)) +* renomme l'onglet titres en droits miniers ([af579e5](https://github.com/MTES-MCT/camino-ui/commit/af579e5)) +* **recherche:** permet de combiner des mots dans un filtre de recherche ([d1018ee](https://github.com/MTES-MCT/camino-ui/commit/d1018ee)) +* dynamise certaines statistiques ([#17](https://github.com/MTES-MCT/camino-ui/issues/17)) ([424de04](https://github.com/MTES-MCT/camino-ui/commit/424de04)) +* édite les incertitudes au sein d'une étape ([cecc0fc](https://github.com/MTES-MCT/camino-ui/commit/cecc0fc)) +* remplace le champs source indisponible par des champs incertitudes ([9753029](https://github.com/MTES-MCT/camino-ui/commit/9753029)) +* **activités:** prend en compte la date de fin d'une activité ([ae3c560](https://github.com/MTES-MCT/camino-ui/commit/ae3c560)) +* **fichiers:** met à jour le téléchargement selon la nouvelle api ([e1662a8](https://github.com/MTES-MCT/camino-ui/commit/e1662a8)) +* **fichiers:** télécharge un fichier pdf ([b297721](https://github.com/MTES-MCT/camino-ui/commit/b297721)) +* **stats:** ajout d'une page de stats ([10d98ac](https://github.com/MTES-MCT/camino-ui/commit/10d98ac)) + + +### Tests + +* Ajoute des tests ([2d755aa](https://github.com/MTES-MCT/camino-ui/commit/2d755aa)) +* corrige la config jest et ajoute les badges ([23ca762](https://github.com/MTES-MCT/camino-ui/commit/23ca762)) +* elabore router sur index ([6fbb9b6](https://github.com/MTES-MCT/camino-ui/commit/6fbb9b6)) +* modifie user,index ([022d598](https://github.com/MTES-MCT/camino-ui/commit/022d598)) +* modify index ([cc64e1c](https://github.com/MTES-MCT/camino-ui/commit/cc64e1c)) +* supprime un message d'erreur ([1cff0a2](https://github.com/MTES-MCT/camino-ui/commit/1cff0a2)) +* supprime un message d'erreur [#16](https://github.com/MTES-MCT/camino-ui/issues/16) ([5ad8370](https://github.com/MTES-MCT/camino-ui/commit/5ad8370)) +* termine les tests sur le store ([1d5793a](https://github.com/MTES-MCT/camino-ui/commit/1d5793a)) +* teste en cours ([663505a](https://github.com/MTES-MCT/camino-ui/commit/663505a)) +* teste partiellement utilisateurs ([de3f943](https://github.com/MTES-MCT/camino-ui/commit/de3f943)) +* teste titre,utilisateurs,metas,titre-activites,utilisateur ([02047c8](https://github.com/MTES-MCT/camino-ui/commit/02047c8)) +* teste user,index ([62a92b2](https://github.com/MTES-MCT/camino-ui/commit/62a92b2)) +* update metas ([1d0f707](https://github.com/MTES-MCT/camino-ui/commit/1d0f707)) + + + +## [0.17.0](https://github.com/MTES-MCT/camino-ui/compare/v0.16.0...v0.17.0) (2019-05-07) + + +### Bug Fixes + +* affiche le type de titre lors de la suppression d'une étape ([64676ae](https://github.com/MTES-MCT/camino-ui/commit/64676ae)) +* **édition:** corrige des erreurs dans le formulaire d'ajout d'étapes ([024d036](https://github.com/MTES-MCT/camino-ui/commit/024d036)) +* **édition:** limite les types de titre au domaine selectionné ([816d170](https://github.com/MTES-MCT/camino-ui/commit/816d170)) + + +### Build System + +* met à jour les dépendances ([c6c63d0](https://github.com/MTES-MCT/camino-ui/commit/c6c63d0)) +* met à jour les dépendances ([b5947e3](https://github.com/MTES-MCT/camino-ui/commit/b5947e3)) + + +### Features + +* **carte:** utilise ctrl + click pour zoomer (ou 2 doigts sur support tactile) ([3901ee4](https://github.com/MTES-MCT/camino-ui/commit/3901ee4)) +* **design:** agrandit la carte ([e3cb612](https://github.com/MTES-MCT/camino-ui/commit/e3cb612)) +* ajoute un nouveau titre ([038134b](https://github.com/MTES-MCT/camino-ui/commit/038134b)) + + +### Tests + +* **store:** teste utilisateur et substances ([c8f96c9](https://github.com/MTES-MCT/camino-ui/commit/c8f96c9)) + + + +# [0.16.0](https://github.com/MTES-MCT/camino-ui/compare/v0.15.0...v0.16.0) (2019-04-30) + + +### Bug Fixes + +* converti les évènements click sur les lignes des tableaux en liens ([2bb312c](https://github.com/MTES-MCT/camino-ui/commit/2bb312c)) +* créé une copie du titre avant de le modifier ([1094287](https://github.com/MTES-MCT/camino-ui/commit/1094287)) +* édite une démarche ([df14ed4](https://github.com/MTES-MCT/camino-ui/commit/df14ed4)) +* supprime un filet inutile ([d424d29](https://github.com/MTES-MCT/camino-ui/commit/d424d29)) +* **csv:** exporte le csv si les titres n'ont pas de références ([78f47c4](https://github.com/MTES-MCT/camino-ui/commit/78f47c4)) + + +### Features + +* **activités:** autorise un utilisateur admin à modifier une activité ([ba48d03](https://github.com/MTES-MCT/camino-ui/commit/ba48d03)) +* ajoute une nouvelle démarche ([0260a20](https://github.com/MTES-MCT/camino-ui/commit/0260a20)) +* édite et supprime un titre ([edcdacd](https://github.com/MTES-MCT/camino-ui/commit/edcdacd)) +* édite les démarches ([f21b938](https://github.com/MTES-MCT/camino-ui/commit/f21b938)) +* supprime une démarche ([210f951](https://github.com/MTES-MCT/camino-ui/commit/210f951)) +* supprime une étape ([93a5fbf](https://github.com/MTES-MCT/camino-ui/commit/93a5fbf)) + + + +# [0.15.0](https://github.com/MTES-MCT/camino-ui/compare/v0.14.0...v0.15.0) (2019-04-17) + + +### Bug Fixes + +* **cgu:** corrige la mise en page ([f5aae66](https://github.com/MTES-MCT/camino-ui/commit/f5aae66)) +* supprime un log ([d432516](https://github.com/MTES-MCT/camino-ui/commit/d432516)) +* **filtres:** supprime le bouton inverse ([e2080c7](https://github.com/MTES-MCT/camino-ui/commit/e2080c7)) +* **url:** charge les paramètre de filtres lorsqu'on revient sur la page liste ([8d4bb35](https://github.com/MTES-MCT/camino-ui/commit/8d4bb35)) +* affiche 'établissement' au singulier si il n'y en a qu'un ([17717ce](https://github.com/MTES-MCT/camino-ui/commit/17717ce)) +* change la structure des activités de type checkbox en tableau ([bbbf70b](https://github.com/MTES-MCT/camino-ui/commit/bbbf70b)) +* évite de scroller en haut de page lorsque les paramètres d'url changent ([a553914](https://github.com/MTES-MCT/camino-ui/commit/a553914)) +* gère l'historique des urls ([32cfd34](https://github.com/MTES-MCT/camino-ui/commit/32cfd34)) +* met à jour le contenu de la page si l'url change (bouton back) ([df7bbf3](https://github.com/MTES-MCT/camino-ui/commit/df7bbf3)) +* n'affiche l'accordéon que si une entreprise contient des informations ([a16f120](https://github.com/MTES-MCT/camino-ui/commit/a16f120)) +* retourne des ids sur les éléments lié lors de la mise à jour d'étapes ([63d8e8e](https://github.com/MTES-MCT/camino-ui/commit/63d8e8e)) +* **sentry:** change la config sentry pour être compatible avec la v.5 ([48e0743](https://github.com/MTES-MCT/camino-ui/commit/48e0743)) +* **sentry:** config sentry ([e7becd8](https://github.com/MTES-MCT/camino-ui/commit/e7becd8)) +* **sentry:** désactive sentry qui plante tout ([e8e94fd](https://github.com/MTES-MCT/camino-ui/commit/e8e94fd)) +* met en page ([5fe4eaf](https://github.com/MTES-MCT/camino-ui/commit/5fe4eaf)) + + +### Features + +* ajoute une nouvelle étape ([2859a6f](https://github.com/MTES-MCT/camino-ui/commit/2859a6f)) +* édite l'emprise territoriale d'une étape ([208149c](https://github.com/MTES-MCT/camino-ui/commit/208149c)) +* injecte les paramètres de filtre dans l'url ([92aec76](https://github.com/MTES-MCT/camino-ui/commit/92aec76)) +* met à jour une étape ([f02c0dc](https://github.com/MTES-MCT/camino-ui/commit/f02c0dc)) +* mise à jour des CGU et mentions légales ([cab8881](https://github.com/MTES-MCT/camino-ui/commit/cab8881)) +* **a-propos:** ajout de Florent et d'Adrien ([b085617](https://github.com/MTES-MCT/camino-ui/commit/b085617)) +* **activités:** affiche les activités à traiter dans la liste des titres ([a95e0e1](https://github.com/MTES-MCT/camino-ui/commit/a95e0e1)) +* **activités:** limite l'édition des activités à certains rôles ([ea66c35](https://github.com/MTES-MCT/camino-ui/commit/ea66c35)) +* **entreprises:** affiche la liste des établissements dans l'encart entreprises ([b35e195](https://github.com/MTES-MCT/camino-ui/commit/b35e195)) +* **titre:** affiche les administrations ([79b4e3a](https://github.com/MTES-MCT/camino-ui/commit/79b4e3a)) + + + +# [0.14.0](https://github.com/MTES-MCT/camino-ui/compare/v0.13.0...v0.14.0) (2019-03-22) + + +### Bug Fixes + +* **activités:** affiche la liste des travaux ([c4de22a](https://github.com/MTES-MCT/camino-ui/commit/c4de22a)) +* **build:** fonctionne avec les anciens navigateurs ([a34b2ce](https://github.com/MTES-MCT/camino-ui/commit/a34b2ce)) +* corrige une typeError sur les anciens navigateurs ([5dd872e](https://github.com/MTES-MCT/camino-ui/commit/5dd872e)) +* prend en compte les établissements d'une entreprise sur une requête utilisateur ([d5c4c18](https://github.com/MTES-MCT/camino-ui/commit/d5c4c18)) +* **activités:** classe les années par ordre desc ([c7b3a2d](https://github.com/MTES-MCT/camino-ui/commit/c7b3a2d)) +* **activités:** ouverture de la popup sur une activité dont le statut est absent ([289be48](https://github.com/MTES-MCT/camino-ui/commit/289be48)) +* **activités:** prend en compte les champs optionels ([2049178](https://github.com/MTES-MCT/camino-ui/commit/2049178)) +* **compat:** compatibilité avec iOs 9 ([1445e4e](https://github.com/MTES-MCT/camino-ui/commit/1445e4e)) + + +### Features + +* **activités:** affiche la date de modification si elle existe ([1d8f616](https://github.com/MTES-MCT/camino-ui/commit/1d8f616)) +* **activités:** affiche le formulaire d'édition d'activité ([1b685dc](https://github.com/MTES-MCT/camino-ui/commit/1b685dc)) +* **activités:** affiche les activités dans un onglet ([39480a0](https://github.com/MTES-MCT/camino-ui/commit/39480a0)) +* **activités:** affiche une pastille avec le nombre d'erreurs dans l'onglet ([af954a8](https://github.com/MTES-MCT/camino-ui/commit/af954a8)) +* **activités:** amélioration du design ([c9bc98b](https://github.com/MTES-MCT/camino-ui/commit/c9bc98b)) +* **activités:** enregistre une activité après modification ([4ed603c](https://github.com/MTES-MCT/camino-ui/commit/4ed603c)) +* **activités:** n'affiche un élément archivé que sur les activités concernées ([cd35d56](https://github.com/MTES-MCT/camino-ui/commit/cd35d56)) +* **api:** prend en compte les établissements d'une entreprise ([923f342](https://github.com/MTES-MCT/camino-ui/commit/923f342)) +* **api:** supprime le champs raisonSociale d'une entreprise ([fb8887f](https://github.com/MTES-MCT/camino-ui/commit/fb8887f)) +* **entreprises:** affiche le bloc répertoire ([73e2e79](https://github.com/MTES-MCT/camino-ui/commit/73e2e79)) +* met à jour le schema graphql suivant les évolution de l'API ([fb02f9e](https://github.com/MTES-MCT/camino-ui/commit/fb02f9e)) + + + +# [0.13.0](https://github.com/MTES-MCT/camino-ui/compare/v0.12.0...v0.13.0) (2019-02-28) + + +### Bug Fixes + +* n'affiche le bouton télécharger que si les titres sont chargés ([198e294](https://github.com/MTES-MCT/camino-ui/commit/198e294)) +* remplace l'intitulé engagement par engagement financier ([f93aee8](https://github.com/MTES-MCT/camino-ui/commit/f93aee8)) + + +### Features + +* affiche l'engagement financier sur la page d'un titre ([4c624bd](https://github.com/MTES-MCT/camino-ui/commit/4c624bd)) +* ajoute l'engagement financier dans l'export csv ([505e204](https://github.com/MTES-MCT/camino-ui/commit/505e204)) +* améliore l'ergonomie du formulaire d'édition d'étape ([b1ec692](https://github.com/MTES-MCT/camino-ui/commit/b1ec692)) +* formate l'export csv de la liste des titres ([9d430ca](https://github.com/MTES-MCT/camino-ui/commit/9d430ca)) +* formatte la valeur de l'engagement financier ([ae7965a](https://github.com/MTES-MCT/camino-ui/commit/ae7965a)) +* télécharge la liste des titres en csv ([a5474ea](https://github.com/MTES-MCT/camino-ui/commit/a5474ea)) + + + +<a name="0.11.0"></a> +# [0.11.0](https://github.com/MTES-MCT/camino-ui/compare/v0.10.0...v0.11.0) (2019-02-13) + + +### Features + +* filtre la liste de titres par territoires ([c3ab3d8](https://github.com/MTES-MCT/camino-ui/commit/c3ab3d8)) + + + +<a name="0.10.0"></a> +# [0.10.0](https://github.com/MTES-MCT/camino-ui/compare/v0.9.0...v0.10.0) (2019-02-11) + + +### Bug Fixes + +* corrige une erreur si le titre n'a pas de communes ([ea296cd](https://github.com/MTES-MCT/camino-ui/commit/ea296cd)) +* les metas ne s'ffichent pas dans les filtres ([75fc117](https://github.com/MTES-MCT/camino-ui/commit/75fc117)) + + +### Features + +* affiche les communes sur une page du titre ([6f4deaf](https://github.com/MTES-MCT/camino-ui/commit/6f4deaf)) +* renomme communes en territoires ([baebcc5](https://github.com/MTES-MCT/camino-ui/commit/baebcc5)) +* supprime le tri des communes par ordre alphabétique (fait par l'API) ([ad04b60](https://github.com/MTES-MCT/camino-ui/commit/ad04b60)) + + + +<a name="0.9.0"></a> +# [0.9.0](https://github.com/MTES-MCT/camino-ui/compare/v0.8.0...v0.9.0) (2019-02-04) + + +### Bug Fixes + +* les mots amodiataires et titulaires s'affichent même si le champs est vide ([fc665a8](https://github.com/MTES-MCT/camino-ui/commit/fc665a8)) +* **rapports:** typerror sur la page titre si aucun utilisateur est connecté ([2ab9a2c](https://github.com/MTES-MCT/camino-ui/commit/2ab9a2c)) +* erreur lors de la mise à jour d'un statut d'étape ([de93d8b](https://github.com/MTES-MCT/camino-ui/commit/de93d8b)) +* lorsqu'un utilisateur supprime son compte, il n'est pas dé-loggué ([a9565b4](https://github.com/MTES-MCT/camino-ui/commit/a9565b4)) + + +### Features + +* **rapports:** donne la permission d'éditer un rapport à l'amodiataire si il existe ([6454837](https://github.com/MTES-MCT/camino-ui/commit/6454837)) +* affiche les amodiataires dans l'entête du titre ([a8fa4b4](https://github.com/MTES-MCT/camino-ui/commit/a8fa4b4)) +* mise à jour du type de l'étape ([d6057a0](https://github.com/MTES-MCT/camino-ui/commit/d6057a0)) +* modifie le statut d'une étape ([56ccb6d](https://github.com/MTES-MCT/camino-ui/commit/56ccb6d)) +* récupère le token lors de l'identification d'un utilisateur déjà loggué ([6a0268c](https://github.com/MTES-MCT/camino-ui/commit/6a0268c)) + + + +<a name="0.8.0"></a> +# [0.8.0](https://github.com/MTES-MCT/camino-ui/compare/v0.7.0...v0.8.0) (2019-01-18) + + +### Bug Fixes + +* **rapports:** affiche l'alerte quand un champs vut 0 ([c1266f4](https://github.com/MTES-MCT/camino-ui/commit/c1266f4)) +* **rapports:** erreur si lors de la création de rapport ([c835242](https://github.com/MTES-MCT/camino-ui/commit/c835242)) +* **rapports:** modifications graphiques sur le formulaire ([9a869bf](https://github.com/MTES-MCT/camino-ui/commit/9a869bf)) +* **rapports:** n'affiche pas l'or net dans le récapitulatif ([9c19db2](https://github.com/MTES-MCT/camino-ui/commit/9c19db2)) + + +### Features + +* ajoute DEAL dans le placeholder du champs de filtre references ([07aa359](https://github.com/MTES-MCT/camino-ui/commit/07aa359)) +* filtre la liste de titres par référence métier ([47b7d81](https://github.com/MTES-MCT/camino-ui/commit/47b7d81)) +* **rapports:** ajoute un champs or net pour la déclaration du 4ème trimestre ([3403d65](https://github.com/MTES-MCT/camino-ui/commit/3403d65)) +* **rapports:** permet de prévisualiser et d'enregistrer avant de valider ([871c957](https://github.com/MTES-MCT/camino-ui/commit/871c957)) + + +### Reverts + +* **rapports:** message de confirmation différent selon que l'on enregistre ou valide ([8714355](https://github.com/MTES-MCT/camino-ui/commit/8714355)) + + + +<a name="0.7.0"></a> +# [0.7.0](https://github.com/MTES-MCT/camino-ui/compare/v0.6.0...v0.7.0) (2019-01-11) + + +### Bug Fixes + +* **carte:** erreur lors du changement de fond de carte sur la page titre ([7cc8c60](https://github.com/MTES-MCT/camino-ui/commit/7cc8c60)) +* **csp:** erreur dans la console de Firefox ([d0fe448](https://github.com/MTES-MCT/camino-ui/commit/d0fe448)) +* **csp:** supprime child-src ([8468aea](https://github.com/MTES-MCT/camino-ui/commit/8468aea)) +* **filtres:** met le focus sur le bouton de validation lorsqu'on valide au clavier ([5684c2d](https://github.com/MTES-MCT/camino-ui/commit/5684c2d)) +* **menu:** le nom de l'entreprise ne s'affiche pas si l'utilisateur est déja loggué ([59622fa](https://github.com/MTES-MCT/camino-ui/commit/59622fa)) +* ajoute sentry.io dans la csp ([eb0dc73](https://github.com/MTES-MCT/camino-ui/commit/eb0dc73)) + + +### Features + +* met à jour le titre et la description ([7dd0eea](https://github.com/MTES-MCT/camino-ui/commit/7dd0eea)) +* renseigne la description de Camino qui apparait si js est désactivé (pe: google) ([7b232c1](https://github.com/MTES-MCT/camino-ui/commit/7b232c1)) +* **menu:** affiche le nom de l'entreprise à côté du nom de l'utilisateur ([0c2e960](https://github.com/MTES-MCT/camino-ui/commit/0c2e960)) +* **utilisateur:** affiche le numéro de siren à côté du nom de l'entreprise ([be83083](https://github.com/MTES-MCT/camino-ui/commit/be83083)) +* **utilisateurs:** affiche le nom de l'entreprise dans la liste ([788b995](https://github.com/MTES-MCT/camino-ui/commit/788b995)) +* envoie un email avant de créer un compte ([3b0381f](https://github.com/MTES-MCT/camino-ui/commit/3b0381f)) + + + +<a name="0.6.0"></a> +# [0.6.0](https://github.com/MTES-MCT/camino-ui/compare/v0.5.0...v0.6.0) (2019-01-09) + + +### Bug Fixes + +* ajoute un espace avant les : ([052586f](https://github.com/MTES-MCT/camino-ui/commit/052586f)) +* bug ff 52: supprime code incompatible ([41f05ea](https://github.com/MTES-MCT/camino-ui/commit/41f05ea)) +* bug ff 52: supprime la csp ([e3dcf6b](https://github.com/MTES-MCT/camino-ui/commit/e3dcf6b)) +* bug ff52: ajoute une csp child-policy ([c8c0e8b](https://github.com/MTES-MCT/camino-ui/commit/c8c0e8b)) +* compatibilité firefox 52 ([268a442](https://github.com/MTES-MCT/camino-ui/commit/268a442)) +* deux fragments GraphQl portent le même nom: titre ([e089140](https://github.com/MTES-MCT/camino-ui/commit/e089140)) +* formatage ([c7d3d93](https://github.com/MTES-MCT/camino-ui/commit/c7d3d93)) +* modifie la config browslerslist pour être compatible avec firefox 52 ([8d226a6](https://github.com/MTES-MCT/camino-ui/commit/8d226a6)) +* orthographe ([65c1a53](https://github.com/MTES-MCT/camino-ui/commit/65c1a53)) +* typo ([05de287](https://github.com/MTES-MCT/camino-ui/commit/05de287)) + + +### Features + +* après l'init du mot de passe, redirige vers la home et identifie l'utilisateur ([7af5929](https://github.com/MTES-MCT/camino-ui/commit/7af5929)) +* **footer:** affiche les liens vers mineralinfo et minergies ([264373f](https://github.com/MTES-MCT/camino-ui/commit/264373f)) +* **titres:** affiche le mot 'résultats' devant le nombre de titres ([fd02715](https://github.com/MTES-MCT/camino-ui/commit/fd02715)) + + +### Performance Improvements + +* active vue-cli modern mode ([a82f175](https://github.com/MTES-MCT/camino-ui/commit/a82f175)) + + + +<a name="0.5.0"></a> +# [0.5.0](https://github.com/MTES-MCT/camino-ui/compare/v0.4.1...v0.5.0) (2018-12-14) + + +### Bug Fixes + +* agrandi l'interlignage dans les pills ([20d5894](https://github.com/MTES-MCT/camino-ui/commit/20d5894)) +* diminue la taille du texte sur la vue liste ([ce95ba1](https://github.com/MTES-MCT/camino-ui/commit/ce95ba1)) +* hauteur du bouton connexion et du loader ([e5c03d2](https://github.com/MTES-MCT/camino-ui/commit/e5c03d2)) +* indique la langue à la page dans le document html ([f51f311](https://github.com/MTES-MCT/camino-ui/commit/f51f311)) +* retour à la ligne dans les pills ([d1de30a](https://github.com/MTES-MCT/camino-ui/commit/d1de30a)) +* **header:** logo trop large au format tablette ([1eec463](https://github.com/MTES-MCT/camino-ui/commit/1eec463)) +* **loader:** change la couleur du loader qui n'est pas assez visible en blanc ([06a529a](https://github.com/MTES-MCT/camino-ui/commit/06a529a)) + + +### Features + +* affiche le nom du titulaire dans la liste de titres ([34a757a](https://github.com/MTES-MCT/camino-ui/commit/34a757a)) +* affiche un loader lors des reuietes à l'API ([f33c081](https://github.com/MTES-MCT/camino-ui/commit/f33c081)) +* affiche une information de taille minimum sous les champs de mot de passe ([11ab0dc](https://github.com/MTES-MCT/camino-ui/commit/11ab0dc)) +* génère l'id utilisateur côté serveur ([e53ac10](https://github.com/MTES-MCT/camino-ui/commit/e53ac10)) +* **filtres:** ajoute un bouton de validation sur les filtres ([34ba2af](https://github.com/MTES-MCT/camino-ui/commit/34ba2af)) +* **filtres:** sépare les mots par un espace au lieu d'une virgule ([bf1a48f](https://github.com/MTES-MCT/camino-ui/commit/bf1a48f)) +* **header:** remplace l'icone de connexion par du texte ([79f181a](https://github.com/MTES-MCT/camino-ui/commit/79f181a)) +* remplace l'icone de la vue liste ([0e651ac](https://github.com/MTES-MCT/camino-ui/commit/0e651ac)) + + + +<a name="0.4.1"></a> +## [0.4.1](https://github.com/MTES-MCT/camino-ui/compare/v0.4.0...v0.4.1) (2018-12-12) + + +### Reverts + +* supprime webpack_hash qui n'existe pas dans le bundle de prod ([1e89fad](https://github.com/MTES-MCT/camino-ui/commit/1e89fad)) + + + +<a name="0.4.0"></a> +# [0.4.0](https://github.com/MTES-MCT/camino-ui/compare/v0.3.0...v0.4.0) (2018-12-12) + + +### Bug Fixes + +* **auth:** le token n'est pas effacé quand l'utilisateur de déconnecte ([9096905](https://github.com/MTES-MCT/camino-ui/commit/9096905)) +* **filtres:** ajoute une majuscule à la première lettre des noms des filtres ([f1e25cc](https://github.com/MTES-MCT/camino-ui/commit/f1e25cc)) +* **footer:** supprime la marge en bas de page ([085742f](https://github.com/MTES-MCT/camino-ui/commit/085742f)) + + +### Features + +* ajoute le hash de webpack au numéro de release ([302210c](https://github.com/MTES-MCT/camino-ui/commit/302210c)) + + + +<a name="0.3.0"></a> +# [0.3.0](https://github.com/MTES-MCT/camino-ui/compare/v0.2.1...v0.3.0) (2018-12-11) + + +### Features + +* **footer:** ajoute un lien vers les releases github ([2222446](https://github.com/MTES-MCT/camino-ui/commit/2222446)) +* filtre les titres par entreprises ([9fa9b5d](https://github.com/MTES-MCT/camino-ui/commit/9fa9b5d)) + + + +<a name="0.2.1"></a> + +## [0.2.1](https://github.com/MTES-MCT/camino-ui/compare/v0.2.0...v0.2.1) (2018-12-10) + +<a name="0.2.0"></a> + +## [0.2.0](https://github.com/MTES-MCT/camino-ui/compare/v0.1.0...v0.2.0) (2018-12-10) + +### Features + +- **footer:** affiche le numéro de version de l'ui et de l'Api ([be2d97b](https://github.com/MTES-MCT/camino-ui/commit/be2d97b)) + +<a name="0.1.0"></a> + +## 0.1.0 (2018-12-10) + +- feat: 🎸 expose le numero de version dans l'application ([cd16034](https://github.com/MTES-MCT/camino-ui/commit/cd16034)) +- chore: 🤖 supprime le changelog ([5c6ec13](https://github.com/MTES-MCT/camino-ui/commit/5c6ec13)) diff --git a/packages/ui/README.md b/packages/ui/README.md new file mode 100644 index 0000000000000000000000000000000000000000..4ee1ccfab885d50fef5b0fd8ab665ef40e3d70a2 --- /dev/null +++ b/packages/ui/README.md @@ -0,0 +1,25 @@ +# Camino UI + +> Interface web de [Camino](https://camino.beta.gouv.fr), le cadastre minier numérique. + + + +--- + +## Technologies + +- [Vue.js](https://v3.vuejs.org/) +- [Vuex](https://vuex.vuejs.org/) +- [Leaflet.js](https://leafletjs.com/) +- [graphql-react](https://github.com/jaydenseric/graphql-react) +- [vite](https://vitejs.dev/) +- [Babel](https://babeljs.io/) +- [Postcss](https://postcss.org/) +- [Postcss-preset-env](https://preset-env.cssdb.org/) +- [Eslint](https://eslint.org/) +- [Prettier](https://prettier.io/) +- [Standardjs](https://standardjs.com/) +- [Stylelint](https://stylelint.io/) +- [Docker](https://www.docker.com/products/docker-engine) +- [Standard version](https://github.com/conventional-changelog/standard-version) +- [Commitizen](http://commitizen.github.io/cz-cli/) diff --git a/packages/ui/_sources/logo-camino.afdesign b/packages/ui/_sources/logo-camino.afdesign new file mode 100644 index 0000000000000000000000000000000000000000..80f3156d07cf8460f9d5f9b42df4425e1603ddca Binary files /dev/null and b/packages/ui/_sources/logo-camino.afdesign differ diff --git a/packages/ui/babel.config.js b/packages/ui/babel.config.js new file mode 100644 index 0000000000000000000000000000000000000000..63e6a868abfc2dc4821299fdec94a489c1c9ad27 --- /dev/null +++ b/packages/ui/babel.config.js @@ -0,0 +1,12 @@ +module.exports = { + plugins: ['graphql-tag'], + env: { + test: { + plugins: ['babel-plugin-transform-vite-meta-env'], + sourceType: 'module', + presets: [ + ['@babel/preset-env', { targets: { node: 'current', esmodules: true } }] + ] + } + } +} diff --git a/packages/ui/camino-screenshot.png b/packages/ui/camino-screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..0d6c39b583389512b489b5c1758ac3150489db56 Binary files /dev/null and b/packages/ui/camino-screenshot.png differ diff --git a/packages/ui/index.js b/packages/ui/index.js new file mode 100644 index 0000000000000000000000000000000000000000..9fef6e726643018b276984e51fb6683dda4e5fb6 --- /dev/null +++ b/packages/ui/index.js @@ -0,0 +1,94 @@ +/** + * Camino API, le cadastre minier numérique ouvert + * + * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License along with this program. If not, see <https://www.gnu.org/licenses/>. + */ + +require('dotenv').config() +const path = require('path') +const express = require('express') +const history = require('connect-history-api-fallback') +const compression = require('compression') +const { createProxyMiddleware } = require('http-proxy-middleware') +const { version } = require('./package.json') + +const app = express() +const port = process.env.UI_PORT +const apiUrl = process.env.API_URL +const apiMatomoUrl = process.env.API_MATOMO_URL + +const typeformUrl = '*.typeform.com' + +const staticFileMiddleware = express.static(path.join(__dirname, 'dist'), { + setHeaders: (res, path, stat) => { + res.set({ + 'Content-Security-Policy': `default-src 'none'; script-src 'self' ${apiMatomoUrl} ${typeformUrl}; style-src 'self' ${typeformUrl}; object-src 'self'; frame-src 'self' ${typeformUrl}; connect-src 'self' ${apiUrl} sentry.io ${apiMatomoUrl}; img-src data: 'self' a.tile.openstreetmap.org b.tile.openstreetmap.org c.tile.openstreetmap.org a.tile.openstreetmap.fr b.tile.openstreetmap.fr c.tile.openstreetmap.fr geoservices.brgm.fr wxs.ign.fr datacarto.geoguyane.fr; base-uri 'none'; form-action 'self'; frame-ancestors 'none';`, + 'X-Frame-Options': 'DENY', + 'X-Content-Type-Options': 'nosniff', + 'X-XSS-Protection': '1; mode=block', + 'Access-Control-Allow-Origin': '*', + 'Referrer-Policy': 'same-origin' + }) + } +}) + +app.use( + '/apiUrl', + createProxyMiddleware({ + target: apiUrl, + changeOrigin: true, + pathRewrite: { '^/apiUrl': '' } + }) +) + +app.use( + '/televersement', + createProxyMiddleware({ + target: apiUrl, + changeOrigin: true + }) +) + +app.use('/sentryOptions', (req, res) => + res.json({ + dsn: process.env.API_SENTRY_URL, + environment: process.env.ENV + }) +) +app.use('/matomoOptions', (req, res) => + res.json({ + host: apiMatomoUrl, + siteId: process.env.API_MATOMO_ID + }) +) + +const sendVersion = context => { + const headers = { + 'Content-Type': 'text/event-stream', + Connection: 'keep-alive', + 'Cache-Control': 'no-cache' + } + + context.writeHead(200, headers) + context.write(`id: ${Date.now()}\n`) + context.write(`event: version\n`) + context.write(`data: ${version}\n\n`) +} + +app.get('/stream/version', async (req, res) => { + sendVersion(res) +}) + +app.use(compression()) +app.use('/', staticFileMiddleware) +app.use('/', history()) +// https://stackoverflow.com/a/52327421/2112538 +app.use('/', staticFileMiddleware) + +app.listen(port, () => { + console.info(`Server: ${port}`) +}) diff --git a/packages/ui/jest.config.js b/packages/ui/jest.config.js new file mode 100644 index 0000000000000000000000000000000000000000..95a29452490d098e57abcb626029e91d1ca3e070 --- /dev/null +++ b/packages/ui/jest.config.js @@ -0,0 +1,185 @@ +// For a detailed explanation regarding each configuration property, visit: +// https://jestjs.io/docs/en/configuration.html + +module.exports = { + // All imported modules in your tests should be mocked automatically + automock: false, + + // Stop running tests after the first failure + // bail: false, + + // Respect "browser" field in package.json when resolving modules + // browser: false, + + // The directory where Jest should store its cached dependency information + // cacheDirectory: "/var/folders/k1/qn_ccxjn65lgnjx5d1xh31dm0000gn/T/jest_dx", + + // Automatically clear mock calls and instances between every test + clearMocks: true, + + // Indicates whether the coverage information should be collected while executing the test + collectCoverage: true, + + // An array of glob patterns indicating a set of files for which coverage information should be collected + // collectCoverageFrom: null, + + // The directory where Jest should output its coverage files + // coverageDirectory: '<rootDir>/coverage/', + + // An array of regexp pattern strings used to skip coverage collection + coveragePathIgnorePatterns: ['dist/', 'jest.config.js'], + + // A list of reporter names that Jest uses when writing coverage reports + // coverageReporters: [ + // "json", + // "text", + // "lcov", + // "clover" + // ], + + // An object that configures minimum threshold enforcement for coverage results + // coverageThreshold: null, + + // Make calling deprecated APIs throw helpful error messages + // errorOnDeprecated: false, + + // Force coverage collection from ignored files usin a array of glob patterns + // forceCoverageMatch: [], + + // A path to a module which exports an async function that is triggered once before all test suites + // globalSetup: null, + + // A path to a module which exports an async function that is triggered once after all test suites + // globalTeardown: null, + + // A set of global variables that need to be available in all test environments + globals: { npmVersion: true, window: {} }, + + // An array of directory names to be searched recursively up from the requiring module's location + // moduleDirectories: [ + // "node_modules" + // ], + + // An array of file extensions your modules use + moduleFileExtensions: ['js', 'jsx', 'json', 'vue', 'ts', 'tsx'], + + // A map from regular expressions to module names that allow to stub out resources with a single module + moduleNameMapper: { + '\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': + '<rootDir>/src/__mocks__/file-mock.js', + // '^vue$': 'vue/dist/vue.runtime.min.js', + // '^.+\\.(css)$': '<rootDir>/src/__mocks__/css.js', + '@/(.*)$': '<rootDir>/src/$1' + }, + + // An array of regexp pattern strings, matched against all module paths before considered 'visible' to the module loader + // modulePathIgnorePatterns: [], + + // Activates notifications for test results + // notify: false, + + // An enum that specifies notification mode. Requires { notify: true } + // notifyMode: "always", + + // A preset that is used as a base for Jest's configuration + // preset: null, + preset: 'ts-jest', + + // Run tests from one or more projects + // projects: null, + + // Use this configuration option to add custom reporters to Jest + // reporters: undefined, + + // Automatically reset mock state between every test + // resetMocks: false, + + // Reset the module registry before running each individual test + // resetModules: false, + + // A path to a custom resolver + // resolver: null, + + // Automatically restore mock state between every test + // restoreMocks: false, + + // The root directory that Jest should scan for tests and modules within + // rootDir: null, + + // A list of paths to directories that Jest should use to search for files in + // roots: ['<rootDir>/src/'], + + // Allows you to use a custom runner instead of Jest's default test runner + // runner: "jest-runner", + + // The paths to modules that run some code to configure or set up the testing environment before each test + setupFiles: ['./src/__mocks__/setupJest.js'], + + // The path to a module that runs some code to configure or set up the testing framework before each test + // setupTestFrameworkScriptFile: null, + + // A list of paths to snapshot serializer modules Jest should use for snapshot testing + snapshotSerializers: ['jest-serializer-vue'], + + // The test environment that will be used for testing + testEnvironment: 'jsdom', + + // Options that will be passed to the testEnvironment + // testEnvironmentOptions: {}, + + // Adds a location field to test results + // testLocationInResults: false, + + // The glob patterns Jest uses to detect test files + testMatch: ['<rootDir>/src/**/?(*.)(spec|test).{js,jsx,ts,tsx}'], + // testMatch: [ + // "**/__tests__/**/*.js?(x)", + // "**/?(*.)+(spec|test).js?(x)" + // ], + // testMatch: [ + // '**/tests/unit/**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)' + // ], + + // An array of regexp pattern strings that are matched against all test paths, matched tests are skipped + testPathIgnorePatterns: ['/node_modules/'], + + // The regexp pattern Jest uses to detect test files + // testRegex: "(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$", + + // This option allows the use of a custom results processor + // testResultsProcessor: null, + + // This option allows use of a custom test runner + // testRunner: "jasmine2", + + // This option sets the URL for the jsdom environment. It is reflected in properties such as location.href + testURL: 'http://localhost/', + + // Setting this value to "fake" allows the use of fake timers for functions such as "setTimeout" + // timers: "real", + + // A map from regular expressions to paths to transformers + transform: { + '^.+\\.vue$': '@vue/vue3-jest', + '^.+\\.js?$': 'babel-jest', + '^.+\\.tsx?$': 'ts-jest', + '.+\\.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)$': + 'jest-transform-stub' + }, + + // An array of regexp pattern strings that are matched against all source file paths, matched files will skip transformation + transformIgnorePatterns: ['/node_modules/'], + + // An array of regexp pattern strings that are matched against all modules before the module loader will automatically return a mock for them + // unmockedModulePathPatterns: undefined, + + // Indicates whether each individual test should be reported during the run + // verbose: null, + + // An array of regexp patterns that are matched against all source file paths before re-running tests in watch mode + // watchPathIgnorePatterns: [], + + // Whether to use watchman for file crawling + // watchman: true, + watchPlugins: [] +} diff --git a/packages/ui/manual/docker.md b/packages/ui/manual/docker.md new file mode 100644 index 0000000000000000000000000000000000000000..bb4e316bf00be74d049d419f191dfc8d1568dd2b --- /dev/null +++ b/packages/ui/manual/docker.md @@ -0,0 +1,43 @@ +# Déploiement + +--- + +## Docker + +### Serveur local dans un container docker + +```bash +# démarre l'application dans un conteneur Docker +# avec webpack-dev-server en mode `development` +# accessible à http://localhost:PORT +docker-compose -f ./docker-compose.localhost.yml up --build +``` + +### Tester l'application en local dans un environement de production + +Pré-requis: + +- une installation locale active de https://github.com/jwilder/nginx-proxy +- un certificat ssl auto-signé +- [instructions](https://medium.com/@francoisromain/set-a-local-web-development-environment-with-custom-urls-and-https-3fbe91d2eaf0) + +```bash +# Démarre l'application dans un container Docker +# avec un serveur express.js en mode `production` +# accessible à https://camino.local +docker-compose -f ./docker-compose.local.yml up --build +``` + +### Serveur de production + +Pré-requis: + +- une installation active de https://github.com/jwilder/nginx-proxy +- [instructions](https://medium.com/@francoisromain/host-multiple-websites-with-https-inside-docker-containers-on-a-single-server-18467484ab95) + +```bash +# démarre l'application dans un container Docker +# en mode `production` +# accessible à https://{URL} +docker-compose up --build +``` diff --git a/packages/ui/package.json b/packages/ui/package.json new file mode 100644 index 0000000000000000000000000000000000000000..07b9942dc295912d4200894e991a3157f576089d --- /dev/null +++ b/packages/ui/package.json @@ -0,0 +1,248 @@ +{ + "name": "camino-ui", + "version": "0.34.0", + "description": "Interface web de Camino, le cadastre minier numérique ouvert", + "private": true, + "license": "AGPL-3.0-or-later", + "engines": { + "node": ">=16.12.0", + "npm": ">=7.24.0" + }, + "repository": { + "type": "git", + "url": "https://github.com/MTES-MCT/camino-ui" + }, + "author": { + "name": "François Romain", + "email": "francoisromain@gmail.com", + "url": "https://francoisromain.com" + }, + "scripts": { + "build": "vite build --emptyOutDir", + "dev": "vite", + "dev:update": "npm-check-updates && npm install && npm audit fix", + "start": "node ./index.js", + "test": "cross-env NODE_ENV=test && prettier --check src && eslint --ext .js,.ts,.vue src && jest --verbose && codecov", + "test:watch": "cross-env NODE_ENV=test jest --watch --verbose", + "test:simple": "cross-env NODE_ENV=test jest --verbose", + "lint": "prettier --write src && eslint --fix --ext .js,.ts,.vue src", + "storybook": "start-storybook -p 6006", + "build-storybook": "build-storybook" + }, + "@comment dependencies": { + "eslint": "eslint et eslint-plugin-vue, bloqués à 0.7.x https://github.com/vuejs/eslint-config-standard/issues/10", + "typescript": "bloqué à 4.4.x https://github.com/xjamundx/eslint-plugin-promise/issues/218", + "postcss-plugins": "la mise à jour des plugins suivants génèrent des problèmes de style: postcss-button, postcss-grid-fluid et postcss-typescale", + "graphql-react": "faut configurer Jest pour qu’il puisse interpréter les .mjs" + }, + "dependencies": { + "choices.js": "^10.1.0", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "dotenv": "^16.0.0", + "express": "^4.17.3", + "http-proxy-middleware": "^2.0.4" + }, + "devDependencies": { + "@babel/eslint-parser": "^7.17.0", + "@babel/preset-env": "^7.16.11", + "@juggle/resize-observer": "^3.3.1", + "@mapbox/stylelint-processor-arbitrary-tags": "^0.4.0", + "@rollup/plugin-inject": "^4.0.4", + "@semantic-release/changelog": "^6.0.1", + "@semantic-release/git": "^10.0.1", + "@sentry/browser": "^6.18.2", + "@sentry/integrations": "^6.18.2", + "@storybook/addon-actions": "^6.4.19", + "@storybook/addon-controls": "^6.4.19", + "@storybook/addon-postcss": "^2.0.0", + "@storybook/addon-storyshots": "^6.4.19", + "@storybook/vue3": "^6.4.19", + "@types/jest": "^27.4.1", + "@types/leaflet": "^1.7.9", + "@types/leaflet.markercluster": "^1.4.6", + "@types/webpack-env": "^1.16.3", + "@typescript-eslint/parser": "^5.15.0", + "@uppy/core": "^2.1.6", + "@uppy/tus": "^2.2.0", + "@vitejs/plugin-vue": "^2.2.4", + "@vue/eslint-config-prettier": "^7.0.0", + "@vue/eslint-config-standard": "^6.1.0", + "@vue/test-utils": "^2.0.0-rc.17", + "babel-core": "^7.0.0-bridge.0", + "babel-jest": "^27.5.1", + "babel-loader": "^8.2.3", + "babel-plugin-graphql-tag": "^3.3.0", + "babel-preset-vite": "^1.0.4", + "chalk": "^5.0.1", + "chart.js": "^3.7.1", + "codecov": "^3.8.3", + "commitizen": "^4.2.4", + "core-js": "^3.21.1", + "cross-env": "^7.0.3", + "cross-fetch": "^3.1.5", + "cz-conventional-changelog": "^3.3.0", + "email-validator": "^2.0.4", + "eslint": "^7.32.0", + "eslint-config-prettier": "^8.5.0", + "eslint-config-standard": "^16.0.3", + "eslint-plugin-import": "^2.25.4", + "eslint-plugin-jest": "^26.1.1", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-promise": "^5.2.0", + "eslint-plugin-vue": "^7.19.1", + "file-saver": "^2.0.5", + "graphql": "^16.3.0", + "graphql-react": "^15.0.0", + "graphql-tag": "^2.12.6", + "html-webpack-plugin": "^5.5.0", + "jest": "^27.5.1", + "jest-fetch-mock": "^3.0.3", + "jest-serializer-vue": "^2.0.2", + "jest-transform-stub": "^2.0.0", + "jest-util": "^27.5.1", + "json2csv": "^5.0.7", + "jsondiffpatch": "^0.4.1", + "leaflet": "1.7.1", + "leaflet-fullscreen": "^1.0.2", + "leaflet-gesture-handling": "^1.2.2", + "leaflet-markers-canvas": "^0.2.2", + "leaflet.markercluster": "^1.5.3", + "npm-check-updates": "^12.5.3", + "pixrem": "^5.0.0", + "postcss-button": "^0.3.17", + "postcss-calc": "^8.2.4", + "postcss-color-mod-function": "^3.0.3", + "postcss-grid-fluid": "^0.3.4", + "postcss-grid-system": "^0.5.2", + "postcss-import": "14.0.2", + "postcss-inline-svg": "5.0.0", + "postcss-loader": "^6.2.1", + "postcss-normalize": "^10.0.1", + "postcss-preset-env": "^7.4.2", + "postcss-typescale": "^0.2.3", + "prettier": "^2.6.0", + "rbush": "^3.0.1", + "semantic-release": "^19.0.2", + "snarkdown": "^2.0.0", + "standard-version": "^9.3.2", + "stylelint": "^14.6.0", + "stylelint-config-prettier": "^9.0.3", + "stylelint-config-standard": "^25.0.0", + "ts-jest": "^27.1.3", + "typescript": "^4.6.2", + "vite": "^2.8.6", + "vue": "^3.2.31", + "vue-loader": "^17.0.0", + "vue-meta": "^2.4.0", + "vue-router": "^4.0.14", + "@vue/vue3-jest": "27.0.0-alpha.4", + "vuex": "^4.0.2", + "vuex-router-sync": "^6.0.0-rc.1" + }, + "eslintConfig": { + "root": true, + "env": { + "node": true, + "jest/globals": true + }, + "globals": { + "defineProps": "readonly", + "defineEmits": "readonly" + }, + "extends": [ + "plugin:vue/vue3-recommended", + "standard", + "prettier" + ], + "rules": { + "vue/no-mutating-props": 0, + "vue/valid-v-bind-sync": 0 + }, + "parserOptions": { + "parser": "@typescript-eslint/parser" + }, + "plugins": [ + "jest" + ] + }, + "prettier": { + "semi": false, + "singleQuote": true, + "arrowParens": "avoid", + "proseWrap": "never", + "bracketSpacing": true, + "trailingComma": "none" + }, + "postcss": { + "plugins": { + "postcss-import": {}, + "postcss-normalize": {}, + "postcss-typescale": {}, + "postcss-grid-system": {}, + "postcss-grid-fluid": {}, + "postcss-button": {}, + "postcss-inline-svg": {}, + "postcss-color-mod-function": {}, + "pixrem": { + "html": false + }, + "postcss-preset-env": { + "stage": 0 + }, + "postcss-calc": {} + } + }, + "browserslist": [ + "supports es6-module" + ], + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "stylelint": { + "extends": [ + "stylelint-config-standard", + "stylelint-config-prettier" + ], + "rules": { + "property-no-unknown": [ + true, + { + "ignoreProperties": [ + "typescale", + "gf", + "/button-/" + ] + } + ], + "function-no-unknown": [ + true, + { + "ignoreFunctions": [ + "color-mod", + "alpha" + ] + } + ] + }, + "ignoreFiles": [ + "./dist/**/*", + "src/styles/system/forms.css" + ] + }, + "release": { + "branches": [ + "master" + ], + "plugins": [ + "@semantic-release/commit-analyzer", + "@semantic-release/release-notes-generator", + "@semantic-release/changelog", + "@semantic-release/github", + "@semantic-release/npm", + "@semantic-release/git" + ] + } +} diff --git a/packages/ui/src/__mocks__/file-mock.js b/packages/ui/src/__mocks__/file-mock.js new file mode 100644 index 0000000000000000000000000000000000000000..eb456c5d9b3de7f8e1085bb9f41d7e580d45a198 --- /dev/null +++ b/packages/ui/src/__mocks__/file-mock.js @@ -0,0 +1,3 @@ +// https://jestjs.io/docs/en/webpack + +module.exports = 'test-file-stub' diff --git a/packages/ui/src/__mocks__/setupJest.js b/packages/ui/src/__mocks__/setupJest.js new file mode 100644 index 0000000000000000000000000000000000000000..e26f10d81faf8cc44f4ec337c54cb9f4de579d10 --- /dev/null +++ b/packages/ui/src/__mocks__/setupJest.js @@ -0,0 +1,25 @@ +global.fetch = require('jest-fetch-mock') + +class LocalStorageMock { + constructor() { + this.store = {} + } + + clear() { + this.store = {} + } + + getItem(key) { + return this.store[key] || null + } + + setItem(key, value) { + this.store[key] = String(value) + } + + removeItem(key) { + delete this.store[key] + } +} + +global.localStorage = new LocalStorageMock() diff --git a/packages/ui/src/api/_client.js b/packages/ui/src/api/_client.js new file mode 100644 index 0000000000000000000000000000000000000000..030f636188a24d4353de57d1dc48dbb6fc82fa37 --- /dev/null +++ b/packages/ui/src/api/_client.js @@ -0,0 +1,87 @@ +import { print } from 'graphql/language/printer' +import fetchOptionsGraphQL from 'graphql-react/public/fetchOptionsGraphQL.js' +import fetchGraphQL from 'graphql-react/public/fetchGraphQL.js' +import Cache from 'graphql-react/public/Cache.js' +import Loading from 'graphql-react/public/Loading.js' +import LoadingCacheValue from 'graphql-react/public/LoadingCacheValue.js' + +const apiUrl = '/apiUrl' +const cache = new Cache() +const loading = new Loading() + +const errorThrow = e => { + if ( + e.message === 'aborted' || + e.message === 'Fetch error.' || + e.message === 'Response JSON parse error.' + ) + throw new Error('aborted') + + throw new Error(e.message || e.status) +} + +const graphQLCall = async ( + url, + query, + variables, + cacheKey = query.definitions[0].name.value +) => { + const abortController = new AbortController() + const fetchOptions = fetchOptionsGraphQL({ + query: print(query), + variables + }) + + fetchOptions.signal = abortController.signal + + if (loading.store[cacheKey]) { + loading.store[cacheKey].forEach(a => { + a.abortController.abort() + }) + } + + const req = fetchGraphQL(url, fetchOptions) + + const loadingCacheValue = new LoadingCacheValue( + loading, + cache, + cacheKey, + req, + abortController + ) + + const res = await loadingCacheValue.promise + + if (res.errors?.length) { + res.errors.forEach(e => { + if (e.extensions && e.extensions.client && e.message === 'FETCH_ERROR') + throw new Error('aborted') + + throw new Error(e.message) + }) + } + + const data = res.data + + const keys = Object.keys(data) + const dataContent = keys.length === 1 ? data[keys[0]] : data + + return dataContent +} + +const apiGraphQLFetch = (query, cacheKey) => async variables => { + try { + return await graphQLCall(apiUrl, query, variables, cacheKey) + } catch (e) { + if (e.status === 401 || e.message === 'HTTP 401 status.') { + // la session a été invalidée par un administrateur + // ne sachant pas si il voit des informations confidentielles actuellement, + // il est préférable de rafraichir totalement la page + window.location.reload() + } else { + errorThrow(e) + } + } +} + +export { apiGraphQLFetch, errorThrow } diff --git a/packages/ui/src/api/_client.test.js b/packages/ui/src/api/_client.test.js new file mode 100644 index 0000000000000000000000000000000000000000..e21dd9ce92de4dbf0d4bc634b46050726b6e2301 --- /dev/null +++ b/packages/ui/src/api/_client.test.js @@ -0,0 +1,67 @@ +import gql from 'graphql-tag' + +import { apiGraphQLFetch } from './_client.js' + +jest.mock('./fragments/utilisateur', () => ({ + fragmentUtilisateur: gql` + fragment utilisateur on Utilisateur { + id + email + } + ` +})) + +console.info = jest.fn() +console.error = jest.fn() + +describe('api client', () => { + const { location } = window + + beforeEach(() => { + delete window.location + window.location = { reload: jest.fn() } + process.env.NODE_ENV = 'production' + }) + + afterEach(() => { + window.location = location + }) + + test('une réponse 200 du serveur ne génère pas d’erreur', async () => { + fetch.mockResponseOnce(JSON.stringify({ data: { key: 'value' } }), { + status: 200 + }) + + const res = await apiGraphQLFetch(gql` + query fakeQuery { + toto { + id + } + } + `)() + + expect(res).toEqual('value') + }) + + test('une réponse 404 du serveur génère une erreur', async () => { + fetch.mockResponse(JSON.stringify({ data: {} }), { status: 404 }) + + let error + try { + await apiGraphQLFetch( + gql` + query fakeQuery { + toto { + id + } + } + ` + )() + } catch (e) { + error = e + } + + expect(error.message).toBe('HTTP 404 status.') + expect(window.location.reload).not.toHaveBeenCalled() + }) +}) diff --git a/packages/ui/src/api/_upload.js b/packages/ui/src/api/_upload.js new file mode 100644 index 0000000000000000000000000000000000000000..d686bc5460b3c0ef36fd8de79ba5c762ac721789 --- /dev/null +++ b/packages/ui/src/api/_upload.js @@ -0,0 +1,45 @@ +import Uppy from '@uppy/core' +import Tus from '@uppy/tus' +import { errorThrow } from './_client' + +const CHUNK_SIZE = 1048576 // 1 Mo +const apiUrl = '/apiUrl' + +const uploadCall = async (file, progressCb) => { + const uppy = new Uppy({ + autoProceed: true + }) + + uppy.use(Tus, { + chunkSize: CHUNK_SIZE, + endpoint: `${apiUrl}/televersement`, + onShouldRetry: () => { + return false + }, + onChunkComplete: (_, bytesAccepted, bytesTotal) => { + progressCb((bytesAccepted / bytesTotal) * 100) + } + }) + + uppy.addFile({ + name: file.name, + data: file + }) + + progressCb(0) + + return new Promise((resolve, reject) => { + uppy.on('complete', result => { + const { successful, failed } = result + + if (failed.length || !successful.length) { + reject(errorThrow(new Error('Échec du téléversement'))) + } + + const [{ uploadURL }] = successful + resolve(uploadURL) + }) + }) +} + +export { uploadCall } diff --git a/packages/ui/src/api/administrations.js b/packages/ui/src/api/administrations.js new file mode 100644 index 0000000000000000000000000000000000000000..34cb382f4921e3ddc2cec17b1035ef26a549695e --- /dev/null +++ b/packages/ui/src/api/administrations.js @@ -0,0 +1,215 @@ +import gql from 'graphql-tag' +import { apiGraphQLFetch } from './_client' + +import { fragmentAdministration } from './fragments/administration' +import { fragmentAdministrations } from './fragments/administrations' +import { fragmentAdministrationType } from './fragments/metas' + +const administrationMetas = apiGraphQLFetch( + gql` + query AdministrationMetas { + administrationsTypes { + ...administrationType + } + + regions { + id + nom + } + + departements { + id + nom + } + + activitesTypes { + id + nom + } + } + + ${fragmentAdministrationType} + ` +) + +const administrationPermissionsMetas = apiGraphQLFetch( + gql` + query AdministrationPermissionsMetas { + domaines { + id + nom + titresTypes { + id + type { + id + nom + } + } + } + + statuts { + id + nom + } + + etapesTypes { + id + nom + } + } + ` +) + +const administration = apiGraphQLFetch(gql` + query Administration($id: ID!) { + administration(id: $id) { + ...administration + } + } + + ${fragmentAdministration} +`) + +const administrationsMetas = apiGraphQLFetch( + gql` + query AdministrationsMetas { + administrationsTypes { + id + nom + ordre + } + } + ` +) + +const administrations = apiGraphQLFetch(gql` + query Administrations( + $intervalle: Int + $page: Int + $colonne: String + $ordre: String + $noms: String + $typesIds: [ID] + ) { + administrations( + intervalle: $intervalle + page: $page + colonne: $colonne + ordre: $ordre + noms: $noms + typesIds: $typesIds + ) { + elements { + ...administrations + } + total + } + } + + ${fragmentAdministrations} +`) + +const administrationModifier = apiGraphQLFetch(gql` + mutation AdministrationModifier($administration: InputAdministration!) { + administrationModifier(administration: $administration) { + ...administration + } + } + + ${fragmentAdministration} +`) + +const administrationTitreTypeUpdate = apiGraphQLFetch(gql` + mutation AdministrationTitreTypeModifier( + $administrationTitreType: InputAdministrationTitreType! + ) { + administrationTitreTypeModifier( + administrationTitreType: $administrationTitreType + ) { + ...administration + } + } + + ${fragmentAdministration} +`) + +const administrationActiviteTypeUpdate = apiGraphQLFetch(gql` + mutation AdministrationActiviteTypeModifier( + $administrationActiviteType: InputAdministrationActiviteType! + ) { + administrationActiviteTypeModifier( + administrationActiviteType: $administrationActiviteType + ) { + ...administration + } + } + + ${fragmentAdministration} +`) + +const administrationActiviteTypeEmailUpdate = apiGraphQLFetch(gql` + mutation AdministrationActiviteTypeEmailCreer( + $administrationActiviteTypeEmail: InputAdministrationActiviteTypeEmail! + ) { + administrationActiviteTypeEmailCreer( + administrationActiviteTypeEmail: $administrationActiviteTypeEmail + ) { + id + } + } +`) + +const administrationActiviteTypeEmailDelete = apiGraphQLFetch(gql` + mutation AdministrationActiviteTypeEmailSupprimer( + $administrationActiviteTypeEmail: InputAdministrationActiviteTypeEmail! + ) { + administrationActiviteTypeEmailSupprimer( + administrationActiviteTypeEmail: $administrationActiviteTypeEmail + ) { + id + } + } +`) + +const administrationTitreTypeTitreStatutUpdate = apiGraphQLFetch(gql` + mutation AdministrationTitreTypeTitreStatutModifier( + $administrationTitreTypeTitreStatut: InputAdministrationTitreTypeTitreStatut! + ) { + administrationTitreTypeTitreStatutModifier( + administrationTitreTypeTitreStatut: $administrationTitreTypeTitreStatut + ) { + ...administration + } + } + + ${fragmentAdministration} +`) + +const administrationTitreTypeEtapeTypeUpdate = apiGraphQLFetch(gql` + mutation AdministrationTitreTypeEtapeTypeModifier( + $administrationTitreTypeEtapeType: InputAdministrationTitreTypeEtapeType! + ) { + administrationTitreTypeEtapeTypeModifier( + administrationTitreTypeEtapeType: $administrationTitreTypeEtapeType + ) { + ...administration + } + } + + ${fragmentAdministration} +`) + +export { + administrationMetas, + administration, + administrationsMetas, + administrations, + administrationModifier, + administrationTitreTypeUpdate, + administrationTitreTypeTitreStatutUpdate, + administrationTitreTypeEtapeTypeUpdate, + administrationActiviteTypeUpdate, + administrationActiviteTypeEmailUpdate, + administrationActiviteTypeEmailDelete, + administrationPermissionsMetas +} diff --git a/packages/ui/src/api/documents.js b/packages/ui/src/api/documents.js new file mode 100644 index 0000000000000000000000000000000000000000..37f2af970fbdc527d3578cebd16741609a56af6e --- /dev/null +++ b/packages/ui/src/api/documents.js @@ -0,0 +1,49 @@ +import gql from 'graphql-tag' +import { apiGraphQLFetch } from './_client' +import { fragmentDocument } from './fragments/documents' +import { fragmentDocumentType } from './fragments/metas' + +const documentMetas = apiGraphQLFetch( + gql` + query MetasDocument($repertoire: ID, $typeId: ID) { + documentsTypes(repertoire: $repertoire, typeId: $typeId) { + ...documentType + } + + documentsVisibilites { + id + nom + } + } + + ${fragmentDocumentType} + ` +) + +const documentCreer = apiGraphQLFetch(gql` + mutation DocumentCreer($document: InputDocumentCreation!) { + documentCreer(document: $document) { + ...document + } + } + + ${fragmentDocument} +`) + +const documentModifier = apiGraphQLFetch(gql` + mutation DocumentModifier($document: InputDocumentModification!) { + documentModifier(document: $document) { + ...document + } + } + + ${fragmentDocument} +`) + +const documentSupprimer = apiGraphQLFetch(gql` + mutation DocumentSupprimer($id: ID!) { + documentSupprimer(id: $id) + } +`) + +export { documentMetas, documentCreer, documentModifier, documentSupprimer } diff --git a/packages/ui/src/api/entreprises.js b/packages/ui/src/api/entreprises.js new file mode 100644 index 0000000000000000000000000000000000000000..c80d519623ede4bf59f886fb32b043dba54a9f08 --- /dev/null +++ b/packages/ui/src/api/entreprises.js @@ -0,0 +1,103 @@ +import gql from 'graphql-tag' +import { apiGraphQLFetch } from './_client' + +import { fragmentEntreprises } from './fragments/entreprises' +import { fragmentEntreprise } from './fragments/entreprise' + +const entreprisePermissionsMetas = apiGraphQLFetch( + gql` + query EntreprisePermissionsMetas { + domaines { + id + nom + titresTypes { + id + type { + id + nom + } + } + } + } + ` +) + +const entreprise = apiGraphQLFetch( + gql` + query Entreprise($id: ID!) { + entreprise(id: $id) { + ...entreprise + } + } + + ${fragmentEntreprise} + ` +) + +const entreprises = apiGraphQLFetch(gql` + query Entreprises( + $intervalle: Int + $page: Int + $colonne: String + $ordre: String + $noms: String + $etapeId: ID + ) { + entreprises( + intervalle: $intervalle + page: $page + colonne: $colonne + ordre: $ordre + noms: $noms + etapeId: $etapeId + ) { + elements { + ...entreprises + } + total + } + } + + ${fragmentEntreprises} +`) + +const entrepriseCreer = apiGraphQLFetch(gql` + mutation EntrepriseCreer($entreprise: InputEntrepriseCreation!) { + entrepriseCreer(entreprise: $entreprise) { + ...entreprise + } + } + + ${fragmentEntreprise} +`) + +const entrepriseModifier = apiGraphQLFetch(gql` + mutation EntrepriseModifier($entreprise: InputEntrepriseModification!) { + entrepriseModifier(entreprise: $entreprise) { + ...entreprise + } + } + + ${fragmentEntreprise} +`) + +const entrepriseTitreTypeUpdate = apiGraphQLFetch(gql` + mutation EntrepriseTitreTypeModifier( + $entrepriseTitreType: InputEntrepriseTitreType! + ) { + entrepriseTitreTypeModifier(entrepriseTitreType: $entrepriseTitreType) { + ...entreprise + } + } + + ${fragmentEntreprise} +`) + +export { + entreprise, + entreprises, + entrepriseCreer, + entrepriseModifier, + entrepriseTitreTypeUpdate, + entreprisePermissionsMetas +} diff --git a/packages/ui/src/api/fragments/administration.js b/packages/ui/src/api/fragments/administration.js new file mode 100644 index 0000000000000000000000000000000000000000..a2774ef8bf0f01841a3db2284f9de0ab44470738 --- /dev/null +++ b/packages/ui/src/api/fragments/administration.js @@ -0,0 +1,108 @@ +import gql from 'graphql-tag' +import { fragmentUtilisateur } from './utilisateur' + +const fragmentAdministration = gql` + fragment administration on Administration { + id + nom + type { + id + nom + } + abreviation + service + adresse1 + adresse2 + codePostal + commune + cedex + url + telephone + email + emailsModification + emailsLecture + activitesTypesEmails { + id + nom + email + } + utilisateurs { + ...utilisateur + } + departement { + id + nom + } + region { + id + nom + } + titresTypes { + id + domaine { + id + nom + } + type { + id + nom + } + gestionnaire + associee + } + titresTypesTitresStatuts { + titreType { + id + domaine { + id + nom + } + type { + id + nom + } + } + titreStatut { + id + nom + couleur + } + titresModificationInterdit + demarchesModificationInterdit + etapesModificationInterdit + } + titresTypesEtapesTypes { + titreType { + id + type { + id + nom + } + domaine { + id + nom + } + } + etapeType { + id + nom + } + lectureInterdit + creationInterdit + modificationInterdit + } + + activitesTypes { + id + nom + lectureInterdit + modificationInterdit + } + + modification + } + + ${fragmentUtilisateur} +` + +export { fragmentAdministration } diff --git a/packages/ui/src/api/fragments/administrations.js b/packages/ui/src/api/fragments/administrations.js new file mode 100644 index 0000000000000000000000000000000000000000..bf9d88d310bb6e0ce30acdab23aa526b27ccc067 --- /dev/null +++ b/packages/ui/src/api/fragments/administrations.js @@ -0,0 +1,32 @@ +import gql from 'graphql-tag' + +const fragmentTitreAdministrations = gql` + fragment titreAdministrations on Administration { + id + nom + service + adresse1 + adresse2 + codePostal + commune + cedex + url + telephone + email + } +` + +const fragmentAdministrations = gql` + fragment administrations on Administration { + id + nom + abreviation + service + membre + type { + nom + } + } +` + +export { fragmentAdministrations, fragmentTitreAdministrations } diff --git a/packages/ui/src/api/fragments/documents.js b/packages/ui/src/api/fragments/documents.js new file mode 100644 index 0000000000000000000000000000000000000000..a0095e464abd2886e19fc661b7115493127f8bea --- /dev/null +++ b/packages/ui/src/api/fragments/documents.js @@ -0,0 +1,28 @@ +import gql from 'graphql-tag' +import { fragmentDocumentType } from './metas' + +const fragmentDocument = gql` + fragment document on Document { + id + type { + ...documentType + } + date + description + fichier + fichierTypeId + titreEtapeId + url + uri + jorf + nor + publicLecture + entreprisesLecture + modification + suppression + } + + ${fragmentDocumentType} +` + +export { fragmentDocument } diff --git a/packages/ui/src/api/fragments/entreprise.js b/packages/ui/src/api/fragments/entreprise.js new file mode 100644 index 0000000000000000000000000000000000000000..ae3b9e5db197a56af57305cd09f45fe01f8d5975 --- /dev/null +++ b/packages/ui/src/api/fragments/entreprise.js @@ -0,0 +1,64 @@ +import gql from 'graphql-tag' + +import { fragmentTitres } from './titre' +import { fragmentUtilisateur } from './utilisateur' +import { fragmentDocument } from './documents' + +const fragmentEntreprise = gql` + fragment entreprise on Entreprise { + id + nom + paysId + legalSiren + legalEtranger + legalForme + adresse + codePostal + commune + cedex + url + telephone + email + archive + etablissements { + id + nom + dateDebut + dateFin + legalSiret + } + utilisateurs { + ...utilisateur + } + titulaireTitres { + ...titres + } + amodiataireTitres { + ...titres + } + + documents { + ...document + } + titresTypes { + id + domaine { + id + nom + } + type { + id + nom + } + titresCreation + } + + modification + } + + ${fragmentTitres} + ${fragmentUtilisateur} + ${fragmentDocument} +` + +export { fragmentEntreprise } diff --git a/packages/ui/src/api/fragments/entreprises.js b/packages/ui/src/api/fragments/entreprises.js new file mode 100644 index 0000000000000000000000000000000000000000..dd074a94f794f61570888cceaed61e585d41367a --- /dev/null +++ b/packages/ui/src/api/fragments/entreprises.js @@ -0,0 +1,78 @@ +import gql from 'graphql-tag' +import { fragmentDocument } from './documents' + +const fragmentEntreprises = gql` + fragment entreprises on Entreprise { + id + nom + paysId + legalSiren + legalEtranger + titresTypes { + id + domaine { + id + nom + } + type { + id + nom + } + titresCreation + } + } +` + +const fragmentEtapeMetasEntreprises = gql` + fragment etapeMetasEntreprises on Entreprise { + id + nom + documents { + ...document + } + } + + ${fragmentDocument} +` + +const fragmentTitreEntreprises = gql` + fragment titreEntreprises on Entreprise { + id + nom + paysId + legalSiren + legalEtranger + legalForme + adresse + codePostal + commune + cedex + url + etablissements { + id + nom + dateDebut + dateFin + } + operateur + } +` + +const fragmentTitresEntreprises = gql` + fragment titresEntreprises on Entreprise { + id + nom + adresse + codePostal + commune + legalSiren + legalEtranger + } +` + +export { + fragmentEntreprises, + fragmentTitreEntreprises, + fragmentTitresEntreprises, + fragmentEtapeMetasEntreprises +} diff --git a/packages/ui/src/api/fragments/geojson.js b/packages/ui/src/api/fragments/geojson.js new file mode 100644 index 0000000000000000000000000000000000000000..847cf8fcee999da1c214ece1fbd072fc8a1be9eb --- /dev/null +++ b/packages/ui/src/api/fragments/geojson.js @@ -0,0 +1,65 @@ +import gql from 'graphql-tag' + +import { fragmentPointReference } from './point' + +const fragmentGeojsonMultiPolygon = gql` + fragment geojsonMultiPolygon on GeojsonMultiPolygon { + type + geometry { + type + coordinates + } + } +` + +const fragmentGeojsonPoints = gql` + fragment geojsonPoints on GeojsonPoints { + type + features { + type + properties { + id + groupe + contour + point + nom + description + references { + ...pointReference + } + } + geometry { + type + coordinates + } + } + } + + ${fragmentPointReference} +` + +const fragmentPerimetreAlerte = gql` + fragment perimetreAlerte on PerimetreAlerte { + message + url + } +` + +const fragmentPerimetreInformations = gql` + fragment perimetreInformations on PerimetreInformations { + surface + documentTypeIds + alertes { + ...perimetreAlerte + } + } + + ${fragmentPerimetreAlerte} +` + +export { + fragmentGeojsonPoints, + fragmentGeojsonMultiPolygon, + fragmentPerimetreInformations, + fragmentPerimetreAlerte +} diff --git a/packages/ui/src/api/fragments/metas-activites.js b/packages/ui/src/api/fragments/metas-activites.js new file mode 100644 index 0000000000000000000000000000000000000000..6b778e72d83c71ed029b15bbe2e70ff0784b94b7 --- /dev/null +++ b/packages/ui/src/api/fragments/metas-activites.js @@ -0,0 +1,83 @@ +import gql from 'graphql-tag' +import { fragmentDocumentType } from './metas' + +const fragmentActiviteType = gql` + fragment activiteType on ActiviteType { + id + nom + dateDebut + delaiMois + pays { + id + nom + } + ordre + frequenceId + frequence { + id + nom + trimestres { + id + nom + mois { + id + nom + } + } + mois { + id + nom + } + annees { + id + nom + } + } + sections + documentsTypes { + ...documentType + } + satisfactionUrl + description + } + + ${fragmentDocumentType} +` + +const fragmentActiviteStatut = gql` + fragment activiteStatut on ActiviteStatut { + id + nom + couleur + } +` + +const fragmentActiviteTypeTitreType = gql` + fragment activiteTypeTitreType on ActiviteTypeTitreType { + activiteTypeId + titreTypeId + } +` + +const fragmentActiviteTypeDocumentType = gql` + fragment activiteTypeDocumentType on ActiviteTypeDocumentType { + activiteTypeId + documentTypeId + optionnel + } +` + +const fragmentActiviteTypePays = gql` + fragment activiteTypePays on ActiviteTypePays { + activiteTypeId + paysId + } +` + +export { + fragmentActiviteType, + fragmentActiviteStatut, + fragmentActiviteTypeTitreType, + fragmentActiviteTypeDocumentType, + fragmentActiviteTypePays +} diff --git a/packages/ui/src/api/fragments/metas.js b/packages/ui/src/api/fragments/metas.js new file mode 100644 index 0000000000000000000000000000000000000000..7944db0de398e3afd0ffc5c289d376e64396e0f6 --- /dev/null +++ b/packages/ui/src/api/fragments/metas.js @@ -0,0 +1,305 @@ +import gql from 'graphql-tag' + +const fragmentPermission = gql` + fragment permission on Permission { + id + nom + ordre + } +` + +const fragmentTitreTypeType = gql` + fragment titreTypeType on TitreTypeType { + id + nom + description + ordre + } +` + +const fragmentTitreStatut = gql` + fragment titreStatut on TitreStatut { + id + nom + description + couleur + ordre + } +` + +const fragmentTitreType = gql` + fragment titreType on TitreType { + id + typeId + domaineId + type { + ...titreTypeType + } + domaine { + id + nom + } + titresCreation + contenuIds + } + ${fragmentTitreTypeType} +` + +const fragmentDemarcheStatut = gql` + fragment demarcheStatut on DemarcheStatut { + id + nom + description + couleur + ordre + } +` + +const fragmentUnite = gql` + fragment unite on Unite { + id + nom + symbole + referenceUniteId + referenceUniteRatio + } +` + +const fragmentDevise = gql` + fragment devise on Devise { + id + nom + } +` + +const fragmentDemarcheType = gql` + fragment demarcheType on DemarcheType { + id + nom + description + ordre + duree + points + substances + titulaires + exception + renouvelable + demarchesCreation + titreTypeId + travaux + } +` +const fragmentDomaine = gql` + fragment domaine on Domaine { + id + nom + description + ordre + } +` + +const fragmentDefinition = gql` + fragment definition on Definition { + id + nom + slug + description + couleur + ordre + elements { + id + nom + description + couleur + } + } +` + +const fragmentPhaseStatut = gql` + fragment phaseStatut on PhaseStatut { + id + nom + couleur + } +` + +const fragmentDocumentType = gql` + fragment documentType on DocumentType { + id + nom + optionnel + description + } +` + +const fragmentEtapeType = gql` + fragment etapeType on EtapeType { + id + parentId + nom + description + ordre + sections + legalLien + legalRef + dateDebut + dateFin + fondamentale + unique + acceptationAuto + publicLecture + entreprisesLecture + etapesStatuts { + id + nom + couleur + } + etapesCreation + documentsTypes { + ...documentType + } + justificatifsTypes { + ...documentType + } + } + + ${fragmentDocumentType} +` + +const fragmentEtapeStatut = gql` + fragment etapeStatut on EtapeStatut { + id + nom + description + couleur + ordre + } +` + +const fragmentAdministrationType = gql` + fragment administrationType on AdministrationType { + id + nom + ordre + } +` + +const fragmentReferenceType = gql` + fragment referenceType on ReferenceType { + id + nom + } +` + +const fragmentGeoSysteme = gql` + fragment geoSysteme on GeoSysteme { + id + nom + ordre + zone + uniteId + definitionProj4 + unite { + ...unite + } + } + + ${fragmentUnite} +` + +const fragmentTitreTypeTitreStatut = gql` + fragment titreTypeTitreStatut on TitreTypeTitreStatut { + titreTypeId + titreStatutId + publicLecture + } +` + +const fragmentTitreTypeDemarcheType = gql` + fragment titreTypeDemarcheType on TitreTypeDemarcheType { + titreTypeId + demarcheTypeId + dureeMax + acceptationImplicite + delaiImplicite + delaiRecours + legalRef + legaleLien + dateDebut + dateFin + } +` + +const fragmentTitreTypeDemarcheTypeEtapeType = gql` + fragment titreTypeDemarcheTypeEtapeType on TitreTypeDemarcheTypeEtapeType { + titreTypeId + demarcheTypeId + etapeTypeId + ordre + sections + } +` + +const fragmentTitreTypeDemarcheTypeEtapeTypeDocumentType = gql` + fragment titreTypeDemarcheTypeEtapeTypeDocumentType on TitreTypeDemarcheTypeEtapeTypeDocumentType { + titreTypeId + demarcheTypeId + etapeTypeId + documentTypeId + optionnel + description + } +` + +const fragmentEtapeTypeEtapeStatut = gql` + fragment etapeTypeEtapeStatut on EtapeTypeEtapeStatut { + etapeTypeId + etapeStatutId + ordre + } +` + +const fragmentEtapeTypeDocumentType = gql` + fragment etapeTypeDocumentType on EtapeTypeDocumentType { + etapeTypeId + documentTypeId + optionnel + description + } +` + +const fragmentEtapeTypeJustificatifType = gql` + fragment etapeTypeJustificatifType on EtapeTypeJustificatifType { + etapeTypeId + documentTypeId + optionnel + description + } +` + +export { + fragmentTitreTypeType, + fragmentTitreStatut, + fragmentEtapeType, + fragmentEtapeStatut, + fragmentPermission, + fragmentUnite, + fragmentDevise, + fragmentDemarcheType, + fragmentDemarcheStatut, + fragmentTitreType, + fragmentDomaine, + fragmentDefinition, + fragmentPhaseStatut, + fragmentAdministrationType, + fragmentDocumentType, + fragmentReferenceType, + fragmentGeoSysteme, + fragmentTitreTypeTitreStatut, + fragmentTitreTypeDemarcheType, + fragmentTitreTypeDemarcheTypeEtapeType, + fragmentTitreTypeDemarcheTypeEtapeTypeDocumentType, + fragmentEtapeTypeEtapeStatut, + fragmentEtapeTypeDocumentType, + fragmentEtapeTypeJustificatifType +} diff --git a/packages/ui/src/api/fragments/pays.js b/packages/ui/src/api/fragments/pays.js new file mode 100644 index 0000000000000000000000000000000000000000..9312993b3d1b4464be88c6d701d6cab958c8fc9d --- /dev/null +++ b/packages/ui/src/api/fragments/pays.js @@ -0,0 +1,22 @@ +import gql from 'graphql-tag' + +const fragmentPays = gql` + fragment pays on Pays { + id + nom + regions { + id + nom + departements { + id + nom + communes { + id + nom + } + } + } + } +` + +export { fragmentPays } diff --git a/packages/ui/src/api/fragments/point.js b/packages/ui/src/api/fragments/point.js new file mode 100644 index 0000000000000000000000000000000000000000..b07c8f2c467e37d1d822ac04033f4403b2633205 --- /dev/null +++ b/packages/ui/src/api/fragments/point.js @@ -0,0 +1,48 @@ +import gql from 'graphql-tag' +import { fragmentUnite } from './metas' + +const fragmentPointReference = gql` + fragment pointReference on PointReference { + id + geoSysteme { + id + nom + zone + unite { + ...unite + } + } + coordonnees { + x + y + } + opposable + } + + ${fragmentUnite} +` + +const fragmentPoint = gql` + fragment point on Point { + id + coordonnees { + x + y + } + groupe + contour + point + nom + description + securite + subsidiaire + lot + references { + ...pointReference + } + } + + ${fragmentPointReference} +` + +export { fragmentPoint, fragmentPointReference } diff --git a/packages/ui/src/api/fragments/substance.js b/packages/ui/src/api/fragments/substance.js new file mode 100644 index 0000000000000000000000000000000000000000..6bec8ec37ed444b40b902edba9908f5e928c438a --- /dev/null +++ b/packages/ui/src/api/fragments/substance.js @@ -0,0 +1,61 @@ +import gql from 'graphql-tag' + +const fragmentSubstance = gql` + fragment substance on Substance { + id + nom + symbole + gerep + description + legales { + id + nom + description + domaine { + id + nom + } + code { + id + nom + description + lien + } + } + } +` + +const fragmentTitreSubstance = gql` + fragment titreSubstance on TitreSubstance { + id + nom + ordre + symbole + gerep + description + legales { + id + nom + description + domaine { + id + nom + } + code { + id + nom + description + lien + } + } + } +` + +const fragmentTitresSubstance = gql` + fragment titresSubstance on TitreSubstance { + id + nom + } +` + +export { fragmentSubstance, fragmentTitreSubstance, fragmentTitresSubstance } diff --git a/packages/ui/src/api/fragments/titre-activite.js b/packages/ui/src/api/fragments/titre-activite.js new file mode 100644 index 0000000000000000000000000000000000000000..6e6bc98ba3d761f1a8e6908566d4835cf9f39376 --- /dev/null +++ b/packages/ui/src/api/fragments/titre-activite.js @@ -0,0 +1,142 @@ +import gql from 'graphql-tag' +import { fragmentTitresEntreprises } from './entreprises' +import { fragmentDocument } from './documents' +import { fragmentActiviteType, fragmentActiviteStatut } from './metas-activites' + +const fragmentTitreActivite = gql` + fragment titreActivite on Activite { + id + slug + type { + ...activiteType + } + statut { + ...activiteStatut + } + date + annee + periode + dateSaisie + sections + contenu + + suppression + modification + deposable + + documents { + ...document + } + } + + ${fragmentActiviteType} + + ${fragmentActiviteStatut} + + ${fragmentDocument} +` + +const fragmentActivites = gql` + fragment activites on Activite { + id + slug + titre { + id + nom + titulaires { + ...titresEntreprises + } + amodiataires { + ...titresEntreprises + } + } + type { + ...activiteType + } + statut { + id + nom + couleur + } + date + annee + periode + dateSaisie + sections + contenu + + suppression + modification + deposable + } + + ${fragmentActiviteType} + + ${fragmentTitresEntreprises} +` + +const fragmentActivite = gql` + fragment activite on Activite { + id + slug + titre { + id + slug + nom + titulaires { + ...titresEntreprises + } + amodiataires { + ...titresEntreprises + } + } + type { + ...activiteType + } + statut { + id + nom + couleur + } + date + annee + periode + dateSaisie + sections + contenu + + documents { + ...document + } + + suppression + modification + deposable + } + + ${fragmentActiviteType} + + ${fragmentTitresEntreprises} + + ${fragmentDocument} +` + +const fragmentTitresActivite = gql` + fragment titresActivite on Activite { + id + slug + date + statut { + id + couleur + } + deposable + } +` + +export { + fragmentActivites, + fragmentActivite, + fragmentTitreActivite, + fragmentTitresActivite +} diff --git a/packages/ui/src/api/fragments/titre-demarche.js b/packages/ui/src/api/fragments/titre-demarche.js new file mode 100644 index 0000000000000000000000000000000000000000..2346ad1432bd6723cca287702931f916d242c067 --- /dev/null +++ b/packages/ui/src/api/fragments/titre-demarche.js @@ -0,0 +1,41 @@ +import gql from 'graphql-tag' + +import { fragmentTitreEtape } from './titre-etape' +import { fragmentDemarcheType, fragmentDemarcheStatut } from './metas' + +const fragmentTitreDemarche = gql` + fragment titreDemarche on Demarche { + id + description + slug + ordre + type { + ...demarcheType + } + statut { + ...demarcheStatut + } + phase { + dateDebut + dateFin + statut { + id + nom + couleur + } + } + etapes { + ...titreEtape + } + + modification + etapesCreation + suppression + } + + ${fragmentTitreEtape} + ${fragmentDemarcheType} + ${fragmentDemarcheStatut} +` + +export { fragmentTitreDemarche } diff --git a/packages/ui/src/api/fragments/titre-etape.js b/packages/ui/src/api/fragments/titre-etape.js new file mode 100644 index 0000000000000000000000000000000000000000..00cc1c13bc7fd2091293c3b484f0c270cb82dc0b --- /dev/null +++ b/packages/ui/src/api/fragments/titre-etape.js @@ -0,0 +1,382 @@ +import gql from 'graphql-tag' +import { fragmentTitreAdministrations } from './administrations' +import { fragmentTitreEntreprises } from './entreprises' +import { fragmentTitreSubstance } from './substance' +import { fragmentPoint } from './point' +import { fragmentGeojsonMultiPolygon } from './geojson' +import { fragmentPays } from './pays' +import { + fragmentDemarcheType, + fragmentDocumentType, + fragmentTitreType, + fragmentUnite +} from './metas' + +import { fragmentDocument } from './documents' + +const fragmentIncertitudes = gql` + fragment incertitudes on Incertitudes { + date + dateDebut + dateFin + duree + surface + points + substances + titulaires + amodiataires + } +` + +// fragment qui représente l’étape dont on hérite sur une prop +const fragmentHeritageEtape = gql` + fragment heritageEtape on Etape { + id + titreDemarcheId + ordre + date + dateDebut + dateFin + duree + surface + incertitudes { + ...incertitudes + } + type { + id + nom + sections + } + statut { + id + nom + couleur + } + administrations { + ...titreAdministrations + } + titulaires { + ...titreEntreprises + } + amodiataires { + ...titreEntreprises + } + points { + ...point + } + substances { + ...titreSubstance + } + contenu + } + + ${fragmentIncertitudes} + + ${fragmentTitreAdministrations} + + ${fragmentTitreEntreprises} + + ${fragmentPoint} + + ${fragmentTitreSubstance} + + ${fragmentUnite} +` + +const fragmentHeritageProps = gql` + fragment heritageProps on HeritageProps { + dateDebut { + ...heritageProp + } + dateFin { + ...heritageProp + } + duree { + ...heritageProp + } + surface { + ...heritageProp + } + points { + ...heritageProp + } + substances { + ...heritageProp + } + titulaires { + ...heritageProp + } + amodiataires { + ...heritageProp + } + } + + fragment heritageProp on HeritageProp { + etape { + ...heritageEtape + } + actif + } + + ${fragmentHeritageEtape} +` + +const fragmentTitreEtape = gql` + fragment titreEtape on Etape { + id + slug + ordre + date + dateDebut + dateFin + duree + surface + type { + id + nom + sections + documentsTypes { + ...documentType + } + justificatifsTypes { + ...documentType + } + } + statut { + id + nom + couleur + } + administrations { + ...titreAdministrations + } + titulaires { + ...titreEntreprises + } + amodiataires { + ...titreEntreprises + } + points { + ...point + } + geojsonMultiPolygon { + ...geojsonMultiPolygon + } + substances { + ...titreSubstance + } + documents { + ...document + } + justificatifs { + ...document + } + incertitudes { + ...incertitudes + } + heritageProps { + ...heritageProps + } + pays { + ...pays + } + contenu + heritageContenu + decisionsAnnexesSections + decisionsAnnexesContenu + + modification + deposable + } + + ${fragmentTitreAdministrations} + + ${fragmentTitreEntreprises} + + ${fragmentPoint} + + ${fragmentGeojsonMultiPolygon} + + ${fragmentTitreSubstance} + + ${fragmentPays} + + ${fragmentUnite} + + ${fragmentDocument} + + ${fragmentHeritageProps} + + ${fragmentIncertitudes} + + ${fragmentDocumentType} +` + +const fragmentEtapeHeritage = gql` + fragment etapeHeritage on EtapeHeritage { + dateDebut + dateFin + duree + surface + type { + id + nom + sections + documentsTypes { + ...documentType + } + justificatifsTypes { + ...documentType + } + } + + titulaires { + ...titreEntreprises + } + + amodiataires { + ...titreEntreprises + } + + points { + ...point + } + + substances { + ...titreSubstance + } + + contenu + + heritageProps { + ...heritageProps + } + + heritageContenu + } + + ${fragmentTitreEntreprises} + + ${fragmentPoint} + + ${fragmentTitreSubstance} + + ${fragmentHeritageProps} + + ${fragmentDocumentType} +` + +const fragmentEtape = gql` + fragment etape on Etape { + id + slug + titreDemarcheId + demarche { + id + type { + ...demarcheType + } + titre { + id + slug + nom + domaine { + id + nom + } + type { + ...titreType + } + } + } + ordre + date + dateDebut + dateFin + duree + surface + type { + id + nom + sections + documentsTypes { + ...documentType + } + justificatifsTypes { + ...documentType + } + } + statut { + id + nom + couleur + } + administrations { + ...titreAdministrations + } + titulaires { + ...titreEntreprises + } + amodiataires { + ...titreEntreprises + } + points { + ...point + } + geojsonMultiPolygon { + ...geojsonMultiPolygon + } + substances { + ...titreSubstance + } + documents { + ...document + } + justificatifs { + ...document + } + incertitudes { + ...incertitudes + } + heritageProps { + ...heritageProps + } + pays { + ...pays + } + contenu + heritageContenu + decisionsAnnexesSections + decisionsAnnexesContenu + + modification + } + + ${fragmentDemarcheType} + + ${fragmentTitreType} + + ${fragmentTitreAdministrations} + + ${fragmentTitreEntreprises} + + ${fragmentPoint} + + ${fragmentGeojsonMultiPolygon} + + ${fragmentTitreSubstance} + + ${fragmentPays} + + ${fragmentUnite} + + ${fragmentDocument} + + ${fragmentHeritageProps} + + ${fragmentIncertitudes} + + ${fragmentDocumentType} +` + +export { fragmentTitreEtape, fragmentEtapeHeritage, fragmentEtape } diff --git a/packages/ui/src/api/fragments/titre.js b/packages/ui/src/api/fragments/titre.js new file mode 100644 index 0000000000000000000000000000000000000000..6cd1706f5c16c9351980c0365738b5faf067982f --- /dev/null +++ b/packages/ui/src/api/fragments/titre.js @@ -0,0 +1,269 @@ +import gql from 'graphql-tag' + +import { fragmentTitreType } from './metas' +import { fragmentTitreDemarche } from './titre-demarche' +import { fragmentTitreActivite } from './titre-activite' +import { fragmentTitreSubstance, fragmentTitresSubstance } from './substance' +import { fragmentTitreAdministrations } from './administrations' +import { + fragmentTitreEntreprises, + fragmentTitresEntreprises +} from './entreprises' + +import { fragmentPoint } from './point' +import { fragmentPays } from './pays' + +import { fragmentGeojsonPoints, fragmentGeojsonMultiPolygon } from './geojson' + +const fragmentTitre = gql` + fragment titre on Titre { + id + slug + nom + type { + ...titreType + sections + } + domaine { + id + nom + } + statut { + id + nom + couleur + } + references { + type { + id + nom + } + nom + } + substances { + ...titreSubstance + } + dateDebut + dateFin + activitesEnConstruction + activitesAbsentes + activitesDeposees + surface + administrations { + ...titreAdministrations + } + titresAdministrations { + id + } + titulaires { + ...titreEntreprises + } + amodiataires { + ...titreEntreprises + } + points { + ...point + } + geojsonPoints { + ...geojsonPoints + } + geojsonMultiPolygon { + ...geojsonMultiPolygon + } + pays { + ...pays + } + demarches { + ...titreDemarche + } + activites { + ...titreActivite + } + + forets { + nom + } + + sdomZones { + nom + } + + contenu + + modification + suppression + demarchesCreation + travauxCreation + doublonTitre { + id + nom + } + abonnement + } + + ${fragmentTitreAdministrations} + + ${fragmentTitreEntreprises} + + ${fragmentTitreDemarche} + + ${fragmentTitreActivite} + + ${fragmentTitreSubstance} + + ${fragmentPoint} + + ${fragmentGeojsonPoints} + + ${fragmentGeojsonMultiPolygon} + + ${fragmentPays} + + ${fragmentTitreType} +` + +const fragmentTitres = gql` + fragment titres on Titre { + id + slug + nom + type { + ...titreType + } + domaine { + id + nom + } + coordonnees { + x + y + } + statut { + id + nom + couleur + } + substances { + ...titresSubstance + } + activitesEnConstruction + activitesAbsentes + activitesDeposees + titulaires { + ...titresEntreprises + } + amodiataires { + ...titresEntreprises + } + pays { + regions { + nom + departements { + nom + } + } + } + references { + type { + nom + } + nom + } + } + + ${fragmentTitresEntreprises} + + ${fragmentTitresSubstance} + + ${fragmentTitreType} +` + +const fragmentTitreGeo = gql` + fragment titreGeo on Titre { + id + slug + nom + type { + ...titreType + } + domaine { + id + nom + } + statut { + id + nom + couleur + } + titulaires { + ...titresEntreprises + } + amodiataires { + ...titresEntreprises + } + + geojsonCentre { + geometry { + coordinates + } + } + } + ${fragmentTitresEntreprises} + ${fragmentTitreType} +` + +const fragmentTitresGeo = gql` + fragment titresGeo on Titre { + ...titreGeo + } + + ${fragmentTitreGeo} +` + +const fragmentTitresGeoPolygon = gql` + fragment titresGeoPolygon on Titre { + ...titreGeo + geojsonMultiPolygon { + ...geojsonMultiPolygon + } + } + + ${fragmentTitreGeo} + ${fragmentGeojsonMultiPolygon} +` + +const fragmentDemarchesTitre = gql` + fragment demarchesTitre on Titre { + id + slug + nom + type { + ...titreType + } + domaine { + id + nom + } + statut { + id + nom + couleur + } + references { + type { + nom + } + nom + } + } + + ${fragmentTitreType} +` + +export { + fragmentTitre, + fragmentTitres, + fragmentTitresGeo, + fragmentTitresGeoPolygon, + fragmentDemarchesTitre +} diff --git a/packages/ui/src/api/fragments/titres-demarches.js b/packages/ui/src/api/fragments/titres-demarches.js new file mode 100644 index 0000000000000000000000000000000000000000..3005b9e0c96ef8e09e43557cf0e259d1d117547a --- /dev/null +++ b/packages/ui/src/api/fragments/titres-demarches.js @@ -0,0 +1,39 @@ +import gql from 'graphql-tag' + +import { fragmentDemarchesTitre } from './titre' +import { fragmentDemarcheType, fragmentDemarcheStatut } from './metas' + +const fragmentDemarches = gql` + fragment demarches on Demarche { + id + slug + ordre + titre { + ...demarchesTitre + } + type { + ...demarcheType + } + statut { + ...demarcheStatut + } + phase { + dateDebut + dateFin + statut { + id + nom + couleur + } + } + + modification + suppression + } + + ${fragmentDemarcheType} + ${fragmentDemarcheStatut} + ${fragmentDemarchesTitre} +` + +export { fragmentDemarches } diff --git a/packages/ui/src/api/fragments/utilisateur.js b/packages/ui/src/api/fragments/utilisateur.js new file mode 100644 index 0000000000000000000000000000000000000000..e72dbe19bcfbc18caa5cff08c6e64890efe386dd --- /dev/null +++ b/packages/ui/src/api/fragments/utilisateur.js @@ -0,0 +1,48 @@ +import gql from 'graphql-tag' +import { fragmentPermission } from './metas' +import { fragmentEntreprises } from './entreprises' +import { fragmentAdministrations } from './administrations' + +const fragmentUtilisateur = gql` + fragment utilisateur on Utilisateur { + id + nom + prenom + email + telephoneMobile + telephoneFixe + entreprises { + ...entreprises + } + administrations { + ...administrations + } + permission { + ...permission + } + newsletter + + modification + suppression + permissionModification + entreprisesCreation + utilisateursCreation + + sections { + activites + administrations + utilisateurs + metas + journaux + travaux + } + } + + ${fragmentEntreprises} + + ${fragmentAdministrations} + + ${fragmentPermission} +` + +export { fragmentUtilisateur } diff --git a/packages/ui/src/api/geojson.js b/packages/ui/src/api/geojson.js new file mode 100644 index 0000000000000000000000000000000000000000..3dd3144e841d0b1bd78a1990ddab70cc0139b808 --- /dev/null +++ b/packages/ui/src/api/geojson.js @@ -0,0 +1,69 @@ +import gql from 'graphql-tag' +import { apiGraphQLFetch } from './_client' +import { fragmentPoint } from './fragments/point' +import { + fragmentPerimetreAlerte, + fragmentPerimetreInformations +} from '@/api/fragments/geojson' + +const pointsImporter = apiGraphQLFetch(gql` + query PointsImporter( + $file: FileUpload! + $geoSystemeId: String! + $titreId: String! + $etapeTypeId: String! + ) { + pointsImporter( + fileUpload: $file + geoSystemeId: $geoSystemeId + titreId: $titreId + etapeTypeId: $etapeTypeId + ) { + points { + ...point + } + surface + documentTypeIds + alertes { + ...perimetreAlerte + } + } + } + + ${fragmentPoint} + ${fragmentPerimetreAlerte} +`) + +const perimetreInformations = apiGraphQLFetch(gql` + query PerimetreInformations( + $points: [InputPoint]! + $titreId: String! + $etapeTypeId: String! + ) { + perimetreInformations( + points: $points + titreId: $titreId + etapeTypeId: $etapeTypeId + ) { + ...perimetreInformations + } + } + + ${fragmentPerimetreInformations} +`) + +const titreEtapePerimetreInformations = apiGraphQLFetch(gql` + query TitreEtapePerimetreInformations($titreEtapeId: String!) { + titreEtapePerimetreInformations(titreEtapeId: $titreEtapeId) { + ...perimetreInformations + } + } + + ${fragmentPerimetreInformations} +`) + +export { + pointsImporter, + perimetreInformations, + titreEtapePerimetreInformations +} diff --git a/packages/ui/src/api/journaux.js b/packages/ui/src/api/journaux.js new file mode 100644 index 0000000000000000000000000000000000000000..94e3fd8ccef1ff19e279074f3724cc9d579060bc --- /dev/null +++ b/packages/ui/src/api/journaux.js @@ -0,0 +1,36 @@ +import gql from 'graphql-tag' +import { apiGraphQLFetch } from './_client' + +const journaux = apiGraphQLFetch(gql` + query Journaux( + $intervalle: Int! + $page: Int! + $recherche: String + $titreId: String + ) { + journaux( + intervalle: $intervalle + page: $page + recherche: $recherche + titreId: $titreId + ) { + elements { + id + date + differences + elementId + operation + utilisateur { + nom + prenom + } + titre { + nom + } + } + total + } + } +`) + +export { journaux } diff --git a/packages/ui/src/api/metas-activites.js b/packages/ui/src/api/metas-activites.js new file mode 100644 index 0000000000000000000000000000000000000000..e55e1dc910b219b3cbc9f22e74f1b04314b5bb1a --- /dev/null +++ b/packages/ui/src/api/metas-activites.js @@ -0,0 +1,247 @@ +import gql from 'graphql-tag' +import { apiGraphQLFetch } from './_client' + +import { + fragmentActiviteType, + fragmentActiviteStatut, + fragmentActiviteTypeTitreType, + fragmentActiviteTypeDocumentType, + fragmentActiviteTypePays +} from './fragments/metas-activites' + +import { fragmentTitreTypeType } from './fragments/metas' + +const activitesMetas = apiGraphQLFetch( + gql` + query MetasActivites { + activitesTypes { + ...activiteType + } + activitesStatuts { + ...activiteStatut + } + activitesAnnees + + domaines { + id + nom + } + + types { + ...titreTypeType + } + + statuts { + id + nom + couleur + } + } + + ${fragmentActiviteType} + + ${fragmentActiviteStatut} + + ${fragmentTitreTypeType} + ` +) + +const activitesTypes = apiGraphQLFetch( + gql` + query ActivitesTypes { + activitesTypes { + ...activiteType + } + } + + ${fragmentActiviteType} + ` +) + +const activiteTypeModifier = apiGraphQLFetch(gql` + mutation ActiviteTypeModifier($element: InputActiviteType!) { + activiteTypeModifier(activiteType: $element) { + ...activiteType + } + } + + ${fragmentActiviteType} +`) + +const activitesStatuts = apiGraphQLFetch( + gql` + query ActivitesStatuts { + activitesStatuts { + ...activiteStatut + } + } + + ${fragmentActiviteStatut} + ` +) + +const activiteStatutModifier = apiGraphQLFetch(gql` + mutation ActiviteStatutModifier($element: InputActiviteStatut!) { + activiteStatutModifier(activiteStatut: $element) { + ...activiteStatut + } + } + + ${fragmentActiviteStatut} +`) + +const activitesTypesTitresTypes = apiGraphQLFetch( + gql` + query ActivitesTypesTitresTypes { + activitesTypesTitresTypes { + ...activiteTypeTitreType + } + } + + ${fragmentActiviteTypeTitreType} + ` +) + +const activiteTypeTitreTypeModifier = apiGraphQLFetch(gql` + mutation ActiviteTypeTitreTypeModifier( + $element: InputActiviteTypeTitreType! + ) { + activiteTypeTitreTypeModifier(activiteTypeTitreType: $element) { + ...activiteTypeTitreType + } + } + + ${fragmentActiviteTypeTitreType} +`) + +const activiteTypeTitreTypeCreer = apiGraphQLFetch(gql` + mutation ActiviteTypeTitreTypeCreer($element: InputActiviteTypeTitreType!) { + activiteTypeTitreTypeCreer(activiteTypeTitreType: $element) { + ...activiteTypeTitreType + } + } + + ${fragmentActiviteTypeTitreType} +`) + +const activiteTypeTitreTypeSupprimer = apiGraphQLFetch(gql` + mutation ActiviteTypeTitreTypeSupprimer( + $element: InputActiviteTypeTitreType! + ) { + activiteTypeTitreTypeSupprimer(activiteTypeTitreType: $element) { + ...activiteTypeTitreType + } + } + + ${fragmentActiviteTypeTitreType} +`) + +const activitesTypesDocumentsTypes = apiGraphQLFetch( + gql` + query ActivitesTypesDocumentsTypes { + activitesTypesDocumentsTypes { + ...activiteTypeDocumentType + } + } + + ${fragmentActiviteTypeDocumentType} + ` +) + +const activiteTypeDocumentTypeModifier = apiGraphQLFetch(gql` + mutation ActiviteTypeDocumentTypeModifier( + $element: InputActiviteTypeDocumentType! + ) { + activiteTypeDocumentTypeModifier(activiteTypeDocumentType: $element) { + ...activiteTypeDocumentType + } + } + + ${fragmentActiviteTypeDocumentType} +`) + +const activiteTypeDocumentTypeCreer = apiGraphQLFetch(gql` + mutation ActiviteTypeDocumentTypeCreer( + $element: InputActiviteTypeDocumentType! + ) { + activiteTypeDocumentTypeCreer(activiteTypeDocumentType: $element) { + ...activiteTypeDocumentType + } + } + + ${fragmentActiviteTypeDocumentType} +`) + +const activiteTypeDocumentTypeSupprimer = apiGraphQLFetch(gql` + mutation ActiviteTypeDocumentTypeSupprimer( + $element: InputActiviteTypeDocumentType! + ) { + activiteTypeDocumentTypeSupprimer(activiteTypeDocumentType: $element) { + ...activiteTypeDocumentType + } + } + + ${fragmentActiviteTypeDocumentType} +`) + +const activitesTypesPays = apiGraphQLFetch( + gql` + query ActivitesTypesPays { + activitesTypesPays { + ...activiteTypePays + } + } + + ${fragmentActiviteTypePays} + ` +) + +const activiteTypePaysModifier = apiGraphQLFetch(gql` + mutation ActiviteTypePaysModifier($element: InputActiviteTypePays!) { + activiteTypePaysModifier(activiteTypePays: $element) { + ...activiteTypePays + } + } + + ${fragmentActiviteTypePays} +`) + +const activiteTypePaysCreer = apiGraphQLFetch(gql` + mutation ActiviteTypePaysCreer($element: InputActiviteTypePays!) { + activiteTypePaysCreer(activiteTypePays: $element) { + ...activiteTypePays + } + } + + ${fragmentActiviteTypePays} +`) + +const activiteTypePaysSupprimer = apiGraphQLFetch(gql` + mutation ActiviteTypePaysSupprimer($element: InputActiviteTypePays!) { + activiteTypePaysSupprimer(activiteTypePays: $element) { + ...activiteTypePays + } + } + + ${fragmentActiviteTypePays} +`) + +export { + activitesMetas, + activitesTypes, + activiteTypeModifier, + activitesStatuts, + activiteStatutModifier, + activitesTypesTitresTypes, + activiteTypeTitreTypeCreer, + activiteTypeTitreTypeModifier, + activiteTypeTitreTypeSupprimer, + activitesTypesDocumentsTypes, + activiteTypeDocumentTypeCreer, + activiteTypeDocumentTypeModifier, + activiteTypeDocumentTypeSupprimer, + activitesTypesPays, + activiteTypePaysCreer, + activiteTypePaysModifier, + activiteTypePaysSupprimer +} diff --git a/packages/ui/src/api/metas.js b/packages/ui/src/api/metas.js new file mode 100644 index 0000000000000000000000000000000000000000..b285d201a0e1aee921d7ea54395d9c05ea1342b8 --- /dev/null +++ b/packages/ui/src/api/metas.js @@ -0,0 +1,926 @@ +import gql from 'graphql-tag' +import { apiGraphQLFetch } from './_client' +import { + fragmentDefinition, + fragmentDomaine, + fragmentTitreTypeType, + fragmentTitreStatut, + fragmentDemarcheType, + fragmentDemarcheStatut, + fragmentPhaseStatut, + fragmentEtapeType, + fragmentEtapeStatut, + fragmentDevise, + fragmentUnite, + fragmentAdministrationType, + fragmentPermission, + fragmentDocumentType, + fragmentReferenceType, + fragmentGeoSysteme, + fragmentTitreType, + fragmentTitreTypeTitreStatut, + fragmentTitreTypeDemarcheType, + fragmentTitreTypeDemarcheTypeEtapeType, + fragmentEtapeTypeEtapeStatut, + fragmentEtapeTypeDocumentType, + fragmentEtapeTypeJustificatifType, + fragmentTitreTypeDemarcheTypeEtapeTypeDocumentType +} from './fragments/metas' + +const definitions = apiGraphQLFetch( + gql` + query Definitions { + definitions { + ...definition + } + } + + ${fragmentDefinition} + ` +) + +const definitionModifier = apiGraphQLFetch(gql` + mutation DefinitionModifier($element: InputDefinition!) { + definitionModifier(definition: $element) { + ...definition + } + } + + ${fragmentDefinition} +`) + +const domaines = apiGraphQLFetch( + gql` + query Domaines { + domaines { + ...domaine + } + } + + ${fragmentDomaine} + ` +) + +const domaineModifier = apiGraphQLFetch(gql` + mutation DomaineModifier($element: InputDomaine!) { + domaineModifier(domaine: $element) { + ...domaine + } + } + + ${fragmentDomaine} +`) + +const titresTypesTypes = apiGraphQLFetch( + gql` + query TitresTypesTypes { + types { + ...titreTypeType + } + } + + ${fragmentTitreTypeType} + ` +) + +const titreTypeTypeModifier = apiGraphQLFetch(gql` + mutation TitreTypeTypeModifier($element: InputTitreTypeType!) { + titreTypeTypeModifier(titreType: $element) { + ...titreTypeType + } + } + + ${fragmentTitreTypeType} +`) + +const titreStatutModifier = apiGraphQLFetch(gql` + mutation TitreStatutModifier($element: InputTitreStatut!) { + titreStatutModifier(titreStatut: $element) { + ...titreStatut + } + } + + ${fragmentTitreStatut} +`) + +const titresStatuts = apiGraphQLFetch( + gql` + query Statuts { + statuts { + ...titreStatut + } + } + + ${fragmentTitreStatut} + ` +) + +const demarchesTypes = apiGraphQLFetch( + gql` + query DemarchesTypes { + demarchesTypes { + ...demarcheType + } + } + + ${fragmentDemarcheType} + ` +) + +const demarcheTypeModifier = apiGraphQLFetch(gql` + mutation DemarcheTypeModifier($element: InputDemarcheType!) { + demarcheTypeModifier(demarcheType: $element) { + ...demarcheType + } + } + + ${fragmentDemarcheType} +`) + +const demarchesStatuts = apiGraphQLFetch( + gql` + query DemarchesStatuts { + demarchesStatuts { + ...demarcheStatut + } + } + + ${fragmentDemarcheStatut} + ` +) + +const demarcheStatutModifier = apiGraphQLFetch(gql` + mutation DemarcheStatutModifier($element: InputDemarcheStatut!) { + demarcheStatutModifier(demarcheStatut: $element) { + ...demarcheStatut + } + } + + ${fragmentDemarcheStatut} +`) + +const phasesStatuts = apiGraphQLFetch( + gql` + query PhasesStatuts { + phasesStatuts { + ...phaseStatut + } + } + + ${fragmentPhaseStatut} + ` +) + +const phaseStatutModifier = apiGraphQLFetch(gql` + mutation PhaseStatutModifier($element: InputPhaseStatut!) { + phaseStatutModifier(phaseStatut: $element) { + ...phaseStatut + } + } + + ${fragmentPhaseStatut} +`) + +const etapesStatuts = apiGraphQLFetch( + gql` + query EtapesStatuts { + etapesStatuts { + ...etapeStatut + } + } + + ${fragmentEtapeStatut} + ` +) + +const etapesTypes = apiGraphQLFetch( + gql` + query EtapesTypes { + etapesTypes { + ...etapeType + } + } + + ${fragmentEtapeType} + ` +) + +const etapeTypeModifier = apiGraphQLFetch(gql` + mutation EtapeTypeModifier($element: InputEtapeType!) { + etapeTypeModifier(etapeType: $element) { + ...etapeType + } + } + + ${fragmentEtapeType} +`) + +const etapeStatutModifier = apiGraphQLFetch(gql` + mutation EtapeStatutModifier($element: InputEtapeStatut!) { + etapeStatutModifier(etapeStatut: $element) { + ...etapeStatut + } + } + + ${fragmentEtapeStatut} +`) + +const substancesLegales = apiGraphQLFetch( + gql` + query SubstancesLegales { + substancesLegales { + id + nom + description + ordre + } + } + ` +) + +const unites = apiGraphQLFetch( + gql` + query unites { + unites { + ...unite + } + } + + ${fragmentUnite} + ` +) + +const uniteModifier = apiGraphQLFetch(gql` + mutation UniteModifier($element: InputUnite!) { + uniteModifier(unite: $element) { + ...unite + } + } + + ${fragmentUnite} +`) + +const devises = apiGraphQLFetch( + gql` + query Devises { + devises { + ...devise + } + } + + ${fragmentDevise} + ` +) + +const administrationsTypes = apiGraphQLFetch( + gql` + query AdministrationsTypes { + administrationsTypes { + ...administrationType + } + } + + ${fragmentAdministrationType} + ` +) + +const deviseModifier = apiGraphQLFetch(gql` + mutation DeviseModifier($element: InputDevise!) { + deviseModifier(devise: $element) { + ...devise + } + } + + ${fragmentDevise} +`) + +const administrationTypeModifier = apiGraphQLFetch(gql` + mutation AdministrationTypeModifier($element: InputAdministrationType!) { + administrationTypeModifier(administrationType: $element) { + ...administrationType + } + } + + ${fragmentAdministrationType} +`) + +const permissions = apiGraphQLFetch( + gql` + query Permissions { + permissions { + ...permission + } + } + + ${fragmentPermission} + ` +) + +const permissionModifier = apiGraphQLFetch(gql` + mutation permissionModifier($element: InputPermission!) { + permissionModifier(permission: $element) { + ...permission + } + } + + ${fragmentPermission} +`) + +const documentsTypes = apiGraphQLFetch( + gql` + query DocumentsTypes { + documentsTypes { + ...documentType + } + } + + ${fragmentDocumentType} + ` +) + +const documentTypeCreer = apiGraphQLFetch(gql` + mutation documentTypeCreer($element: InputDocumentType!) { + documentTypeCreer(documentType: $element) { + ...documentType + } + } + + ${fragmentDocumentType} +`) + +const documentTypeModifier = apiGraphQLFetch(gql` + mutation documentTypeModifier($element: InputDocumentType!) { + documentTypeModifier(documentType: $element) { + ...documentType + } + } + + ${fragmentDocumentType} +`) + +const referencesTypes = apiGraphQLFetch( + gql` + query ReferencesTypes { + referencesTypes { + ...referenceType + } + } + + ${fragmentReferenceType} + ` +) + +const referenceTypeModifier = apiGraphQLFetch(gql` + mutation ReferenceTypeModifier($element: InputReferenceType!) { + referenceTypeModifier(referenceType: $element) { + ...referenceType + } + } + + ${fragmentReferenceType} +`) + +const pays = apiGraphQLFetch( + gql` + query pays { + pays { + id + nom + } + } + ` +) + +const geoSystemes = apiGraphQLFetch( + gql` + query GeoSystemes { + geoSystemes { + ...geoSysteme + } + } + + ${fragmentGeoSysteme} + ` +) + +const geoSystemeModifier = apiGraphQLFetch(gql` + mutation GeoSystemeModifier($element: InputGeoSysteme!) { + geoSystemeModifier(geoSysteme: $element) { + ...geoSysteme + } + } + + ${fragmentGeoSysteme} +`) + +const titresTypes = apiGraphQLFetch( + gql` + query TitresTypes { + titresTypes { + ...titreType + } + } + + ${fragmentTitreType} + ` +) + +// tables de jointure + +const titreTypeModifier = apiGraphQLFetch(gql` + mutation TitreTypeModifier($element: InputTitreTypeModification!) { + titreTypeModifier(titreType: $element) { + id + typeId + domaineId + titresCreation + contenuIds + } + } +`) + +const titreTypeCreer = apiGraphQLFetch(gql` + mutation TitreTypeCreer($element: InputTitreTypeCreation!) { + titreTypeCreer(titreType: $element) { + id + typeId + domaineId + titresCreation + contenuIds + } + } +`) + +const titreTypeSupprimer = apiGraphQLFetch(gql` + mutation TitreTypeSupprimer($element: InputTitreTypeModification!) { + titreTypeSupprimer(titreType: $element) { + id + typeId + domaineId + titresCreation + contenuIds + } + } +`) + +const titresTypesTitresStatuts = apiGraphQLFetch( + gql` + query TitresTypesTitresStatuts { + titresTypesTitresStatuts { + ...titreTypeTitreStatut + } + } + + ${fragmentTitreTypeTitreStatut} + ` +) + +const titreTypeTitreStatutModifier = apiGraphQLFetch(gql` + mutation TitreTypeTitreStatutModifier($element: InputTitreTypeTitreStatut!) { + titreTypeTitreStatutModifier(titreTypeTitreStatut: $element) { + ...titreTypeTitreStatut + } + } + + ${fragmentTitreTypeTitreStatut} +`) + +const titreTypeTitreStatutCreer = apiGraphQLFetch(gql` + mutation TitreTypeTitreStatutCreer($element: InputTitreTypeTitreStatut!) { + titreTypeTitreStatutCreer(titreTypeTitreStatut: $element) { + ...titreTypeTitreStatut + } + } + + ${fragmentTitreTypeTitreStatut} +`) + +const titreTypeTitreStatutSupprimer = apiGraphQLFetch(gql` + mutation titreTypeTitreStatutSupprimer($element: InputTitreTypeTitreStatut!) { + titreTypeTitreStatutSupprimer(titreTypeTitreStatut: $element) { + ...titreTypeTitreStatut + } + } + + ${fragmentTitreTypeTitreStatut} +`) + +const titresTypesDemarchesTypes = apiGraphQLFetch( + gql` + query TitresTypesDemarchesTypes { + titresTypesDemarchesTypes { + ...titreTypeDemarcheType + } + } + + ${fragmentTitreTypeDemarcheType} + ` +) + +const titreTypeDemarcheTypeModifier = apiGraphQLFetch(gql` + mutation TitreTypeDemarcheTypeModifier( + $element: InputTitreTypeDemarcheType! + ) { + titreTypeDemarcheTypeModifier(titreTypeDemarcheType: $element) { + ...titreTypeDemarcheType + } + } + + ${fragmentTitreTypeDemarcheType} +`) + +const titreTypeDemarcheTypeCreer = apiGraphQLFetch(gql` + mutation TitreTypeDemarcheTypeCreer($element: InputTitreTypeDemarcheType!) { + titreTypeDemarcheTypeCreer(titreTypeDemarcheType: $element) { + ...titreTypeDemarcheType + } + } + + ${fragmentTitreTypeDemarcheType} +`) + +const titreTypeDemarcheTypeSupprimer = apiGraphQLFetch(gql` + mutation TitreTypeDemarcheTypeSupprimer( + $element: InputTitreTypeDemarcheType! + ) { + titreTypeDemarcheTypeSupprimer(titreTypeDemarcheType: $element) { + ...titreTypeDemarcheType + } + } + + ${fragmentTitreTypeDemarcheType} +`) + +const titresTypesDemarchesTypesEtapesTypes = apiGraphQLFetch( + gql` + query TitresTypesDemarchesTypesEtapesTypes { + titresTypesDemarchesTypesEtapesTypes { + ...titreTypeDemarcheTypeEtapeType + } + } + + ${fragmentTitreTypeDemarcheTypeEtapeType} + ` +) + +const titreTypeDemarcheTypeEtapeTypeModifier = apiGraphQLFetch(gql` + mutation TitreTypeDemarcheTypeEtapeTypeModifier( + $element: InputTitreTypeDemarcheTypeEtapeType! + ) { + titreTypeDemarcheTypeEtapeTypeModifier( + titreTypeDemarcheTypeEtapeType: $element + ) { + ...titreTypeDemarcheTypeEtapeType + } + } + + ${fragmentTitreTypeDemarcheTypeEtapeType} +`) + +const titreTypeDemarcheTypeEtapeTypeCreer = apiGraphQLFetch(gql` + mutation TitreTypeDemarcheTypeEtapeTypeCreer( + $element: InputTitreTypeDemarcheTypeEtapeType! + ) { + titreTypeDemarcheTypeEtapeTypeCreer( + titreTypeDemarcheTypeEtapeType: $element + ) { + ...titreTypeDemarcheTypeEtapeType + } + } + + ${fragmentTitreTypeDemarcheTypeEtapeType} +`) + +const titreTypeDemarcheTypeEtapeTypeSupprimer = apiGraphQLFetch(gql` + mutation TitreTypeDemarcheTypeEtapeTypeSupprimer( + $element: InputTitreTypeDemarcheTypeEtapeType! + ) { + titreTypeDemarcheTypeEtapeTypeSupprimer( + titreTypeDemarcheTypeEtapeType: $element + ) { + ...titreTypeDemarcheTypeEtapeType + } + } + + ${fragmentTitreTypeDemarcheTypeEtapeType} +`) + +const titresTypesDemarchesTypesEtapesTypesDocumentsTypes = apiGraphQLFetch( + gql` + query titresTypesDemarchesTypesEtapesTypesDocumentsTypes { + titresTypesDemarchesTypesEtapesTypesDocumentsTypes { + ...titreTypeDemarcheTypeEtapeTypeDocumentType + } + } + + ${fragmentTitreTypeDemarcheTypeEtapeTypeDocumentType} + ` +) + +const titreTypeDemarcheTypeEtapeTypeDocumentTypeModifier = apiGraphQLFetch(gql` + mutation TitreTypeDemarcheTypeEtapeTypeDocumentTypeModifier( + $element: InputTitreTypeDemarcheTypeEtapeTypeDocumentType! + ) { + titreTypeDemarcheTypeEtapeTypeDocumentTypeModifier( + titreTypeDemarcheTypeEtapeTypeDocumentType: $element + ) { + ...titreTypeDemarcheTypeEtapeTypeDocumentType + } + } + + ${fragmentTitreTypeDemarcheTypeEtapeTypeDocumentType} +`) + +const titreTypeDemarcheTypeEtapeTypeDocumentTypeCreer = apiGraphQLFetch(gql` + mutation TitreTypeDemarcheTypeEtapeTypeDocumentTypeCreer( + $element: InputTitreTypeDemarcheTypeEtapeTypeDocumentType! + ) { + titreTypeDemarcheTypeEtapeTypeDocumentTypeCreer( + titreTypeDemarcheTypeEtapeTypeDocumentType: $element + ) { + ...titreTypeDemarcheTypeEtapeTypeDocumentType + } + } + + ${fragmentTitreTypeDemarcheTypeEtapeTypeDocumentType} +`) + +const titreTypeDemarcheTypeEtapeTypeDocumentTypeSupprimer = apiGraphQLFetch(gql` + mutation TitreTypeDemarcheTypeEtapeTypeDocumentTypeSupprimer( + $element: InputTitreTypeDemarcheTypeEtapeTypeDocumentType! + ) { + titreTypeDemarcheTypeEtapeTypeDocumentTypeSupprimer( + titreTypeDemarcheTypeEtapeTypeDocumentType: $element + ) { + ...titreTypeDemarcheTypeEtapeTypeDocumentType + } + } + + ${fragmentTitreTypeDemarcheTypeEtapeTypeDocumentType} +`) + +const titresTypesDemarchesTypesEtapesTypesJustificatifsTypes = apiGraphQLFetch( + gql` + query titresTypesDemarchesTypesEtapesTypesJustificatifsTypes { + titresTypesDemarchesTypesEtapesTypesJustificatifsTypes { + ...titreTypeDemarcheTypeEtapeTypeDocumentType + } + } + + ${fragmentTitreTypeDemarcheTypeEtapeTypeDocumentType} + ` +) + +const titreTypeDemarcheTypeEtapeTypeJustificatifTypeModifier = + apiGraphQLFetch(gql` + mutation TitreTypeDemarcheTypeEtapeTypeJustificatifTypeModifier( + $element: InputTitreTypeDemarcheTypeEtapeTypeDocumentType! + ) { + titreTypeDemarcheTypeEtapeTypeJustificatifTypeModifier( + titreTypeDemarcheTypeEtapeTypeJustificatifType: $element + ) { + ...titreTypeDemarcheTypeEtapeTypeDocumentType + } + } + + ${fragmentTitreTypeDemarcheTypeEtapeTypeDocumentType} + `) + +const titreTypeDemarcheTypeEtapeTypeJustificatifTypeCreer = apiGraphQLFetch(gql` + mutation TitreTypeDemarcheTypeEtapeTypeJustificatifTypeCreer( + $element: InputTitreTypeDemarcheTypeEtapeTypeDocumentType! + ) { + titreTypeDemarcheTypeEtapeTypeJustificatifTypeCreer( + titreTypeDemarcheTypeEtapeTypeJustificatifType: $element + ) { + ...titreTypeDemarcheTypeEtapeTypeDocumentType + } + } + + ${fragmentTitreTypeDemarcheTypeEtapeTypeDocumentType} +`) + +const titreTypeDemarcheTypeEtapeTypeJustificatifTypeSupprimer = + apiGraphQLFetch(gql` + mutation TitreTypeDemarcheTypeEtapeTypeJustificatifTypeSupprimer( + $element: InputTitreTypeDemarcheTypeEtapeTypeDocumentType! + ) { + titreTypeDemarcheTypeEtapeTypeJustificatifTypeSupprimer( + titreTypeDemarcheTypeEtapeTypeJustificatifType: $element + ) { + ...titreTypeDemarcheTypeEtapeTypeDocumentType + } + } + + ${fragmentTitreTypeDemarcheTypeEtapeTypeDocumentType} + `) + +const etapesTypesEtapesStatuts = apiGraphQLFetch( + gql` + query EtapesTypesEtapesStatuts { + etapesTypesEtapesStatuts { + ...etapeTypeEtapeStatut + } + } + + ${fragmentEtapeTypeEtapeStatut} + ` +) + +const etapeTypeEtapeStatutModifier = apiGraphQLFetch(gql` + mutation EtapeTypeEtapeStatutModifier($element: InputEtapeTypeEtapeStatut!) { + etapeTypeEtapeStatutModifier(etapeTypeEtapeStatut: $element) { + ...etapeTypeEtapeStatut + } + } + + ${fragmentEtapeTypeEtapeStatut} +`) + +const etapeTypeEtapeStatutCreer = apiGraphQLFetch(gql` + mutation EtapeTypeEtapeStatutCreer($element: InputEtapeTypeEtapeStatut!) { + etapeTypeEtapeStatutCreer(etapeTypeEtapeStatut: $element) { + ...etapeTypeEtapeStatut + } + } + + ${fragmentEtapeTypeEtapeStatut} +`) + +const etapeTypeEtapeStatutSupprimer = apiGraphQLFetch(gql` + mutation EtapeTypeEtapeStatutSupprimer($element: InputEtapeTypeEtapeStatut!) { + etapeTypeEtapeStatutSupprimer(etapeTypeEtapeStatut: $element) { + ...etapeTypeEtapeStatut + } + } + + ${fragmentEtapeTypeEtapeStatut} +`) + +const etapesTypesDocumentsTypes = apiGraphQLFetch( + gql` + query EtapesTypesDocumentsTypes { + etapesTypesDocumentsTypes { + ...etapeTypeDocumentType + } + } + + ${fragmentEtapeTypeDocumentType} + ` +) + +const etapeTypeDocumentTypeModifier = apiGraphQLFetch(gql` + mutation EtapeTypeDocumentTypeModifier( + $element: InputEtapeTypeDocumentType! + ) { + etapeTypeDocumentTypeModifier(etapeTypeDocumentType: $element) { + ...etapeTypeDocumentType + } + } + + ${fragmentEtapeTypeDocumentType} +`) + +const etapeTypeDocumentTypeCreer = apiGraphQLFetch(gql` + mutation EtapeTypeDocumentTypeCreer($element: InputEtapeTypeDocumentType!) { + etapeTypeDocumentTypeCreer(etapeTypeDocumentType: $element) { + ...etapeTypeDocumentType + } + } + + ${fragmentEtapeTypeDocumentType} +`) + +const etapeTypeDocumentTypeSupprimer = apiGraphQLFetch(gql` + mutation EtapeTypeDocumentTypeSupprimer( + $element: InputEtapeTypeDocumentType! + ) { + etapeTypeDocumentTypeSupprimer(etapeTypeDocumentType: $element) { + ...etapeTypeDocumentType + } + } + + ${fragmentEtapeTypeDocumentType} +`) + +const etapesTypesJustificatifsTypes = apiGraphQLFetch( + gql` + query EtapesTypesJustificatifsTypes { + etapesTypesJustificatifsTypes { + ...etapeTypeJustificatifType + } + } + + ${fragmentEtapeTypeJustificatifType} + ` +) + +const etapeTypeJustificatifTypeModifier = apiGraphQLFetch(gql` + mutation EtapeTypeJustificatifTypeModifier( + $element: InputEtapeTypeJustificatifType! + ) { + etapeTypeJustificatifTypeModifier(etapeTypeJustificatifType: $element) { + ...etapeTypeJustificatifType + } + } + + ${fragmentEtapeTypeJustificatifType} +`) + +const etapeTypeJustificatifTypeCreer = apiGraphQLFetch(gql` + mutation EtapeTypeJustificatifTypeCreer( + $element: InputEtapeTypeJustificatifType! + ) { + etapeTypeJustificatifTypeCreer(etapeTypeJustificatifType: $element) { + ...etapeTypeJustificatifType + } + } + + ${fragmentEtapeTypeJustificatifType} +`) + +const etapeTypeJustificatifTypeSupprimer = apiGraphQLFetch(gql` + mutation EtapeTypeJustificatifTypeSupprimer( + $element: InputEtapeTypeJustificatifType! + ) { + etapeTypeJustificatifTypeSupprimer(etapeTypeJustificatifType: $element) { + ...etapeTypeJustificatifType + } + } + + ${fragmentEtapeTypeJustificatifType} +`) + +export { + definitions, + definitionModifier, + domaines, + domaineModifier, + titresTypesTypes, + titreTypeTypeModifier, + titresStatuts, + titreStatutModifier, + demarchesTypes, + demarcheTypeModifier, + demarchesStatuts, + demarcheStatutModifier, + phasesStatuts, + phaseStatutModifier, + etapesTypes, + etapeTypeModifier, + etapesStatuts, + etapeStatutModifier, + substancesLegales, + permissions, + devises, + deviseModifier, + unites, + uniteModifier, + administrationsTypes, + administrationTypeModifier, + permissionModifier, + documentsTypes, + documentTypeCreer, + documentTypeModifier, + referencesTypes, + referenceTypeModifier, + pays, + geoSystemes, + geoSystemeModifier, + titresTypes, + titreTypeModifier, + titreTypeCreer, + titreTypeSupprimer, + titresTypesTitresStatuts, + titreTypeTitreStatutModifier, + titreTypeTitreStatutCreer, + titreTypeTitreStatutSupprimer, + titresTypesDemarchesTypes, + titreTypeDemarcheTypeModifier, + titreTypeDemarcheTypeCreer, + titreTypeDemarcheTypeSupprimer, + titresTypesDemarchesTypesEtapesTypes, + titreTypeDemarcheTypeEtapeTypeModifier, + titreTypeDemarcheTypeEtapeTypeCreer, + titreTypeDemarcheTypeEtapeTypeSupprimer, + titresTypesDemarchesTypesEtapesTypesDocumentsTypes, + titreTypeDemarcheTypeEtapeTypeDocumentTypeModifier, + titreTypeDemarcheTypeEtapeTypeDocumentTypeCreer, + titreTypeDemarcheTypeEtapeTypeDocumentTypeSupprimer, + titresTypesDemarchesTypesEtapesTypesJustificatifsTypes, + titreTypeDemarcheTypeEtapeTypeJustificatifTypeModifier, + titreTypeDemarcheTypeEtapeTypeJustificatifTypeCreer, + titreTypeDemarcheTypeEtapeTypeJustificatifTypeSupprimer, + etapesTypesEtapesStatuts, + etapeTypeEtapeStatutModifier, + etapeTypeEtapeStatutCreer, + etapeTypeEtapeStatutSupprimer, + etapesTypesDocumentsTypes, + etapeTypeDocumentTypeModifier, + etapeTypeDocumentTypeCreer, + etapeTypeDocumentTypeSupprimer, + etapesTypesJustificatifsTypes, + etapeTypeJustificatifTypeModifier, + etapeTypeJustificatifTypeCreer, + etapeTypeJustificatifTypeSupprimer +} diff --git a/packages/ui/src/api/statistiques.js b/packages/ui/src/api/statistiques.js new file mode 100644 index 0000000000000000000000000000000000000000..a897941a0e75397d44d9e858839987df90f3aca5 --- /dev/null +++ b/packages/ui/src/api/statistiques.js @@ -0,0 +1,107 @@ +import gql from 'graphql-tag' +import { apiGraphQLFetch } from './_client' + +const statistiquesGlobales = apiGraphQLFetch(gql` + query StatistiquesGlobales { + statistiquesGlobales { + titresActivitesBeneficesEntreprise + titresActivitesBeneficesAdministration + recherches { + mois + quantite + } + titresModifies { + mois + quantite + } + actions + sessionDuree + telechargements + demarches + signalements + reutilisations + } + } +`) + +const statistiquesGuyane = apiGraphQLFetch(gql` + query StatistiquesGuyane { + statistiquesGuyane { + surfaceExploration + surfaceExploitation + titresArm + titresPrm + titresAxm + titresPxm + titresCxm + annees { + annee + titresArm { + quantite + surface + } + titresPrm { + quantite + surface + } + titresAxm { + quantite + surface + } + titresPxm { + quantite + surface + } + titresCxm { + quantite + surface + } + orNet + carburantConventionnel + carburantDetaxe + mercure + environnementCout + effectifs + activitesDeposesQuantite + activitesDeposesRatio + } + } + } +`) +const statistiquesGranulatsMarins = apiGraphQLFetch(gql` + query StatistiquesGranulatsMarins { + statistiquesGranulatsMarins { + annees { + annee + titresPrw { + quantite + surface + } + titresPxw { + quantite + surface + } + titresCxw { + quantite + surface + } + volume + masse + activitesDeposesQuantite + activitesDeposesRatio + concessionsValides { + quantite + surface + } + } + surfaceExploration + surfaceExploitation + titresInstructionExploration + titresValPrw + titresInstructionExploitation + titresValCxw + } + } +`) + +export { statistiquesGlobales, statistiquesGuyane, statistiquesGranulatsMarins } diff --git a/packages/ui/src/api/titre-demande.js b/packages/ui/src/api/titre-demande.js new file mode 100644 index 0000000000000000000000000000000000000000..c489bb833ef320ecb18ac9379f3f79a362d08406 --- /dev/null +++ b/packages/ui/src/api/titre-demande.js @@ -0,0 +1,13 @@ +import gql from 'graphql-tag' +import { apiGraphQLFetch } from './_client' + +const titreDemandeCreer = apiGraphQLFetch(gql` + mutation TitreDemandeCreer($titreDemande: InputTitreDemande!) { + titreDemandeCreer(titreDemande: $titreDemande) { + titreEtapeId + titreId + } + } +`) + +export { titreDemandeCreer } diff --git a/packages/ui/src/api/titres-activites.js b/packages/ui/src/api/titres-activites.js new file mode 100644 index 0000000000000000000000000000000000000000..31abcf347ac9b7d05be941856af8e5a9c9bfc512 --- /dev/null +++ b/packages/ui/src/api/titres-activites.js @@ -0,0 +1,95 @@ +import gql from 'graphql-tag' +import { apiGraphQLFetch } from './_client' + +import { fragmentActivites, fragmentActivite } from './fragments/titre-activite' + +const activiteModifier = apiGraphQLFetch(gql` + mutation ActiviteModifier($activite: InputActiviteModification!) { + activiteModifier(activite: $activite) { + id + } + } +`) + +const activiteDeposer = apiGraphQLFetch(gql` + mutation ActiviteDeposer($id: ID!) { + activiteDeposer(id: $id) { + id + } + } +`) + +const activiteSupprimer = apiGraphQLFetch(gql` + mutation ActiviteSupprimer($id: ID!) { + activiteSupprimer(id: $id) { + id + } + } +`) + +const activites = apiGraphQLFetch( + gql` + query Activites( + $intervalle: Int + $page: Int + $colonne: String + $ordre: String + $typesIds: [ID] + $statutsIds: [ID] + $annees: [Int] + $titresTypesIds: [ID] + $titresDomainesIds: [ID] + $titresStatutsIds: [ID] + $titresNoms: String + $titresEntreprises: String + $titresSubstances: String + $titresReferences: String + $titresTerritoires: String + ) { + activites( + intervalle: $intervalle + page: $page + colonne: $colonne + ordre: $ordre + typesIds: $typesIds + statutsIds: $statutsIds + annees: $annees + titresTypesIds: $titresTypesIds + titresDomainesIds: $titresDomainesIds + titresStatutsIds: $titresStatutsIds + titresNoms: $titresNoms + titresEntreprises: $titresEntreprises + titresSubstances: $titresSubstances + titresReferences: $titresReferences + titresTerritoires: $titresTerritoires + ) { + elements { + ...activites + } + total + } + } + + ${fragmentActivites} + ` +) + +const activite = apiGraphQLFetch( + gql` + query Activite($id: ID!) { + activite(id: $id) { + ...activite + } + } + + ${fragmentActivite} + ` +) + +export { + activite, + activites, + activiteModifier, + activiteSupprimer, + activiteDeposer +} diff --git a/packages/ui/src/api/titres-demarches.js b/packages/ui/src/api/titres-demarches.js new file mode 100644 index 0000000000000000000000000000000000000000..6f7f3767abf033afecfaab82d20028b3a9a1e98d --- /dev/null +++ b/packages/ui/src/api/titres-demarches.js @@ -0,0 +1,144 @@ +import gql from 'graphql-tag' +import { apiGraphQLFetch } from './_client' + +import { fragmentDemarcheType } from './fragments/metas' +import { fragmentDemarches } from './fragments/titres-demarches' + +const demarchesMetas = apiGraphQLFetch( + gql` + query MetasDemarches($travaux: Boolean) { + domaines { + id + nom + } + + types { + id + nom + } + + statuts { + id + nom + couleur + } + + demarchesTypes(travaux: $travaux) { + id + nom + } + + demarchesStatuts { + id + nom + couleur + } + + etapesTypes(travaux: $travaux) { + id + nom + etapesStatuts { + id + nom + couleur + } + } + } + ` +) + +const demarcheMetas = apiGraphQLFetch( + gql` + query MetasDemarche($titreId: ID!) { + demarchesTypes(titreId: $titreId) { + ...demarcheType + } + } + + ${fragmentDemarcheType} + ` +) + +const demarches = apiGraphQLFetch( + gql` + query Demarches( + $page: Int + $intervalle: Int + $colonne: String + $ordre: String + $typesIds: [ID!] + $statutsIds: [ID!] + $etapesInclues: [InputEtapeFiltre!] + $etapesExclues: [InputEtapeFiltre!] + $titresDomainesIds: [ID!] + $titresTypesIds: [ID!] + $titresStatutsIds: [ID!] + $titresNoms: String + $titresEntreprises: String + $titresSubstances: String + $titresReferences: String + $titresTerritoires: String + $travaux: Boolean + ) { + demarches( + page: $page + intervalle: $intervalle + colonne: $colonne + ordre: $ordre + typesIds: $typesIds + statutsIds: $statutsIds + etapesInclues: $etapesInclues + etapesExclues: $etapesExclues + titresDomainesIds: $titresDomainesIds + titresTypesIds: $titresTypesIds + titresStatutsIds: $titresStatutsIds + titresNoms: $titresNoms + titresEntreprises: $titresEntreprises + titresSubstances: $titresSubstances + titresReferences: $titresReferences + titresTerritoires: $titresTerritoires + travaux: $travaux + ) { + elements { + ...demarches + } + total + } + } + + ${fragmentDemarches} + ` +) + +const demarcheCreer = apiGraphQLFetch(gql` + mutation DemarcheCreer($demarche: InputDemarcheCreation!) { + demarcheCreer(demarche: $demarche) { + slug + } + } +`) + +const demarcheModifier = apiGraphQLFetch(gql` + mutation DemarcheModifier($demarche: InputDemarcheModification!) { + demarcheModifier(demarche: $demarche) { + slug + } + } +`) + +const demarcheSupprimer = apiGraphQLFetch(gql` + mutation DemarcheSupprimer($id: ID!) { + demarcheSupprimer(id: $id) { + slug + } + } +`) + +export { + demarchesMetas, + demarches, + demarcheMetas, + demarcheCreer, + demarcheModifier, + demarcheSupprimer +} diff --git a/packages/ui/src/api/titres-etapes.js b/packages/ui/src/api/titres-etapes.js new file mode 100644 index 0000000000000000000000000000000000000000..be115e011e743d994a981a9aba03bac0e9015d00 --- /dev/null +++ b/packages/ui/src/api/titres-etapes.js @@ -0,0 +1,166 @@ +import gql from 'graphql-tag' +import { apiGraphQLFetch } from './_client' + +import { + fragmentDevise, + fragmentGeoSysteme, + fragmentUnite +} from './fragments/metas' +import { fragmentSubstance } from './fragments/substance' +import { fragmentEtape, fragmentEtapeHeritage } from './fragments/titre-etape' +import { fragmentEtapeMetasEntreprises } from './fragments/entreprises' + +const titreEtapeEtapesTypes = apiGraphQLFetch( + gql` + query TitreEtapeEtapesTypes( + $titreDemarcheId: ID! + $date: String! + $id: ID + ) { + etapesTypes( + titreDemarcheId: $titreDemarcheId + titreEtapeId: $id + date: $date + ) { + id + nom + description + fondamentale + etapesStatuts { + id + nom + couleur + } + etapesCreation + } + } + ` +) + +const titreEtapeMetas = apiGraphQLFetch( + gql` + query TitreEtapeMetas($titreDemarcheId: ID!, $id: ID) { + demarche(id: $titreDemarcheId) { + id + description + type { + travaux + nom + } + titre { + id + slug + nom + domaine { + id + } + type { + id + type { + id + } + } + } + } + + devises { + ...devise + } + + unites { + ...unite + } + + geoSystemes { + ...geoSysteme + } + + substances { + ...substance + } + + entreprises(archive: false, etapeId: $id) { + elements { + ...etapeMetasEntreprises + } + } + } + + ${fragmentUnite} + + ${fragmentDevise} + + ${fragmentSubstance} + + ${fragmentEtapeMetasEntreprises} + + ${fragmentGeoSysteme} + ` +) + +const etape = apiGraphQLFetch(gql` + query Etape($id: ID!) { + etape(id: $id) { + ...etape + } + } + + ${fragmentEtape} +`) + +const etapeHeritage = apiGraphQLFetch(gql` + query EtapeHeritage($titreDemarcheId: ID!, $date: String!, $typeId: ID!) { + etapeHeritage( + titreDemarcheId: $titreDemarcheId + date: $date + typeId: $typeId + ) { + ...etapeHeritage + } + } + + ${fragmentEtapeHeritage} +`) + +const etapeCreer = apiGraphQLFetch(gql` + mutation EtapeCreer($etape: InputEtapeCreation!) { + etapeCreer(etape: $etape) { + slug + } + } +`) + +const etapeModifier = apiGraphQLFetch(gql` + mutation EtapeModifier($etape: InputEtapeModification!) { + etapeModifier(etape: $etape) { + slug + } + } +`) + +const etapeSupprimer = apiGraphQLFetch(gql` + mutation EtapeSupprimer($id: ID!) { + etapeSupprimer(id: $id) { + slug + } + } +`) + +const etapeDeposer = apiGraphQLFetch(gql` + mutation EtapeDeposer($id: ID!) { + etapeDeposer(id: $id) { + slug + } + } +`) + +export { + etape, + etapeHeritage, + titreEtapeMetas, + titreEtapeEtapesTypes, + etapeCreer, + etapeModifier, + etapeSupprimer, + etapeDeposer +} diff --git a/packages/ui/src/api/titres.js b/packages/ui/src/api/titres.js new file mode 100644 index 0000000000000000000000000000000000000000..e5f7020b779ae8069bca6a45f52adc19149f3d12 --- /dev/null +++ b/packages/ui/src/api/titres.js @@ -0,0 +1,270 @@ +import gql from 'graphql-tag' +import { apiGraphQLFetch } from './_client' + +import { fragmentReferenceType, fragmentTitreTypeType } from './fragments/metas' +import { + fragmentTitre, + fragmentTitres, + fragmentTitresGeo, + fragmentTitresGeoPolygon +} from './fragments/titre' + +const titreMetas = apiGraphQLFetch( + gql` + query MetasTitre { + referencesTypes { + ...referenceType + } + administrations { + elements { + id + nom + } + } + } + + ${fragmentReferenceType} + ` +) + +const titreCreationMetas = apiGraphQLFetch( + gql` + query MetasTitre { + referencesTypes { + ...referenceType + } + } + + ${fragmentReferenceType} + ` +) + +const titresMetas = apiGraphQLFetch( + gql` + query TitresMetas { + domaines { + id + nom + titresTypes { + titresCreation + } + } + + types { + ...titreTypeType + } + + statuts { + id + nom + couleur + } + + substancesLegales { + id + nom + } + + entreprises { + elements { + id + nom + } + } + } + + ${fragmentTitreTypeType} + ` +) + +const titre = apiGraphQLFetch( + gql` + query Titre($id: ID!) { + titre(id: $id) { + ...titre + } + } + + ${fragmentTitre} + ` +) + +const titresGeoPolygon = apiGraphQLFetch( + gql` + query Titres( + $titresIds: [ID!] + $typesIds: [ID!] + $domainesIds: [ID!] + $statutsIds: [ID!] + $substancesLegalesIds: [ID!] + $entreprisesIds: [ID!] + $references: String + $territoires: String + $perimetre: [Float!] + ) { + titres( + ids: $titresIds + typesIds: $typesIds + domainesIds: $domainesIds + statutsIds: $statutsIds + substancesLegalesIds: $substancesLegalesIds + entreprisesIds: $entreprisesIds + references: $references + territoires: $territoires + perimetre: $perimetre + demandeEnCours: true + ) { + elements { + ...titresGeoPolygon + } + total + } + } + + ${fragmentTitresGeoPolygon} + ` +) + +const titresGeo = apiGraphQLFetch( + gql` + query Titres( + $titresIds: [ID!] + $typesIds: [ID!] + $domainesIds: [ID!] + $statutsIds: [ID!] + $substancesLegalesIds: [ID!] + $entreprisesIds: [ID!] + $references: String + $territoires: String + $perimetre: [Float!] + ) { + titres( + ids: $titresIds + typesIds: $typesIds + domainesIds: $domainesIds + statutsIds: $statutsIds + substancesLegalesIds: $substancesLegalesIds + entreprisesIds: $entreprisesIds + references: $references + territoires: $territoires + perimetre: $perimetre + demandeEnCours: true + ) { + elements { + ...titresGeo + } + total + } + } + + ${fragmentTitresGeo} + ` +) + +const titres = apiGraphQLFetch( + gql` + query Titres( + $intervalle: Int + $page: Int + $colonne: String + $ordre: String + $titresIds: [ID!] + $typesIds: [ID!] + $domainesIds: [ID!] + $statutsIds: [ID!] + $substancesLegalesIds: [ID!] + $noms: String + $entreprisesIds: [ID!] + $references: String + $territoires: String + ) { + titres( + intervalle: $intervalle + page: $page + colonne: $colonne + ordre: $ordre + ids: $titresIds + typesIds: $typesIds + domainesIds: $domainesIds + statutsIds: $statutsIds + substancesLegalesIds: $substancesLegalesIds + noms: $noms + entreprisesIds: $entreprisesIds + references: $references + territoires: $territoires + ) { + elements { + ...titres + } + total + } + } + + ${fragmentTitres} + ` +) + +const titresRechercher = apiGraphQLFetch( + gql` + query Titres($intervalle: Int, $noms: String) { + titres(intervalle: $intervalle, noms: $noms) { + elements { + id + nom + } + } + } + `, + 'titresRechercher' +) + +const titresFiltres = apiGraphQLFetch( + gql` + query Titres($titresIds: [ID!]) { + titres(ids: $titresIds) { + elements { + id + nom + } + } + } + `, + 'titresFiltres' +) + +const titreCreer = apiGraphQLFetch(gql` + mutation TitreCreer($titre: InputTitreCreation!) { + titreCreer(titre: $titre) { + slug + } + } +`) + +const titreModifier = apiGraphQLFetch(gql` + mutation TitreModifier($titre: InputTitreModification!) { + titreModifier(titre: $titre) { + slug + } + } +`) + +const titreSupprimer = apiGraphQLFetch(gql` + mutation TitreSupprimer($id: ID!) { + titreSupprimer(id: $id) + } +`) + +export { + titreMetas, + titreCreationMetas, + titresMetas, + titre, + titres, + titresGeo, + titresGeoPolygon, + titreCreer, + titreModifier, + titreSupprimer, + titresRechercher, + titresFiltres +} diff --git a/packages/ui/src/api/utilisateurs-titres.js b/packages/ui/src/api/utilisateurs-titres.js new file mode 100644 index 0000000000000000000000000000000000000000..4bd23e0ce58c8ca427176ee2580c7de369be8f80 --- /dev/null +++ b/packages/ui/src/api/utilisateurs-titres.js @@ -0,0 +1,8 @@ +import gql from 'graphql-tag' +import { apiGraphQLFetch } from './_client' + +export const utilisateurTitreAbonner = apiGraphQLFetch(gql` + mutation UtilisateurTitreAbonner($titreId: String!, $abonner: Boolean!) { + utilisateurTitreAbonner(titreId: $titreId, abonner: $abonner) + } +`) diff --git a/packages/ui/src/api/utilisateurs.js b/packages/ui/src/api/utilisateurs.js new file mode 100644 index 0000000000000000000000000000000000000000..825eecbbe7c08c457313b450799babc151c1a36d --- /dev/null +++ b/packages/ui/src/api/utilisateurs.js @@ -0,0 +1,275 @@ +import gql from 'graphql-tag' +import { apiGraphQLFetch } from './_client' + +import { fragmentUtilisateur } from './fragments/utilisateur' +import { fragmentPermission, fragmentTitreType } from './fragments/metas' +import { fragmentEntreprises } from './fragments/entreprises' +import { fragmentAdministrations } from './fragments/administrations' + +const userMetas = apiGraphQLFetch( + gql` + query MetasUser { + version + + domaines { + id + nom + titresTypes { + ...titreType + } + } + + entreprisesTitresCreation { + ...entreprises + } + } + + ${fragmentTitreType} + + ${fragmentEntreprises} + ` +) + +const utilisateurMetas = apiGraphQLFetch( + gql` + query UtilisateurMetas { + permissions { + ...permission + } + + entreprises { + elements { + ...entreprises + } + } + + administrations { + elements { + ...administrations + } + } + } + + ${fragmentPermission} + + ${fragmentEntreprises} + + ${fragmentAdministrations} + ` +) + +const utilisateur = apiGraphQLFetch( + gql` + query Utilisateur($id: ID!) { + utilisateur(id: $id) { + ...utilisateur + } + } + + ${fragmentUtilisateur} + ` +) + +const utilisateurs = apiGraphQLFetch( + gql` + query Utilisateurs( + $intervalle: Int + $page: Int + $colonne: String + $ordre: String + $entrepriseIds: [ID] + $administrationIds: [ID] + $permissionIds: [ID] + $noms: String + $emails: String + ) { + utilisateurs( + intervalle: $intervalle + page: $page + colonne: $colonne + ordre: $ordre + entrepriseIds: $entrepriseIds + administrationIds: $administrationIds + permissionIds: $permissionIds + noms: $noms + emails: $emails + ) { + elements { + ...utilisateur + } + total + } + } + + ${fragmentUtilisateur} + ` +) + +const utilisateurConnecter = apiGraphQLFetch(gql` + mutation utilisateurConnecter($email: String!, $motDePasse: String!) { + utilisateurConnecter(email: $email, motDePasse: $motDePasse) { + ...utilisateur + } + } + + ${fragmentUtilisateur} +`) + +const utilisateurDeconnecter = apiGraphQLFetch(gql` + mutation utilisateurDeconnecter { + utilisateurDeconnecter + } +`) + +const utilisateurCerbereTokenCreer = apiGraphQLFetch(gql` + mutation UtilisateurCerbereTokenCreer($ticket: String!) { + utilisateurCerbereConnecter(ticket: $ticket) { + ...utilisateur + } + } + + ${fragmentUtilisateur} +`) + +const utilisateurCerbereUrlObtenir = apiGraphQLFetch(gql` + mutation UtilisateurCerbereUrlObtenir($url: String!) { + utilisateurCerbereUrlObtenir(url: $url) + } +`) + +const moi = apiGraphQLFetch(gql` + query Moi { + moi { + ...utilisateur + } + } + + ${fragmentUtilisateur} +`) + +const utilisateurModifier = apiGraphQLFetch(gql` + mutation UtilisateurModifier($utilisateur: InputUtilisateurModification!) { + utilisateurModifier(utilisateur: $utilisateur) { + ...utilisateur + } + } + + ${fragmentUtilisateur} +`) + +const utilisateurCreer = apiGraphQLFetch(gql` + mutation UtilisateurCreer( + $utilisateur: InputUtilisateurCreation! + $token: String + ) { + utilisateurCreer(utilisateur: $utilisateur, token: $token) { + ...utilisateur + } + } + + ${fragmentUtilisateur} +`) + +const utilisateurSupprimer = apiGraphQLFetch(gql` + mutation UtilisateurSupprimer($id: ID!) { + utilisateurSupprimer(id: $id) { + ...utilisateur + } + } + + ${fragmentUtilisateur} +`) + +const utilisateurMotDePasseModifier = apiGraphQLFetch(gql` + mutation UtilisateurMotDePasseModifier( + $id: ID! + $motDePasse: String! + $motDePasseNouveau1: String! + $motDePasseNouveau2: String! + ) { + utilisateurMotDePasseModifier( + id: $id + motDePasse: $motDePasse + motDePasseNouveau1: $motDePasseNouveau1 + motDePasseNouveau2: $motDePasseNouveau2 + ) { + ...utilisateur + } + } + + ${fragmentUtilisateur} +`) + +const utilisateurMotDePasseInitialiser = apiGraphQLFetch(gql` + mutation UtilisateurMotDePasseInitialiser( + $motDePasse1: String! + $motDePasse2: String! + $token: String! + ) { + utilisateurMotDePasseInitialiser( + motDePasse1: $motDePasse1 + motDePasse2: $motDePasse2 + token: $token + ) { + ...utilisateur + } + } + + ${fragmentUtilisateur} +`) + +const utilisateurMotDePasseMessageEnvoyer = apiGraphQLFetch(gql` + mutation UtilisateurMotDePasseMessageEnvoyer($email: String!) { + utilisateurMotDePasseMessageEnvoyer(email: $email) + } +`) + +const utilisateurCreationMessageEnvoyer = apiGraphQLFetch(gql` + mutation UtilisateurCreationMessageEnvoyer($email: String!) { + utilisateurCreationMessageEnvoyer(email: $email) + } +`) + +const utilisateurEmailMessageEnvoyer = apiGraphQLFetch(gql` + mutation UtilisateurEmailMessageEnvoyer($email: String!) { + utilisateurEmailMessageEnvoyer(email: $email) + } +`) + +const utilisateurEmailModifier = apiGraphQLFetch(gql` + mutation UtilisateurEmailModifier($emailToken: String!) { + utilisateurEmailModifier(emailToken: $emailToken) { + ...utilisateur + } + } + + ${fragmentUtilisateur} +`) + +const newsletterInscrire = apiGraphQLFetch(gql` + mutation NewsletterInscrire($email: String!) { + newsletterInscrire(email: $email) + } +`) + +export { + userMetas, + utilisateurMetas, + utilisateur, + utilisateurs, + moi, + utilisateurConnecter, + utilisateurDeconnecter, + utilisateurCerbereTokenCreer, + utilisateurCerbereUrlObtenir, + utilisateurModifier, + utilisateurCreer, + utilisateurSupprimer, + utilisateurMotDePasseModifier, + utilisateurMotDePasseInitialiser, + utilisateurMotDePasseMessageEnvoyer, + utilisateurCreationMessageEnvoyer, + utilisateurEmailMessageEnvoyer, + utilisateurEmailModifier, + newsletterInscrire +} diff --git a/packages/ui/src/app.vue b/packages/ui/src/app.vue new file mode 100644 index 0000000000000000000000000000000000000000..2317a3a7baf1a15d96af0bdb59a72b3cacc2c8b3 --- /dev/null +++ b/packages/ui/src/app.vue @@ -0,0 +1,130 @@ +<template> + <Page :slot-popup="!!popup.component" :slot-loader="loading"> + <template v-if="false" #banner> + <div class="banner"> + <div class="container py-m"> + <p class="mb-0"> + <span class="bold">8 avril 2021</span> : Aenean eu leo quam. + Pellentesque ornare sem lacinia quam venenatis vestibulum. + </p> + </div> + </div> + </template> + + <template v-if="menu.component" #menu> + <component :is="menu.component" /> + </template> + + <header class="header"> + <div class="container"> + <PageHeader :loaded="loaded" /> + </div> + </header> + + <main class="main"> + <div class="container"> + <Error v-if="error" :message="error" /> + <RouterView v-else-if="loaded" /> + </div> + </main> + + <footer class="footer"> + <div class="container"> + <PageFooter /> + </div> + </footer> + + <template #messages> + <Messages id="cmn-app-messages" :messages="messages" /> + </template> + + <template v-if="popup.component" #popup> + <component :is="popup.component" v-bind="popup.props" /> + </template> + + <template v-if="loading || fileLoading.total" #loader> + <div class="loaders fixed p"> + <div v-if="loading" class="loader" /> + <div v-if="fileLoading.total"> + <div class="relative loader-file"> + <div + class="loader-file-bar" + :style="{ + right: `${ + 100 - 100 * (fileLoading.loaded / fileLoading.total) + }%` + }" + /> + </div> + </div> + </div> + </template> + </Page> +</template> + +<script> +import Page from './components/_ui/page.vue' +import Messages from './components/_ui/messages.vue' +import PageHeader from './components/page/header.vue' +import PageFooter from './components/page/footer.vue' +import Error from './components/error.vue' + +export default { + name: 'App', + + components: { + Page, + Messages, + PageHeader, + PageFooter, + Error + }, + + computed: { + user() { + return this.$store.state.user.element + }, + + loaded() { + return this.$store.state.user.loaded + }, + + error() { + return this.$store.state.error + }, + + messages() { + return this.$store.state.messages + }, + + popup() { + return this.$store.state.popup + }, + + menu() { + return this.$store.state.menu + }, + + loading() { + return this.$store.state.loading.length > 0 + }, + + fileLoading() { + return this.$store.state.fileLoading + } + }, + + async created() { + this.viewTrack() + }, + + methods: { + viewTrack() { + if (this.$matomo) { + this.$matomo.customVariableVisitUser(this.user) + this.$matomo.trackPageView() + } + } + } +} +</script> diff --git a/packages/ui/src/components/_charts/bar.vue b/packages/ui/src/components/_charts/bar.vue new file mode 100644 index 0000000000000000000000000000000000000000..b93ffe2ef9f62a7a7c79af8a6ba7625d22206053 --- /dev/null +++ b/packages/ui/src/components/_charts/bar.vue @@ -0,0 +1,70 @@ +<template> + <canvas ref="canvas" /> +</template> + +<script> +import { + Chart, + LinearScale, + BarController, + CategoryScale, + BarElement, + LineController, + PointElement, + LineElement, + Filler, + Legend, + Tooltip +} from 'chart.js' + +Chart.register( + LinearScale, + BarController, + CategoryScale, + BarElement, + LineController, + PointElement, + LineElement, + Filler, + Legend, + Tooltip +) + +export default { + props: { + data: { type: Object, required: true }, + aspectRatio: { type: Number, default: 2 }, + suggestedMax: { type: Number, default: 0 } + }, + + data() { + return { + canvas: null + } + }, + + mounted() { + this.canvas = this.$refs.canvas + + // eslint-disable-next-line no-new + new Chart(this.canvas.getContext('2d'), { + type: 'bar', + data: this.data, + options: { + locale: 'fr-FR', + aspectRatio: this.aspectRatio, + responsive: true, + scales: { + bar: { id: 'bar', min: 0, suggestedMax: this.suggestedMax }, + line: { id: 'line', min: 0, position: 'right' } + }, + plugins: { + legend: { + reverse: true + } + } + } + }) + } +} +</script> diff --git a/packages/ui/src/components/_charts/line.vue b/packages/ui/src/components/_charts/line.vue new file mode 100644 index 0000000000000000000000000000000000000000..d01424ef861b6a85b97a3dda40b5297a73d2706b --- /dev/null +++ b/packages/ui/src/components/_charts/line.vue @@ -0,0 +1,54 @@ +<template> + <canvas ref="canvas" /> +</template> + +<script> +import { + Chart, + LinearScale, + LineController, + CategoryScale, + PointElement, + LineElement, + Filler, + Legend, + Tooltip +} from 'chart.js' + +Chart.register( + LinearScale, + LineController, + CategoryScale, + PointElement, + LineElement, + Filler, + Legend, + Tooltip +) + +export default { + props: { + data: { type: Object, required: true } + }, + + data() { + return { + canvas: null + } + }, + + mounted() { + this.canvas = this.$refs.canvas + + // eslint-disable-next-line no-new + new Chart(this.canvas.getContext('2d'), { + type: 'line', + data: this.data, + options: { + locale: 'fr-FR', + aspectRatio: 1.33 + } + }) + } +} +</script> diff --git a/packages/ui/src/components/_common/coordonnees-icone.vue b/packages/ui/src/components/_common/coordonnees-icone.vue new file mode 100644 index 0000000000000000000000000000000000000000..3718481ce8d9149a49bb68a6e4cca12f80136fa3 --- /dev/null +++ b/packages/ui/src/components/_common/coordonnees-icone.vue @@ -0,0 +1,11 @@ +<template> + <div v-if="coordonnees" class="p-xs"><i class="icon-16 icon-globe" /></div> +</template> + +<script> +export default { + props: { + coordonnees: { type: Object, default: null } + } +} +</script> diff --git a/packages/ui/src/components/_common/domaine.vue b/packages/ui/src/components/_common/domaine.vue new file mode 100644 index 0000000000000000000000000000000000000000..623d89155f0ae35980bc19b3e04c26f6f4921c77 --- /dev/null +++ b/packages/ui/src/components/_common/domaine.vue @@ -0,0 +1,18 @@ +<template> + <Pill :color="`bg-domaine-${domaineId}`" class="mono"> + {{ domaineId }} + </Pill> +</template> + +<script> +import Pill from '../_ui/pill.vue' + +export default { + components: { + Pill + }, + props: { + domaineId: { type: String, default: 'm' } + } +} +</script> diff --git a/packages/ui/src/components/_common/download.vue b/packages/ui/src/components/_common/download.vue new file mode 100644 index 0000000000000000000000000000000000000000..76536c01b028c2c5c307935ae962410fd2089886 --- /dev/null +++ b/packages/ui/src/components/_common/download.vue @@ -0,0 +1,47 @@ +<template> + <button class="flex" @click="download"> + <span class="mt-xxs">{{ format }}</span> + <div class="flex-right pl-xs"> + <i class="icon-24 icon-download" /> + </div> + </button> +</template> + +<script> +export default { + props: { + section: { type: String, required: true }, + + format: { type: String, required: true }, + + query: { type: Object, default: () => ({}) }, + + params: { type: Object, default: () => ({}) } + }, + + emits: ['clicked'], + + methods: { + async download() { + this.$emit('clicked') + const query = new URLSearchParams({ + format: this.format, + ...this.query, + ...this.params + }).toString() + + const url = `/${this.section}?${query}` + + await this.$store.dispatch('download', url) + + this.linkTrack(url) + }, + + linkTrack(url) { + if (this.$matomo) { + this.$matomo.trackLink(`${window.location.origin}${url}`, 'download') + } + } + } +} +</script> diff --git a/packages/ui/src/components/_common/downloads.vue b/packages/ui/src/components/_common/downloads.vue new file mode 100644 index 0000000000000000000000000000000000000000..99fce0d42c07f55bfbbcd36a6fc9660d2fa67538 --- /dev/null +++ b/packages/ui/src/components/_common/downloads.vue @@ -0,0 +1,51 @@ +<template> + <Dropdown class="full-x" :opened="opened" @toggle="toggle"> + <template #title> + <span class="h6">Téléchargements</span> + </template> + <div> + <Download + v-for="format in formats" + :key="format" + :format="format" + class="btn-alt small px-s py-s full-x border-b-s" + :section="section" + :query="$route.query" + :params="params" + @clicked="toggle" + /> + </div> + </Dropdown> +</template> + +<script> +import Dropdown from '../_ui/dropdown.vue' +import Download from './download.vue' + +export default { + components: { + Dropdown, + Download + }, + + props: { + formats: { type: Array, required: true }, + + section: { type: String, required: true }, + + params: { type: Object, default: () => ({}) } + }, + + data() { + return { + opened: false + } + }, + + methods: { + toggle() { + this.opened = !this.opened + } + } +} +</script> diff --git a/packages/ui/src/components/_common/filtres.js b/packages/ui/src/components/_common/filtres.js new file mode 100644 index 0000000000000000000000000000000000000000..5d376d12a098f7155b7226ed28ce7b48bdc579d2 --- /dev/null +++ b/packages/ui/src/components/_common/filtres.js @@ -0,0 +1,10 @@ +// supprime les valeurs vides +const valuesClean = values => { + if (!values) return [] + + values = values.filter(v => v !== '') + + return values +} + +export { valuesClean } diff --git a/packages/ui/src/components/_common/filtres.vue b/packages/ui/src/components/_common/filtres.vue new file mode 100644 index 0000000000000000000000000000000000000000..44e0e1c9c91e0e3d1e06295b6cbc3eeb2860698a --- /dev/null +++ b/packages/ui/src/components/_common/filtres.vue @@ -0,0 +1,128 @@ +<template> + <Filters + v-if="initialized" + v-model:filters="filters" + class="flex-grow" + button="Valider" + :opened="opened" + title="Filtres" + @validate="validate" + @toggle="toggle" + /> + <div v-else class="py-s px-m mb-s border rnd-s">…</div> +</template> + +<script> +import Filters from '../_ui/filters.vue' +import { valuesClean } from './filtres' + +export default { + components: { Filters }, + + props: { + filtres: { type: Array, required: true }, + params: { type: Object, required: true }, + metas: { type: Object, default: () => ({}) }, + initialized: { type: Boolean, required: true } + }, + + emits: ['toggle', 'params-update'], + + data() { + return { + opened: false, + filters: [] + } + }, + + watch: { + // si les metas changent (connexion / deconnexion user) + metas: { + handler: function (ne, ol) { + if (this.initialized) { + this.validate() + } + }, + deep: true + }, + + initialized: function (to, from) { + if (!from) { + this.init() + } + } + }, + + methods: { + paramsUpdate(params) { + this.$emit('params-update', params) + }, + + toggle() { + this.opened = !this.opened + + this.init() + this.$emit('toggle', this.opened) + }, + + close() { + this.opened = false + }, + + validate() { + // les champs textes sont mis à jour onBlur + // pour les prendre en compte lorsqu'on valide en appuyant sur "entrée" + // met le focus sur le bouton de validation (dans la méthode close()) + + this.close() + + window.scrollTo({ top: 0, behavior: 'smooth' }) + + // formate les valeurs des filtres + const params = this.filters.reduce((params, filtre) => { + let value + + if ( + filtre.type === 'custom' || + filtre.type === 'select' || + filtre.type === 'checkboxes' || + filtre.type === 'autocomplete' + ) { + value = valuesClean(filtre.value) + } else { + value = filtre.value + } + + if (filtre.clean) { + value = filtre.clean(value) + } + + params[filtre.id] = value + + return params + }, {}) + + this.paramsUpdate(params) + }, + + init() { + this.filters = this.filtres.map(filtre => { + if (filtre.elementsFormat) { + filtre.elements = filtre.elementsFormat(filtre.id, this.metas) + } + + return filtre + }) + + Object.keys(this.params).forEach(id => { + const preference = this.params[id] + const filtre = this.filters.find(filtre => filtre.id === id) + + if (!filtre) return + + filtre.value = preference + }) + } + } +} +</script> diff --git a/packages/ui/src/components/_common/filtres/domaines.vue b/packages/ui/src/components/_common/filtres/domaines.vue new file mode 100644 index 0000000000000000000000000000000000000000..d7c8b3b6467accfc72bdf3596e6fbdb305c9c0fd --- /dev/null +++ b/packages/ui/src/components/_common/filtres/domaines.vue @@ -0,0 +1,21 @@ +<template> + <span> + <Pill :color="`bg-domaine-${element.id}`" class="mr-xs mono"> + {{ element.id }} </Pill + ><span class="cap-first h6 bold">{{ element.nom }}</span> + </span> +</template> + +<script> +import Pill from '../../_ui/pill.vue' + +export default { + components: { + Pill + }, + + props: { + element: { type: Object, default: () => ({}) } + } +} +</script> diff --git a/packages/ui/src/components/_common/filtres/statuts.vue b/packages/ui/src/components/_common/filtres/statuts.vue new file mode 100644 index 0000000000000000000000000000000000000000..b872b4afe7f144ad04e5d4e65a86803ecef04b1f --- /dev/null +++ b/packages/ui/src/components/_common/filtres/statuts.vue @@ -0,0 +1,21 @@ +<template> + <Statut + :color="element.couleur" + :nom="element.nom" + class="inline-block mb-s" + /> +</template> + +<script> +import Statut from '../statut.vue' + +export default { + components: { + Statut + }, + + props: { + element: { type: Object, default: () => ({}) } + } +} +</script> diff --git a/packages/ui/src/components/_common/filtres/types.vue b/packages/ui/src/components/_common/filtres/types.vue new file mode 100644 index 0000000000000000000000000000000000000000..5a749a783b7809ea0340da0de2524857fec85ec5 --- /dev/null +++ b/packages/ui/src/components/_common/filtres/types.vue @@ -0,0 +1,16 @@ +<template> + <span> + <svg width="24" height="24" class="mr-s mb--xs"> + <rect width="24" height="24" :class="`svg-fill-pattern-${element.id}`" /> + </svg> + <span class="cap-first h6 bold">{{ element.nom }}</span> + </span> +</template> + +<script> +export default { + props: { + element: { type: Object, default: () => ({}) } + } +} +</script> diff --git a/packages/ui/src/components/_common/liste.vue b/packages/ui/src/components/_common/liste.vue new file mode 100644 index 0000000000000000000000000000000000000000..690fb311beda6805467b2148327d683dba03bc49 --- /dev/null +++ b/packages/ui/src/components/_common/liste.vue @@ -0,0 +1,119 @@ +<template> + <div> + <div class="desktop-blobs"> + <div class="desktop-blob-2-3"> + <h1 class="mt-xs mb-m cap-first"> + {{ nom }} + </h1> + </div> + + <div class="desktop-blob-1-3"> + <slot name="addButton" /> + </div> + </div> + + <Filtres + v-if="filtres.length" + :filtres="filtres" + :initialized="initialized" + :metas="metas" + :params="params.filtres" + @params-update="paramsFiltresUpdate" + /> + + <div class="tablet-blobs tablet-flex-direction-reverse"> + <div class="tablet-blob-1-3 flex mb-s"> + <slot name="downloads" class="downloads" /> + </div> + + <div class="tablet-blob-2-3 flex"> + <div class="py-m h5 bold mb-xs"> + {{ resultat }} + </div> + </div> + </div> + + <div class="line-neutral width-full" /> + + <Table + :columns="colonnes" + :rows="lignes" + :column="params.table.colonne" + :range="params.table.intervalle" + :order="params.table.ordre" + :page="params.table.page" + :pagination="pagination" + :total="total" + @params-update="paramsTableUpdate" + /> + </div> +</template> + +<script> +import Table from '../_ui/table-pagination.vue' +import Filtres from './filtres.vue' + +export default { + name: 'Liste', + + components: { Filtres, Table }, + + props: { + nom: { type: String, required: true }, + filtres: { type: Array, default: () => [] }, + colonnes: { type: Array, required: true }, + lignes: { type: Array, required: true }, + elements: { type: Array, required: true }, + params: { type: Object, required: true }, + metas: { type: Object, default: () => ({}) }, + total: { type: Number, required: true }, + initialized: { type: Boolean, default: false } + }, + + emits: ['params-update'], + + computed: { + resultat() { + const res = + this.total > this.elements.length + ? `${this.elements.length} / ${this.total}` + : this.elements.length + + return `${res} résultat${this.elements.length > 1 ? 's' : ''}` + }, + + pagination() { + return !!this.params.table.page + } + }, + + methods: { + async paramsTableUpdate(params) { + if (params.range) { + params.intervalle = params.range + delete params.range + } + + if (params.column) { + params.colonne = params.column + delete params.column + } + + if (params.order) { + params.ordre = params.order + delete params.order + } + + await this.$emit('params-update', { section: 'table', params }) + }, + + paramsFiltresUpdate(params) { + this.$emit('params-update', { + section: 'filtres', + params, + pageReset: true + }) + } + } +} +</script> diff --git a/packages/ui/src/components/_common/map.vue b/packages/ui/src/components/_common/map.vue new file mode 100644 index 0000000000000000000000000000000000000000..2d90e1c4f6de1cebe1e81656f0a31a036a0c3b58 --- /dev/null +++ b/packages/ui/src/components/_common/map.vue @@ -0,0 +1,197 @@ +<template> + <div class="bg-alt"> + <MapPattern :domaines-ids="[domaineId]" :types-ids="[titreTypeId]" /> + + <Mapo + ref="map" + :tiles-layer="tilesLayer" + :geojson-layers="geojsonLayers" + :marker-layers="markerLayers" + :bounds="bounds" + :legends="legends" + class="map map-detail mb-s" + /> + + <MapWarningBrgm :zoom="zoom" :tiles-id="tilesId" /> + + <div :class="{ container: isMain }"> + <div class="tablet-blobs"> + <div class="tablet-blob-1-2" :class="{ 'px-s': !isMain }"> + <div class="flex mb-s"> + <button class="btn-border pill px-m py-s" @click="centrerTrack"> + Centrer + </button> + </div> + </div> + <div class="desktop-blob-1-2 desktop-flex"> + <div :class="{ active: markersVisible }" class="mb-s mr-xs"> + <button + class="btn-border p-s rnd-s" + title="affiche / masque les marqueurs" + @click="markersVisible = !markersVisible" + > + <i class="icon-24 icon-markers-markers" /> + </button> + </div> + + <div :class="{ active: patternVisible }" class="mb-s mr-xs"> + <button + class="btn-border p-s rnd-s" + title="affiche / masque la trame" + @click="patternVisible = !patternVisible" + > + <i class="icon-24 icon-pattern" /> + </button> + </div> + + <MapTilesSelector + v-if="isMain" + :tiles="tiles" + :tiles-id="tilesId" + class="flex-grow mb-s" + @params-update="preferencesUpdate" + /> + </div> + </div> + </div> + </div> +</template> + +<script> +import Mapo from '../_map/index.vue' +import MapTilesSelector from '../_map/tiles-selector.vue' +import MapWarningBrgm from '../_map/warning-brgm.vue' +import MapPattern from '../_map/pattern.vue' + +import { + leafletTilesBuild, + leafletMarkerBuild, + leafletGeojsonBuild, + leafletDivIconBuild, + leafletTilesLegendGet +} from '../_map/leaflet.js' + +export default { + components: { MapPattern, MapWarningBrgm, Mapo, MapTilesSelector }, + + props: { + geojson: { type: Object, required: true }, + points: { type: Array, default: () => [] }, + domaineId: { type: String, required: true }, + titreTypeId: { type: String, required: true }, + isMain: { type: Boolean, default: false } + }, + + emits: ['titre-event-track'], + + data() { + return { + map: null, + zoom: 0, + markersVisible: true, + patternVisible: true + } + }, + + computed: { + bounds() { + return this.geojsonLayers[0] ? this.geojsonLayers[0].getBounds() : [0, 0] + }, + + tilesActive() { + return this.$store.getters['user/tilesActive'] + }, + + tilesLayer() { + return leafletTilesBuild(this.tilesActive) + }, + + legends() { + return leafletTilesLegendGet(this.tilesActive) + }, + + geojsonLayers() { + const className = this.patternVisible + ? `svg-fill-pattern-${this.titreTypeId}-${this.domaineId}` + : `svg-fill-domaine-${this.domaineId}` + + const options = { + style: { fillOpacity: 0.75, weight: 1, color: 'white', className } + } + + const geojsonLayer = leafletGeojsonBuild(this.geojson, options) + + return [geojsonLayer] + }, + + markerLayers() { + if (this.markersVisible) { + return this.points.reduce((markers, point) => { + if (!point.nom) { + return markers + } + + const icon = leafletDivIconBuild({ + className: `small mono border-bg color-text py-xs px-s inline-block leaflet-marker-camino cap pill bg-bg`, + html: point.nom, + iconSize: null, + iconAnchor: [15.5, 38] + }) + + const latLng = [point.coordonnees.y, point.coordonnees.x] + const titreMarker = leafletMarkerBuild(latLng, icon) + + markers.push(titreMarker) + + return markers + }, []) + } + + return [] + }, + + tiles() { + return this.$store.state.user.metas.tiles + }, + + tilesId() { + return this.$store.state.user.preferences.carte.tilesId + } + }, + + watch: { + geojson: 'centrer', + points: 'centrer' + }, + + mounted() { + this.centrer() + }, + + methods: { + preferencesUpdate(params) { + this.$emit('titre-event-track', { + categorie: 'titre-sections', + action: 'titre-carte_choisirFond', + nom: this.$route.params.id + }) + + this.$store.dispatch('user/preferencesSet', { section: 'carte', params }) + }, + + centrerTrack() { + this.centrer() + + this.$emit('titre-event-track', { + categorie: 'titre-sections', + action: 'titre-carte_centrer', + nom: this.$route.params.id + }) + }, + + centrer() { + this.$refs.map.boundsFit(this.bounds) + } + } +} +</script> diff --git a/packages/ui/src/components/_common/nom.vue b/packages/ui/src/components/_common/nom.vue new file mode 100644 index 0000000000000000000000000000000000000000..cfdcfb79e6b071717a4d8c15c0526a51e3401603 --- /dev/null +++ b/packages/ui/src/components/_common/nom.vue @@ -0,0 +1,13 @@ +<template> + <p class="h6 bold cap-first mb-0"> + {{ nom }} + </p> +</template> + +<script> +export default { + props: { + nom: { type: String, default: 'indéfini' } + } +} +</script> diff --git a/packages/ui/src/components/_common/perimetre.vue b/packages/ui/src/components/_common/perimetre.vue new file mode 100644 index 0000000000000000000000000000000000000000..3ffd608389e91b4613313579fea730eb9ffed6d5 --- /dev/null +++ b/packages/ui/src/components/_common/perimetre.vue @@ -0,0 +1,101 @@ +<template> + <div> + <div class="tablet-blobs tablet-flex-direction-reverse"> + <div class="tablet-blob-1-2 flex mb-s"> + <Download + v-if="points.length && titreId" + :section="`titres/${titreId}`" + format="geojson" + class="btn-border small pill pl pr-m py-s flex-right" + > + geojson + </Download> + </div> + + <div class="tablet-blob-1-2 flex"> + <div + v-for="tab in tabs" + :key="tab.id" + class="mr-xs" + :class="{ active: tabId === tab.id }" + > + <button + v-if="tabId !== tab.id" + class="p-m btn-tab rnd-t-s" + @click="tabUpdate(tab.id)" + > + <i :class="`icon-${tab.icon}`" class="icon-24" /> + </button> + <div v-else class="p-m span-tab rnd-t-s"> + <i :class="`icon-${tab.icon}`" class="icon-24" /> + </div> + </div> + </div> + </div> + + <div class="line-neutral" :class="{ 'width-full': isMain }" /> + + <Map + v-if="points && geojsonMultiPolygon && tabId === 'carte'" + :class="{ 'width-full': isMain }" + :geojson="geojsonMultiPolygon" + :points="points" + :domaine-id="domaineId" + :titre-type-id="titreTypeId" + :is-main="isMain" + /> + + <div + v-if="points && tabId === 'points'" + class="points bg-alt" + :class="{ 'width-full': isMain }" + > + <div class="bg-bg py" :class="{ container: isMain }"> + <Points :points="points" /> + </div> + </div> + + <div class="line mb" :class="{ 'width-full': isMain }" /> + </div> +</template> + +<script> +import Map from './map.vue' +import Points from './points.vue' +import Download from './download.vue' + +export default { + components: { + Map, + Points, + Download + }, + + props: { + points: { type: Array, required: true }, + geojsonMultiPolygon: { type: Object, required: true }, + domaineId: { type: String, required: true }, + titreTypeId: { type: String, required: true }, + titreId: { type: String, default: '' }, + isMain: { type: Boolean, default: false }, + tabId: { type: String, default: 'carte' } + }, + + emits: ['tab-update'], + + data() { + return { + tabs: [ + { id: 'carte', nom: 'Carte', icon: 'globe' }, + { id: 'points', nom: 'Points', icon: 'list' } + ] + } + }, + + methods: { + tabUpdate(tabId) { + this.$emit('tab-update', tabId) + } + } +} +</script> diff --git a/packages/ui/src/components/_common/point-reference.vue b/packages/ui/src/components/_common/point-reference.vue new file mode 100644 index 0000000000000000000000000000000000000000..5dc62122d1b27ff007a1ce400b79a0ea68f0c121 --- /dev/null +++ b/packages/ui/src/components/_common/point-reference.vue @@ -0,0 +1,42 @@ +<template> + <div class="blobs-packed mb-s"> + <div class="blob-packed-1-2 border-l px-s"> + <p class="h6 flex my-xxs"> + <span class="flex-right mono bold">{{ pointReference[0] }}</span> + </p> + </div> + <div class="blob-packed-1-2 border-l px-s"> + <p class="h6 flex my-xxs"> + <span class="flex-right mono bold">{{ pointReference[1] }}</span> + </p> + </div> + </div> +</template> + +<script> +import numberFormat from '../../utils/number-format' +export default { + props: { + references: { type: Object, required: true } + }, + + computed: { + pointReference() { + if (this.references && this.references.x && this.references.y) { + return [ + numberFormat(this.round(this.references.x)), + numberFormat(this.round(this.references.y)) + ] + } + + return ['–', '–'] + } + }, + + methods: { + round(v) { + return Math.round(Number.parseFloat(v) * 1000000) / 1000000 + } + } +} +</script> diff --git a/packages/ui/src/components/_common/points.vue b/packages/ui/src/components/_common/points.vue new file mode 100644 index 0000000000000000000000000000000000000000..6cd11c3ed9c86a503596dfae639499a45016741d --- /dev/null +++ b/packages/ui/src/components/_common/points.vue @@ -0,0 +1,151 @@ +<template> + <div v-if="geoSysteme"> + <div class="px"> + <div class="tablet-blobs flex-align-items-stretch"> + <div class="tablet-blob-1-2"> + <select + v-if="geoSystemes.length > 1" + v-model="geoSystemeId" + class="p-s mr-s mb-s" + > + <option + v-for="systeme in geoSystemes" + :key="systeme.id" + :value="systeme.id" + > + {{ systeme.nom }} - {{ systeme.id }} + {{ systeme.id === geoSystemeOpposableId ? '(opposable)' : '' }} + </option> + </select> + <div v-else class="full-x p-s bg-alt mb-s"> + {{ geoSysteme.nom }} ({{ geoSysteme.id }}) + </div> + </div> + <div class="tablet-blob-1-2 flex flex-align-items-stretch"> + <div class="blobs-packed flex-grow flex-align-items-stretch mb-s"> + <div class="blob-packed-1-2 full-y border-l pl-s pt-xs"> + <h5 class="mb-0"> + {{ labels[0] }} + </h5> + <p class="h6 italic mb-0"> + {{ geoSysteme.unite.nom }} + </p> + </div> + <div class="blob-packed-1-2 full-y border-l pl-s pt-xs"> + <h5 class="mb-0"> + {{ labels[1] }} + </h5> + <p class="h6 italic mb-0"> + {{ geoSysteme.unite.nom }} + </p> + </div> + </div> + </div> + </div> + </div> + <div + v-for="(groupeContours, groupeIndex) in groupes" + :key="groupeIndex + 1" + class="geo-groupe mb" + > + <h4 v-if="groupes.length > 1" class="color-bg pt-s pl-m mb-s"> + Groupe {{ groupeIndex + 1 }} + </h4> + <div + v-for="(contourPoints, contourIndex) in groupeContours" + :key="contourIndex + 1" + class="geo-contour" + > + <h4 v-if="groupeContours.length > 1" class="pt-xs pl-s mb-s"> + {{ contourIndex === 0 ? 'Contour' : `Lacune ${contourIndex}` }} + </h4> + <div v-for="point in contourPoints" :key="point.id" class="geo-point"> + <div class="tablet-blobs"> + <div class="tablet-blob-1-2 flex"> + <h4 v-if="point.nom" class="mb-s flex-self-start mr-xs"> + {{ point.nom }} + </h4> + <p + v-if="point.description || point.subsidiaire" + class="mb-s h6 flex-grow pt-xxs" + > + <Tag + v-if="point.subsidiaire && !point.lot" + :mini="true" + color="bg-info" + > + Subsidiaire + </Tag> + <Tag v-if="point.lot" :mini="true" color="bg-info"> Lot </Tag> + {{ point.description }} + </p> + </div> + <div v-if="!point.lot" class="tablet-blob-1-2"> + <pointReference :references="point.references[geoSystemeId]" /> + </div> + <div v-else class="tablet-blob-1-2"> + <div v-for="reference in point.references" :key="reference"> + <pointReference :references="reference" /> + </div> + </div> + </div> + </div> + </div> + </div> + </div> +</template> + +<script> +import { etapeGroupesBuild } from '../../utils/titre-etape-edit' +import Tag from '../_ui/tag.vue' +import pointReference from './point-reference.vue' + +export default { + components: { Tag, pointReference }, + + props: { + points: { type: Array, required: true } + }, + + data() { + return { geoSystemeId: '' } + }, + + computed: { + index() { + return etapeGroupesBuild(this.points) + }, + + groupes() { + return this.index.groupes + }, + + geoSystemes() { + return this.index.geoSystemes + }, + + geoSystemeOpposableId() { + return this.index.geoSystemeOpposableId + }, + + geoSysteme() { + return ( + this.geoSystemeId && + this.geoSystemes.find(({ id }) => id === this.geoSystemeId) + ) + }, + + labels() { + return this.geoSysteme.unite.id === 'met' + ? ['X', 'Y'] + : ['Longitude', 'Latitude'] + } + }, + + created() { + this.geoSystemeId = + this.geoSystemeOpposableId || + (this.geoSystemes[0] && this.geoSystemes[0].id) + } +} +</script> diff --git a/packages/ui/src/components/_common/section-element-edit.vue b/packages/ui/src/components/_common/section-element-edit.vue new file mode 100644 index 0000000000000000000000000000000000000000..0f49323eebc44c41dfca9447f0510b9a2a3661ec --- /dev/null +++ b/packages/ui/src/components/_common/section-element-edit.vue @@ -0,0 +1,70 @@ +<template> + <div> + <div class="tablet-blobs"> + <div v-if="element.nom" class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5 class="mb-0"> + <span class="cap-first">{{ element.nom }}</span> + </h5> + <p v-if="element.optionnel" class="h6 italic mb-0">Optionnel</p> + <Tag v-else-if="!complete" color="bg-warning" :mini="true" + >Incomplet</Tag + > + </div> + + <div + :class="{ + 'tablet-blob-2-3': element.nom, + 'tablet-blob-1': !element.nom + }" + > + <SectionElementEdit + v-model:contenu="contenu" + class="mb-s" + :element="element" + /> + + <!-- eslint-disable vue/no-v-html --> + <p + v-if="element.description || hasValeur" + class="h6" + v-html="element.description" + /> + </div> + </div> + + <hr /> + </div> +</template> + +<script> +import { + valeurFind, + hasValeurCheck, + elementsCompleteCheck +} from '../../utils/contenu' +import SectionElementEdit from './section-element-input-edit.vue' +import Tag from '../_ui/tag.vue' + +export default { + components: { SectionElementEdit, Tag }, + + props: { + contenu: { type: Object, required: true }, + element: { type: Object, required: true } + }, + + computed: { + hasValeur() { + return hasValeurCheck(this.element.id, this.contenu) + }, + + valeur() { + return valeurFind(this.element, this.contenu) + }, + + complete() { + return elementsCompleteCheck([this.element], this.contenu, true) + } + } +} +</script> diff --git a/packages/ui/src/components/_common/section-element-file-edit.vue b/packages/ui/src/components/_common/section-element-file-edit.vue new file mode 100644 index 0000000000000000000000000000000000000000..963e58595dd327e02a4c0660168520ba7df67040 --- /dev/null +++ b/packages/ui/src/components/_common/section-element-file-edit.vue @@ -0,0 +1,62 @@ +<template> + <div v-if="contenuElement" class="flex"> + <p class="mb-0 h6 bold"> + {{ + contenuElement && contenuElement.name + ? contenuElement.name + : contenuElement.slice(5) + }} + </p> + <div class="flex-right mt--xs"> + <button + class="btn-border py-s px-m my--xs rnd-xs flex-right" + @click="fileRemove" + > + <i class="icon-24 icon-trash" /> + </button> + </div> + </div> + <div v-else> + <InputFile + class="btn-border small p-s full-x rnd-xs mb-s" + accept="application/pdf" + @change="fileChange" + /> + <p class="h5 italic">30 Mo max.</p> + </div> +</template> + +<script> +import InputFile from '../_ui/input-file.vue' + +export default { + components: { InputFile }, + + props: { + contenu: { type: [Object], required: true }, + elementId: { type: String, required: true } + }, + + computed: { + contenuElement() { + return this.contenu[this.elementId] + } + }, + + methods: { + fileChange({ + target: { + validity, + files: [file] + } + }) { + if (file && validity.valid) { + this.contenu[this.elementId] = file + } + }, + fileRemove() { + this.contenu[this.elementId] = null + } + } +} +</script> diff --git a/packages/ui/src/components/_common/section-element-input-edit.vue b/packages/ui/src/components/_common/section-element-input-edit.vue new file mode 100644 index 0000000000000000000000000000000000000000..98cb0491d643440c1728618b1e124e3c64049c9a --- /dev/null +++ b/packages/ui/src/components/_common/section-element-input-edit.vue @@ -0,0 +1,147 @@ +<template> + <div> + <inputNumber + v-if="element.type === 'number'" + v-model="contenu[element.id]" + class="p-s" + placeholder="…" + /> + + <inputNumber + v-if="element.type === 'integer'" + v-model="contenu[element.id]" + :integer="true" + class="p-s" + placeholder="…" + /> + + <InputDate + v-else-if="element.type === 'date'" + v-model="contenu[element.id]" + /> + + <textarea + v-else-if="element.type === 'textarea'" + v-model="contenu[element.id]" + class="p-s" + /> + + <input + v-else-if="element.type === 'text'" + v-model="contenu[element.id]" + type="text" + class="p-s" + /> + + <div v-else-if="element.type === 'radio'"> + <label class="mr"> + <input + v-model="contenu[element.id]" + :name="element.id" + :value="true" + type="radio" + class="p-s mt-s mb-s" + /> + Oui + </label> + + <label> + <input + v-model="contenu[element.id]" + :name="element.id" + :value="false" + type="radio" + class="p-s mt-s mb-s" + /> + Non + </label> + </div> + + <input + v-else-if="element.type === 'checkbox'" + v-model="contenu[element.id]" + type="checkbox" + class="p-s mt-s mb-s" + /> + + <div v-else-if="element.type === 'checkboxes'"> + <div v-for="value in valeurs" :key="value.id"> + <label> + <input + v-model="contenu[element.id]" + type="checkbox" + :value="value.id" + class="mr-s" + /> + <span class="cap-first">{{ value.nom }}</span> + </label> + </div> + </div> + + <div v-else-if="element.type === 'select'"> + <select + v-if="valeurs && valeurs.length" + v-model="contenu[element.id]" + class="p-s mr-s" + > + <option v-for="value in valeurs" :key="value.id" :value="value.id"> + {{ value.nom }} + </option> + </select> + </div> + + <div v-else-if="element.type === 'multiple'"> + <SectionElementMultipleEdit + v-model:contenu="contenu[element.id]" + :element="element" + /> + </div> + + <div v-else-if="element.type === 'file'"> + <SectionElementFileEdit + v-model:contenu="contenu" + :element-id="element.id" + /> + </div> + </div> +</template> + +<script> +import InputDate from '../_ui/input-date.vue' +import InputNumber from '../_ui/input-number.vue' +import SectionElementMultipleEdit from './section-element-multiple-edit.vue' +import SectionElementFileEdit from './section-element-file-edit.vue' + +export default { + components: { + InputDate, + InputNumber, + SectionElementMultipleEdit, + SectionElementFileEdit + }, + + props: { + contenu: { type: Object, required: true }, + element: { type: Object, required: true } + }, + + computed: { + valeurs() { + return this.element.valeurs + } + }, + + created() { + // si l'élément est un bouton radio + // et que le contenu pour cet élément est vide + // alors on met la valeur par défaut `false` + if (this.contenu && this.contenu[this.element.id] === undefined) { + if (this.element.type === 'radio') { + this.contenu[this.element.id] = false + } else if (this.element.type === 'multiple') { + this.contenu[this.element.id] = [] + } + } + } +} +</script> diff --git a/packages/ui/src/components/_common/section-element-multiple-edit.vue b/packages/ui/src/components/_common/section-element-multiple-edit.vue new file mode 100644 index 0000000000000000000000000000000000000000..f8a577cd1846ab66788f52eed99e7989741575c2 --- /dev/null +++ b/packages/ui/src/components/_common/section-element-multiple-edit.vue @@ -0,0 +1,62 @@ +<template> + <div> + <div + v-for="(e, index) in contenu" + :key="e.id" + class="rnd-m mb-s p-xs bg-alt" + > + <div class="rnd-s p-s bg-bg"> + <div class="flex"> + <h4 class="mt-s">{{ index + 1 }}</h4> + <div class="flex-right"> + <button class="btn px-m py-s rnd-xs" @click="elementRemove(index)"> + <i class="icon-24 icon-minus" /> + </button> + </div> + </div> + <div v-for="prop in element.elements" :key="prop.id" class="mb-s"> + <div class="flex"> + <h5 class="mb-0"> + <span class="cap-first">{{ prop.nom }}</span> + </h5> + <p v-if="prop.optionnel" class="h6 italic mb-s flex-right lh-1-25"> + Optionnel + </p> + </div> + <SectionElementEdit :contenu="contenu[index]" :element="prop" /> + </div> + </div> + </div> + + <button class="btn small rnd-s py-s px-m full-x flex" @click="elementAdd"> + <span class="mt-xxs">Ajouter</span + ><i class="icon-24 icon-plus flex-right" /> + </button> + </div> +</template> + +<script> +import { defineAsyncComponent } from 'vue' + +export default { + components: { + SectionElementEdit: defineAsyncComponent(() => + import('./section-element-input-edit.vue') + ) + }, + + props: { + contenu: { type: Object, required: true }, + element: { type: Object, required: true } + }, + + methods: { + elementAdd: function () { + this.contenu.push({}) + }, + elementRemove: function (index) { + this.contenu.splice(index, 1) + } + } +} +</script> diff --git a/packages/ui/src/components/_common/section-element-multiple.vue b/packages/ui/src/components/_common/section-element-multiple.vue new file mode 100644 index 0000000000000000000000000000000000000000..f608999fbb61b491d5b0ed2b75ad187671a2c1c7 --- /dev/null +++ b/packages/ui/src/components/_common/section-element-multiple.vue @@ -0,0 +1,36 @@ +<template> + <div + v-for="(e, index) in contenu" + :key="index" + class="border rnd-xs p-m mb-s" + > + <SectionElement + v-for="c in element.elements" + :key="c.id" + :element="c" + :contenu="e" + @file-download="fileDownload" + /> + </div> +</template> + +<script> +import { defineAsyncComponent } from 'vue' + +export default { + components: { + SectionElement: defineAsyncComponent(() => import('./section-element.vue')) + }, + props: { + element: { type: Object, required: true }, + contenu: { type: Object, required: true } + }, + emits: ['file-download'], + + methods: { + fileDownload(fichier) { + this.$emit('file-download', fichier) + } + } +} +</script> diff --git a/packages/ui/src/components/_common/section-element.vue b/packages/ui/src/components/_common/section-element.vue new file mode 100644 index 0000000000000000000000000000000000000000..e37ecacfb9b0e75eb47b92991837af37d10a782c --- /dev/null +++ b/packages/ui/src/components/_common/section-element.vue @@ -0,0 +1,70 @@ +<template> + <div class="tablet-blobs"> + <div v-if="element.nom" class="tablet-blob-1-4"> + <h5>{{ element.nom }}</h5> + </div> + + <div + :class="{ 'tablet-blob-3-4': element.nom, 'tablet-blob-1': !element.nom }" + > + <div v-if="element.type === 'file'" class="flex h6 pb-xs"> + <span class="mt-xs flex bold"> + <i class="icon-16 icon-file mr-xs" /> + {{ + contenu[element.id] ? contenu[element.id].slice(5) : 'Aucun fichier' + }} + </span> + + <button + v-if="contenu[element.id]" + class="btn-border py-xs px-s rnd-xs flex-right mt--xs" + @click="fileDownload(contenu[element.id])" + > + <i class="icon-24 icon-download" /> + </button> + </div> + + <SectionElementMultiple + v-else-if="element.type === 'multiple'" + :contenu="contenu[element.id]" + :element="element" + @file-download="fileDownload" + /> + + <p v-else class="cap-first" :class="{ 'mb-s': element.description }"> + {{ valeur }} + </p> + <!-- eslint-disable vue/no-v-html --> + <p v-if="element.description" class="h6"> + <span v-html="element.description" /> + </p> + </div> + </div> +</template> + +<script> +import { valeurFind } from '../../utils/contenu' +import SectionElementMultiple from './section-element-multiple.vue' + +export default { + name: 'SectionElement', + components: { SectionElementMultiple }, + props: { + element: { type: Object, required: true }, + contenu: { type: Object, required: true } + }, + emits: ['file-download'], + + computed: { + valeur() { + return valeurFind(this.element, this.contenu) + } + }, + + methods: { + fileDownload(fichier) { + this.$emit('file-download', fichier) + } + } +} +</script> diff --git a/packages/ui/src/components/_common/section.vue b/packages/ui/src/components/_common/section.vue new file mode 100644 index 0000000000000000000000000000000000000000..c1f9557834cc398fce767be042765ead2fa1cc1e --- /dev/null +++ b/packages/ui/src/components/_common/section.vue @@ -0,0 +1,52 @@ +<template> + <div> + <h4 v-if="section.nom && entete" class="cap-first"> + {{ section.nom }} + </h4> + + <SectionElement + v-for="e in elements" + :key="e.id" + :element="e" + :contenu="contenu" + @file-download="fileDownload" + /> + </div> +</template> + +<script> +import SectionElement from './section-element.vue' + +export default { + components: { + SectionElement + }, + + props: { + entete: { type: Boolean, default: true }, + section: { type: Object, required: true }, + contenu: { type: Object, default: () => ({}) }, + date: { type: String, default: '' } + }, + + emits: ['file-download'], + + computed: { + elements() { + return this.section.elements.filter( + e => + !this.date || + // si la date existe, vérifie qu'elle est dans les bornes de l'élément + ((!e.dateDebut || e.dateDebut < this.date) && + (!e.dateFin || e.dateFin >= this.date)) + ) + } + }, + + methods: { + fileDownload(fichier) { + this.$emit('file-download', fichier) + } + } +} +</script> diff --git a/packages/ui/src/components/_common/sections-edit.vue b/packages/ui/src/components/_common/sections-edit.vue new file mode 100644 index 0000000000000000000000000000000000000000..7639eb351e30a702a44b648397b34a7ca29b91df --- /dev/null +++ b/packages/ui/src/components/_common/sections-edit.vue @@ -0,0 +1,68 @@ +<template> + <div> + <div v-for="s in sections" :key="s.id"> + <h3 v-if="s.nom" class="cap-first">{{ s.nom }}</h3> + + <SectionElementEdit + v-for="e in s.elements" + :key="e.id" + v-model:contenu="content[s.id]" + :element="e" + /> + </div> + </div> +</template> + +<script> +import { + elementContenuBuild, + contenuBuild, + contenuCompleteCheck +} from '../../utils/contenu' + +import SectionElementEdit from './section-element-edit.vue' + +export default { + components: { SectionElementEdit }, + + props: { + sections: { type: Array, required: true }, + contenu: { type: [Object, null], required: true } + }, + + emits: ['complete-update', 'contenu-update'], + + data() { + return { + content: {} + } + }, + + computed: { + complete() { + return contenuCompleteCheck(this.sections, this.content) + } + }, + + watch: { + content: { + handler: function (content) { + this.$emit( + 'contenu-update', + elementContenuBuild(this.sections, content) + ) + }, + deep: true + }, + + complete: function (complete) { + this.$emit('complete-update', complete) + } + }, + + created() { + this.content = contenuBuild(this.sections, this.contenu) + this.$emit('complete-update', this.complete) + } +} +</script> diff --git a/packages/ui/src/components/_common/statut.vue b/packages/ui/src/components/_common/statut.vue new file mode 100644 index 0000000000000000000000000000000000000000..3586a2e58b8efa78c0a194c933f21daf2952b348 --- /dev/null +++ b/packages/ui/src/components/_common/statut.vue @@ -0,0 +1,20 @@ +<template> + <Pill :color="`bg-${color}`"> + {{ nom }} + </Pill> +</template> + +<script> +import Pill from '../_ui/pill.vue' + +export default { + components: { + Pill + }, + + props: { + color: { type: String, default: 'neutral' }, + nom: { type: String, default: 'indéfini' } + } +} +</script> diff --git a/packages/ui/src/components/_common/titre-nom.vue b/packages/ui/src/components/_common/titre-nom.vue new file mode 100644 index 0000000000000000000000000000000000000000..39fffb9f8711fbbb448edc6c42eae2e86bc50535 --- /dev/null +++ b/packages/ui/src/components/_common/titre-nom.vue @@ -0,0 +1,11 @@ +<template> + <span class="bold">{{ nom }}</span> +</template> + +<script> +export default { + props: { + nom: { type: String, default: '' } + } +} +</script> diff --git a/packages/ui/src/components/_common/titre-type-select.vue b/packages/ui/src/components/_common/titre-type-select.vue new file mode 100644 index 0000000000000000000000000000000000000000..69b02a9061eba947019ef794098cfe9560a17b40 --- /dev/null +++ b/packages/ui/src/components/_common/titre-type-select.vue @@ -0,0 +1,87 @@ +<template> + <div> + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5>Domaine</h5> + </div> + <div class="mb tablet-blob-2-3"> + <select v-model="element.domaineId" class="p-s mr"> + <option + v-for="domaine in domaines" + :key="domaine.id" + :value="domaine.id" + > + {{ domaine.nom }} + </option> + </select> + </div> + </div> + <hr /> + </div> + + <div> + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5>Type</h5> + </div> + <div class="mb tablet-blob-2-3"> + <select + v-model="element.typeId" + class="p-s mr" + :disabled="!titresTypes" + > + <option + v-for="titreType in titresTypes" + :key="titreType.id" + :value="titreType.id" + > + {{ titreType.type.nom }} + </option> + </select> + </div> + </div> + <hr /> + </div> +</template> + +<script> +export default { + props: { + element: { type: Object, required: true }, + domaines: { type: Array, required: true } + }, + + computed: { + titresTypes() { + const domaine = this.domaines.find( + ({ id }) => id === this.element.domaineId + ) + + return domaine && domaine.titresTypes.filter(tt => tt.titresCreation) + } + }, + + watch: { + domaines: 'domainesUpdate', + titresTypes: 'titresTypesUpdate' + }, + + created() { + this.domainesUpdate() + }, + + methods: { + domainesUpdate() { + if (this.domaines?.length === 1) { + this.element.domaineId = this.domaines[0].id + } + }, + + titresTypesUpdate() { + if (this.titresTypes?.length === 1) { + this.element.typeId = this.titresTypes[0].id + } + } + } +} +</script> diff --git a/packages/ui/src/components/_common/titre-type-type-nom.vue b/packages/ui/src/components/_common/titre-type-type-nom.vue new file mode 100644 index 0000000000000000000000000000000000000000..e51f030c44c70d66769c692b18994af85082e2ab --- /dev/null +++ b/packages/ui/src/components/_common/titre-type-type-nom.vue @@ -0,0 +1,10 @@ +<template> + <span class="small bold cap-first">{{ nom }}</span> +</template> +<script> +export default { + props: { + nom: { type: String, default: '' } + } +} +</script> diff --git a/packages/ui/src/components/_map/index.vue b/packages/ui/src/components/_map/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..209c4eacc60551dc786e40cd150c82d19f6ceada --- /dev/null +++ b/packages/ui/src/components/_map/index.vue @@ -0,0 +1,206 @@ +<template> + <div ref="map"> + <div class="absolute p-s map-loader"> + <div class="small">Zoom: {{ zoom }}</div> + + <div v-if="legends?.length" class="mt-xs"> + <div + v-for="(legend, index) in legends" + :key="legend.label" + class="flex flex-center" + :class="{ 'mb-xs': index !== legends.length - 1 }" + > + <i class="icon-map-legend" :class="legend.icon" /> + : {{ legend.label }} + </div> + </div> + </div> + </div> +</template> + +<script> +import { markRaw } from 'vue' + +import { + leafletMap, + leafletTileLayerDefault, + leafletScaleBuild, + leafletFeatureGroupGet, + leafletCanvasLayerBuild +} from './leaflet.js' + +export default { + props: { + geojsonLayers: { type: Array, default: () => [] }, + markerLayers: { type: Array, default: () => [] }, + tilesLayer: { type: Object, default: () => leafletTileLayerDefault }, + canvasMarkers: { type: Array, default: () => [] }, + legends: { type: Array, default: () => [] } + }, + + emits: ['map-update'], + + data() { + return { + map: null, + zoom: 0, + updateBboxOnly: false, + updateCenterAndZoomOnly: false, + layers: { + tiles: {}, + geojsons: [], + markers: [], + canvas: null + } + } + }, + + watch: { + tilesLayer: 'tilesUpdate', + geojsonLayers: 'geojsonsUpdate', + markerLayers: 'markersUpdate', + canvasMarkers: 'canvasMarkersUpdate' + }, + + mounted() { + this.init() + this.scaleAdd() + this.tilesAdd() + this.markersAdd() + this.geojsonsAdd() + this.layersCanvasAdd() + }, + + methods: { + init() { + this.map = markRaw(leafletMap(this.$refs.map)) + + this.map.on('moveend', () => { + if (this.updateBboxOnly) { + this.updateBboxOnly = false + const bbox = this.boundsGet() + + this.$emit('map-update', { bbox }) + } else { + const center = [this.map.getCenter().lat, this.map.getCenter().lng] + const zoom = this.map.getZoom() + this.zoom = zoom + + if (this.updateCenterAndZoomOnly) { + this.updateCenterAndZoomOnly = false + this.$emit('map-update', { center, zoom }) + } else { + const bbox = this.boundsGet() + + this.$emit('map-update', { center, zoom, bbox }) + } + } + }) + + this.map.on('fullscreenchange', () => { + if (this.map.isFullscreen()) { + this.map.gestureHandling.disable() + } else { + this.map.gestureHandling.enable() + } + }) + + this.zoom = this.map.getZoom() + }, + + boundsFit(bounds) { + this.map.fitBounds(bounds) + }, + + allFit() { + const featureGroup = leafletFeatureGroupGet(this.layers.markers) + this.updateCenterAndZoomOnly = true + this.boundsFit(featureGroup.getBounds()) + }, + + positionSet({ zoom, center }) { + this.updateBboxOnly = true + this.map.setView(center, zoom) + this.zoom = zoom + }, + + boundsGet() { + const bounds = this.map.getBounds() + + return [ + bounds._southWest.lng, + bounds._southWest.lat, + bounds._northEast.lng, + bounds._northEast.lat + ] + }, + + scaleAdd() { + const scale = leafletScaleBuild() + scale.addTo(this.map) + }, + + tilesUpdate() { + this.layers.tiles.removeFrom(this.map) + this.tilesAdd() + }, + + tilesAdd() { + this.layers.tiles = this.tilesLayer + this.layers.tiles.addTo(this.map) + }, + + geojsonsAdd() { + this.geojsonLayers.forEach(l => { + this.layers.geojsons.push(l) + l.addTo(this.map) + }) + }, + + geojsonsUpdate() { + this.layers.geojsons.forEach(l => l.remove()) + + this.geojsonsAdd() + }, + + markersAdd() { + this.markerLayers.forEach(marker => { + this.layers.markers.push(marker) + this.map.addLayer(marker) + }) + }, + + hasLayer(layer) { + return this.map.hasLayer(layer) + }, + + markersUpdate() { + this.layers.markers.forEach(marker => { + this.map.removeLayer(marker) + }) + + this.markersAdd() + }, + + canvasMarkersUpdate() { + const markers = [] + this.canvasMarkers.forEach((marker, i) => { + markers.push(marker) + }) + this.layers.canvas.clear() + this.layers.canvas.addMarkers(markers) + if (!markers.length) { + this.layers.canvas._canvas.classList.add('hide') + } else { + this.layers.canvas._canvas.classList.remove('hide') + } + }, + + layersCanvasAdd() { + this.map.createPane('canvas') + this.layers.canvas = leafletCanvasLayerBuild({ pane: 'canvas' }) + this.layers.canvas.addTo(this.map) + } + } +} +</script> diff --git a/packages/ui/src/components/_map/leaflet.js b/packages/ui/src/components/_map/leaflet.js new file mode 100644 index 0000000000000000000000000000000000000000..fdbf34d5f9627b82bf343c6c034fe7debd79f95b --- /dev/null +++ b/packages/ui/src/components/_map/leaflet.js @@ -0,0 +1,140 @@ +import 'leaflet' +import 'leaflet.markercluster' +import 'leaflet-gesture-handling' +import 'leaflet-fullscreen' +import 'leaflet-markers-canvas' + +import iconRetinaUrl from 'leaflet/dist/images/marker-icon-2x.png' +import iconUrl from 'leaflet/dist/images/marker-icon.png' +import shadowUrl from 'leaflet/dist/images/marker-shadow.png' + +const L = window.L + +L.Marker.prototype.options.icon = L.icon({ + iconRetinaUrl, + iconUrl, + shadowUrl, + iconSize: [25, 41], + iconAnchor: [12, 41], + popupAnchor: [1, -34], + tooltipAnchor: [16, -28], + shadowSize: [41, 41] +}) + +const leafletTileLayerDefault = L.tileLayer( + 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', + { + maxZoom: 20, + attribution: + '© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>' + } +) + +const leafletMap = map => + L.map(map, { + // zoomControl: true, + zoomAnimation: false, + doubleClickZoom: false, + minZoom: 1, + gestureHandling: true, + fullscreenControl: { + pseudoFullscreen: true + } + }) + +const leafletTilesBuild = tiles => + tiles.type === 'wms' + ? L.tileLayer.wms(tiles.url, { + layers: tiles.layers, + format: 'image/png', + attribution: tiles.attribution, + version: tiles.version || undefined + }) + : L.tileLayer(tiles.url, { + attribution: tiles.attribution + }) + +const leafletTilesLegendGet = tiles => { + // on ne peut pas écrire les SVG à la volée à cause des CSPs + if (tiles.id === 'sdom-zones') { + return [ + { icon: 'icon-map-legend-sdom-zone-0', label: 'Zone 0' }, + { + icon: 'icon-map-legend-sdom-zone-0-potentielle', + label: 'Zone 0 potentielle' + }, + { icon: 'icon-map-legend-sdom-zone-1', label: 'Zone 1' }, + { icon: 'icon-map-legend-sdom-zone-2', label: 'Zone 2' } + ] + } + + return [] +} + +const leafletScaleBuild = () => L.control.scale({ imperial: false }) + +const leafletFeatureGroupGet = markers => new L.FeatureGroup(markers) + +const leafletCanvasLayerBuild = options => new L.MarkersCanvas(options) + +const leafletMarkerBuild = (latLng, icon) => L.marker(latLng, { icon }) + +const leafletGeojsonBuild = (geojson, options) => L.geoJSON(geojson, options) + +const leafletMarkerClusterGroupBuild = divIconOptions => + L.markerClusterGroup({ + iconCreateFunction(cluster) { + const childCount = cluster.getChildCount() + + let size + if (childCount < 5) size = 'xs' + else if (childCount < 15) size = 's' + else if (childCount < 40) size = 'm' + else size = 'l' + + divIconOptions.className += ` leaflet-marker-cluster-${size}` + + return new L.DivIcon(divIconOptions) + }, + disableClusteringAtZoom: 10, + animate: true, + spiderfyOnMaxZoom: false, + showCoverageOnHover: false, + maxClusterRadius(x) { + return 2048 / Math.pow(x, 2) + } + }) + +const leafletGeojsonCenterFind = geojson => + L.geoJSON(geojson).getBounds().getCenter() + +const leafletCoordinatesFind = geojson => { + const coordinates = geojson.geometry.coordinates + + return { + lng: coordinates[0], + lat: coordinates[1] + } +} + +const leafletDivIconBuild = divIconOptions => L.divIcon(divIconOptions) +const leafletIconBuild = iconOptions => L.icon(iconOptions) +const leafletGeojsonBoundsGet = zone => L.geoJSON(zone).getBounds() + +export { + leafletMap, + leafletTileLayerDefault, + leafletScaleBuild, + leafletTilesBuild, + leafletTilesLegendGet, + leafletFeatureGroupGet, + leafletCanvasLayerBuild, + leafletMarkerBuild, + leafletGeojsonBuild, + leafletMarkerClusterGroupBuild, + leafletCoordinatesFind, + leafletGeojsonCenterFind, + leafletGeojsonBoundsGet, + leafletDivIconBuild, + leafletIconBuild +} diff --git a/packages/ui/src/components/_map/pattern.vue b/packages/ui/src/components/_map/pattern.vue new file mode 100644 index 0000000000000000000000000000000000000000..ba3c4ff77bd4fea141f596f37ace1dc4b93e099c --- /dev/null +++ b/packages/ui/src/components/_map/pattern.vue @@ -0,0 +1,65 @@ +<template> + <svg class="absolute z--100"> + <defs> + <g v-for="typeId in typesIds" :key="typeId"> + <g v-if="defs[typeId]"> + <pattern + v-for="domaineId in domainesIdsDefault" + :id=" + domaineId ? `pattern-${typeId}-${domaineId}` : `pattern-${typeId}` + " + :key="domaineId" + patternUnits="userSpaceOnUse" + width="8" + height="8" + :patternTransform="`rotate(${defs[typeId].rotation})`" + > + <path + :d="defs[typeId].d" + :class=" + domaineId ? `svg-stroke-domaine-${domaineId}` : `svg-stroke` + " + :stroke-width="defs[typeId].width" + stroke-linecap="round" + fill="none" + /> + </pattern> + </g> + </g> + </defs> + </svg> +</template> + +<script> +export default { + props: { + domainesIds: { type: Array, required: true }, + typesIds: { type: Array, required: true } + }, + + data() { + return { + defs: { + ax: { d: 'M0,0 l8,0 M0,8 l8,0', width: 5, rotation: 0 }, + cx: { d: 'M0,0 l8,0 M0,8 l8,0', width: 5, rotation: 45 }, + pc: { d: 'M0,0 l8,0 M0,8 l8,0', width: 5, rotation: 90 }, + px: { d: 'M0,0 l8,0 M0,8 l8,0', width: 5, rotation: 135 }, + ap: { d: 'M-1,4 l2,0 M6,4 l2,0', width: 2, rotation: 45 }, + ar: { d: 'M1,4 l4,0 M3,2 l0,4', width: 2, rotation: 0 }, + pr: { d: 'M4,4 l0,0', width: 5, rotation: 45 }, + in: { + d: 'M0,4 a3,3 0 1,0 6,0 a 3,3 0 1,0 -6,0', + width: 1, + rotation: 0 + } + } + } + }, + + computed: { + domainesIdsDefault() { + return [...this.domainesIds, ''] + } + } +} +</script> diff --git a/packages/ui/src/components/_map/tiles-selector.vue b/packages/ui/src/components/_map/tiles-selector.vue new file mode 100644 index 0000000000000000000000000000000000000000..1632ec75487275e5d1284786fe82dfe304fb056a --- /dev/null +++ b/packages/ui/src/components/_map/tiles-selector.vue @@ -0,0 +1,69 @@ +<template> + <Accordion + :opened="opened" + :slot-default="true" + @close="close" + @toggle="toggle" + > + <template #title> + <small>Fond de carte</small> + </template> + <ul class="list-sans mt-m px-m"> + <li v-for="tile in tiles" :key="tile.name"> + <label class="small bold"> + <input + :value="tile.id" + :checked="tile.id === tilesId" + type="radio" + class="mr-s" + @change="select(tile.id)" + /> + {{ tile.name }} + </label> + </li> + </ul> + </Accordion> +</template> + +<script> +import Accordion from '../_ui/accordion.vue' + +export default { + components: { + Accordion + }, + + props: { + tiles: { + type: Array, + default: () => [] + }, + tilesId: { + type: String, + default: 'osm-fr' + } + }, + + emits: ['params-update'], + + data() { + return { + opened: false + } + }, + + methods: { + close() { + this.opened = false + }, + + toggle() { + this.opened = !this.opened + }, + + select(tilesId) { + this.$emit('params-update', { tilesId }) + } + } +} +</script> diff --git a/packages/ui/src/components/_map/warning-brgm.vue b/packages/ui/src/components/_map/warning-brgm.vue new file mode 100644 index 0000000000000000000000000000000000000000..7c117a8ee5de1a7213bc0973c7487f2da8d76482 --- /dev/null +++ b/packages/ui/src/components/_map/warning-brgm.vue @@ -0,0 +1,24 @@ +<template> + <div + v-if="brgmWarning" + class="bg-warning px py-s color-bg mb-s h6 bold mx-- mt--s" + > + Fond de carte visible aux niveaux de zoom 12 à 16 en métropole (hors + Gironde, Lot et Garonne, Dordogne, Charente Maritime et Vienne). + </div> +</template> + +<script> +export default { + props: { + tilesId: { type: String, default: '' }, + zoom: { type: Number, default: 0 } + }, + + computed: { + brgmWarning() { + return this.tilesId === 'brgm-geo' && (this.zoom < 12 || this.zoom > 16) + } + } +} +</script> diff --git a/packages/ui/src/components/_ui/__snapshots__/pill.stories.storyshot b/packages/ui/src/components/_ui/__snapshots__/pill.stories.storyshot new file mode 100644 index 0000000000000000000000000000000000000000..b4621d6dae994e8ec8d5445218d2adb9f01ea24a --- /dev/null +++ b/packages/ui/src/components/_ui/__snapshots__/pill.stories.storyshot @@ -0,0 +1,29 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Automated Storybook Snapshots Ui/Pill Error 1`] = ` +<span + class="cap-first small bold" +> + <span + class="bg-error color-bg pill py-xs px-s" + > + + Hello + + </span> +</span> +`; + +exports[`Automated Storybook Snapshots Ui/Pill Primary 1`] = ` +<span + class="cap-first small bold" +> + <span + class="bg-neutral color-bg pill py-xs px-s" + > + + Hello + + </span> +</span> +`; diff --git a/packages/ui/src/components/_ui/accordion.vue b/packages/ui/src/components/_ui/accordion.vue new file mode 100644 index 0000000000000000000000000000000000000000..ca0e87c9e017e461a4c942cad1d38b7eafd14def --- /dev/null +++ b/packages/ui/src/components/_ui/accordion.vue @@ -0,0 +1,126 @@ +<template> + <div class="flex flex-direction-column rnd-s border bg-bg"> + <div + v-if="slotButtons" + class="accordion-header flex" + :class="{ + 'rnd-t-s': opened || slotSub, + 'rnd-s': !opened && !slotSub, + 'border-b-s': opened || slotSub + }" + > + <div class="py-s px-m"> + <slot name="title" /> + </div> + + <div class="overflow-hidden flex flex-end flex-right"> + <slot name="buttons" /> + <button + v-if="slotDefault" + class="btn-alt py-s px-m" + :class="{ 'rnd-br-s': !opened }" + @click="toggle" + > + <i + class="icon-24" + :class="{ + [iconOpenedClass]: !opened, + [iconClosedClass]: opened + }" + /> + </button> + <div v-else class="py-s px-m"> + <i class="icon-24" /> + </div> + </div> + </div> + + <button + v-else-if="slotDefault && !slotButtons" + :class="{ + 'rnd-t-s': opened || slotSub, + 'rnd-s': !opened && !slotSub, + 'border-b-s': opened || slotSub + }" + class="accordion-header flex btn-alt py-s px-s" + @click="toggle" + > + <div> + <slot name="title" /> + </div> + <div class="flex flex-right flex-end"> + <i + class="icon-24" + :class="{ [iconOpenedClass]: !opened, [iconClosedClass]: opened }" + /> + </div> + </button> + + <div v-else class="py-s px-m"> + <slot name="title" /> + </div> + + <slot v-if="slotSub" name="sub" :class="{ 'border-b-s': opened }" /> + + <div v-if="slotDefault" :class="{ 'overflow-hidden': isOverflowHidden }"> + <Transition name="slide"> + <div v-show="opened"> + <slot /> + </div> + </Transition> + </div> + </div> +</template> + +<script> +export default { + name: 'UiSytemAccordion', + + props: { + iconOpenedClass: { type: String, default: 'icon-chevron-b' }, + + iconClosedClass: { type: String, default: 'icon-chevron-t' }, + + opened: { type: Boolean, default: false }, + + slotSub: { type: Boolean, default: false }, + + slotButtons: { type: Boolean, default: false }, + + slotDefault: { type: Boolean, default: false } + }, + + emits: ['toggle'], + + data() { + return { + isOverflowHidden: true, + animationTimeout: null + } + }, + + watch: { + opened(isOpened) { + // Overflow "hidden" est nécessaire pour l'animation d'ouverture/fermeture, + // mais est retiré pour éviter un bug visuel avec les infobulles. + // Le timeout est nécessaire pour ajuster l'overflow dans l'état requis, + // tout en permettant à l'animation d'ouverture de se jouer correctement. + if (!isOpened) { + clearTimeout(this.animationTimeout) + this.isOverflowHidden = true + } else { + this.animationTimeout = setTimeout( + () => (this.isOverflowHidden = false), + 1000 + ) + } + } + }, + + methods: { + toggle() { + this.$emit('toggle') + } + } +} +</script> diff --git a/packages/ui/src/components/_ui/button-plus.vue b/packages/ui/src/components/_ui/button-plus.vue new file mode 100644 index 0000000000000000000000000000000000000000..6d9deb197dc61ce1c6c5e30818c03cac10fee8aa --- /dev/null +++ b/packages/ui/src/components/_ui/button-plus.vue @@ -0,0 +1,11 @@ +<template> + <button class="btn rnd-xs p-s"> + <i class="icon-24 icon-plus" /> + </button> +</template> + +<script lang="ts"> +import { defineComponent } from 'vue' + +export default defineComponent({}) +</script> diff --git a/packages/ui/src/components/_ui/card.vue b/packages/ui/src/components/_ui/card.vue new file mode 100644 index 0000000000000000000000000000000000000000..7287f6c07fab1afe0a6dcb95f1d946a050ce06ef --- /dev/null +++ b/packages/ui/src/components/_ui/card.vue @@ -0,0 +1,11 @@ +<template> + <div class="bg-bg px pt mb rnd flex flex-direction-column"> + <slot /> + </div> +</template> + +<script> +export default { + name: 'UiSystemCard' +} +</script> diff --git a/packages/ui/src/components/_ui/columns.vue b/packages/ui/src/components/_ui/columns.vue new file mode 100644 index 0000000000000000000000000000000000000000..863521d410a996b0c28fc034c894acd22e5efc50 --- /dev/null +++ b/packages/ui/src/components/_ui/columns.vue @@ -0,0 +1,51 @@ +<template> + <Accordion + class="mb" + :opened="opened" + :slot-default="true" + @close="close" + @toggle="toggle" + > + <template #title> Colonnes </template> + <ul class="list-sans px-m"> + <li v-for="column in columns" :key="column.type"> + <label> + <input type="checkbox" class="mr-s" /> {{ column.name }} + </label> + </li> + </ul> + </Accordion> +</template> + +<script> +import Accordion from './accordion.vue' + +export default { + components: { + Accordion + }, + + props: { + columns: { + type: Array, + default: () => [] + } + }, + + data() { + return { + opened: false + } + }, + + methods: { + close() { + this.opened = false + }, + + toggle() { + this.opened = !this.opened + } + } +} +</script> diff --git a/packages/ui/src/components/_ui/dot.vue b/packages/ui/src/components/_ui/dot.vue new file mode 100644 index 0000000000000000000000000000000000000000..c27bc1bddc05d4010b9c408e6cbebdad00249df5 --- /dev/null +++ b/packages/ui/src/components/_ui/dot.vue @@ -0,0 +1,16 @@ +<template> + <span :class="color" class="pill dot mr-xs" /> +</template> + +<script> +export default { + name: 'UiSystemDot', + + props: { + color: { + type: String, + default: 'bg-neutral' + } + } +} +</script> diff --git a/packages/ui/src/components/_ui/dropdown.vue b/packages/ui/src/components/_ui/dropdown.vue new file mode 100644 index 0000000000000000000000000000000000000000..d114f9f5771254c3cfb72ed87a29ee4ac655f765 --- /dev/null +++ b/packages/ui/src/components/_ui/dropdown.vue @@ -0,0 +1,54 @@ +<template> + <div class="relative flex flex-direction-column dropdown"> + <div class="absolute border rnd-s bg-bg full-x overflow-hidden"> + <button + :class="{ + 'rnd-t-s': opened, + 'border-b-s': opened + }" + class="accordion-header flex btn-alt py-s px-s full-x" + @click="openToggle" + > + <div> + <slot name="title" /> + </div> + <div class="flex flex-right flex-end"> + <i + class="icon-24" + :class="{ [iconOpenedClass]: !opened, [iconClosedClass]: opened }" + /> + </div> + </button> + + <div class="overflow-hidden"> + <div :class="{ 'overflow-hidden': !opened, opened: opened }"> + <Transition name="slide"> + <slot v-if="opened" /> + </Transition> + </div> + </div> + </div> + </div> +</template> + +<script> +export default { + name: 'UiSytemDropdown', + + props: { + iconOpenedClass: { type: String, default: 'icon-chevron-b' }, + + iconClosedClass: { type: String, default: 'icon-chevron-t' }, + + opened: { type: Boolean, default: false } + }, + + emits: ['toggle'], + + methods: { + openToggle() { + this.$emit('toggle', this.opened) + } + } +} +</script> diff --git a/packages/ui/src/components/_ui/edit-array.vue b/packages/ui/src/components/_ui/edit-array.vue new file mode 100644 index 0000000000000000000000000000000000000000..d0ee987d3f03e559317048fe950c7d598be04c42 --- /dev/null +++ b/packages/ui/src/components/_ui/edit-array.vue @@ -0,0 +1,59 @@ +<template> + <div v-if="!editable" class="border p-m pointer" @click="editableMake"> + {{ value }} + </div> + <div v-else> + <select v-model="valueUpdated" class="py-xs px-s mb-s"> + <option v-for="element in elements" :key="element" :value="element"> + {{ element }} + </option> + </select> + <div class="flex"> + <button + class="btn-border small px-s py-xs flex-right rnd-xs mr-s" + @click="editable = false" + > + Annuler + </button> + <button class="btn-flash small px-s py-xs rnd-xs" @click="validate"> + Valider + </button> + </div> + </div> +</template> + +<script> +export default { + props: { + value: { type: String, required: true }, + elements: { type: Array, required: true } + }, + + emits: ['update'], + + data() { + return { + editable: false, + valueUpdated: '' + } + }, + + created() { + this.valueUpdated = this.value + }, + + methods: { + validate() { + this.$emit('update', this.valueUpdated) + this.editable = false + }, + + editableMake() { + if (!this.editable) { + this.valueUpdated = this.value + this.editable = !this.editable + } + } + } +} +</script> diff --git a/packages/ui/src/components/_ui/edit-boolean.vue b/packages/ui/src/components/_ui/edit-boolean.vue new file mode 100644 index 0000000000000000000000000000000000000000..298a31487084c89ca7c36cbf8c8f6e4178892fce --- /dev/null +++ b/packages/ui/src/components/_ui/edit-boolean.vue @@ -0,0 +1,35 @@ +<template> + <input + ref="input" + v-model="valueUpdated" + type="checkbox" + class="p-s mb-s" + @change="validate" + /> +</template> + +<script> +export default { + props: { + value: { type: Boolean, required: true } + }, + + emits: ['update'], + + data() { + return { + valueUpdated: '' + } + }, + + created() { + this.valueUpdated = this.value + }, + + methods: { + validate() { + this.$emit('update', this.valueUpdated) + } + } +} +</script> diff --git a/packages/ui/src/components/_ui/edit-date.vue b/packages/ui/src/components/_ui/edit-date.vue new file mode 100644 index 0000000000000000000000000000000000000000..9e8ae0d1b87f57a1d9a7527c5e955a00f91705df --- /dev/null +++ b/packages/ui/src/components/_ui/edit-date.vue @@ -0,0 +1,69 @@ +<template> + <div + v-if="!editable" + class="border pointer text-right p-m" + @click="editableMake" + > + {{ value }} + </div> + <div v-else> + <InputDate v-model="valueUpdated" class="mb-s" /> + + <div class="flex"> + <button + class="btn-border small px-s py-xs flex-right rnd-xs mr-s" + @click="editable = false" + > + Annuler + </button> + <button class="btn-flash small px-s py-xs rnd-xs" @click="validate"> + Valider + </button> + </div> + </div> +</template> + +<script> +import InputDate from './input-date.vue' + +export default { + components: { InputDate }, + + props: { + value: { type: String, required: true } + }, + + emits: ['update'], + + data() { + return { + valueUpdated: '', + editable: false + } + }, + + watch: { + value() { + this.valueUpdated = this.value + } + }, + + created() { + this.valueUpdated = this.value + }, + + methods: { + validate() { + this.editable = false + this.$emit('update', this.valueUpdated) + }, + + editableMake() { + if (!this.editable) { + this.valueUpdated = this.value + this.editable = !this.editable + } + } + } +} +</script> diff --git a/packages/ui/src/components/_ui/edit-json.vue b/packages/ui/src/components/_ui/edit-json.vue new file mode 100644 index 0000000000000000000000000000000000000000..521e01aa61d8b85b0aae940f9b5d2f0737ae57e7 --- /dev/null +++ b/packages/ui/src/components/_ui/edit-json.vue @@ -0,0 +1,82 @@ +<template> + <div + v-if="!editable" + class="border p-l pointer content-editable" + @click="editableMake" + > + {{ value }} + </div> + <div v-else> + <textarea + ref="textarea" + v-model="valueString" + class="p-s mb-s" + @input="resize" + @focus="resize" + /> + <div class="flex mb-s"> + <button + class="btn-border small px-s py-xs flex-right rnd-xs mr-s" + @click="editable = false" + > + Annuler + </button> + <button class="btn-flash small px-s py-xs rnd-xs" @click="validate"> + Valider + </button> + </div> + <p v-if="error" class="p-s bg-error color-bg h6">{{ error }}</p> + </div> +</template> + +<script> +import { nextTick } from 'vue' + +export default { + props: { + value: { type: [Object, null], default: null } + }, + + emits: ['update'], + + data() { + return { + editable: false, + valueString: '', + error: '' + } + }, + + methods: { + async validate() { + try { + this.error = '' + const value = JSON.parse(this.valueString) + + this.$emit('update', value) + this.editable = false + } catch (e) { + this.error = `Erreur de formatage: ${e}` + } + }, + + editableMake() { + this.error = '' + + if (!this.editable) { + this.valueString = JSON.stringify(this.value, null, 2) + this.editable = !this.editable + + nextTick(() => { + this.$refs.textarea.focus() + }) + } + }, + + resize(e) { + e.target.style.height = '' + e.target.style.height = e.target.scrollHeight + 'px' + } + } +} +</script> diff --git a/packages/ui/src/components/_ui/edit-number.vue b/packages/ui/src/components/_ui/edit-number.vue new file mode 100644 index 0000000000000000000000000000000000000000..ee06b25b79b72d392379ef8fc95f781a0da8b1e1 --- /dev/null +++ b/packages/ui/src/components/_ui/edit-number.vue @@ -0,0 +1,79 @@ +<template> + <div + v-if="!editable" + class="border p-m pointer text-right" + @click="editableMake" + > + {{ value }} + </div> + <div v-else> + <input + ref="input" + v-model.number="valueUpdated" + type="number" + class="p-s mb-s text-right" + min="1" + @focus="editableMake" + /> + + <div class="flex"> + <button + class="btn-border small px-s py-xs flex-right rnd-xs mr-s" + @click="editable = false" + > + Annuler + </button> + <button class="btn-flash small px-s py-xs rnd-xs" @click="validate"> + Valider + </button> + </div> + </div> +</template> + +<script> +import { nextTick } from 'vue' +export default { + props: { + value: { type: Number, default: 0 } + }, + + emits: ['update'], + + data() { + return { + valueUpdated: 0, + editable: false + } + }, + + watch: { + value() { + this.valueUpdated = this.value + } + }, + + created() { + this.valueUpdated = this.value + }, + + methods: { + validate() { + if (this.valueUpdated > 0) { + this.editable = false + this.$emit('update', this.valueUpdated) + } + }, + + editableMake() { + if (!this.editable) { + this.valueUpdated = this.value + this.editable = !this.editable + + nextTick(() => { + this.$refs.input.focus() + }) + } + } + } +} +</script> diff --git a/packages/ui/src/components/_ui/edit-string.vue b/packages/ui/src/components/_ui/edit-string.vue new file mode 100644 index 0000000000000000000000000000000000000000..c8e653a9120b65ece8949c653a272e12b926033d --- /dev/null +++ b/packages/ui/src/components/_ui/edit-string.vue @@ -0,0 +1,82 @@ +<template> + <!-- eslint-disable vue/no-v-html --> + <div + v-if="!editable" + class="border p-l pointer content-editable" + @click="editableMake" + v-html="valueHtml" + /> + <div v-else> + <textarea + ref="textarea" + v-model="valueUpdated" + class="p-s mb-s" + @input="resize" + @focus="resize" + /> + <div class="flex"> + <button + class="btn-border small px-s py-xs flex-right rnd-xs mr-s" + @click="editable = false" + > + Annuler + </button> + <button class="btn-flash small px-s py-xs rnd-xs" @click="validate"> + Valider + </button> + </div> + </div> +</template> + +<script> +import { nextTick } from 'vue' +import snarkdown from 'snarkdown' + +export default { + props: { + value: { type: String, required: true } + }, + + emits: ['update'], + + data() { + return { + editable: false, + valueUpdated: '' + } + }, + + computed: { + valueHtml() { + return snarkdown(this.valueUpdated) + } + }, + + created() { + this.valueUpdated = this.value + }, + + methods: { + validate() { + this.$emit('update', this.valueUpdated) + this.editable = false + }, + + editableMake() { + if (!this.editable) { + this.valueUpdated = this.value + this.editable = !this.editable + + nextTick(() => { + this.$refs.textarea.focus() + }) + } + }, + + resize(e) { + e.target.style.height = '' + e.target.style.height = e.target.scrollHeight + 'px' + } + } +} +</script> diff --git a/packages/ui/src/components/_ui/filters-checkboxes.vue b/packages/ui/src/components/_ui/filters-checkboxes.vue new file mode 100644 index 0000000000000000000000000000000000000000..2cb201a10babd37de364bdc53013839285bd5746 --- /dev/null +++ b/packages/ui/src/components/_ui/filters-checkboxes.vue @@ -0,0 +1,93 @@ +<template> + <div class="mb"> + <h5>{{ filter.name }}</h5> + <hr class="mb-s" /> + + <ul class="list-sans"> + <li v-for="element in filter.elements" :key="element.id"> + <label> + <input + :value="element.id" + :checked="filter.value.includes(element.id)" + type="checkbox" + class="mr-s" + @change="checkboxToggle($event)" + /> + <component + :is="filter.component" + v-if="filter.component" + :element="element" + /> + <span v-else class="cap-first h6 bold">{{ element.nom }}</span> + </label> + </li> + </ul> + <button + ref="button" + class="btn-border small px-s p-xs rnd-xs mr-xs" + @click="checkboxesSelect('none')" + > + Aucun + </button> + <button + ref="button" + class="btn-border small px-s p-xs rnd-xs mr-xs" + @click="checkboxesSelect('all')" + > + Tous + </button> + </div> +</template> + +<script> +export default { + props: { + filter: { type: Object, default: () => ({}) } + }, + + methods: { + checkboxToggle(e) { + const idsSet = (v, values) => { + const index = values.indexOf(v) + + const value = values.slice() + + if (index > -1) { + value.splice(index, 1) + } else { + value.push(v) + } + + return value.sort() + } + + const target = + this.filter && this.filter.isNumber + ? Number(e.target.value) + : e.target.value + + this.filter.value = idsSet(target, this.filter.value) + }, + + checkboxesSelect(action) { + if (action === 'none') { + this.filter.value = [] + } + + if (action === 'all') { + this.filter.value = this.filter.elements.map(({ id }) => id) + } + + if (action === 'inverse') { + this.filter.value = this.filter.elements.reduce((ids, { id }) => { + if (!this.filter.value.includes(id)) { + ids.push(id) + } + + return ids + }, []) + } + } + } +} +</script> diff --git a/packages/ui/src/components/_ui/filters-input-autocomplete.vue b/packages/ui/src/components/_ui/filters-input-autocomplete.vue new file mode 100644 index 0000000000000000000000000000000000000000..e943f2bd5597fe0941185448e598913dd710a682 --- /dev/null +++ b/packages/ui/src/components/_ui/filters-input-autocomplete.vue @@ -0,0 +1,92 @@ +<template> + <div class="mb"> + <h5>{{ filter.name }}</h5> + <hr class="mb-s" /> + + <InputAutocomplete + v-if="options?.length || lazyLoaded" + :selected="values" + :options="options" + value-prop="id" + label-prop="nom" + class="p-s" + @opened="$emit('opened', $event)" + @update:selected="updateHandler" + @search="search" + /> + </div> +</template> + +<script lang="ts"> +import { defineComponent } from 'vue' +import InputAutocomplete from './input-autocomplete.vue' + +export default defineComponent({ + components: { InputAutocomplete }, + + props: { + filter: { + type: Object, + default: () => ({}) + } + }, + + emits: ['opened', 'search'], + + data: () => ({ + lazyLoaded: false + }), + + computed: { + values() { + return this.filter.value || [] + }, + options() { + return this.filter.elements + } + }, + async created() { + if ( + this.filter.type === 'autocomplete' && + this.filter.lazy && + this.filter.value?.length + ) { + const result = await this.filter.load(this.filter.value) + this.filter.elements = result.elements + } + if (this.filter.lazy) { + this.lazyLoaded = true + } + }, + methods: { + updateHandler(e: string[]) { + this.filter.value = e + if (this.filter.lazy) { + this.filter.elements = this.filter.elements.filter(e => + this.filter.value.includes(e.id) + ) + } + }, + + async search(value: string) { + if (this.filter.lazy) { + const result = await this.filter.search(value) + + // Si les options déjà selectionnées ne sont plus disponibles dans la nouvelle + // liste d’options, on les ajoute à la nouvelle liste pour conserver notre sélection + const options = [...result.elements] + this.filter.value?.forEach((optionId: string) => { + if (!options || !options.some(o => o.id === optionId)) { + const oldOption = this.filter.elements.find( + (o: { id: string }) => o.id === optionId + ) + options.push(oldOption) + } + }) + + this.filter.elements = options + } + } + } +}) +</script> diff --git a/packages/ui/src/components/_ui/filters-input.vue b/packages/ui/src/components/_ui/filters-input.vue new file mode 100644 index 0000000000000000000000000000000000000000..8dd73d4cbf8cb76663fc43ffe950917a8dcc7ef4 --- /dev/null +++ b/packages/ui/src/components/_ui/filters-input.vue @@ -0,0 +1,21 @@ +<template> + <div class="mb"> + <h5>{{ filter.name }}</h5> + <hr class="mb-s" /> + + <input + v-model="filter.value" + type="text" + :placeholder="filter.placeholder" + class="p-s" + /> + </div> +</template> + +<script> +export default { + props: { + filter: { type: Object, default: () => ({}) } + } +} +</script> diff --git a/packages/ui/src/components/_ui/filters-selects.vue b/packages/ui/src/components/_ui/filters-selects.vue new file mode 100644 index 0000000000000000000000000000000000000000..7c46d5b932298097e83a5ffe7596cb20ff36ccc0 --- /dev/null +++ b/packages/ui/src/components/_ui/filters-selects.vue @@ -0,0 +1,54 @@ +<template> + <div class="mb"> + <h5>{{ filter.name }}</h5> + <hr class="mb-s" /> + + <div v-for="(value, n) in filter.value" :key="n"> + <div class="flex mb-s"> + <select v-model="filter.value[n]" class="p-s mr-s"> + <option + v-for="element in filter.elements" + :key="element.id" + :value="element.id" + :disabled="filter.value.includes(element.id)" + > + {{ element[filter.elementName] }} + </option> + </select> + + <button class="btn py-s px-m rnd-xs" @click="valueRemove(n)"> + <i class="icon-24 icon-minus" /> + </button> + </div> + </div> + <button + v-if="!filter.value || !filter.value.some(v => v === '')" + class="btn small rnd-xs py-s px-m full-x flex mb-s" + @click="valueAdd" + > + <span class="mt-xxs">{{ filter.buttonAdd }}</span + ><i class="icon-24 icon-plus flex-right" /> + </button> + </div> +</template> + +<script> +export default { + props: { + filter: { + type: Object, + default: () => ({}) + } + }, + + methods: { + valueAdd() { + this.filter.value.push('') + }, + + valueRemove(n) { + this.filter.value.splice(n, 1) + } + } +} +</script> diff --git a/packages/ui/src/components/_ui/filters.vue b/packages/ui/src/components/_ui/filters.vue new file mode 100644 index 0000000000000000000000000000000000000000..07c3edf24da13fb36859b5d1bc111ee6f88cf2cb --- /dev/null +++ b/packages/ui/src/components/_ui/filters.vue @@ -0,0 +1,242 @@ +<template> + <Accordion + ref="accordion" + :opened="opened" + :slot-sub="!!labels.length" + :slot-default="true" + class="mb-s" + @toggle="toggle" + > + <template #title> + {{ title }} + </template> + + <template v-if="labels.length" #sub> + <div class="flex" :class="{ 'border-b-s': opened }"> + <div class="px-m pt-m pb-s"> + <span + v-for="label in labels" + :key="`${label.id}-${label.valueName}`" + class="rnd-m box btn-flash h6 pl-s pr-xs py-xs bold mr-xs mb-xs" + :class="{ 'pr-xs': !opened, 'pr-s': opened }" + @click="labelRemove(label)" + >{{ label.name }} : {{ label.valueName || label.value }} + <span v-if="!opened" class="inline-block align-y-top ml-xs" + ><i class="icon-16 icon-x" /></span + ></span> + </div> + <button class="flex-right btn-alt p-m" @click="labelsReset"> + <i class="icon-24 icon-close" /> + </button> + </div> + </template> + + <div class="px-m"> + <div class="tablet-blobs mt"> + <div v-if="inputs.length" class="tablet-blob-1-2 large-blob-1-3"> + <template v-for="input in inputs" :key="input.id"> + <FiltersInputAutocomplete + v-if="input.type === 'autocomplete'" + :filter="input" + @opened="selectOpened = $event" + /> + <FiltersInput v-else :filter="input" /> + </template> + + <button + class="btn-border small px-s p-xs rnd-xs mb" + @click="inputsErase" + > + Tout effacer + </button> + </div> + + <FiltersCheckboxes + v-for="filter in checkboxes" + :key="filter.id" + :filter="filter" + class="tablet-blob-1-2 large-blob-1-3" + /> + + <FiltersSelects + v-for="filter in selects" + :key="filter.id" + :filter="filter" + class="tablet-blob-1-2 large-blob-1-3" + /> + + <component + :is="filter.component" + v-for="filter in customs" + :key="filter.id" + :filter="filter" + class="tablet-blob-1-2 large-blob-1-3" + /> + </div> + + <button + ref="button" + class="btn-flash p-s rnd-xs full-x mb" + @click="validate" + > + {{ button }} + </button> + </div> + </Accordion> +</template> + +<script> +import Accordion from './accordion.vue' +import FiltersInput from './filters-input.vue' +import FiltersCheckboxes from './filters-checkboxes.vue' +import FiltersSelects from './filters-selects.vue' +import FiltersInputAutocomplete from './filters-input-autocomplete.vue' + +export default { + components: { + Accordion, + FiltersInput, + FiltersCheckboxes, + FiltersSelects, + FiltersInputAutocomplete + }, + + props: { + filters: { type: Array, default: () => [] }, + title: { type: String, default: 'Filters' }, + button: { type: String, default: 'Ok' }, + opened: { type: Boolean, default: false } + }, + + emits: ['toggle', 'validate'], + + data: () => ({ selectOpened: false }), + + computed: { + inputs() { + return this.filters.filter( + ({ type }) => type === 'input' || type === 'autocomplete' + ) + }, + + checkboxes() { + return this.filters.filter(({ type }) => type === 'checkboxes') + }, + + selects() { + return this.filters.filter(({ type }) => type === 'select') + }, + + customs() { + return this.filters.filter(({ type }) => type === 'custom') + }, + + labels() { + return this.filters.reduce((acc, f) => { + let labels = [] + + if ( + (f.type === 'checkboxes' || + f.type === 'select' || + f.type === 'autocomplete') && + f.value.length + ) { + labels = f.value.map(v => { + const element = f.elements.find(e => e.id === v) + + return { + id: f.id, + name: f.name, + value: v, + valueName: element && element.nom + } + }) + } else if (f.type === 'input' && f.value) { + labels = [{ id: f.id, name: f.name, value: f.value }] + } else if ( + f.type === 'custom' && + f.value && + f.value.length && + f.labelFormat + ) { + labels = f.labelFormat(f) + } + + if (labels.length) { + acc = acc.concat(labels) + } + + return acc + }, []) + } + }, + + created() { + document.addEventListener('keyup', this.keyup) + }, + + beforeUnmount() { + document.removeEventListener('keyup', this.keyup) + }, + + methods: { + keyup(e) { + if ((e.which || e.keyCode) === 13 && this.opened && !this.selectOpened) { + this.validate() + } + }, + + inputsErase() { + this.inputs.forEach(filter => { + filter.value = '' + }) + }, + + validate() { + this.$emit('validate') + }, + + toggle() { + this.$emit('toggle') + }, + + labelRemove(label) { + if (!this.opened) { + const filter = this.filters.find(({ id }) => id === label.id) + + if (Array.isArray(filter.value)) { + if ( + filter.type === 'checkboxes' || + filter.type === 'select' || + filter.type === 'custom' || + filter.type === 'autocomplete' + ) { + const index = filter.value.indexOf(label.value) + if (index > -1) { + filter.value.splice(index, 1) + } + } + } else { + filter.value = '' + } + + this.validate() + } + }, + + labelsReset() { + this.filters.forEach(f => { + if (Array.isArray(f.value)) { + f.value = [] + } else { + f.value = '' + } + }) + + if (!this.opened) { + this.validate() + } + } + } +} +</script> diff --git a/packages/ui/src/components/_ui/help-tooltip.vue b/packages/ui/src/components/_ui/help-tooltip.vue new file mode 100644 index 0000000000000000000000000000000000000000..0d8982f0d937523df427d0e0781a93f6e3294634 --- /dev/null +++ b/packages/ui/src/components/_ui/help-tooltip.vue @@ -0,0 +1,12 @@ +<template> + <div class="tooltip"> + <h6 class="tooltip-content"> + <slot /> + </h6> + <i class="icon-24 icon-help" /> + </div> +</template> + +<script> +export default {} +</script> diff --git a/packages/ui/src/components/_ui/input-autocomplete.vue b/packages/ui/src/components/_ui/input-autocomplete.vue new file mode 100644 index 0000000000000000000000000000000000000000..833b4a910e7bfd1fe213aad54bef8aa76dc5ca77 --- /dev/null +++ b/packages/ui/src/components/_ui/input-autocomplete.vue @@ -0,0 +1,158 @@ +<template> + <select ref="select" :multiple="isMultiple" /> +</template> + +<script> +import Choices from 'choices.js' + +export default { + props: { + options: { + type: Array, + required: true, + default: () => [] + }, + selected: { + type: Array, + default: () => [] + }, + maxItems: { + type: Number, + default: -1 + }, + labelProp: { + type: String, + default: 'label' + }, + valueProp: { + type: String, + default: 'value' + }, + optionsDisabled: { + type: Array, + default: () => [] + }, + placeholder: { + type: String, + default: '' + }, + removeItemButton: { + type: Boolean, + default: true + } + }, + emits: ['update:selected', 'opened', 'search'], + + data() { + return { + autocompleter: null + } + }, + + computed: { + isMultiple() { + return this.maxItems === -1 || this.maxItems > 1 || null + } + }, + + watch: { + optionsDisabled: { + deep: true, + handler() { + this.optionsSet() + } + }, + options: { + deep: true, + handler() { + this.optionsSet() + } + }, + selected: { + handler() { + this.autocompleter.removeActiveItems() + this.selected.forEach(choice => + this.autocompleter.setChoiceByValue(choice) + ) + } + } + }, + + mounted() { + this.autocompleter = new Choices(this.$refs.select, { + searchResultLimit: 100, + maxItemCount: this.maxItems, + shouldSort: false, + removeItemButton: this.removeItemButton, + loadingText: 'Chargement...', + noResultsText: 'Aucun résultat', + noChoicesText: 'Veuillez saisir votre recherche', + itemSelectText: 'Choisir', + addItemText: value => { + return `Appuyez sur Entrée pour ajouter <b>"${value}"</b>` + }, + maxItemText: maxItemCount => { + return `${maxItemCount} choix maximum` + } + }) + this.autocompleter.passedElement.element.addEventListener('change', () => { + this.$emit('update:selected', this.autocompleter.getValue(true)) + }) + this.autocompleter.passedElement.element.addEventListener( + 'showDropdown', + () => { + this.$emit('opened', true) + } + ) + this.autocompleter.passedElement.element.addEventListener( + 'hideDropdown', + () => { + this.$emit('opened', false) + } + ) + this.autocompleter.passedElement.element.addEventListener('search', e => { + this.$emit('search', e.detail.value) + }) + + this.$nextTick().then(() => this.optionsSet()) + }, + + unmounted: function () { + this.autocompleter.destroy() + }, + + methods: { + optionsSet() { + if (this.options.length && this.autocompleter) { + const newOptions = [] + + if (this.placeholder) { + newOptions.push({ + [this.valueProp]: '', + [this.labelProp]: this.placeholder, + selected: !this.selected || !this.selected.length, + disabled: true, + placeholder: true + }) + } + newOptions.push( + ...this.options.map(o => ({ + ...o, + selected: this.selected.includes(o[this.valueProp]), + disabled: this.optionsDisabled + .map(o => o[this.valueProp]) + .includes(o[this.valueProp]) + })) + ) + this.autocompleter.clearStore() + this.autocompleter.setChoices( + newOptions, + this.valueProp, + this.labelProp, + false + ) + } + } + } +} +</script> diff --git a/packages/ui/src/components/_ui/input-date.vue b/packages/ui/src/components/_ui/input-date.vue new file mode 100644 index 0000000000000000000000000000000000000000..638ba7b9f00789af377ab59e94e2e612b46fb534 --- /dev/null +++ b/packages/ui/src/components/_ui/input-date.vue @@ -0,0 +1,150 @@ +<template> + <input + v-if="modern" + :value="modelValue" + type="date" + :class="padding" + @change="$emit('update:modelValue', $event.target.value)" + /> + <div v-else class="blobs-mini"> + <div class="blob-mini-1-3"> + <input + v-model.number="dayId" + type="number" + min="1" + :max="daysMax" + placeholder="jour" + class="text-right" + :class="padding" + @change="update" + /> + </div> + <div class="blob-mini-1-3"> + <select + v-model.number="monthId" + :class="padding" + class="mr-s" + @change="update" + > + <option :value="null" disabled hidden>mois</option> + <option v-for="month in months" :key="month.id" :value="month.id"> + {{ monthNames[month.id - 1] }} + </option> + </select> + </div> + <div class="blob-mini-1-3"> + <input + v-model.number="yearId" + type="number" + :min="yearMin" + :max="yearMax" + placeholder="année" + class="text-right" + :class="padding" + @change="update" + /> + </div> + </div> +</template> + +<script> +export default { + props: { + modelValue: { type: String, default: '' }, + monthNames: { + type: Array, + default: () => [ + 'janvier', + 'février', + 'mars', + 'avril', + 'mai', + 'juin', + 'juillet', + 'aout', + 'septembre', + 'octobre', + 'novembre', + 'décembre' + ] + }, + padding: { type: String, default: 'p-s' } + }, + + emits: ['update:modelValue'], + + data() { + return { + modern: false, // uses browser default input type="date" + months: [ + { id: 1, days: 31 }, + { id: 2, days: 29 }, + { id: 3, days: 31 }, + { id: 4, days: 30 }, + { id: 5, days: 31 }, + { id: 6, days: 30 }, + { id: 7, days: 31 }, + { id: 8, days: 31 }, + { id: 9, days: 30 }, + { id: 10, days: 31 }, + { id: 11, days: 30 }, + { id: 12, days: 31 } + ], + yearId: null, + monthId: null, + dayId: null, + yearMin: 1750, + yearMax: 2099 + } + }, + + computed: { + daysMax() { + return this.monthId + ? this.months.find(m => m.id === this.monthId).days + : 31 + } + }, + + created() { + if (this.modelValue) { + const ids = this.modelValue.split('-') + this.yearId = Number(ids[0]) + this.monthId = Number(ids[1]) + this.dayId = Number(ids[2]) + } + }, + + methods: { + update() { + let date + + if (this.dayId < 1) { + this.dayId = null + } + + if (this.dayId > this.dayMax) { + this.dayId = this.dayMax + } + + if (this.yearId && this.yearId < this.yearMin) { + this.yearId = this.yearMin + } + + if (this.yearId && this.yearId > this.yearMax) { + this.yearId = this.yearMax + } + + if (this.monthId && this.dayId && this.yearId) { + date = `${this.yearId}-${this.monthId + .toString() + .padStart(2, '0')}-${this.dayId.toString().padStart(2, '0')}` + } else { + date = '' + } + + this.$emit('update:modelValue', date) + } + } +} +</script> diff --git a/packages/ui/src/components/_ui/input-file.vue b/packages/ui/src/components/_ui/input-file.vue new file mode 100644 index 0000000000000000000000000000000000000000..9385228e8bbdcee2370ae51d68f98c802f758527 --- /dev/null +++ b/packages/ui/src/components/_ui/input-file.vue @@ -0,0 +1,26 @@ +<template> + <label v-bind="$attrs"> + Choisir un fichier… + <input + type="file" + class="p-xs mb-0" + :accept="accept" + @change="$emit('change', $event)" + /> + </label> +</template> + +<script lang="ts"> +import { defineComponent } from 'vue' + +export default defineComponent({ + props: { + accept: { + type: String, + default: '' + } + }, + + emits: ['change'] +}) +</script> diff --git a/packages/ui/src/components/_ui/input-number.vue b/packages/ui/src/components/_ui/input-number.vue new file mode 100644 index 0000000000000000000000000000000000000000..de2fa482933cadb85fe966c9d90fe3b69c23abac --- /dev/null +++ b/packages/ui/src/components/_ui/input-number.vue @@ -0,0 +1,47 @@ +<template> + <input + :value="valueFormatted" + type="text" + pattern="([0-9]{1,3}[\s]?)*([.,][0-9]*)?" + class="p-s text-right" + @blur="textToNumberFormat($event.target)" + /> +</template> + +<script> +import { textNumberFormat, textToNumberFormat } from '../../utils' +import numberFormat from '../../utils/number-format' + +export default { + props: { + modelValue: { type: Number, default: undefined }, + negative: { type: Boolean, default: false }, + integer: { type: Boolean, default: false } + }, + + emits: ['update:modelValue'], + + computed: { + valueFormatted() { + if (!this.modelValue) return this.modelValue + + if (this.integer) return numberFormat(Math.floor(this.modelValue)) + + return numberFormat(this.modelValue) + } + }, + + methods: { + textToNumberFormat(target) { + target.value = textNumberFormat(target.value, { + negative: this.negative, + integer: this.integer + }) + + const number = textToNumberFormat(target.value) + + this.$emit('update:modelValue', number) + } + } +} +</script> diff --git a/packages/ui/src/components/_ui/list.vue b/packages/ui/src/components/_ui/list.vue new file mode 100644 index 0000000000000000000000000000000000000000..8340d2140a351c86a67e5fe72232387a826ac5e7 --- /dev/null +++ b/packages/ui/src/components/_ui/list.vue @@ -0,0 +1,22 @@ +<template> + <ul class="list-prefix"> + <li v-for="element in elements" :key="element" :class="{ h6: mini }"> + {{ element }} + </li> + </ul> +</template> + +<script> +export default { + props: { + elements: { + type: Array, + default: () => [] + }, + mini: { + type: Boolean, + default: false + } + } +} +</script> diff --git a/packages/ui/src/components/_ui/loader.vue b/packages/ui/src/components/_ui/loader.vue new file mode 100644 index 0000000000000000000000000000000000000000..7f0be31a289cff086e7d8538834beaa3521a8008 --- /dev/null +++ b/packages/ui/src/components/_ui/loader.vue @@ -0,0 +1,7 @@ +<template> + <div class="mb">Chargement…</div> +</template> + +<script> +export default {} +</script> diff --git a/packages/ui/src/components/_ui/messages.vue b/packages/ui/src/components/_ui/messages.vue new file mode 100644 index 0000000000000000000000000000000000000000..f9e0432aa11310d2bf312d284640714822a48e45 --- /dev/null +++ b/packages/ui/src/components/_ui/messages.vue @@ -0,0 +1,22 @@ +<template> + <TransitionGroup name="slide-bottom" class="list-sans mb-0" tag="ul"> + <li + v-for="(message, index) in messages" + :key="index" + class="mb p-s color-bg" + :class="`bg-${message.type}`" + > + <span class="cap-first"> + {{ message.value }} + </span> + </li> + </TransitionGroup> +</template> + +<script> +export default { + props: { + messages: { type: Array, default: () => [] } + } +} +</script> diff --git a/packages/ui/src/components/_ui/page.vue b/packages/ui/src/components/_ui/page.vue new file mode 100644 index 0000000000000000000000000000000000000000..cebd66fce761a7f98e42f29518ab1edf93f879ec --- /dev/null +++ b/packages/ui/src/components/_ui/page.vue @@ -0,0 +1,37 @@ +<template> + <div class="page relative"> + <slot name="banner" /> + + <Transition name="slide" mode="out-in"> + <slot name="menu" /> + </Transition> + + <slot /> + + <div class="messages"> + <slot name="messages" /> + </div> + + <Transition name="fade"> + <div v-if="slotPopup" class="absolute full bg-inverse-alpha z-2" /> + </Transition> + + <Transition name="slide-top"> + <slot name="popup" /> + </Transition> + + <Transition name="fade"> + <slot name="loader" /> + </Transition> + </div> +</template> + +<script> +export default { + name: 'UiPage', + + props: { + slotPopup: { type: Boolean, default: false } + } +} +</script> diff --git a/packages/ui/src/components/_ui/pagination.vue b/packages/ui/src/components/_ui/pagination.vue new file mode 100644 index 0000000000000000000000000000000000000000..ea2c455d7c0a4093f6b9a99f07145447243af6e8 --- /dev/null +++ b/packages/ui/src/components/_ui/pagination.vue @@ -0,0 +1,96 @@ +<template> + <ul v-if="total > 1" class="list-inline"> + <li class="mr-xs"> + <button + :disabled="active === 1" + class="btn-border rnd-xs px-m py-s" + @click="pageChange(1)" + > + « + </button> + </li> + <li class="mr-xs"> + <button + :disabled="active === 1" + class="btn-border rnd-xs px-m py-s" + @click="pageChange(active - 1)" + > + ‹ + </button> + </li> + <li v-if="active > delta + 1" class="mr-xs"> + <div class="px-m py-s">…</div> + </li> + <li + v-for="page in pages" + :key="page" + :class="{ active: active === page }" + class="mr-xs" + > + <button class="btn-border rnd-xs px-m py-s" @click="pageChange(page)"> + {{ page }} + </button> + </li> + <li v-if="active < total - delta" class="mr-xs"> + <div class="px-m py-s">…</div> + </li> + <li class="mr-xs"> + <button + :disabled="active === total" + class="btn-border rnd-xs px-m py-s" + @click="pageChange(active + 1)" + > + › + </button> + </li> + <li class="mr-xs"> + <button + :disabled="active === total" + class="btn-border rnd-xs px-m py-s" + @click="pageChange(total)" + > + » + </button> + </li> + </ul> +</template> + +<script> +export default { + name: 'UiPagination', + + props: { + total: { type: Number, default: 2 }, + active: { type: Number, default: 1 }, + visibles: { type: Number, default: 1 } + }, + + emits: ['page-update'], + + computed: { + delta() { + return Math.round((this.visibles - 1) / 2) + }, + pages() { + let filter + if (this.active <= this.delta) { + filter = n => n <= this.delta * 2 + 1 + } else if (this.active >= this.total - this.delta) { + filter = n => n >= this.total - this.delta * 2 + } else { + filter = n => + n >= this.active - this.delta && n <= this.active + this.delta + } + return Array.from(Array(this.total).keys()) + .map(n => n + 1) + .filter(filter) + } + }, + + methods: { + pageChange(page) { + this.$emit('page-update', page) + } + } +} +</script> diff --git a/packages/ui/src/components/_ui/pill-list.vue b/packages/ui/src/components/_ui/pill-list.vue new file mode 100644 index 0000000000000000000000000000000000000000..478d5cf6784e8358770e4c419f0bcf40d741a99c --- /dev/null +++ b/packages/ui/src/components/_ui/pill-list.vue @@ -0,0 +1,26 @@ +<template> + <ul class="list-inline"> + <li v-for="element in elements" :key="element" class="mr-xs mb-xs"> + <Pill :color="element.color" class="lh-2"> + {{ element }} + </Pill> + </li> + </ul> +</template> + +<script> +import Pill from './pill.vue' + +export default { + components: { + Pill + }, + + props: { + elements: { + type: Array, + default: () => [] + } + } +} +</script> diff --git a/packages/ui/src/components/_ui/pill.stories.ts b/packages/ui/src/components/_ui/pill.stories.ts new file mode 100644 index 0000000000000000000000000000000000000000..42df96f10b6a3bc9b7934c55d67b121bc2c40c41 --- /dev/null +++ b/packages/ui/src/components/_ui/pill.stories.ts @@ -0,0 +1,30 @@ +import Pill from './pill.vue' +import { Story } from '@storybook/vue3' + +// More on default export: https://storybook.js.org/docs/vue/writing-stories/introduction#default-export +export default { + title: 'Ui/Pill', + component: Pill, + argTypes: { + color: String + } +} + +type Props = { + color?: string +} + +const Template: Story<Props> = (args: Props) => ({ + components: { Pill }, + setup() { + return { args } + }, + template: '<Pill v-bind="args">Hello</Pill>' +}) + +export const Primary = Template.bind({}) + +export const Error = Template.bind({}) +Error.args = { + color: 'bg-error' +} diff --git a/packages/ui/src/components/_ui/pill.vue b/packages/ui/src/components/_ui/pill.vue new file mode 100644 index 0000000000000000000000000000000000000000..b52d63caa108c818cf7b0cb3aac5132800a51d91 --- /dev/null +++ b/packages/ui/src/components/_ui/pill.vue @@ -0,0 +1,18 @@ +<template> + <span class="cap-first small bold"> + <span :class="`${color}`" class="color-bg pill py-xs px-s"> + <slot /> + </span> + </span> +</template> + +<script> +export default { + props: { + color: { + type: String, + default: 'bg-neutral' + } + } +} +</script> diff --git a/packages/ui/src/components/_ui/popup.vue b/packages/ui/src/components/_ui/popup.vue new file mode 100644 index 0000000000000000000000000000000000000000..be0d7467d464de2b631de01375bd91fd97d06fba --- /dev/null +++ b/packages/ui/src/components/_ui/popup.vue @@ -0,0 +1,29 @@ +<template> + <div class="popup fixed shadow full bg-bg"> + <div class="popup-header px-l pt-l"> + <slot name="header" /> + </div> + <div class="popup-content px-l pt"> + <slot /> + </div> + <div class="popup-footer px-l pt pb-l"> + <Messages id="cmn-ui-popup-messages" :messages="messages" /> + <slot name="footer" /> + </div> + </div> +</template> + +<script> +import Messages from './messages.vue' +export default { + name: 'UiSystemPopup', + + components: { + Messages + }, + + props: { + messages: { type: Array, default: () => [] } + } +} +</script> diff --git a/packages/ui/src/components/_ui/ranges.vue b/packages/ui/src/components/_ui/ranges.vue new file mode 100644 index 0000000000000000000000000000000000000000..392b7f738013897ec9ed33a73c994bfc05b7eb2d --- /dev/null +++ b/packages/ui/src/components/_ui/ranges.vue @@ -0,0 +1,64 @@ +<template> + <Accordion + class="mb" + :opened="opened" + :slot-default="true" + @close="close" + @toggle="toggle" + > + <template #title> Éléments </template> + <ul class="list-sans mt-m px-m"> + <li v-for="r in ranges" :key="r"> + <label> + <input + :checked="r === range" + :value="r" + type="radio" + class="mr-s" + @change="rangeUpdate" + /> + {{ r }} + </label> + </li> + </ul> + </Accordion> +</template> + +<script> +import Accordion from './accordion.vue' + +export default { + name: 'UiPagination', + + components: { + Accordion + }, + + props: { + ranges: { type: Array, default: () => [] }, + range: { type: Number, default: 200 } + }, + + emits: ['range-update'], + + data() { + return { + opened: false + } + }, + + methods: { + rangeUpdate(event) { + this.$emit('range-update', Number(event.target.value)) + }, + + close() { + this.opened = false + }, + + toggle() { + this.opened = !this.opened + } + } +} +</script> diff --git a/packages/ui/src/components/_ui/ribbon.vue b/packages/ui/src/components/_ui/ribbon.vue new file mode 100644 index 0000000000000000000000000000000000000000..8db49e29bd4ca8f2b22be0d493a34f6e34d0364a --- /dev/null +++ b/packages/ui/src/components/_ui/ribbon.vue @@ -0,0 +1,24 @@ +<template> + <div class="ribbon pointer-none"> + <div class="relative full-y"> + <div class="absolute full ribbon-bloc"> + <span class="p-xs"> + {{ value }} + </span> + </div> + </div> + </div> +</template> + +<script> +export default { + name: 'UiSystemRibbon', + + props: { + value: { + type: String, + default: 'UI System' + } + } +} +</script> diff --git a/packages/ui/src/components/_ui/table-client.vue b/packages/ui/src/components/_ui/table-client.vue new file mode 100644 index 0000000000000000000000000000000000000000..cbcc78c2e791dfafdeb4d14393b951a256baf674 --- /dev/null +++ b/packages/ui/src/components/_ui/table-client.vue @@ -0,0 +1,63 @@ +<template> + <Table + :column="column" + :columns="columns" + :order="order" + :rows="rowsPage" + @params-update="paramsUpdate" + /> +</template> + +<script> +import Table from './table.vue' + +export default { + name: 'UiTable', + + components: { Table }, + + props: { + column: { type: String, default: '' }, + columns: { type: Array, required: true }, + order: { type: String, default: 'asc' }, + rows: { type: Array, required: true }, + range: { type: Number, default: 200 }, + page: { type: Number, default: 1 } + }, + + emits: ['params-update'], + + computed: { + rowsPages() { + return this.rows + .slice() + .sort((a, b) => { + const aValue = a.columns[this.column].value.toString() + const bValue = b.columns[this.column].value.toString() + + return ( + aValue.localeCompare(bValue, 'fr') * (this.order === 'asc' ? 1 : -1) + ) + }) + .reduce((page, row, i) => { + const pageId = Math.ceil((i + 1) / this.range) - 1 + + page[pageId] = page[pageId] || [] + page[pageId].push(row) + + return page + }, []) + }, + + rowsPage() { + return this.rowsPages[this.page - 1] || [] + } + }, + + methods: { + paramsUpdate(params) { + this.$emit('params-update', params) + } + } +} +</script> diff --git a/packages/ui/src/components/_ui/table-pagination.vue b/packages/ui/src/components/_ui/table-pagination.vue new file mode 100644 index 0000000000000000000000000000000000000000..712d889751a2c6bf2d870a6e0f089a7d3da7cc46 --- /dev/null +++ b/packages/ui/src/components/_ui/table-pagination.vue @@ -0,0 +1,84 @@ +<template> + <div> + <Table + :column="column" + :columns="columns" + :order="order" + :rows="rows" + class="width-full-p" + @params-update="update" + /> + + <div v-if="pagination" class="desktop-blobs"> + <div class="desktop-blob-3-4"> + <Pagination + :active="page" + :total="pages" + :visibles="5" + @page-update="pageUpdate" + /> + </div> + <div class="desktop-blob-1-4"> + <Ranges + v-if="total > 10" + :ranges="[10, 50, 200, 500]" + :range="range" + @range-update="rangeUpdate" + /> + </div> + </div> + </div> +</template> + +<script> +import Table from './table.vue' +import Pagination from './pagination.vue' +import Ranges from './ranges.vue' + +export default { + name: 'CaminoTable', + + components: { + Table, + Pagination, + Ranges + }, + + props: { + columns: { type: Array, required: true }, + rows: { type: Array, required: true }, + range: { type: Number, default: 200 }, + page: { type: Number, default: 1 }, + column: { type: String, default: '' }, + order: { type: String, default: 'asc' }, + total: { type: Number, required: true }, + pagination: { type: Boolean, default: true } + }, + + emits: ['params-update'], + + computed: { + pages() { + return Math.ceil(this.total / this.range) + } + }, + + methods: { + update(params) { + if (!Object.keys(params).includes('page') && this.pagination) { + Object.assign(params, { page: 1 }) + } + + this.$emit('params-update', params) + }, + + pageUpdate(page) { + this.update({ page }) + }, + + rangeUpdate(range) { + this.update({ range }) + } + } +} +</script> diff --git a/packages/ui/src/components/_ui/table.vue b/packages/ui/src/components/_ui/table.vue new file mode 100644 index 0000000000000000000000000000000000000000..d7f3d75f4d25f734c0ce7a6590754d33dbb89944 --- /dev/null +++ b/packages/ui/src/components/_ui/table.vue @@ -0,0 +1,106 @@ +<template> + <div> + <div class="overflow-scroll-x mb"> + <div class="table"> + <div class="tr"> + <div + v-for="col in columns" + :key="col.id" + class="th nowrap" + :class="col.class" + @click="sort(col.id)" + > + <button class="btn-menu full-x p-0"> + {{ col.name || (column === col.id ? '' : '–') }} + <i + v-if="column === col.id" + class="icon-24 right" + :class="{ + 'icon-chevron-b': order === 'asc', + 'icon-chevron-t': order === 'desc' + }" + /> + </button> + </div> + </div> + + <router-link + v-for="row in rows" + :key="row.id" + :to="row.link" + class="tr tr-link text-decoration-none" + > + <div + v-for="col in columns" + :key="col.id" + class="td" + :class="col.class" + > + <component + :is="row.columns[col.id].component" + v-if=" + row.columns[col.id] && + row.columns[col.id].component && + row.columns[col.id].slot + " + v-bind="row.columns[col.id].props" + :class="row.columns[col.id].class" + >{{ row.columns[col.id].value }}</component + > + <component + :is="row.columns[col.id].component" + v-else-if="row.columns[col.id] && row.columns[col.id].component" + v-bind="row.columns[col.id].props" + :class="row.columns[col.id].class" + /> + <span + v-else-if="row.columns[col.id] && row.columns[col.id].value" + :class="row.columns[col.id].class" + >{{ row.columns[col.id].value }}</span + > + </div> + </router-link> + </div> + </div> + </div> +</template> + +<script> +export default { + name: 'UiTable', + + props: { + rows: { type: Array, required: true }, + columns: { type: Array, required: true }, + order: { type: String, default: 'asc' }, + column: { type: String, default: '' } + }, + + emits: ['params-update'], + + watch: { + columns: 'columnInit' + }, + + methods: { + update(params) { + this.$emit('params-update', params) + }, + + sort(colId) { + if (this.column === colId) { + const order = this.order === 'asc' ? 'desc' : 'asc' + this.update({ order }) + } else { + this.update({ column: colId }) + } + }, + + columnInit() { + if (this.rows.length && !this.columns.some(c => c.id === this.column)) { + this.sort(this.columns[0].id) + } + } + } +} +</script> diff --git a/packages/ui/src/components/_ui/tag-list.vue b/packages/ui/src/components/_ui/tag-list.vue new file mode 100644 index 0000000000000000000000000000000000000000..ab110d6ceafb49007c66a415411e1400fea64328 --- /dev/null +++ b/packages/ui/src/components/_ui/tag-list.vue @@ -0,0 +1,26 @@ +<template> + <ul class="list-inline"> + <li v-for="element in elements" :key="element" class="mr-xs mb-xs"> + <Tag :color="element.color" class="lh-2"> + {{ element }} + </Tag> + </li> + </ul> +</template> + +<script> +import Tag from './tag.vue' + +export default { + components: { + Tag + }, + + props: { + elements: { + type: Array, + default: () => [] + } + } +} +</script> diff --git a/packages/ui/src/components/_ui/tag.vue b/packages/ui/src/components/_ui/tag.vue new file mode 100644 index 0000000000000000000000000000000000000000..dd7e23e3701ce1c65f61be2727097d0cbdd6ab14 --- /dev/null +++ b/packages/ui/src/components/_ui/tag.vue @@ -0,0 +1,30 @@ +<template> + <span class="bold cap-first small" + ><span :class="css" class="py-xxs px-xs rnd-xs color-bg box"><slot /></span + ></span> +</template> + +<script> +export default { + props: { + color: { type: String, default: 'bg-neutral' }, + mini: { type: Boolean, default: false } + }, + + computed: { + css() { + const css = { [this.color]: true } + + if (this.mini) { + css['py-xxs'] = true + css['px-xs'] = true + } else { + css['py-xs'] = true + css['px-s'] = true + } + + return css + } + } +} +</script> diff --git a/packages/ui/src/components/activite-edition.test.ts b/packages/ui/src/components/activite-edition.test.ts new file mode 100644 index 0000000000000000000000000000000000000000..fcf0ec075c3916c3d9eb86bfe51d287a5eb9563e --- /dev/null +++ b/packages/ui/src/components/activite-edition.test.ts @@ -0,0 +1,111 @@ +import { mount } from '@vue/test-utils' +import ActiviteEdition from './activite-edition.vue' + +describe('ActiviteEdition', () => { + test("affiche une info-bulle d'aide si l'activite est de type 'grp' ou 'gra'", () => { + const mockRoute = { + params: { + id: 1 + } + } + const mockRouter = { + push: jest.fn() + } + + const msg = + 'Tous les champs doivent être remplis même s’il n’y a pas eu d’extraction. Le cas échéant, indiquer seulement 0, puis enregistrer.' + + const $store = { + state: { + loading: [], + user: { + element: {} + }, + titreActiviteEdition: { + element: { + type: { + id: 'grp', + nom: '', + description: 'desc', + documentsTypes: [] + }, + documents: [], + sections: [], + titre: { + slug: '' + }, + periode: { + nom: '' + }, + annee: '' + } + }, + popup: { + component: {} + } + }, + commit: jest.fn(), + dispatch: jest.fn() + } + + const document = { + addEventListener: jest.fn(), + removeEventListener: jest.fn() + } + + let wrapper = mount(ActiviteEdition, { + global: { + mocks: { + $store, + $route: mockRoute, + $router: mockRouter, + document + }, + stubs: { + RouterLink: true + } + } + }) + + expect(wrapper.vm.$store.state.titreActiviteEdition.element.type.id).toBe( + 'grp' + ) + expect(wrapper.vm.shouldDisplayHelp).toBe(true) + let tooltipContent = wrapper.find('.tooltip-content') + expect(tooltipContent.exists()).toBe(true) + expect(tooltipContent.text()).toContain(msg) + + const secondStore = { ...$store } + secondStore.state.titreActiviteEdition.element.type.id = 'gra' + expect(wrapper.vm.$store.state.titreActiviteEdition.element.type.id).toBe( + 'gra' + ) + expect(wrapper.vm.shouldDisplayHelp).toBe(true) + tooltipContent = wrapper.find('.tooltip-content') + expect(tooltipContent.exists()).toBe(true) + expect(tooltipContent.text()).toContain(msg) + + const thirdStore = { ...$store } + thirdStore.state.titreActiviteEdition.element.type.id = '' + + wrapper = mount(ActiviteEdition, { + global: { + mocks: { + $store: thirdStore, + $route: mockRoute, + $router: mockRouter, + document + }, + stubs: { + RouterLink: true + } + } + }) + + expect(wrapper.vm.$store.state.titreActiviteEdition.element.type.id).toBe( + '' + ) + expect(wrapper.vm.shouldDisplayHelp).toBe(false) + expect(wrapper.find('.tooltip-content').exists()).toBe(false) + }) +}) diff --git a/packages/ui/src/components/activite-edition.vue b/packages/ui/src/components/activite-edition.vue new file mode 100644 index 0000000000000000000000000000000000000000..1b5e1197a3a66618bdf3989a20218e65c3e3f82e --- /dev/null +++ b/packages/ui/src/components/activite-edition.vue @@ -0,0 +1,185 @@ +<template> + <h2>Activité</h2> + <Loader v-if="!loaded" /> + <div v-else> + <h6> + <router-link + :to="{ name: 'titre', params: { id: activite.titre.slug } }" + class="cap-first" + > + {{ activite.titre.nom }} + </router-link> + </h6> + <h5> + {{ dateFormat(activite.date) }} | + <span class="cap-first" + ><span v-if="activite.periode && activite.periode.nom" + >{{ activite.periode.nom }} + </span> + {{ activite.annee }}</span + > + </h5> + + <div class="flex"> + <h3 class="mb-s"> + <span class="cap-first">{{ activite.type.nom }}</span> + </h3> + + <HelpTooltip v-if="shouldDisplayHelp" class="ml-m"> + Tous les champs doivent être remplis même s’il n’y a pas eu + d’extraction. Le cas échéant, indiquer seulement 0, puis enregistrer. + </HelpTooltip> + </div> + + <!-- eslint-disable vue/no-v-html --> + <div + v-if="activite.type.description" + class="h6" + v-html="activite.type.description" + /> + + <div class="p-s bg-info color-bg mb"> + Besoin d'aide pour remplir ce rapport ? + <router-link + to="/contacts" + target="_blank" + class="p-s bg-info color-bg mb" + >Contactez-nous + </router-link> + </div> + + <SectionsEdit + :contenu="activite.contenu" + :sections="activite.sections" + @contenu-update="activite.contenu = $event" + /> + + <DocumentsEdit + v-model:documents="activite.documents" + :add-action="{ name: 'titreActiviteEdition/documentAdd' }" + :remove-action="{ name: 'titreActiviteEdition/documentRemove' }" + repertoire="activites" + document-popup-title="documentPopupTitle" + :parent-type-id="activite.type.id" + :documents-types="activite.type.documentsTypes" + /> + + <div class="tablet-blobs mb"> + <div class="tablet-blob-1-3" /> + <div class="tablet-blob-2-3"> + <button + id="cmn-etape-edit-button-enregistrer" + ref="save-button" + class="btn btn-primary" + @click="save" + > + Enregistrer + </button> + </div> + </div> + </div> +</template> + +<script> +import { dateFormat } from '@/utils' +import Loader from './_ui/loader.vue' +import HelpTooltip from './_ui/help-tooltip.vue' +import SectionsEdit from './_common/sections-edit.vue' +import DocumentsEdit from './document/multi-edit.vue' + +export default { + components: { Loader, SectionsEdit, DocumentsEdit, HelpTooltip }, + + data() { + return { + events: { saveKeyUp: true } + } + }, + + computed: { + loaded() { + return !this.$store.state.loading.includes('activiteEditionInit') + }, + + user() { + return this.$store.state.user.element + }, + + activiteId() { + return this.$route.params.id + }, + + activite() { + return this.$store.state.titreActiviteEdition.element + }, + + shouldDisplayHelp() { + return ['grp', 'gra'].includes(this.activite.type.id) + }, + + loading() { + return false + }, + + isPopupOpen() { + return !!this.$store.state.popup.component + } + }, + + watch: { + user: 'init' + }, + + async created() { + await this.init() + + document.addEventListener('keyup', this.keyUp) + }, + + beforeUnmount() { + document.removeEventListener('keyup', this.keyUp) + }, + + unmounted() { + this.$store.commit('titreActiviteEdition/reset') + }, + + methods: { + async init() { + await this.$store.dispatch('titreActiviteEdition/init', this.activiteId) + }, + + async save() { + await this.$store.dispatch('titreActiviteEdition/update', this.activite) + + this.eventTrack({ + categorie: 'activite', + action: 'activite-enregistrer', + nom: this.activite.nom + }) + }, + + eventTrack(event) { + if (this.$matomo) { + this.$matomo.trackEvent(event.categorie, event.action, event.nom) + } + }, + + keyUp(e) { + if ( + (e.which || e.keyCode) === 13 && + this.events.saveKeyUp && + !this.isPopupOpen && + !this.loading + ) { + this.$refs['save-button'].focus() + this.save() + } + }, + + dateFormat(date) { + return dateFormat(date) + } + } +} +</script> diff --git a/packages/ui/src/components/activite.vue b/packages/ui/src/components/activite.vue new file mode 100644 index 0000000000000000000000000000000000000000..4a5aa4e7736ffeddabbe6209297db73817e44a24 --- /dev/null +++ b/packages/ui/src/components/activite.vue @@ -0,0 +1,73 @@ +<template> + <h2>Activité</h2> + <Loader v-if="!loaded" /> + <div v-else> + <h6> + <router-link + :to="{ name: 'titre', params: { id: activite.titre.slug } }" + class="cap-first" + > + {{ activite.titre.nom }} + </router-link> + </h6> + + <Preview + :key="activite.id" + :activite="activite" + :route="route" + :initial-opened="true" + class="mb" + /> + </div> +</template> + +<script> +import Loader from './_ui/loader.vue' +import Preview from './activite/preview.vue' + +export default { + components: { Loader, Preview }, + + computed: { + activite() { + return this.$store.state.titreActivite.element + }, + + user() { + return this.$store.state.user.element + }, + + loaded() { + return !!this.activite + }, + + route() { + return { name: 'titreActivite', id: this.activite.slug } + } + }, + + watch: { + '$route.params.id': function (id) { + if (this.$route.name === 'activite' && id) { + this.get() + } + }, + + user: 'get' + }, + + created() { + this.get() + }, + + beforeUnmount() { + this.$store.commit('titreActivite/reset') + }, + + methods: { + async get() { + await this.$store.dispatch('titreActivite/get', this.$route.params.id) + } + } +} +</script> diff --git a/packages/ui/src/components/activite/button.vue b/packages/ui/src/components/activite/button.vue new file mode 100644 index 0000000000000000000000000000000000000000..98ed1709ca9b92c70f337b7660d6bb27cedd24b1 --- /dev/null +++ b/packages/ui/src/components/activite/button.vue @@ -0,0 +1,72 @@ +<template> + <button + class="cmn-activite-btn-remplir btn small flex py-s px-m rnd-0" + :class="{ 'btn-primary': activite.statut.id !== 'enc' && buttonText }" + @click="activiteEditPopupOpen" + > + <div v-if="buttonText" class="my-xxs"> + {{ buttonText }} + </div> + <i v-else class="icon-24 icon-pencil" /> + </button> + <button + v-if="activite.statut.id === 'enc'" + class="cmn-activite-btn-depose btn btn-primary small flex rnd-0" + :disabled="!activite.deposable" + :class="{ disabled: !activite.deposable }" + @click="activiteDepotPopupOpen" + > + <span class="mt-xxs mb-xxs">Déposer…</span> + </button> +</template> + +<script> +import DeposePopup from './depose-popup.vue' + +export default { + props: { + activite: { type: Object, default: () => ({}) }, + route: { type: Object, required: true } + }, + + computed: { + buttonText() { + if (this.activite.deposable || this.activite.statut.id === 'dep') { + return null + } + return this.activite.statut.id === 'abs' ? 'Remplir…' : 'Compléter…' + } + }, + + methods: { + activiteDepotPopupOpen() { + this.$store.commit('popupOpen', { + component: DeposePopup, + props: { + activite: this.activite, + route: this.route + } + }) + + this.eventTrack({ + categorie: 'titre-activite', + action: 'titre-activite_depot', + nom: this.$route.params.id + }) + }, + + eventTrack(event) { + if (this.$matomo) { + this.$matomo.trackEvent(event.categorie, event.action, event.nom) + } + }, + + activiteEditPopupOpen() { + this.$router.push({ + name: 'activite-edition', + params: { id: this.activite.slug } + }) + } + } +} +</script> diff --git a/packages/ui/src/components/activite/depose-popup.vue b/packages/ui/src/components/activite/depose-popup.vue new file mode 100644 index 0000000000000000000000000000000000000000..f584abbaea10ac98d39f837b05c4e967318166b3 --- /dev/null +++ b/packages/ui/src/components/activite/depose-popup.vue @@ -0,0 +1,92 @@ +<template> + <Popup :messages="messages"> + <template #header> + <h2>Dépôt d’une activité</h2> + </template> + + <p class="bold">Souhaitez vous déposer cette activité ?</p> + <div class="bg-warning color-bg p-s mb-l"> + <span class="bold"> Attention </span>: cette opération est définitive et + ne peut pas être annulée. + </div> + + <template #footer> + <div v-if="!loading" class="tablet-blobs"> + <div class="tablet-blob-1-3 mb tablet-mb-0"> + <button class="btn-border rnd-xs p-s full-x" @click="cancel"> + Annuler + </button> + </div> + <div class="tablet-blob-2-3"> + <button + id="cmn-etape-remove-popup-button-supprimer" + class="btn btn-primary" + @click="depose" + > + Déposer + </button> + </div> + </div> + <div v-else class="p-s full-x bold">Dépôt en cours…</div> + </template> + </Popup> +</template> + +<script> +import Popup from '../_ui/popup.vue' + +export default { + components: { + Popup + }, + + props: { + activite: { type: Object, required: true }, + route: { type: Object, required: true } + }, + + computed: { + loading() { + return this.$store.state.popup.loading + }, + + messages() { + return this.$store.state.popup.messages + } + }, + + created() { + document.addEventListener('keyup', this.keyup) + }, + + beforeUnmount() { + document.removeEventListener('keyup', this.keyup) + }, + + methods: { + async depose() { + await this.$store.dispatch('titreActivite/depose', { + id: this.activite.id, + route: this.route + }) + }, + + cancel() { + this.errorsRemove() + this.$store.commit('popupClose') + }, + + errorsRemove() { + this.$store.commit('popupMessagesRemove') + }, + + keyup(e) { + if ((e.which || e.keyCode) === 27) { + this.cancel() + } else if ((e.which || e.keyCode) === 13) { + this.remove() + } + } + } +} +</script> diff --git a/packages/ui/src/components/activite/preview.test.ts b/packages/ui/src/components/activite/preview.test.ts new file mode 100644 index 0000000000000000000000000000000000000000..ec3e1652a6992933b8658b9a565648c3506561ce --- /dev/null +++ b/packages/ui/src/components/activite/preview.test.ts @@ -0,0 +1,124 @@ +import { mount } from '@vue/test-utils' +import Preview from './preview.vue' + +describe('Activite > Preview', () => { + const activite = { + date: '2018-01-01', + dateSaisie: '2018-01-01', + periode: { + nom: 'periode' + }, + annee: '2021', + type: { + id: 'gra' + }, + statut: { + id: 'enc', + nom: 'en construction', + couleur: 'warning' + }, + deposable: true, + sections: [{ id: 'id', elements: [] }] + } + + test("si l'activite est en construction et déposable, de type 'grp' ou 'gra', affiche une info-bulle d'aide", () => { + // En construction, GRA, deposable : OK + let wrapper = mount(Preview, { + props: { + activite, + route: { + name: 'name' + }, + initialOpened: false + } + }) + + expect(wrapper.props('activite').statut.id).toBe('enc') + expect(wrapper.props('activite').type.id).toBe('gra') + expect(wrapper.props('activite').deposable).toBe(true) + let tooltip = wrapper.find('.tooltip-content') + expect(tooltip.exists()).toBe(true) + expect(tooltip.text()).toContain( + 'Si votre déclaration est complète, cliquez sur déposer. Cliquez sur le crayon pour modifier.' + ) + + // En construction, GRP, deposable : OK + wrapper = mount(Preview, { + props: { + activite: { ...activite, type: { id: 'grp' } }, + route: { + name: 'name' + }, + initialOpened: false + } + }) + expect(wrapper.props('activite').statut.id).toBe('enc') + expect(wrapper.props('activite').type.id).toBe('grp') + expect(wrapper.props('activite').deposable).toBe(true) + tooltip = wrapper.find('.tooltip-content') + expect(tooltip.exists()).toBe(true) + expect(tooltip.text()).toContain( + 'Si votre déclaration est complète, cliquez sur déposer. Cliquez sur le crayon pour modifier.' + ) + + // Autre statut, GRA, deposable : KO + wrapper = mount(Preview, { + props: { + activite: { ...activite, statut: { id: 'foo' } }, + route: { + name: 'name' + }, + initialOpened: false + } + }) + expect(wrapper.props('activite').statut.id).not.toBe('enc') + expect(wrapper.props('activite').type.id).toBe('gra') + expect(wrapper.props('activite').deposable).toBe(true) + expect(wrapper.find('.tooltip-content').exists()).toBe(false) + + // En construction, GRA, non déposable (déposé) : KO + wrapper = mount(Preview, { + props: { + activite: { ...activite, deposable: null }, + route: { + name: 'name' + }, + initialOpened: false + } + }) + expect(wrapper.props('activite').statut.id).toBe('enc') + expect(wrapper.props('activite').type.id).toBe('gra') + expect(wrapper.props('activite').deposable).toBeNull() + expect(wrapper.find('.tooltip-content').exists()).toBe(false) + + // En construction, GRA, non déposable (incomplet) : KO + wrapper = mount(Preview, { + props: { + activite: { ...activite, deposable: false }, + route: { + name: 'name' + }, + initialOpened: false + } + }) + expect(wrapper.props('activite').statut.id).toBe('enc') + expect(wrapper.props('activite').type.id).toBe('gra') + expect(wrapper.props('activite').deposable).toBe(false) + expect(wrapper.find('.tooltip-content').exists()).toBe(false) + + // En construction, autre type, déposable : KO + wrapper = mount(Preview, { + props: { + activite: { ...activite, type: { id: 'XXX' } }, + route: { + name: 'name' + }, + initialOpened: false + } + }) + expect(wrapper.props('activite').statut.id).toBe('enc') + expect(wrapper.props('activite').type.id).toBe('XXX') + expect(wrapper.props('activite').deposable).toBe(true) + expect(wrapper.find('.tooltip-content').exists()).toBe(false) + }) +}) diff --git a/packages/ui/src/components/activite/preview.vue b/packages/ui/src/components/activite/preview.vue new file mode 100644 index 0000000000000000000000000000000000000000..339193ab6fc8f476ecaa7f7ab8baf9e47e9c8d2a --- /dev/null +++ b/packages/ui/src/components/activite/preview.vue @@ -0,0 +1,189 @@ +<template> + <Accordion + :opened="opened" + sub="true" + :slot-default="true" + :slot-buttons="true" + @close="close" + @toggle="toggle" + > + <template #title> + <h5> + {{ dateFormat(activite.date) }} | + <span class="cap-first" + ><span v-if="activite.periode && activite.periode.nom" + >{{ activite.periode.nom }} + </span> + {{ activite.annee }}</span + > + </h5> + <div class="flex"> + <h3 class="mb-s"> + <span class="cap-first">{{ activite.type.nom }}</span> + </h3> + <HelpTooltip v-if="shouldDisplayHelp" class="ml-m"> + Si votre déclaration est complète, cliquez sur déposer. Cliquez sur le + crayon pour modifier. + </HelpTooltip> + </div> + <Statut :color="activite.statut.couleur" :nom="statutNom" class="mb-xs" /> + </template> + <template #buttons> + <button + v-if="activite.suppression" + class="cmn-activite-btn-supprimer btn small py-s px-m flex mr-px" + title="supprimer l'activité'" + @click="activiteRemovePopupOpen" + > + <i class="icon-24 icon-trash" /> + </button> + <ActiviteButton + v-if="activite.modification" + :activite="activite" + :route="route" + /> + </template> + + <div> + <!-- eslint-disable vue/no-v-html --> + <div v-if="activite.type.description" class="border-b-s px-m pt-m"> + <div class="h6" v-html="activite.type.description" /> + </div> + <div v-if="activite.dateSaisie" class="border-b-s px-m pt-m"> + <h5> + Date de {{ activite.statut.id === 'dep' ? 'dépôt' : 'modification' }} + </h5> + <p>{{ dateFormat(activite.dateSaisie) }}</p> + </div> + + <Section + v-for="s in activite.sections" + :key="s.id" + class="border-b-s px-m pt-m" + :section="s" + :contenu="activite.contenu ? activite.contenu[s.id] : {}" + :date="activite.date" + /> + + <Documents + v-if="activite.documents && activite.documents.length" + :bouton-suppression="activite.modification" + :bouton-modification="activite.modification" + :route="route" + :documents="activite.documents" + :etiquette="activite.modification" + :parent-id="activite.id" + :parent-type-id="activite.type.id" + :title="documentPopupTitle" + repertoire="activites" + class="px-m" + /> + </div> + </Accordion> +</template> + +<script> +import ActiviteButton from './button.vue' +import Accordion from '../_ui/accordion.vue' +import HelpTooltip from '../_ui/help-tooltip.vue' +import Section from '../_common/section.vue' +import Statut from '../_common/statut.vue' + +import Documents from '../documents/list.vue' +import { dateFormat } from '@/utils' +import RemovePopup from './remove-popup.vue' + +export default { + components: { + ActiviteButton, + Accordion, + Section, + Statut, + Documents, + HelpTooltip + }, + + props: { + activite: { type: Object, required: true }, + route: { type: Object, required: true }, + initialOpened: { type: Boolean, default: false } + }, + + emits: ['popup'], + + data: () => ({ + opened: false + }), + + computed: { + documentNew() { + return { + titreActiviteId: this.activite.id, + entreprisesLecture: false, + publicLecture: false, + fichier: null, + fichierNouveau: null, + fichierTypeId: null, + typeId: '' + } + }, + + documentPopupTitle() { + return `${this.activite.type.nom} | ${this.activite.periode.nom} ${this.activite.annee}` + }, + + statutNom() { + return this.isEnConstruction && !this.isActiviteDeposable + ? `${this.activite.statut.nom} (incomplet)` + : this.activite.statut.nom + }, + + isEnConstruction() { + return this.activite.statut.id === 'enc' + }, + + isActiviteDeposable() { + return this.activite.deposable === true + }, + + shouldDisplayHelp() { + return ( + this.isEnConstruction && + this.isActiviteDeposable && + ['grp', 'gra'].includes(this.activite.type.id) + ) + } + }, + + created() { + this.opened = this.initialOpened + }, + + methods: { + close() { + this.opened = false + }, + + toggle() { + this.opened = !this.opened + }, + + activiteRemovePopupOpen() { + this.$store.commit('popupOpen', { + component: RemovePopup, + props: { + activiteId: this.activite.id, + typeNom: this.activite.type.nom, + annee: this.activite.annee, + periodeNom: this.activite.periode.nom, + route: this.route + } + }) + }, + + dateFormat(date) { + return dateFormat(date) + } + } +} +</script> diff --git a/packages/ui/src/components/activite/remove-popup.vue b/packages/ui/src/components/activite/remove-popup.vue new file mode 100644 index 0000000000000000000000000000000000000000..ba64a3e13e392f8666246975003cf4d9fe838981 --- /dev/null +++ b/packages/ui/src/components/activite/remove-popup.vue @@ -0,0 +1,107 @@ +<template> + <Popup :messages="messages"> + <template #header> + <div> + <h6> + <span class="cap-first"> {{ typeNom }} </span + ><span class="color-neutral"> | </span + ><span class="cap-first"> + {{ periodeNom }} + </span> + </h6> + <h2 class="cap-first">Suppression de l'activité</h2> + </div> + </template> + + <p class="bold"> + Souhaitez vous supprimer l'activité :<br /> + <span class="color-inverse cap-first">{{ typeNom }}</span> | + <span class="color-inverse">{{ periodeNom }} {{ annee }}</span> + ? + </p> + <div class="bg-warning color-bg p-s mb-l"> + <span class="bold"> Attention </span>: cette opération est définitive et + ne peut pas être annulée. + </div> + + <template #footer> + <div v-if="!loading" class="tablet-blobs"> + <div class="tablet-blob-1-3 mb tablet-mb-0"> + <button class="btn-border rnd-xs p-s full-x" @click="cancel"> + Annuler + </button> + </div> + <div class="tablet-blob-2-3"> + <button class="btn-flash rnd-xs p-s full-x" @click="remove"> + Supprimer + </button> + </div> + </div> + <div v-else class="p-s full-x bold">Suppression en cours…</div> + </template> + </Popup> +</template> + +<script> +import Popup from '../_ui/popup.vue' + +export default { + name: 'CaminoTitreActiviteRemovePopup', + + components: { + Popup + }, + + props: { + activiteId: { type: String, required: true }, + typeNom: { type: String, required: true }, + periodeNom: { type: String, required: true }, + annee: { type: Number, required: true }, + route: { type: Object, required: true } + }, + + computed: { + loading() { + return this.$store.state.popup.loading + }, + + messages() { + return this.$store.state.popup.messages + } + }, + + created() { + document.addEventListener('keyup', this.keyup) + }, + + beforeUnmount() { + document.removeEventListener('keyup', this.keyup) + }, + + methods: { + async remove() { + await this.$store.dispatch('titreActivite/remove', { + id: this.activiteId, + route: this.route + }) + }, + + cancel() { + this.errorsRemove() + this.$store.commit('popupClose') + }, + + keyup(e) { + if ((e.which || e.keyCode) === 27) { + this.cancel() + } else if ((e.which || e.keyCode) === 13) { + this.remove() + } + }, + + errorsRemove() { + // this.$store.commit('utilisateur/loginMessagesRemove') + } + } +} +</script> diff --git a/packages/ui/src/components/activites.vue b/packages/ui/src/components/activites.vue new file mode 100644 index 0000000000000000000000000000000000000000..d8f64a69738db56fdc0c06bb11c093963962caae --- /dev/null +++ b/packages/ui/src/components/activites.vue @@ -0,0 +1,108 @@ +<template> + <liste + v-if="visible" + nom="activités" + :filtres="filtres" + :colonnes="colonnes" + :lignes="lignes" + :elements="activites" + :metas="metas" + :params="params" + :total="total" + :initialized="initialized" + @params-update="paramsUpdate" + > + <template v-if="activites.length" #downloads> + <Downloads + :formats="['csv', 'xlsx', 'ods']" + section="activites" + class="flex-right full-x" + /> + </template> + </liste> +</template> + +<script> +import Liste from './_common/liste.vue' +import Downloads from './_common/downloads.vue' + +import filtres from './activites/filtres' +import { activitesColonnes, activitesLignesBuild } from './activites/table' + +export default { + name: 'Activites', + + components: { Liste, Downloads }, + + data() { + return { + filtres, + colonnes: activitesColonnes, + visible: false + } + }, + + computed: { + user() { + return this.$store.state.user.element + }, + + activites() { + return this.$store.state.titresActivites.elements + }, + + total() { + return this.$store.state.titresActivites.total + }, + + params() { + return this.$store.state.titresActivites.params + }, + + metas() { + return this.$store.state.titresActivites.metas + }, + + lignes() { + return activitesLignesBuild(this.activites) + }, + + initialized() { + return this.$store.state.titresActivites.initialized + } + }, + + watch: { + user: 'init', + + '$route.query': { + handler: function () { + this.$store.dispatch('titresActivites/routeUpdate') + } + } + }, + + async created() { + await this.init() + }, + + unmounted() { + this.$store.commit('titresActivites/reset') + }, + + methods: { + async init() { + if (!this.user || !this.user.sections || !this.user.sections.activites) { + await this.$store.dispatch('pageError') + } else { + this.visible = true + await this.$store.dispatch('titresActivites/init') + } + }, + + async paramsUpdate(options) { + await this.$store.dispatch(`titresActivites/paramsSet`, options) + } + } +} +</script> diff --git a/packages/ui/src/components/activites/filtres.js b/packages/ui/src/components/activites/filtres.js new file mode 100644 index 0000000000000000000000000000000000000000..ae8beb756b0182c01bc8092fa0339c0e72142107 --- /dev/null +++ b/packages/ui/src/components/activites/filtres.js @@ -0,0 +1,100 @@ +import FiltresStatuts from '../_common/filtres/statuts.vue' +import FiltresDomaines from '../_common/filtres/domaines.vue' +import FiltresTypes from '../_common/filtres/types.vue' +import { elementsFormat } from '../../utils/index' +import { markRaw } from '@vue/reactivity' + +const filtres = [ + { + id: 'titresNoms', + type: 'input', + value: '', + name: 'Noms de titre', + placeholder: '…' + }, + { + id: 'titresEntreprises', + type: 'input', + value: '', + name: 'Entreprises', + placeholder: 'Nom ou siret' + }, + { + id: 'titresSubstances', + type: 'input', + value: '', + name: 'Substances', + placeholder: 'Or, Argent, Ag, …' + }, + { + id: 'titresReferences', + type: 'input', + value: '', + name: 'Références', + placeholder: 'Référence DGEC, DEAL, DEB, BRGM, Ifremer, …' + }, + { + id: 'titresTerritoires', + type: 'input', + value: '', + name: 'Territoires', + placeholder: 'Commune, département, région, …' + }, + { + id: 'titresDomainesIds', + name: 'Domaines', + type: 'checkboxes', + value: [], + elements: [], + component: markRaw(FiltresDomaines), + elementsFormat + }, + { + id: 'titresTypesIds', + name: 'Types de titre', + type: 'checkboxes', + value: [], + elements: [], + component: markRaw(FiltresTypes), + elementsFormat + }, + { + id: 'titresStatutsIds', + name: 'Statuts de titre', + type: 'checkboxes', + value: [], + elements: [], + component: markRaw(FiltresStatuts), + elementsFormat + }, + { + id: 'typesIds', + name: 'Types', + type: 'checkboxes', + value: [], + elements: [], + elementsFormat + }, + { + id: 'statutsIds', + name: 'Statuts', + type: 'checkboxes', + value: [], + elements: [], + component: markRaw(FiltresStatuts), + elementsFormat + }, + { + id: 'annees', + name: 'Années', + type: 'select', + value: [], + elements: [], + elementName: 'nom', + buttonAdd: 'Ajouter une année', + isNumber: true, + elementsFormat + } +] + +export default filtres diff --git a/packages/ui/src/components/activites/list.vue b/packages/ui/src/components/activites/list.vue new file mode 100644 index 0000000000000000000000000000000000000000..e3e0ae2eba97bf75bf68a360e46aa1705f14a997 --- /dev/null +++ b/packages/ui/src/components/activites/list.vue @@ -0,0 +1,46 @@ +<template> + <div> + <div v-for="annee in activitesByYear" :key="annee.id"> + <h2>{{ annee.id }}</h2> + <Preview + v-for="activite in annee.activites" + :key="activite.id" + :activite="activite" + :route="{ name: 'titre', id: titreId }" + class="mb-s" + /> + <div class="line width-full my-xxl" /> + </div> + </div> +</template> + +<script> +import Preview from '../activite/preview.vue' + +export default { + components: { Preview }, + + props: { + activites: { type: Array, default: () => [] }, + titreId: { type: String, required: true } + }, + + computed: { + activitesByYear() { + return this.activites.reduce((annees, activite) => { + let annee = annees.find(annee => annee && annee.id === activite.annee) + if (!annee) { + annee = { + id: activite.annee, + activites: [] + } + annees.push(annee) + } + + annee.activites.push(activite) + return annees + }, []) + } + } +} +</script> diff --git a/packages/ui/src/components/activites/pills.vue b/packages/ui/src/components/activites/pills.vue new file mode 100644 index 0000000000000000000000000000000000000000..1706a115ca6debbb5648a1c0e80219d68e7a4ccd --- /dev/null +++ b/packages/ui/src/components/activites/pills.vue @@ -0,0 +1,22 @@ +<template> + <div class="mb--s"> + <span v-if="activitesAbsentes" class="mr-xs inline-block"> + <Statut color="error" :nom="activitesAbsentes.toString()" /> + </span> + <span v-if="activitesEnConstruction" class="mr-xs inline-block"> + <Statut color="warning" :nom="activitesEnConstruction.toString()" /> + </span> + </div> +</template> + +<script> +import Statut from '../_common/statut.vue' + +export default { + components: { Statut }, + props: { + activitesAbsentes: { type: Number, default: 0 }, + activitesEnConstruction: { type: Number, default: 0 } + } +} +</script> diff --git a/packages/ui/src/components/activites/table.js b/packages/ui/src/components/activites/table.js new file mode 100644 index 0000000000000000000000000000000000000000..c01b212c4238aafd57704b34e119a8a1898ce883 --- /dev/null +++ b/packages/ui/src/components/activites/table.js @@ -0,0 +1,62 @@ +import { markRaw } from '@vue/reactivity' +import List from '../_ui/list.vue' +import Statut from '../_common/statut.vue' + +const activitesColonnes = [ + { + id: 'titre', + name: 'Titre' + }, + { + id: 'titulaires', + name: 'Titulaires', + class: ['min-width-10'] + }, + { + id: 'annee', + name: 'Année' + }, + { + id: 'periode', + name: 'Période' + }, + { + id: 'statut', + name: 'Statut', + class: ['min-width-5'] + } +] + +const activitesLignesBuild = activites => + activites.map(activite => { + const columns = { + titre: { value: activite.titre.nom }, + titulaires: { + component: markRaw(List), + props: { + elements: activite.titre.titulaires.map(({ nom }) => nom), + mini: true + }, + class: 'mb--xs', + value: activite.titre.titulaires.map(({ nom }) => nom).join(', ') + }, + annee: { value: activite.annee }, + periode: { value: activite.periode.nom }, + statut: { + component: markRaw(Statut), + props: { + color: activite.statut.couleur, + nom: activite.statut.nom + }, + value: activite.statut.nom + } + } + + return { + id: activite.id, + link: { name: 'activite', params: { id: activite.slug } }, + columns + } + }) + +export { activitesColonnes, activitesLignesBuild } diff --git a/packages/ui/src/components/administration.vue b/packages/ui/src/components/administration.vue new file mode 100644 index 0000000000000000000000000000000000000000..8860773d276258cafff7475b72703cb6e45f36ea --- /dev/null +++ b/packages/ui/src/components/administration.vue @@ -0,0 +1,308 @@ +<template> + <Loader v-if="!loaded" /> + <div v-else> + <h5>Administration</h5> + <h1> + {{ administration.abreviation }} + </h1> + <Accordion class="mb-xxl" :slot-sub="true" :slot-buttons="true"> + <template #title> + <span class="cap-first">{{ administration.nom }}</span> + </template> + + <template v-if="administration.modification" #buttons> + <button class="btn py-s px-m" @click="editPopupOpen"> + <i class="icon-24 icon-pencil" /> + </button> + </template> + + <template #sub> + <div class="px-m pt-m border-b-s"> + <div class="tablet-blobs"> + <div class="tablet-blob-1-4"> + <h5>Type</h5> + </div> + <div class="tablet-blob-3-4"> + <p class="word-break"> + {{ administration.type.nom }} + </p> + </div> + </div> + + <div v-if="administration.service" class="tablet-blobs"> + <div class="tablet-blob-1-4"> + <h5>Service</h5> + </div> + <div class="tablet-blob-3-4"> + <p class="word-break"> + {{ administration.service }} + </p> + </div> + </div> + + <div class="tablet-blobs"> + <div class="tablet-blob-1-4"> + <h5>Adresse</h5> + </div> + <div class="tablet-blob-3-4"> + <p> + {{ administration.adresse1 }} + <span v-if="administration.adresse2" + ><br />{{ administration.adresse2 }}</span + > + <br />{{ administration.codePostal }} + {{ administration.commune }} + </p> + </div> + </div> + + <div class="tablet-blobs"> + <div class="tablet-blob-1-4"> + <h5>Téléphone</h5> + </div> + <div class="tablet-blob-3-4"> + <p class="word-break"> + <span v-if="administration.telephone">{{ + administration.telephone + }}</span> + <span v-else>–</span> + </p> + </div> + </div> + + <div class="tablet-blobs"> + <div class="tablet-blob-1-4"> + <h5>Email</h5> + </div> + <div class="tablet-blob-3-4"> + <p class="word-break"> + <a + v-if="administration.email" + :href="`mailto:${administration.email}`" + class="btn small bold py-xs px-s rnd" + > + {{ administration.email }} + </a> + <span v-else>–</span> + </p> + </div> + </div> + + <div class="tablet-blobs"> + <div class="tablet-blob-1-4"> + <h5>Site</h5> + </div> + <div class="tablet-blob-3-4"> + <p class="word-break"> + <a + v-if="administration.url" + :href="administration.url" + class="btn small bold py-xs px-s rnd" + > + {{ administration.url }} + </a> + <span v-else>–</span> + </p> + </div> + </div> + + <div v-if="administration.departement" class="tablet-blobs"> + <div class="tablet-blob-1-4"> + <h5>Département</h5> + </div> + <div class="tablet-blob-3-4"> + <p> + {{ administration.departement.nom }} + </p> + </div> + </div> + + <div v-if="administration.region" class="tablet-blobs"> + <div class="tablet-blob-1-4"> + <h5>Région</h5> + </div> + <div class="tablet-blob-3-4"> + <p> + {{ administration.region.nom }} + </p> + </div> + </div> + + <div + v-if=" + permissionsCheck(user, ['super']) && + (administration.region || administration.departement) + " + class="tablet-blobs" + > + <div class="tablet-blob-1-4" /> + <div class="tablet-blob-3-4"> + <p class="h6 mb"> + Un utilisateur d'une <b>administration locale</b> peut créer et + modifier le contenu des titres du territoire concerné. + </p> + </div> + </div> + </div> + </template> + </Accordion> + + <div v-if="utilisateurs && utilisateurs.length" class="mb-xxl"> + <div class="line-neutral width-full mb-xxl" /> + <h2>Utilisateurs</h2> + <div class="line width-full" /> + <Table + class="width-full-p" + :columns="utilisateursColonnes" + :rows="utilisateursLignes" + :utilisateurs="utilisateurs" + /> + </div> + + <div v-if="administration.emailsLecture"> + <div class="line-neutral width-full mb-xxl" /> + <h2>Emails</h2> + <AdministrationActiviteTypeEmail + :administration="administration" + :activites-types="activitesTypes" + @emailUpdate="activiteTypeEmailUpdate" + @emailDelete="activiteTypeEmailDelete" + /> + </div> + + <div v-if="permissionsCheck(user, ['super'])" class="mb-xxl"> + <div class="line-neutral width-full mb-xxl" /> + <h2>Permissions</h2> + + <AdministrationPermission :administration="administration" /> + </div> + </div> +</template> + +<script> +import Accordion from './_ui/accordion.vue' +import Loader from './_ui/loader.vue' +import Table from './_ui/table.vue' +import AdministrationEditPopup from './administration/edit-popup.vue' +import AdministrationPermission from './administration/permissions.vue' +import AdministrationActiviteTypeEmail from './administration/activites-types-emails.vue' + +import { + utilisateursColonnes, + utilisateursLignesBuild +} from './utilisateurs/table' +import { permissionsCheck } from '@/utils' + +export default { + components: { + Accordion, + Loader, + Table, + AdministrationPermission, + AdministrationActiviteTypeEmail + }, + + data() { + return { + utilisateursColonnes + } + }, + + computed: { + administration() { + return this.$store.state.administration.element + }, + + utilisateurs() { + return this.administration.utilisateurs + }, + + utilisateursLignes() { + return utilisateursLignesBuild(this.utilisateurs) + }, + + user() { + return this.$store.state.user.element + }, + + loaded() { + return !!this.administration + }, + + activitesTypes() { + return this.$store.state.administration.metas.activitesTypes + } + }, + + watch: { + '$route.params.id': function (id) { + if (this.$route.name === 'administration' && id) { + this.get() + } + }, + + user: 'get' + }, + + created() { + this.get() + }, + + beforeUnmount() { + this.$store.commit('administration/reset') + }, + + methods: { + async get() { + await this.$store.dispatch('administration/init') + await this.$store.dispatch('administration/get', this.$route.params.id) + }, + + editPopupOpen() { + const administration = { + id: this.administration.id, + typeId: this.administration.type.id, + nom: this.administration.nom, + abreviation: this.administration.abreviation, + service: this.administration.service, + url: this.administration.url, + email: this.administration.email, + telephone: this.administration.telephone, + adresse1: this.administration.adresse1, + adresse2: this.administration.adresse2, + codePostal: this.administration.codePostal, + commune: this.administration.commune, + cedex: this.administration.cedex, + departementId: + this.administration.departement && this.administration.departement.id, + regionId: this.administration.region && this.administration.region.id + } + + this.$store.commit('popupOpen', { + component: AdministrationEditPopup, + props: { administration } + }) + }, + + permissionsCheck(user, permissions) { + return permissionsCheck(user, permissions) + }, + + async activiteTypeEmailUpdate({ administrationId, activiteTypeId, email }) { + await this.$store.dispatch('administration/activiteTypeEmailUpdate', { + administrationId, + activiteTypeId, + email + }) + }, + + async activiteTypeEmailDelete({ administrationId, activiteTypeId, email }) { + await this.$store.dispatch('administration/activiteTypeEmailDelete', { + administrationId, + activiteTypeId, + email + }) + } + } +} +</script> diff --git a/packages/ui/src/components/administration/activites-types-emails.test.js b/packages/ui/src/components/administration/activites-types-emails.test.js new file mode 100644 index 0000000000000000000000000000000000000000..68e5d1b629dd4914ddaeed696555c935b230b5b2 --- /dev/null +++ b/packages/ui/src/components/administration/activites-types-emails.test.js @@ -0,0 +1,151 @@ +import { shallowMount } from '@vue/test-utils' +import ActivitesTypesEmails from './activites-types-emails.vue' +import ButtonPlus from '../_ui/button-plus.vue' + +describe('ActivitesTypesEmails', () => { + const administration = { + id: 'id', + email: 'foo@bar.co', + nom: 'nom', + emailsLecture: false, + emailsModification: false, + activitesTypesEmails: [ + { + id: 'grx', + nom: "rapport d'exploitation (autorisations M)", + email: 'foo@bar.co' + }, + { + id: 'pma', + nom: 'rapport d’intensité d’exploration', + email: 'toto@tata.com' + } + ] + } + + const activitesTypes = [ + { id: 'grx', nom: 'grx' }, + { id: 'pma', nom: 'pma' } + ] + + test('rend la section email visible seulement lorsque la propriété emailsLecture est true', () => { + let wrapper = shallowMount(ActivitesTypesEmails, { + props: { + activitesTypes, + administration + } + }) + + expect(wrapper.find('table').exists()).toBe(false) + + wrapper = shallowMount(ActivitesTypesEmails, { + props: { + activitesTypes, + administration: { ...administration, emailsLecture: true } + } + }) + + expect(wrapper.find('table').exists()).toBe(true) + }) + + test("rend la ligne d'insertion de données visible uniquement lorsque les propriétés emailsModification et emailsLecture sont true", () => { + let wrapper = shallowMount(ActivitesTypesEmails, { + props: { + activitesTypes, + administration: { + ...administration, + emailsLecture: true, + emailsModification: false + } + } + }) + + expect(wrapper.find('select').exists()).toBe(false) + expect(wrapper.find('input').exists()).toBe(false) + expect(wrapper.findComponent(ButtonPlus).exists()).toBe(false) + + wrapper = shallowMount(ActivitesTypesEmails, { + props: { + activitesTypes, + administration: { + ...administration, + emailsLecture: false, + emailsModification: true + } + } + }) + + expect(wrapper.find('select').exists()).toBe(false) + expect(wrapper.find('input').exists()).toBe(false) + expect(wrapper.findComponent(ButtonPlus).exists()).toBe(false) + + wrapper = shallowMount(ActivitesTypesEmails, { + props: { + activitesTypes, + administration: { + ...administration, + emailsLecture: true, + emailsModification: true + } + } + }) + + expect(wrapper.find('select').exists()).toBe(true) + expect(wrapper.find('input').exists()).toBe(true) + expect(wrapper.findComponent(ButtonPlus).exists()).toBe(true) + }) + + test('rend le bouton de suppression visible uniquement lorsque les propriétés emailsModification et emailsLecture sont true', () => { + let wrapper = shallowMount(ActivitesTypesEmails, { + props: { + activitesTypes, + administration: { + ...administration, + emailsLecture: true, + emailsModification: false + } + } + }) + + expect(wrapper.find('button > .icon-trash').exists()).toBe(false) + + wrapper = shallowMount(ActivitesTypesEmails, { + props: { + activitesTypes, + administration: { + ...administration, + emailsLecture: false, + emailsModification: true + } + } + }) + + expect(wrapper.find('button > .icon-trash').exists()).toBe(false) + + wrapper = shallowMount(ActivitesTypesEmails, { + props: { + activitesTypes, + administration: { + ...administration, + emailsLecture: true, + emailsModification: true + } + } + }) + + expect(wrapper.find('button > .icon-trash').exists()).toBe(true) + }) + + test('#activiteTypeLabelize retourne le nom et le type dans un texte commençant par une majuscule et le type en capital', () => { + const wrapper = shallowMount(ActivitesTypesEmails, { + props: { + activitesTypes, + administration: { + ...administration + } + } + }) + + expect(wrapper.vm.activiteTypeLabelize(activitesTypes[0])).toBe('Grx (GRX)') + }) +}) diff --git a/packages/ui/src/components/administration/activites-types-emails.vue b/packages/ui/src/components/administration/activites-types-emails.vue new file mode 100644 index 0000000000000000000000000000000000000000..27ffed32de7b9bd41f804317830eeef06f731132 --- /dev/null +++ b/packages/ui/src/components/administration/activites-types-emails.vue @@ -0,0 +1,161 @@ +<template> + <div v-if="administration.emailsLecture" class="mb-xxl"> + <h3>Emails à notifier lors du dépôt d’un type d’activité</h3> + + <div class="tablet-blob-3-4"> + <div class="h6"> + <p> + Lors d’un dépôt d’une activité d’un type en particulier + <span v-if="!isFullyNotifiable"> + <strong>si la production annuelle est non nulle</strong></span + >, quels sont les emails à notifier ? + </p> + </div> + </div> + + <div class="line width-full" /> + + <div class="width-full-p"> + <div class="overflow-scroll-x mb"> + <table> + <tr> + <th>Type d'activité</th> + <th>Email</th> + <th v-if="administration.emailsModification" width="1">Actions</th> + </tr> + <tr v-if="administration.emailsModification"> + <td> + <select + v-model="activiteTypeNew.activiteTypeId" + class="py-xs px-s mr-s mt-xs" + > + <option + v-for="activiteType in activitesTypes" + :key="activiteType.id" + :value="activiteType.id" + > + {{ activiteTypeLabelize(activiteType) }} + </option> + </select> + </td> + <td> + <input + v-model="activiteTypeNew.email" + type="email" + class="py-xs mt-xs" + placeholder="Email" + @keyup.enter="activiteTypeEmailUpdate" + /> + </td> + <td> + <ButtonPlus + class="py-s px-m" + :disabled="!activiteTypeNewActive" + @click="activiteTypeEmailUpdate" + /> + </td> + </tr> + <tr + v-for="activiteType in administration.activitesTypesEmails" + :key="activiteType.id + activiteType.email" + > + <td> + <span class="cap-first"> + {{ activiteTypeLabelize(activiteType) }} + </span> + </td> + <td> + {{ activiteType.email }} + </td> + <td v-if="administration.emailsModification"> + <button + class="btn-border py-s px-m my--xs rnd-xs flex-right" + @click="activiteTypeEmailDelete(activiteType)" + > + <i class="icon-24 icon-trash" /> + </button> + </td> + </tr> + </table> + </div> + </div> + </div> +</template> + +<script lang="ts"> +import ButtonPlus from '../_ui/button-plus.vue' +import emailValidator from 'email-validator' +import { defineComponent } from 'vue' + +export default defineComponent({ + components: { + ButtonPlus + }, + + props: { + administration: { type: Object, required: true }, + activitesTypes: { type: Array, required: true, default: () => [] } + }, + + emits: ['emailUpdate', 'emailDelete'], + + data() { + return { + activiteTypeNew: { + activiteTypeId: null, + email: null + } + } + }, + + computed: { + activiteTypeNewActive() { + return ( + this.activiteTypeNew.activiteTypeId && + this.activiteTypeNew.email && + emailValidator.validate(this.activiteTypeNew.email) + ) + }, + + isFullyNotifiable() { + return ['dea', 'dre', 'min'].includes(this.administration?.type?.id) + } + }, + + methods: { + async activiteTypeEmailUpdate() { + if (!this.activiteTypeNewActive) return + const { email, activiteTypeId } = this.activiteTypeNew + this.$emit('emailUpdate', { + administrationId: this.administration.id, + activiteTypeId, + email + }) + this.activiteTypeNew.activiteTypeId = null + this.activiteTypeNew.email = null + }, + + async activiteTypeEmailDelete(activiteType: { + email: string + activiteTypeId: string + }) { + const { email, id } = activiteType + this.$emit('emailDelete', { + administrationId: this.administration.id, + activiteTypeId: id, + email + }) + }, + + activiteTypeLabelize(activiteType) { + return ( + activiteType.nom.charAt(0).toUpperCase() + + activiteType.nom.slice(1) + + ' (' + + activiteType.id.toUpperCase() + + ')' + ) + } + } +}) +</script> diff --git a/packages/ui/src/components/administration/edit-popup.vue b/packages/ui/src/components/administration/edit-popup.vue new file mode 100644 index 0000000000000000000000000000000000000000..ba77b4caeb6ce6d7f7ff1c19bc0c98a10a294a86 --- /dev/null +++ b/packages/ui/src/components/administration/edit-popup.vue @@ -0,0 +1,360 @@ +<template> + <Popup :messages="messages"> + <template #header> + <div> + <h2> + {{ creation ? "Ajout d'une " : "Modification de l'" }}administration + </h2> + </div> + </template> + + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5>Nom</h5> + </div> + <div class="mb tablet-blob-2-3"> + <input v-model="administration.nom" type="text" class="p-s" /> + </div> + </div> + + <hr /> + + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5>Type</h5> + </div> + <div class="mb tablet-blob-2-3"> + <select v-model="administration.typeId" class="p-s"> + <option + v-for="type in types" + :key="type.id" + :value="type.id" + :disabled="administration.typeId === type.id" + > + {{ type.nom }} + </option> + </select> + </div> + </div> + + <hr /> + + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5>Abréviation</h5> + </div> + <div class="mb tablet-blob-2-3"> + <input v-model="administration.abreviation" type="text" class="p-s" /> + </div> + </div> + + <hr /> + + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5 class="mb-0">Service</h5> + <p class="h6 italic mb-0">Optionnel</p> + </div> + <div class="mb tablet-blob-2-3"> + <input v-model="administration.service" type="text" class="p-s" /> + </div> + </div> + + <hr /> + + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5 class="mb-0">Téléphone</h5> + <p class="h6 italic mb-0">Optionnel</p> + </div> + <div class="mb tablet-blob-2-3"> + <input + v-model="administration.telephone" + type="text" + class="p-s" + placeholder="0100000000" + /> + </div> + </div> + + <hr /> + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5 class="mb-0">Adresse électronique</h5> + <p class="h6 italic mb-0">Optionnel</p> + </div> + <div class="mb tablet-blob-2-3"> + <input + v-model="administration.email" + type="text" + class="p-s" + placeholder="email@domain.tld" + /> + </div> + </div> + + <hr /> + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5 class="mb-0">Site internet</h5> + <p class="h6 italic mb-0">Optionnel</p> + </div> + <div class="mb tablet-blob-2-3"> + <input + v-model="administration.url" + type="text" + class="p-s" + placeholder="http://…" + /> + </div> + </div> + + <hr /> + + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5 class="mb-0">Adresse 1</h5> + <p class="h6 italic mb-0">Optionnel</p> + </div> + <div class="mb tablet-blob-2-3"> + <input v-model="administration.adresse1" type="text" class="p-s" /> + </div> + </div> + + <hr /> + + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5 class="mb-0">Adresse 2</h5> + <p class="h6 italic mb-0">Optionnel</p> + </div> + <div class="mb tablet-blob-2-3"> + <input v-model="administration.adresse2" type="text" class="p-s" /> + </div> + </div> + + <hr /> + + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5 class="mb-0">Code Postal</h5> + <p class="h6 italic mb-0">Optionnel</p> + </div> + <div class="mb tablet-blob-2-3"> + <input v-model="administration.codePostal" type="text" class="p-s" /> + </div> + </div> + + <hr /> + + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5 class="mb-0">Commune</h5> + <p class="h6 italic mb-0">Optionnel</p> + </div> + <div class="mb tablet-blob-2-3"> + <input v-model="administration.commune" type="text" class="p-s" /> + </div> + </div> + + <hr /> + + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5 class="mb-0">Cedex</h5> + <p class="h6 italic mb-0">Optionnel</p> + </div> + <div class="mb tablet-blob-2-3"> + <input v-model="administration.cedex" type="text" class="p-s" /> + </div> + </div> + + <hr /> + + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5 class="mb-0">Administration locale</h5> + <p class="h6 italic mb-0">Optionnel</p> + </div> + <div class="mb tablet-blob-2-3"> + <p class="mb-s"> + <label v-for="lien in liens" :key="lien.id" class="mr-s"> + <input + v-model="lienCurrent" + :name="lien.id" + :value="lien.id" + type="radio" + class="p-s" + /> + {{ lien.nom }} + </label> + </p> + + <p class="h6 italic mb-0"> + Un utilisateur d'une administration locale peut créer et modifier le + contenu des titres du territoire concerné. + </p> + </div> + </div> + + <div v-if="lienCurrent === 'departement'" class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5 class="mb-0">Département</h5> + </div> + <div class="mb tablet-blob-2-3"> + <select v-model="administration.departementId" class="p-s"> + <option + v-for="departement in departements" + :key="departement.id" + :value="departement.id" + :disabled="administration.departementId === departement.id" + > + {{ departement.nom }} + </option> + </select> + </div> + </div> + + <div v-if="lienCurrent === 'region'" class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5 class="mb-0">Région</h5> + </div> + <div class="mb tablet-blob-2-3"> + <select v-model="administration.regionId" class="p-s"> + <option + v-for="region in regions" + :key="region.id" + :value="region.id" + :disabled="administration.regionId === region.id" + > + {{ region.nom }} + </option> + </select> + </div> + </div> + + <template #footer> + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 mb tablet-mb-0"> + <button + v-if="!loading" + class="btn-border rnd-xs p-s full-x" + @click="cancel" + > + Annuler + </button> + </div> + <div class="tablet-blob-2-3"> + <button + v-if="!loading" + ref="save-button" + class="btn btn-primary" + @click="save" + > + Enregistrer + </button> + <div v-else class="p-s full-x bold">Enregistrement en cours…</div> + </div> + </div> + </template> + </Popup> +</template> + +<script> +import Popup from '../_ui/popup.vue' + +export default { + name: 'CaminoAdministrationEditPopup', + + components: { + Popup + }, + + props: { + administration: { type: Object, default: () => ({}) }, + creation: { type: Boolean, default: false } + }, + + data() { + return { + liens: [ + { id: 'aucun', nom: 'Aucun' }, + { id: 'departement', nom: 'Département' }, + { id: 'region', nom: 'Région' } + ], + lienCurrent: 'aucun' + } + }, + + computed: { + loading() { + return this.$store.state.popup.loading + }, + + messages() { + return this.$store.state.popup.messages + }, + + departements() { + return this.$store.state.administration.metas.departements + }, + + regions() { + return this.$store.state.administration.metas.regions + }, + + types() { + return this.$store.state.administration.metas.types + } + }, + + created() { + if (this.administration.regionId) { + this.lienCurrent = 'region' + } else if (this.administration.departementId) { + this.lienCurrent = 'departement' + } + + document.addEventListener('keyup', this.keyup) + }, + + beforeUnmount() { + document.removeEventListener('keyup', this.keyup) + }, + + methods: { + async save() { + const administration = JSON.parse(JSON.stringify(this.administration)) + + if (this.lienCurrent === 'region') { + administration.departementId = null + } else if (this.lienCurrent === 'departement') { + administration.regionId = null + } else { + administration.departementId = null + administration.regionId = null + } + + await this.$store.dispatch('administration/update', administration) + }, + + cancel() { + this.errorsRemove() + this.$store.commit('popupClose') + }, + + keyup(e) { + if ((e.which || e.keyCode) === 27) { + this.cancel() + } else if ((e.which || e.keyCode) === 13) { + this.$refs['save-button'].focus() + this.save() + } + }, + + errorsRemove() { + this.$store.commit('popupMessagesRemove') + } + } +} +</script> diff --git a/packages/ui/src/components/administration/permissions.vue b/packages/ui/src/components/administration/permissions.vue new file mode 100644 index 0000000000000000000000000000000000000000..db5aa1226e21e7f279ae2eb844b0c95f497e0ae2 --- /dev/null +++ b/packages/ui/src/components/administration/permissions.vue @@ -0,0 +1,1059 @@ +<template> + <div> + <div class="mb-xxl"> + <h3>Administration gestionnaire ou associée</h3> + + <div class="h6"> + <ul class="list-prefix"> + <li> + Un utilisateur d'une <b>administration gestionnaire</b> peut créer + et modifier les titres et leur contenu. + </li> + <li> + Un utilisateur d'une <b>administration associée</b> peut voir les + titres non-publics. Cette administration n'apparaît pas sur les + pages des titres. + </li> + </ul> + + <p>Accorde ces droits par domaine / type de titre.</p> + </div> + + <div class="line width-full" /> + <div class="width-full-p"> + <div class="overflow-scroll-x mb"> + <table> + <tr> + <th>Domaine</th> + <th>Type de titre</th> + <th>Gestionnaire</th> + <th>Associée</th> + <th /> + </tr> + <tr> + <td> + <select + v-model="titreTypeNew.domaineId" + class="py-xs px-s mr-s" + > + <option + v-for="domaine in domaines" + :key="domaine.id" + :value="domaine.id" + > + {{ domaine.id.toUpperCase() }} {{ domaine.nom }} + </option> + </select> + </td> + <td> + <select + v-model="titreTypeNew.titreTypeTypeId" + class="py-xs px-s mr-s" + :disabled="!titreTypeNew.domaineId" + > + <option + v-for="titreType in titreTypeNewTypes" + :key="titreType.id" + :value="titreType.type.id" + > + {{ titreType.type.nom }} + </option> + </select> + </td> + <td> + <button + class="btn p-xs rnd-xs" + :disabled="!titreTypeNew.titreTypeTypeId" + @click=" + titreTypeNew.gestionnaire = !titreTypeNew.gestionnaire + " + > + <i + v-if="titreTypeNew.gestionnaire" + class="icon-24 icon-check" + /> + <i v-else class="icon-24 icon-square" /> + </button> + </td> + <td> + <button + class="btn p-xs rnd-xs" + :disabled="!titreTypeNew.titreTypeTypeId" + @click="titreTypeNew.associee = !titreTypeNew.associee" + > + <i v-if="titreTypeNew.associee" class="icon-24 icon-check" /> + <i v-else class="icon-24 icon-square" /> + </button> + </td> + <td> + <ButtonPlus + :disabled="!titreTypeNewActive" + @click="titreTypeNewUpdate" + /> + </td> + </tr> + <tr + v-for="titreType in administration.titresTypes" + :key="titreType.id" + > + <td> + <CaminoDomaine + :domaine-id="titreType.domaine.id" + class="mt-s" + /> + </td> + <td> + <span class="small bold cap-first mt-s">{{ + titreType.type.nom + }}</span> + </td> + <td> + <button + class="btn p-xs rnd-xs" + @click=" + titreTypeUpdate( + titreType.id, + titreType.gestionnaire, + titreType.associee, + 'gestionnaire' + ) + " + > + <i v-if="titreType.gestionnaire" class="icon-24 icon-check" /> + <i v-else class="icon-24 icon-square" /> + </button> + </td> + <td> + <button + class="btn p-xs rnd-xs" + @click=" + titreTypeUpdate( + titreType.id, + titreType.gestionnaire, + titreType.associee, + 'associee' + ) + " + > + <i v-if="titreType.associee" class="icon-24 icon-check" /> + <i v-else class="icon-24 icon-square" /> + </button> + </td> + <td /> + </tr> + </table> + </div> + </div> + </div> + + <div v-if="administration.type.id" class="mb-xxl"> + <h3>Restrictions de l'édition des titres, démarches et étapes</h3> + + <div class="h6"> + <p class="mb-s">Par défaut :</p> + <ul class="list-prefix mb-s"> + <li> + Un utilisateur d'une administration gestionnaire peut modifier les + titres, démarches et étapes. + </li> + <li> + Un utilisateur d'une administration locale peut modifier les + démarches et étapes. + </li> + </ul> + <p> + Restreint ces droits par domaine / type de titre / statut de titre. + </p> + </div> + + <div class="line width-full" /> + <div class="width-full-p"> + <div class="overflow-scroll-x mb"> + <table> + <tr> + <th>Domaine</th> + <th>Type de titre</th> + <th>Statut de titre</th> + <th>Titres</th> + <th>Démarches</th> + <th>Étapes</th> + <th /> + </tr> + + <tr> + <td> + <select + v-model="titreTypeTitreStatutNew.domaineId" + class="py-xs px-s mr-s" + > + <option + v-for="domaine in domaines" + :key="domaine.id" + :value="domaine.id" + > + {{ domaine.id.toUpperCase() }} {{ domaine.nom }} + </option> + </select> + </td> + <td> + <select + v-model="titreTypeTitreStatutNew.titreTypeTypeId" + class="py-xs px-s mr-s" + :disabled="!titreTypeTitreStatutNew.domaineId" + > + <option + v-for="titreType in titreTypeTitreStatutNewTypes" + :key="titreType.id" + :value="titreType.type.id" + > + {{ titreType.type.nom }} + </option> + </select> + </td> + <td> + <select + v-model="titreTypeTitreStatutNew.titreStatutId" + class="py-xs px-s mr-s" + > + <option + v-for="titreStatut in titresStatuts" + :key="titreStatut.id" + :value="titreStatut.id" + > + {{ titreStatut.nom }} + </option> + </select> + </td> + <td> + <button + class="btn p-xs rnd-xs" + :disabled=" + !titreTypeTitreStatutNew.titreTypeTypeId || + !titreTypeTitreStatutNew.titreStatutId + " + @click=" + titreTypeTitreStatutNew.titresModificationInterdit = + !titreTypeTitreStatutNew.titresModificationInterdit + " + > + <i + v-if="titreTypeTitreStatutNew.titresModificationInterdit" + class="icon-24 icon-cross" + /> + <i v-else class="icon-24 icon-square" /> + </button> + </td> + <td> + <button + class="btn p-xs rnd-xs" + :disabled=" + !titreTypeTitreStatutNew.titreTypeTypeId || + !titreTypeTitreStatutNew.titreStatutId + " + @click=" + titreTypeTitreStatutNew.demarchesModificationInterdit = + !titreTypeTitreStatutNew.demarchesModificationInterdit + " + > + <i + v-if="titreTypeTitreStatutNew.demarchesModificationInterdit" + class="icon-24 icon-cross" + /> + <i v-else class="icon-24 icon-square" /> + </button> + </td> + <td> + <button + class="btn p-xs rnd-xs" + :disabled=" + !titreTypeTitreStatutNew.titreTypeTypeId || + !titreTypeTitreStatutNew.titreStatutId + " + @click=" + titreTypeTitreStatutNew.etapesModificationInterdit = + !titreTypeTitreStatutNew.etapesModificationInterdit + " + > + <i + v-if="titreTypeTitreStatutNew.etapesModificationInterdit" + class="icon-24 icon-cross" + /> + <i v-else class="icon-24 icon-square" /> + </button> + </td> + <td> + <ButtonPlus + :disabled="!titreTypeTitreStatutNewActive" + @click="titreTypeTitreStatutNewUpdate" + /> + </td> + </tr> + + <tr + v-for="ttts in administration.titresTypesTitresStatuts" + :key="`${ttts.titreType.id}-${ttts.titreStatut.id}`" + > + <td> + <CaminoDomaine + :domaine-id="ttts.titreType.domaine.id" + class="mt-s" + /> + </td> + <td> + <span class="small bold cap-first mt-s">{{ + ttts.titreType.type.nom + }}</span> + </td> + <td> + <Statut + :color="ttts.titreStatut.couleur" + :nom="ttts.titreStatut.nom" + class="mt-s" + /> + </td> + <td> + <button + class="btn p-xs rnd-xs" + @click=" + titreTypeTitreStatutUpdate( + ttts.titreType.id, + ttts.titreStatut.id, + ttts.titresModificationInterdit, + ttts.demarchesModificationInterdit, + ttts.etapesModificationInterdit, + 'titres' + ) + " + > + <i + v-if="ttts.titresModificationInterdit" + class="icon-24 icon-cross" + /> + <i v-else class="icon-24 icon-square" /> + </button> + </td> + <td> + <button + class="btn p-xs rnd-xs" + @click=" + titreTypeTitreStatutUpdate( + ttts.titreType.id, + ttts.titreStatut.id, + ttts.titresModificationInterdit, + ttts.demarchesModificationInterdit, + ttts.etapesModificationInterdit, + 'demarches' + ) + " + > + <i + v-if="ttts.demarchesModificationInterdit" + class="icon-24 icon-cross" + /> + <i v-else class="icon-24 icon-square" /> + </button> + </td> + <td> + <button + class="btn p-xs rnd-xs" + @click=" + titreTypeTitreStatutUpdate( + ttts.titreType.id, + ttts.titreStatut.id, + ttts.titresModificationInterdit, + ttts.demarchesModificationInterdit, + ttts.etapesModificationInterdit, + 'etapes' + ) + " + > + <i + v-if="ttts.etapesModificationInterdit" + class="icon-24 icon-cross" + /> + <i v-else class="icon-24 icon-square" /> + </button> + </td> + <td /> + </tr> + </table> + </div> + </div> + </div> + + <div v-if="administration.type.id" class="mb-xxl"> + <h3>Restrictions de la visibilité, édition et création des étapes</h3> + + <div class="h6"> + <p class="mb-s"> + Par défaut, un utilisateur d'une administration gestionnaire ou locale + peut voir, modifier et créer des étapes des titre. + </p> + <p>Restreint ces droits par domaine / type de titre / type d'étape.</p> + </div> + + <div class="line width-full" /> + <div class="width-full-p"> + <div class="overflow-scroll-x mb"> + <table> + <tr> + <th>Domaine</th> + <th>Type de titre</th> + <th>Type d'étape</th> + <th>Visibilité</th> + <th>Modification</th> + <th>Création</th> + <th /> + </tr> + + <tr> + <td> + <select + v-model="titreTypeEtapeTypeNew.domaineId" + class="py-xs px-s mr-s" + > + <option + v-for="domaine in domaines" + :key="domaine.id" + :value="domaine.id" + > + {{ domaine.id.toUpperCase() }} {{ domaine.nom }} + </option> + </select> + </td> + <td> + <select + v-model="titreTypeEtapeTypeNew.titreTypeTypeId" + class="py-xs px-s mr-s" + :disabled="!titreTypeEtapeTypeNew.domaineId" + > + <option + v-for="titreType in titreTypeEtapeTypeNewTypes" + :key="titreType.id" + :value="titreType.type.id" + > + {{ titreType.type.nom }} + </option> + </select> + </td> + <td> + <select + v-model="titreTypeEtapeTypeNew.etapeTypeId" + class="py-xs px-s mr-s" + > + <option + v-for="etapeType in etapesTypes" + :key="etapeType.id" + :value="etapeType.id" + > + {{ etapeType.nom }} + </option> + </select> + </td> + <td> + <button + class="btn p-xs rnd-xs" + :disabled=" + !titreTypeEtapeTypeNew.titreTypeTypeId || + !titreTypeEtapeTypeNew.etapeTypeId + " + @click=" + titreTypeEtapeTypeNew.lectureInterdit = + !titreTypeEtapeTypeNew.lectureInterdit + " + > + <i + v-if="titreTypeEtapeTypeNew.lectureInterdit" + class="icon-24 icon-cross" + /> + <i v-else class="icon-24 icon-square" /> + </button> + </td> + <td> + <button + class="btn p-xs rnd-xs" + :disabled=" + !titreTypeEtapeTypeNew.titreTypeTypeId || + !titreTypeEtapeTypeNew.etapeTypeId + " + @click=" + titreTypeEtapeTypeNew.modificationInterdit = + !titreTypeEtapeTypeNew.modificationInterdit + " + > + <i + v-if="titreTypeEtapeTypeNew.modificationInterdit" + class="icon-24 icon-cross" + /> + <i v-else class="icon-24 icon-square" /> + </button> + </td> + <td> + <button + class="btn p-xs rnd-xs" + :disabled=" + !titreTypeEtapeTypeNew.titreTypeTypeId || + !titreTypeEtapeTypeNew.etapeTypeId + " + @click=" + titreTypeEtapeTypeNew.creationInterdit = + !titreTypeEtapeTypeNew.creationInterdit + " + > + <i + v-if="titreTypeEtapeTypeNew.creationInterdit" + class="icon-24 icon-cross" + /> + <i v-else class="icon-24 icon-square" /> + </button> + </td> + <td> + <ButtonPlus + :disabled="!titreTypeEtapeTypeNewActive" + @click="titreTypeEtapeTypeNewUpdate" + /> + </td> + </tr> + + <tr + v-for="ttet in administration.titresTypesEtapesTypes" + :key="`${ttet.titreType.id}-${ttet.etapeType.id}`" + > + <td> + <CaminoDomaine + :domaine-id="ttet.titreType.domaine.id" + class="mt-s" + /> + </td> + <td> + <span class="small bold cap-first mt-s">{{ + ttet.titreType.type.nom + }}</span> + </td> + <td> + <span class="small bold cap-first mt-s">{{ + ttet.etapeType.nom + }}</span> + </td> + <td> + <button + class="btn p-xs rnd-xs" + @click=" + titreTypeEtapeTypeUpdate( + ttet.titreType.id, + ttet.etapeType.id, + ttet.lectureInterdit, + ttet.modificationInterdit, + ttet.creationInterdit, + 'lecture' + ) + " + > + <i v-if="ttet.lectureInterdit" class="icon-24 icon-cross" /> + <i v-else class="icon-24 icon-square" /> + </button> + </td> + <td> + <button + class="btn p-xs rnd-xs" + @click=" + titreTypeEtapeTypeUpdate( + ttet.titreType.id, + ttet.etapeType.id, + ttet.lectureInterdit, + ttet.modificationInterdit, + ttet.creationInterdit, + 'modification' + ) + " + > + <i + v-if="ttet.modificationInterdit" + class="icon-24 icon-cross" + /> + <i v-else class="icon-24 icon-square" /> + </button> + </td> + <td> + <button + class="btn p-xs rnd-xs" + @click=" + titreTypeEtapeTypeUpdate( + ttet.titreType.id, + ttet.etapeType.id, + ttet.lectureInterdit, + ttet.modificationInterdit, + ttet.creationInterdit, + 'creation' + ) + " + > + <i v-if="ttet.creationInterdit" class="icon-24 icon-cross" /> + <i v-else class="icon-24 icon-square" /> + </button> + </td> + <td /> + </tr> + </table> + </div> + </div> + </div> + + <div class="mb-xxl"> + <h3>Restriction de la visibilité et de l'édition des activités</h3> + + <div class="h6"> + <p class="mb-s"> + Par défaut, un utilisateur d'une administration gestionnaire ou locale + peut voir et modifier les activités des titres. + </p> + + <p>Restreint ces droits par type d'étape.</p> + </div> + + <div class="line width-full" /> + + <div class="width-full-p"> + <div class="overflow-scroll-x mb"> + <table> + <tr> + <th>Type d'activité</th> + <th>Visibilité</th> + <th>Modification</th> + <th /> + </tr> + <tr> + <td> + <select + v-model="activiteTypeNew.activiteTypeId" + class="py-xs px-s mr-s" + > + <option + v-for="activiteType in activitesTypes" + :key="activiteType.id" + :value="activiteType.id" + > + {{ activiteType.id.toUpperCase() }} {{ activiteType.nom }} + </option> + </select> + </td> + <td> + <button + class="btn p-xs rnd-xs" + :disabled="!activiteTypeNew.activiteTypeId" + @click=" + activiteTypeNew.lectureInterdit = + !activiteTypeNew.lectureInterdit + " + > + <i + v-if="activiteTypeNew.lectureInterdit" + class="icon-24 icon-cross" + /> + <i v-else class="icon-24 icon-square" /> + </button> + </td> + <td> + <button + class="btn p-xs rnd-xs" + :disabled="!activiteTypeNew.activiteTypeId" + @click=" + activiteTypeNew.modificationInterdit = + !activiteTypeNew.modificationInterdit + " + > + <i + v-if="activiteTypeNew.modificationInterdit" + class="icon-24 icon-cross" + /> + <i v-else class="icon-24 icon-square" /> + </button> + </td> + <td> + <ButtonPlus + :disabled="!activiteTypeNewActive" + @click="activiteTypeNewUpdate" + /> + </td> + </tr> + <tr + v-for="activiteType in administration.activitesTypes" + :key="activiteType.id" + > + <td> + <span class="cap-first" + >{{ activiteType.nom }} ({{ activiteType.id.toUpperCase() }}) + </span> + </td> + <td> + <button + class="btn p-xs rnd-xs" + @click=" + activiteTypeUpdate( + activiteType.id, + activiteType.lectureInterdit, + activiteType.modificationInterdit, + 'lectureInterdit' + ) + " + > + <i + v-if="activiteType.lectureInterdit" + class="icon-24 icon-cross" + /> + <i v-else class="icon-24 icon-square" /> + </button> + </td> + <td> + <button + class="btn p-xs rnd-xs" + @click=" + activiteTypeUpdate( + activiteType.id, + activiteType.lectureInterdit, + activiteType.modificationInterdit, + 'modificationInterdit' + ) + " + > + <i + v-if="activiteType.modificationInterdit" + class="icon-24 icon-cross" + /> + <i v-else class="icon-24 icon-square" /> + </button> + </td> + <td /> + </tr> + </table> + </div> + </div> + </div> + </div> +</template> + +<script> +import CaminoDomaine from '../_common/domaine.vue' +import Statut from '../_common/statut.vue' +import ButtonPlus from '../_ui/button-plus.vue' + +export default { + components: { + CaminoDomaine, + Statut, + ButtonPlus + }, + + props: { + administration: { type: Object, required: true } + }, + + data() { + return { + titreTypeNew: { + domaineId: null, + titreTypeTypeId: null, + gestionnaire: false, + associee: false + }, + titreTypeTitreStatutNew: { + domaineId: null, + titreTypeTypeId: null, + titreStatutId: null, + titresModificationInterdit: false, + demarchesModificationInterdit: false, + etapesModificationInterdit: false + }, + titreTypeEtapeTypeNew: { + domaineId: null, + titreTypeTypeId: null, + etapeTypeId: null, + lectureInterdit: false, + modificationInterdit: false, + creationInterdit: false + }, + activiteTypeNew: { + activiteTypeId: null, + lectureInterdit: false, + modificationInterdit: false + } + } + }, + + computed: { + user() { + return this.$store.state.user.element + }, + + domaines() { + return this.$store.state.administration.metas.domaines + }, + + titresStatuts() { + return this.$store.state.administration.metas.titresStatuts + }, + + etapesTypes() { + return this.$store.state.administration.metas.etapesTypes + }, + + activitesTypes() { + return this.$store.state.administration.metas.activitesTypes + }, + + loaded() { + return !!this.administration + }, + + titreTypeNewTypes() { + if (!this.titreTypeNew.domaineId) { + return [] + } + + const domaine = this.domaines.find( + d => d.id === this.titreTypeNew.domaineId + ) + + return domaine.titresTypes + }, + + titreTypeTitreStatutNewTypes() { + if (!this.titreTypeTitreStatutNew.domaineId) { + return [] + } + + const domaine = this.domaines.find( + d => d.id === this.titreTypeTitreStatutNew.domaineId + ) + + return domaine.titresTypes + }, + + titreTypeEtapeTypeNewTypes() { + if (!this.titreTypeEtapeTypeNew.domaineId) { + return [] + } + + const domaine = this.domaines.find( + d => d.id === this.titreTypeEtapeTypeNew.domaineId + ) + + return domaine.titresTypes + }, + + titreTypeNewActive() { + return ( + this.titreTypeNew.titreTypeTypeId && + this.titreTypeNew.domaineId && + (this.titreTypeNew.gestionnaire || this.titreTypeNew.associee) + ) + }, + + titreTypeTitreStatutNewActive() { + return ( + this.titreTypeTitreStatutNew.domaineId && + this.titreTypeTitreStatutNew.titreTypeTypeId && + this.titreTypeTitreStatutNew.titreStatutId && + (this.titreTypeTitreStatutNew.titresModificationInterdit || + this.titreTypeTitreStatutNew.demarchesModificationInterdit || + this.titreTypeTitreStatutNew.etapesModificationInterdit) + ) + }, + + titreTypeEtapeTypeNewActive() { + return ( + this.titreTypeEtapeTypeNew.domaineId && + this.titreTypeEtapeTypeNew.titreTypeTypeId && + this.titreTypeEtapeTypeNew.etapeTypeId && + (this.titreTypeEtapeTypeNew.lectureInterdit || + this.titreTypeEtapeTypeNew.modificationInterdit || + this.titreTypeEtapeTypeNew.creationInterdit) + ) + }, + + activiteTypeNewActive() { + return ( + this.activiteTypeNew.activiteTypeId && + (this.activiteTypeNew.lectureInterdit || + this.activiteTypeNew.modificationInterdit) + ) + } + }, + + created() { + this.get() + }, + + methods: { + async get() { + await this.$store.dispatch('administration/permissionsInit') + }, + + async titreTypeUpdate(titreTypeId, gestionnaire, associee, type) { + if (type === 'gestionnaire') { + gestionnaire = !gestionnaire + } else if (type === 'associee') { + associee = !associee + } + + await this.$store.dispatch('administration/titreTypeUpdate', { + administrationId: this.administration.id, + titreTypeId, + gestionnaire, + associee + }) + }, + + async titreTypeTitreStatutUpdate( + titreTypeId, + titreStatutId, + titresModificationInterdit, + demarchesModificationInterdit, + etapesModificationInterdit, + type + ) { + if (type === 'titres') { + titresModificationInterdit = !titresModificationInterdit + } else if (type === 'demarches') { + demarchesModificationInterdit = !demarchesModificationInterdit + } else if (type === 'etapes') { + etapesModificationInterdit = !etapesModificationInterdit + } + + await this.$store.dispatch('administration/titreTypeTitreStatutUpdate', { + administrationId: this.administration.id, + titreTypeId, + titreStatutId, + titresModificationInterdit, + demarchesModificationInterdit, + etapesModificationInterdit + }) + }, + + async titreTypeEtapeTypeUpdate( + titreTypeId, + etapeTypeId, + lectureInterdit, + modificationInterdit, + creationInterdit, + type + ) { + if (type === 'lecture') { + lectureInterdit = !lectureInterdit + } else if (type === 'modification') { + modificationInterdit = !modificationInterdit + } else if (type === 'creation') { + creationInterdit = !creationInterdit + } + + await this.$store.dispatch('administration/titresTypeEtapeTypeUpdate', { + administrationId: this.administration.id, + titreTypeId, + etapeTypeId, + lectureInterdit, + modificationInterdit, + creationInterdit + }) + }, + + async activiteTypeUpdate( + activiteTypeId, + lectureInterdit, + modificationInterdit, + type + ) { + if (type === 'lectureInterdit') { + lectureInterdit = !lectureInterdit + } else if (type === 'modificationInterdit') { + modificationInterdit = !modificationInterdit + } + + await this.$store.dispatch('administration/activiteTypeUpdate', { + administrationId: this.administration.id, + activiteTypeId, + lectureInterdit, + modificationInterdit + }) + }, + + titreTypeNewUpdate() { + if (this.titreTypeNewActive) { + this.titreTypeUpdate( + `${this.titreTypeNew.titreTypeTypeId}${this.titreTypeNew.domaineId}`, + this.titreTypeNew.gestionnaire, + this.titreTypeNew.associee + ) + + this.titreTypeNew = { + domaineId: null, + titreTypeTypeId: null, + gestionnaire: false, + associee: false + } + } + }, + + titreTypeTitreStatutNewUpdate() { + if (this.titreTypeTitreStatutNewActive) { + this.titreTypeTitreStatutUpdate( + `${this.titreTypeTitreStatutNew.titreTypeTypeId}${this.titreTypeTitreStatutNew.domaineId}`, + this.titreTypeTitreStatutNew.titreStatutId, + this.titreTypeTitreStatutNew.titresModificationInterdit, + this.titreTypeTitreStatutNew.demarchesModificationInterdit, + this.titreTypeTitreStatutNew.etapesModificationInterdit + ) + + this.titreTypeTitreStatutNew = { + domaineId: null, + titreTypeTypeId: null, + titreStatutId: null, + titresModificationInterdit: false, + demarchesModificationInterdit: false, + etapesModificationInterdit: false + } + } + }, + + titreTypeEtapeTypeNewUpdate() { + if (this.titreTypeEtapeTypeNewActive) { + this.titreTypeEtapeTypeUpdate( + `${this.titreTypeEtapeTypeNew.titreTypeTypeId}${this.titreTypeEtapeTypeNew.domaineId}`, + this.titreTypeEtapeTypeNew.etapeTypeId, + this.titreTypeEtapeTypeNew.lectureInterdit, + this.titreTypeEtapeTypeNew.modificationInterdit, + this.titreTypeEtapeTypeNew.creationInterdit + ) + + this.titreTypeEtapeTypeNew = { + domaineId: null, + titreTypeTypeId: null, + etapeTypeId: null, + lectureInterdit: false, + modificationInterdit: false, + creationInterdit: false + } + } + }, + + activiteTypeNewUpdate() { + if (this.activiteTypeNewActive) { + this.activiteTypeUpdate( + this.activiteTypeNew.activiteTypeId, + this.activiteTypeNew.lectureInterdit, + this.activiteTypeNew.modificationInterdit + ) + + this.activiteTypeNew = { + domaineId: null, + titreTypeTypeId: null, + lectureInterdit: false, + modificationInterdit: false + } + } + } + } +} +</script> + +<style></style> +template diff --git a/packages/ui/src/components/administrations.vue b/packages/ui/src/components/administrations.vue new file mode 100644 index 0000000000000000000000000000000000000000..915bb5fdd55d64504befa0950c38744d5de03946 --- /dev/null +++ b/packages/ui/src/components/administrations.vue @@ -0,0 +1,104 @@ +<template> + <Liste + nom="administrations" + :filtres="filtres" + :colonnes="colonnes" + :lignes="lignes" + :elements="administrations" + :params="params" + :metas="metas" + :total="total" + :initialized="initialized" + @params-update="paramsUpdate" + > + <template v-if="administrations.length" #downloads> + <Downloads + :formats="['csv', 'xlsx', 'ods']" + section="administrations" + class="flex-right full-x" + /> + </template> + </Liste> +</template> + +<script> +import Liste from './_common/liste.vue' +import Downloads from './_common/downloads.vue' + +import filtres from './administrations/filtres' +import { + administrationsColonnes, + administrationsLignesBuild +} from './administrations/table' + +export default { + name: 'Administrations', + + components: { Liste, Downloads }, + + data() { + return { + filtres, + colonnes: administrationsColonnes + } + }, + + computed: { + user() { + return this.$store.state.user.element + }, + + administrations() { + return this.$store.state.administrations.elements + }, + + total() { + return this.$store.state.administrations.total + }, + + params() { + return this.$store.state.administrations.params + }, + + metas() { + return this.$store.state.administrations.metas + }, + + lignes() { + return administrationsLignesBuild(this.administrations) + }, + + initialized() { + return this.$store.state.administrations.initialized + } + }, + + watch: { + user: 'init', + + '$route.query': { + handler: function () { + this.$store.dispatch('administrations/routeUpdate') + } + } + }, + + async created() { + await this.init() + }, + + unmounted() { + this.$store.commit('administrations/reset') + }, + + methods: { + async init() { + await this.$store.dispatch('administrations/init') + }, + + async paramsUpdate(options) { + await this.$store.dispatch(`administrations/paramsSet`, options) + } + } +} +</script> diff --git a/packages/ui/src/components/administrations/filtres.js b/packages/ui/src/components/administrations/filtres.js new file mode 100644 index 0000000000000000000000000000000000000000..67a5e76498d8c1b3028c731a1a018faee9bce789 --- /dev/null +++ b/packages/ui/src/components/administrations/filtres.js @@ -0,0 +1,21 @@ +import { elementsFormat } from '../../utils/index' + +const filtres = [ + { + id: 'noms', + type: 'input', + value: '', + name: 'Nom', + placeholder: `Nom de l'administration` + }, + { + id: 'typesIds', + name: 'Types', + type: 'checkboxes', + value: [], + elements: [], + elementsFormat + } +] + +export default filtres diff --git a/packages/ui/src/components/administrations/table.js b/packages/ui/src/components/administrations/table.js new file mode 100644 index 0000000000000000000000000000000000000000..c1cd0d343c8913c756ecb06a1003eb38724a2a35 --- /dev/null +++ b/packages/ui/src/components/administrations/table.js @@ -0,0 +1,40 @@ +import { markRaw } from '@vue/reactivity' +import Tag from '../_ui/tag.vue' + +const administrationsColonnes = [ + { + id: 'abreviation', + name: 'Abréviation' + }, + { + id: 'nom', + name: 'Nom' + }, + { + id: 'type', + name: 'Type' + } +] + +const administrationsLignesBuild = administrations => + administrations.map(administration => { + const columns = { + abreviation: { value: administration.abreviation }, + nom: { value: administration.nom, class: 'h6' }, + type: { + component: markRaw(Tag), + props: { mini: true }, + class: 'mb--xs', + value: administration.type.nom, + slot: true + } + } + + return { + id: administration.id, + link: { name: 'administration', params: { id: administration.id } }, + columns + } + }) + +export { administrationsColonnes, administrationsLignesBuild } diff --git a/packages/ui/src/components/content/about.vue b/packages/ui/src/components/content/about.vue new file mode 100644 index 0000000000000000000000000000000000000000..819e9c4df2841d82f755911665d5afffd6d16f64 --- /dev/null +++ b/packages/ui/src/components/content/about.vue @@ -0,0 +1,322 @@ +<template> + <div class="content"> + <h1 class="mb-xl">À propos</h1> + <hr class="mb-xl" /> + <div id="irritants" class="mb-xxl"> + <h4 class="mb-s color-neutral">Ce qu'il faut changer</h4> + <h2> + L'accès aux informations sur les projets miniers + <br class="hide desktop-static" />est trop complexe + </h2> + <span class="separator" /> + <p class="lead"> + Pour les entreprises minières, gérer un projet d’exploration ou + d’exploitation est un parcours du combattant, de la conception du projet + jusqu'à la gestion de l'après-mine. + </p> + + <div class="desktop-blobs"> + <div class="desktop-blob-1-3"> + <p> + Quel est l’état juridique du domaine minier sur la zone ? Quelles + démarches administratives dois-je suivre ? Quelles contraintes + environnementales dois-je intégrer à mon projet ? Toutes ces + questions essentielles ne trouvent pas simplement de réponses. + </p> + <p> + Déposer une demande, actualiser les milliers de pages de dossiers + papiers, tracer sa demande dans les multiples services de l’État + impliqués, faire ses déclarations au bon moment et au bon format, + sont + <b>autant de démarches complexes et consommatrices de temps.</b> + </p> + </div> + <div class="desktop-blob-1-3"> + <p> + De son côté, + <b> + l’administration traite chaque année près de 2 000 démarches + conduites au titre du code minier, + </b> + avec des systèmes d’information fermés, des tableaux de suivi + pléthoriques, des archives papier et des gigaoctets de dossiers + dispersés dans ses services nationaux et locaux. + </p> + <p> + <b> + L’enregistrement, la consultation et la valorisation des données + de l’administration des mines est impossible ou trop peu efficace </b + >. + </p> + </div> + <div class="desktop-blob-1-3"> + <p> + <b> + Sur le terrain, les citoyens et les élus ne découvrent les projets + qui les concernent qu’au dernier moment, lors d’une consultation + ou d’une enquête publique. + </b> + Ils se disent souvent pris de cours face à des dossiers complexes ou + volumineux et faute d’accès simple et durable aux informations sur + les projets miniers. + </p> + <p> + <b> + Une telle situation ne permet pas d’engager des débats ouverts, + éclairés et sereins sur les projets miniers en France. + </b> + </p> + </div> + </div> + </div> + + <div id="utilisateurs" class="mb-xxl"> + <h4 class="mb-s color-neutral"> + Camino numérise l'administration des mines + </h4> + + <h2>Pour simplifier la vie de toutes les parties prenantes</h2> + + <span class="separator" /> + + <p class="lead"> + Camino va simplifier les démarches des entreprises, + <br class="hide desktop-static" />ouvrir les données aux citoyens et + faciliter le travail des agents publics impliqués dans ces projets. + </p> + + <div class="desktop-blobs"> + <div class="desktop-blob-1-3"> + <div class="p-l"> + <i class="icon-128 icon-business" /> + </div> + + <h3>Les entreprises</h3> + + <p> + pourront connaitre l’état du domaine minier puis déposer en ligne + leurs demandes, les rapports et les données réglementaires. Elles + pourront aussi visualiser l’avancement des instructions, suivre leur + portefeuille de titres et répondre simplement à leurs obligations à + chaque étape des projets. + </p> + </div> + + <div class="desktop-blob-1-3"> + <div class="p-l"> + <i class="icon-128 icon-ngo" /> + </div> + + <h3>Les ONG, les citoyens et leurs élus</h3> + + <p> + pourront consulter à tout moment les dossiers et les données + publiques, à l’échelle de leur territoire pour mieux contribuer, + sans précipitation, aux procédures de participation du public et + suivre de manière transparente l’actualité des projets. + </p> + </div> + + <div class="desktop-blob-1-3"> + <div class="p-l"> + <i class="icon-128 icon-user-check" /> + </div> + + <h3>Les agents publics</h3> + + <p> + pourront simplement accéder aux mêmes dossiers et données partagés + entre les services des administrations et opérateurs publics. Il + sera possible de co-instruire les demandes, de suivre et anticiper + chaque moment de vie d’un projet, de trouver et valoriser les + données sur le domaine minier national simplement et sans + intermédiaire. + </p> + </div> + </div> + </div> + + <div id="services" class="mb-xxl"> + <h4 class="mb-s color-neutral"> + Camino change l'administration des mines + </h4> + + <h2>Avec de nouveaux services numériques</h2> + + <span class="separator" /> + + <p class="lead"> + Avec Camino, il sera enfin possible de consulter les caractéristiques + des titres miniers sur une carte à jour et de suivre les projets en + cours à chaque étape importante de leur vie. + </p> + + <div class="desktop-blobs"> + <div class="desktop-blob-1-3"> + <div class="p-l"> + <i class="icon-128 icon-map" /> + </div> + <h3>Une carte interactive</h3> + + <p> + Nous présenterons une cartographie complète et à jour du domaine + minier national et des projets en cours. + </p> + </div> + + <div class="desktop-blob-1-3"> + <div class="p-l"> + <i class="icon-128 icon-dashboard" /> + </div> + + <h3>Des tableaux de bord</h3> + + <p> + Nous dématérialiserons les premières procédures les plus fréquentes + du code minier et proposerons un tableau de bord aux entreprises qui + expérimenteront le service Camino. + </p> + </div> + + <div class="desktop-blob-1-3"> + <div class="p-l"> + <i class="icon-128 icon-api" /> + </div> + + <h3>Une API ouverte</h3> + + <p> + Avec les données recueillies, nous automatiserons l’actualisation du + cadastre minier et nous diffuserons dans un standard électronique + ouvert les données et documents publics déjà disponibles d’ici six + mois, notamment via data.gouv.fr. + </p> + </div> + </div> + </div> + + <div id="activites" class="mb-xxl"> + <h4 class="mb-s color-neutral">Tous les projets miniers concernés</h4> + <h2> + D'ici 2022 l'ensemble des procédures du code minier devront être + numériques + </h2> + <span class="separator" /> + <div class="tablet-blobs"> + <div class="tablet-blob-1-2 desktop-blob-1-3 p bg-bg rnd shadow mb"> + <h3>Ressources minérales non-énergétiques</h3> + <img + src="/img/about/gallery-non-energetique.jpg" + alt="Mine de sel" + class="mb" + /> + + <p> + Les matières premières minérales sont à la base du développement de + l’humanité. En 200 ans, l’ère industrielle puis la croissance + économique des pays émergents ont accéléré l’utilisation de ces + ressources non renouvelables du sous-sol. Leur développement durable + s’appuie sur l’équilibre entre l’extraction des réserves accessibles + et la découverte de nouveaux gisements, le recyclage et l’économie + circulaire. + </p> + </div> + <div class="tablet-blob-1-2 desktop-blob-1-3 p bg-bg rnd shadow mb"> + <h3>Matières premières énergétiques</h3> + <img + src="/img/about/gallery-energetique.jpg" + alt="Forage" + class="mb" + /> + + <p> + Les matières premières énergétiques comme le charbon, le pétrole ou + le gaz se sont imposées en tant que source d’énergie au cours du + 20ème siècle. Formées dans des processus géologiques qui ont duré + plusieurs millions d’années, elles ne sont pas renouvelables à + l’échelle humaine et il est donc nécessaire de veiller à en avoir un + usage rationnel. + </p> + </div> + <div class="tablet-blob-1-2 desktop-blob-1-3 p bg-bg rnd shadow mb"> + <h3>Stockages souterrains</h3> + + <img + src="/img/about/gallery-stockages.jpg" + alt="Station de contrôle" + class="mb" + /> + + <p> + Les capacités de stockage dans le sous-sol profond ont d’abord été + utilisées pour compléter le dispositif de sécurité + d’approvisionnement dans des territoires ne disposant pas ou peu de + matières premières énergétiques. Ces capacités sont aujourd’hui + étudiées pour des usages futurs comme le stockage de CO2 pour + réduire les émissions de GES dans l’atmosphère ou pour le stockage + d’énergie en association avec les énergies alternatives. + </p> + </div> + + <div class="tablet-blob-1-2 desktop-blob-1-3 p bg-bg rnd shadow mb"> + <h3>Géothermie profonde</h3> + + <img + src="/img/about/gallery-geothermie.jpg" + alt="Centrale géothermique" + class="mb" + /> + + <p> + Provenant des sources de chaleur interne de la Terre, cette énergie + abondante mais de faible intensité est en train de trouver sa place + dans le mix énergétique du 21ème siècle. + </p> + </div> + <div class="tablet-blob-1-2 desktop-blob-1-3 p bg-bg rnd shadow mb"> + <h3>Travaux miniers</h3> + <img + src="/img/about/gallery-travaux.jpg" + alt="Centrale géothermique" + class="mb" + /> + + <p> + Les travaux de recherche ou d’exploitation de substances minières + sont encadrés par la police des mines, mission confiée à l’État, qui + a pour objet de prévenir et faire cesser les dommages et nuisances + liées aux activités minières et de faire respecter les obligations + de l’exploitant minier. + </p> + </div> + <div class="tablet-blob-1-2 desktop-blob-1-3 p bg-bg rnd shadow mb"> + <h3>Après mines</h3> + + <img + src="/img/about/gallery-apresmine.jpg" + alt="Centrale géothermique" + class="mb" + /> + + <p> + L’arrêt de l’activité minière n’induit pas pour autant la + disparition des phénomènes susceptibles d’affecter les terrains de + surface situés dans l’emprise de l’ancienne exploitation. Ainsi, + durant la période qui suit l’exploitation, traditionnellement + appelée «après-mine», des désordres peuvent se développer, parfois + dès l’arrêt des travaux mais également beaucoup plus tardivement. + </p> + </div> + </div> + </div> + + <span class="separator" /> + <div class="mb-xxl"> + Plus d’informations relatives à Camino et son équipe sont accessibles sur + cette + <a target="_blank" href="https://beta.gouv.fr/startups/camino.html" + >page</a + >. + </div> + </div> +</template> diff --git a/packages/ui/src/components/content/accessibilite.vue b/packages/ui/src/components/content/accessibilite.vue new file mode 100644 index 0000000000000000000000000000000000000000..bd86b663bcdb6fe254020f92c7d9da873f10ce50 --- /dev/null +++ b/packages/ui/src/components/content/accessibilite.vue @@ -0,0 +1,38 @@ +<template> + <div class="content mb-xxl"> + <h1 class="mb-xl">Accessibilité</h1> + <hr class="mb-xl" /> + <p> + Nous travaillons à améliorer le niveau d'accessibilité du site et sa + conformité avec les normes en la matière. Notre objectif est d’atteindre + le niveau de conformité RGAA fin 2018. + </p> + <h3>Signaler un dysfonctionnement</h3> + <p> + Si, malgré notre vigilance, vous rencontriez le moindre problème + d’accessibilité sur notre site, n’hésitez pas à nous écrire à + <a href="mailto:contact@camino.beta.gouv.fr"> + contact@camino.beta.gouv.fr + </a> + </p> + <h3>Défenseur des droits</h3> + <p> + Si vous constatez un défaut d'accessibilité vous empêchant d'accéder à un + contenu ou une fonctionnalité du site, que vous nous le signalez et que + vous ne parvenez pas à obtenir une réponse rapide de notre part, vous êtes + en droit de faire parvenir vos doléances ou une demande de saisine au + Défenseur des droits. Plusieurs moyens sont à votre disposition : + </p> + <ul class="list-prefix"> + <li>un formulaire de contact</li> + <li> + la liste du ou des délégués de votre région avec leurs informations de + contact direct + </li> + <li> + une adresse postale : Le Défenseur des droits - 7 rue Saint-Florentin - + 75409 Paris Cedex 08. + </li> + </ul> + </div> +</template> diff --git a/packages/ui/src/components/content/cgu-1-0-0.vue b/packages/ui/src/components/content/cgu-1-0-0.vue new file mode 100644 index 0000000000000000000000000000000000000000..f840b34dd298c0f890c0ae731fcd1d7e647b95e6 --- /dev/null +++ b/packages/ui/src/components/content/cgu-1-0-0.vue @@ -0,0 +1,282 @@ +<template> + <div class="content mb-xxl"> + <h1 class="mb-xl">Conditions générales d’utilisation</h1> + <hr class="mb-xl" /> + <p> + CGU v.1.0<br /> + valables du 16 octobre 2018 au 15 avril 2019 + </p> + + <h3>Présentation</h3> + + <p> + Camino est un service numérique de l’administration des mines qui délivre + le cadastre minier sur le territoire national métropolitain et les + territoires ultramarins pour lesquels l’État dispose de la compétence + d’administration du domaine minier. + </p> + + <p> + Ce service est destiné aux entreprises du secteur minier, aux + particuliers, à leurs représentants, élus et associations, ainsi qu’aux + agents des administrations en charge de l’activité minière. + </p> + + <p> + Le présent document a pour objet de régler les relations entre les + différents intervenants sur le service. Il définit les conditions et + modalités d’utilisation des services camino.beta.gouv.fr et + api.camino.beta.gouv.fr sur Internet. + </p> + + <p> + Le service est développé et opéré par la Fabrique numérique des ministères + de la Transition écologique et de la Cohésion des territoires, avec + l’appui de l’incubateur de services numériques beta.gouv.fr de la + direction interministérielle du numérique et du système d’information et + de communication de l’État (DINSIC). + </p> + + <p>L’utilisation du service est libre, facultative et gratuite.</p> + + <p> + Toute utilisation du service est subordonnée à l’acceptation préalable et + au respect intégral des présentes conditions générales d’utilisation (CGU) + par l’utilisateur. Vocabulaire + </p> + + <ul> + <li>« Nous » se réfère à l’éditeur de Camino.</li> + <li>« Vous » se réfère à un utilisateur de Camino.</li> + <li> + « Le service » se réfère indistinctement à l’application web et à + l’interface de programmation applicative (API). + </li> + </ul> + + <h3>Objet</h3> + + <p> + Le service est composé, d’une part, d’une application web qui vous permet + de : + </p> + + <ul> + <li> + connaître en quelques minutes l’état du domaine minier en tout point du + territoire ; + </li> + <li> + consulter les informations administratives et techniques publiques + relatives aux titres miniers en cours de validité ; + </li> + <li>visualiser une carte et un tableau des titres miniers.</li> + </ul> + + <p> + D’autre part, une interface de programmation applicative (API) qui vous + permet de : + </p> + + <ul> + <li> + utiliser les informations publiques relatives aux titres miniers dans un + format ouvert et réutilisable ; + </li> + <li>utiliser un référentiel des substances de mines et carrières.</li> + </ul> + + <h3>Qualité des données publiées</h3> + + <p> + Nous publions sur Camino des données publiques à titre informatif. Seules + les publications légales font foi, notamment au Journal officiel de la + République Française ou aux recueils des actes administratifs des + préfectures. + </p> + + <p> + Par conséquent, les informations publiées sur Camino ne sauraient engager + la responsabilité de leur éditeur ou d’un quelconque service de l’État, + l’utilisateur y ayant recours en ayant conscience des potentielles erreurs + ou omissions qu’elles peuvent comporter. + </p> + + <p> + Nous nous efforçons de livrer des données de la meilleure qualité + possible. Toutefois, malgré toute notre attention, elles peuvent encore + comporter des erreurs ou omissions. Si vous constatez une erreur ou + omission parmi ces données, nous vous invitons à nous la signaler à l’aide + du bouton « signaler une erreur » disponible dans le pied de page de la + fiche du titre minier concerné. Si un titre est manquant, vous pouvez nous + écrire par courriel à contact@camino.beta.gouv.fr en nous précisant son + nom et en joignant les éventuels documents à votre disposition permettant + de l’identifier. + </p> + + <h3>Propriété intellectuelle</h3> + <h4>Code source</h4> + <p> + Le code source de l’application web et de l’interface de programmation + applicative (API) sont libres et peuvent donc être vérifiés et améliorés + par chacun dans les conditions précisées par la licence AGPL 3 + (https://spdx.org/licenses/AGPL-3.0-or-later.html). + </p> + + <p>Ils sont disponibles sur Github à ces adresses :</p> + + <ul> + <li> + interface utilisateur – UI https://github.com/MTES-MCT/camino-ui ; + </li> + <li> + interface de programmation applicative – API + https://github.com/MTES-MCT/camino-api. + </li> + </ul> + + <h4> + Données administratives publiques relatives aux domaines et aux titres + miniers + </h4> + <p> + Les informations publiques délivrées par le service le sont sous Licence + Ouverte V 2.0. Vous êtes donc libres de réutiliser ces informations sous + réserve de mentionner la paternité de l’information et la date de dernière + mise à jour de l’information utilisée. Par exemple sur la forme « + Ministère de la Transition écologique – Données originales téléchargées + sur http://camino.beta.gouv.fr, mise à jour du 01 septembre 2018 ». + </p> + + <h4>Données relevant du secret des affaires</h4> + + <p> + Nous ne publions aucune donnée et information relevant du secret des + affaires. + </p> + + <p> + Nous nous engageons à prendre toutes les mesures nécessaires pour garantir + la sécurité et la confidentialité des informations que vous nous + fournissez dans le cadre du signalement d’erreur. + </p> + + <p> + Les courriels et leurs pièces jointes que vous nous adressez sont + enregistrées dans un centre de données sécurisé. + </p> + + <h3>Crédits photo</h3> + <p> + Les photos présentes sur la page A propos sont à créditer aux auteurs + suivants : © bastan ; © BRGM ; © Joeffrey Arruyer ; © Guillaume Levieux ; + © François Romain. + </p> + + <h3>Vie privée</h3> + <h4>Données à caractère personnel</h4> + <p> + Camino ne vous demande pas d’information nominative telle que nom, prénoms + ou adresse courriel, excepté pour le service tiers de lettre + d’information. + </p> + <p> + Les titres miniers ayant été ou pouvant être détenus par des personnes + physiques, leurs noms et prénoms sont susceptibles d’être publiés tels + qu’ils ont été mentionnés au Journal officiel de la République Française. + </p> + + <p> + En application du règlement général sur la protection des données et de la + loi n° 78-17 du 6 janvier 1978 relative à l’informatique, aux fichiers et + aux libertés, l’utilisateur dispose d’un droit d’accès, de rectification + et d’opposition auprès de l’opérateur de la plateforme, en sa qualité de + responsable de traitement. + </p> + + <p>Par mail : contact@camino.beta.gouv.fr</p> + + <p> + Par voie postale :<br /> + Ministère de la Transition écologique<br /> + Direction Générale de l'Aménagement, du Logement et de la Nature<br /> + Bureau de la politique des ressources minérales non énergétiques<br /> + 1 place Carpeaux, 92800 Puteaux + </p> + + <p> + Le délégué à la protection des données du ministère de la transition + écologique peut également être contacté à l’adresse : + dpd.daj.sg@developpement-durable.gouv.fr. + </p> + + <h4>Cookies</h4> + + <p> + Nous déposons des cookies de mesure d’audience (nombre de visites, pages + consultées), respectant les conditions d’exemption du consentement de + l’internaute définies par la recommandation « Cookies » de la Commission + nationale informatique et libertés (CNIL). Cela signifie, notamment, que + ces cookies ne servent qu’à la production de statistiques anonymes et ne + permettent pas de suivre votre navigation sur d’autres sites. + </p> + + <p> + Nous déposons également des cookies de navigation, aux fins strictement + techniques, qui ne sont pas conservés (mémorisation, pendant la durée de + la session, des paramètres de filtrage et de préférence de fond + cartographique). La consultation de la plateforme n’est pas affectée + lorsque les utilisateurs utilisent des navigateurs désactivant les + cookies. + </p> + + <h4>Service tiers</h4> + + <p> + Le service utilise Mailjet (https://www.mailjet.com), un service d’envoi + de courriers électroniques. Ce service tiers est hébergé en France et + dispose de ses propres modalités d’utilisation. Il est conforme à la + réglementation européenne sur les données personnelles. + </p> + + <h3>Evolution du service</h3> + <p> + Nous pouvons faire évoluer Camino sans information préalable ou préavis. + Nous ajoutons régulièrement des données, peaufinons l’interface et + modifions des formulations sur la base de vos retours et des évolutions + réglementaires et législatives. + </p> + + <p> + Les évolutions sont documentées et disponibles dans la rubrique nouveautés + et sur Github. + </p> + + <h3>Disponibilité du service</h3> + <p> + Nous pouvons suspendre l’accès à Camino sans information préalable ni + préavis, notamment pour des raisons de maintenance. Nous mettons + l’application à jour régulièrement. L’indisponibilité ne dépasse + généralement pas une dizaine de secondes. Nous mettons Camino à + disposition sans garantie sur sa disponibilité. Même si nous faisons de + notre mieux pour que le service soit toujours opérationnel, cela signifie + que d’éventuelles indisponibilités n’ouvriront pas droit à compensation + financière. + </p> + + <p> + Nous nous réservons également le droit de bloquer, sans information + préalable ni compensation financière, les usages mettant en péril + l’utilisation du logiciel par d’autres usagers. Cela nous permet + d’anticiper d’éventuelles attaques par déni de service. + </p> + <h3>Evolution des conditions d’utilisation</h3> + <p> + Les termes des présentes conditions d’utilisation peuvent être amendés à + tout moment, sans préavis, en fonction des modifications apportées au + service, de l’évolution de la législation ou pour tout autre motif jugé + nécessaire. + </p> + <p>Nous rendons librement accessible l’historique de ces conditions.</p> + </div> +</template> diff --git a/packages/ui/src/components/content/cgu.vue b/packages/ui/src/components/content/cgu.vue new file mode 100644 index 0000000000000000000000000000000000000000..0793da1fbcf0096433c2c547bf068df53ef500f5 --- /dev/null +++ b/packages/ui/src/components/content/cgu.vue @@ -0,0 +1,386 @@ +<template> + <div class="content mb-xxl"> + <h1 class="mb-xl">Conditions générales d’utilisation</h1> + <hr class="mb-xl" /> + <p> + CGU v.2.0<br /> + valables à compter du 16 avril 2019 + </p> + + <p> + Camino est un service numérique de l’État édité par le ministère de la + transition écologique, avec l’appui de la Fabrique numérique, l’incubateur + ministériel de services numériques innovants, et beta.gouv.fr, + l’incubateur de la direction interministérielle du numérique et du système + d’information et de communication de l’État (DINSIC). + </p> + <h3>Présentation du service</h3> + <p> + Camino est un service numérique de l’administration des mines qui délivre + le cadastre minier sur le territoire national métropolitain et les + territoires ultramarins pour lesquels l’État dispose de la compétence + d’administration du domaine minier ainsi que et des démarches + administratives dématérialisées conduites au titre du code minier.<br /> + Ce service est destiné aux entreprises du secteur minier, aux + particuliers, à leurs représentants, élus et associations, ainsi qu’aux + agents des administrations en charge de l’activité minière.<br /> + Le présent document a pour objet de régler les relations entre les + différents intervenants sur le service. Il définit les conditions et + modalités d’utilisation des services camino.beta.gouv.fr et + api.camino.beta.gouv.fr sur Internet.<br /> + Le service est développé et opéré par le ministère de la transition + écologique, avec l’appui de la Fabrique numérique, l’incubateur + ministériel de services numériques innovants, et beta.gouv.fr, + l’incubateur de la direction interministérielle du numérique et du système + d’information et de communication de l’État (DINSIC). + </p> + <p>L’utilisation du service est libre, facultative et gratuite.</p> + <p> + L'utilisation du service est subordonnée à l’acceptation préalable et au + respect intégral des présentes conditions générales d’utilisation (CGU) + par l’utilisateur. Vocabulaire :<br /> + « Nous » se réfère à l’éditeur de Camino.<br /> + « Vous » se réfère à un utilisateur de Camino.<br /> + « Le service » se réfère indistinctement à l’application web et à + l’interface de programmation applicative (API). + </p> + + <h3>Objet</h3> + <p> + Le service est composé, d’une part, d’une application web qui vous permet + de : + </p> + <ul class="list-prefix"> + <li>connaître l’état du domaine minier en tout point du territoire ;</li> + <li> + consulter les informations administratives et techniques publiques + relatives aux titres miniers en cours de validité et aux demandes + publiques en cours d’instruction ; + </li> + <li>visualiser une carte et une liste des titres miniers ;</li> + <li> + accomplir certaines démarches administratives conduites au titre du code + minier. + </li> + </ul> + <p> + D’autre part, une interface de programmation applicative (API) qui vous + permet de : + </p> + <ul class="list-prefix"> + <li> + utiliser les informations publiques relatives aux titres miniers dans un + format ouvert et réutilisable ; + </li> + <li>utiliser un référentiel des substances de mines et carrières.</li> + </ul> + <h3>Qualité des données publiées</h3> + <p> + Nous publions sur Camino des données publiques à titre informatif. Seules + les publications légales font foi, notamment au Journal officiel de la + République française ou aux recueils des actes administratifs des + préfectures. Par conséquent, les informations publiées sur Camino ne + sauraient engager la responsabilité de leur éditeur ou d’un quelconque + service de l’État, l’utilisateur y ayant recours en ayant conscience des + potentielles erreurs ou omissions qu’elles peuvent comporter. Nous nous + efforçons de livrer des données de la meilleure qualité possible. + Toutefois, malgré toute notre attention, elles peuvent encore comporter + des erreurs ou omissions. Si vous constatez une erreur ou omission parmi + ces données, nous vous invitons à nous la signaler à l’aide du bouton « + signaler une erreur » disponible dans le pied de page de la fiche du titre + minier concerné. Si un titre est manquant, vous pouvez nous écrire par + courriel à camino@beta.gouv.fr en nous précisant son nom et en joignant + les éventuels documents à votre disposition permettant de l’identifier. + </p> + <h3>Propriété intellectuelle</h3> + <p> + Cinq aspects caractérisent la propriété intellectuelle sur Camino. Le + niveau d’ouverture ou de protection pour chacun est expliqué ci-après avec + leurs conditions particulières. + </p> + <h4>(1) Le site camino.beta.gouv.fr est protégé</h4> + <p> + Le site est la propriété exclusive du ministère de la transition + écologique. Toute reproduction ou représentation totale ou partielle de ce + site par quelque procédé que ce soit, sans l’autorisation expresse de son + propriétaire est interdite et constituerait une contrefaçon sanctionnée + par les articles L. 335-2 du Code de la propriété intellectuelle. + </p> + + <p>Les contenus suivants ne sont pas réutilisables :</p> + <ul class="list-prefix"> + <li> + l’iconographie présente sur la page + https://camino.beta.gouv.fr/a-propos. + </li> + </ul> + <p> + Les contenus suivants sont soumis aux conditions d’utilisations des + fournisseurs de données : + </p> + <ul class="list-prefix"> + <li>les fonds de carte.</li> + </ul> + <p> + Si vous souhaitez reproduire ou réutiliser ces contenus présents sur ce + site, veuillez contacter le webmestre (camino@beta.gouv.fr) ou les + fournisseurs de données externes pour connaître les conditions + particulières de réutilisation applicables. + </p> + <h4>(2) Les marques présentées sur le site sont protégées</h4> + <p> + Les marques dont est titulaire l’Etat, le ministère de la transition + écologique ou le ministère de la cohésion des territoires et des relations + avec les collectivités territoriales, ainsi que ses logos figurant sur le + site sont des marques régulièrement déposées auprès de l’Institut national + de la propriété industrielle (INPI). Toute reproduction totale ou + partielle de ces marques ou de ces logos effectuées à partir des éléments + du site sans l’autorisation expresse du propriétaire de ce site est + prohibée au sens des articles L. 713-2 et suivants du Code de la propriété + intellectuelle. Tout contrefacteur s’expose aux sanctions prévues aux + articles L. 716-1 et suivants du code de la propriété intellectuelle. + </p> + <h4>(3) Les données publiques sous ouvertes</h4> + <p> + Les informations publiques délivrées par le service le sont sous Licence + Ouverte V 2.0. Vous êtes donc libres de réutiliser ces informations sous + réserve de mentionner la paternité de l’information et la date de dernière + mise à jour de l’information utilisée. Par exemple, sur la forme « + Ministère de la transition écologique – Données originales téléchargées + sur http://camino.beta.gouv.fr, mise à jour du jour-mois-année ». + </p> + <h4> + (4) Les données personnelles et les données relevant du secret des + affaires sont protégées + </h4> + <p> + Les données et informations personnelles ou relevant du secret des + affaires ne relèvent pas du régime applicable à la Licence Ouverte V 2.0. + Nous nous engageons à prendre toutes les mesures nécessaires pour garantir + la sécurité et la confidentialité des données personnelles et des données + relevant du secret des affaires que vous nous fournissez dans le cadre de + l’utilisation du service. + </p> + <h4>(5) Code source est ouvert</h4> + <p> + Le code source de l’application web et de l’interface de programmation + applicative (API) sont libres et peuvent donc être vérifiés et améliorés + par chacun dans les conditions précisées par la licence AGPL 3. Ils sont + disponibles sur Github à ces adresses : + </p> + <ul class="list-prefix"> + <li> + interface utilisateur – UI :<br /> + https://github.com/MTES-MCT/camino-ui ; + </li> + <li> + interface de programmation applicative – API :<br /> + https://github.com/MTES-MCT/camino-api. + </li> + </ul> + <h3>Vie privée</h3> + <h4>Données à caractère personnel</h4> + <p> + Nous nous engageons à ce que la collecte et le traitement de vos données, + effectués à partir du site soient conformes au règlement général sur la + protection des données du 27 avril 2016, applicable depuis le 25 mai 2018, + et à la loi informatique et libertés dans sa dernière version modifiée du + 20 juin 2018. Ces dispositions fixent des règles strictes de + confidentialité et de sécurité à toute organisation, publique et privée, + dans le cadre du traitement des données à caractère personnel de leurs + utilisateurs, et ce afin de protéger la vie privée de ceux-ci. + </p> + <h4>Responsable du traitement</h4> + <p> + Le responsable du traitement de vos données à caractère personnel est : Le + Ministère de la Transition écologique Direction Générale de l'Aménagement, + du Logement et de la Nature Bureau de la politique des ressources + minérales non énergétiques 1 place Carpeaux 92800 Puteaux + </p> + + <h4>Traitement des données et utilisation</h4> + <p> + Nous ne pouvons utiliser vos données à caractère personnel qu’à des fins à + la fois légitimes et nécessaires. Cela signifie concrètement que nous + traitons vos données à caractère personnel pour des finalités de : + </p> + <ul class="list-prefix"> + <li>de connexion au service ;</li> + <li> + d’instructions de demandes déposées dans le cadre d’une démarche + administrative conduite au titre du code minier. + </li> + </ul> + <p>La nature des opérations réalisées sur les données est :</p> + <ul class="list-prefix"> + <li> + Lors de la création d’un compte utilisateur Camino les informations + personnelles que vous acceptez de communiquer ou les informations + collectées auprès du fournisseur d’identité numérique que vous aurez + choisi pour vous authentifier lors de votre première connexion au + service sont enregistrées dans Camino. + </li> + <li> + L’affectation d’un utilisateur à une entité privée de type entreprise + est supervisée par un administrateur de la plateforme Camino. + </li> + <li> + La mise à jour et l’effacement des données personnelles liées au compte + utilisateur Camino et possible depuis la page profil de l’utilisateur. + </li> + <li> + Les données de connexion sont utilisées pour établir un journal d’ajout + et modification des données de Camino et de consultation des données non + publiques ou à caractère confidentiel. + </li> + <li> + Les données personnelles contenues dans les dossiers de demandes suivent + un cycle de vie contraint par les procédures d’instruction et + d’archivage légale. + </li> + </ul> + <p>Les données à caractère personnel traitées sont relatives à :</p> + <ul class="list-prefix"> + <li> + Pour la connexion au service : l’état civil (nom, prénoms, date et lieu + de naissance, nationalité, photographie, adresse postale, adresse + électronique, numéros de téléphone); + </li> + <li> + Pour l’instruction des demandes conduites au titre du code minier : la + vie professionnelle (fonctions, coordonnées professionnelles, nature du + contrat de travail, curriculum vitae) ; les informations d’ordre + économique et financier (revenus, situation financière, situation + fiscale, etc.) dans le cas rare où le demandeur ou le titulaire d’un + titre ou d’une autorisation minière est une personne physique. + </li> + </ul> + <p>Les données sont conservées pour une durée de :</p> + <ul class="list-prefix"> + <li> + Les données de connexion sont conservées pendant une durée de 6 mois. + </li> + <li> + Les données personnelles liées à une démarche administrative conduite au + titre du code minier sont conservées dans Camino pendant une durée de 30 + mois (délais d’instruction maximum de 24 mois + 6 mois pour tenir compte + des recours). A l’issue de ce délai, les données personnelles feront + l’objet d’un archivage intermédiaire, puis définitif, conformément au + plan d’archivage de la démarche visée. + </li> + </ul> + <h4>Vos droits</h4> + <p> + Nous nous engageons à prendre les mesures techniques et organisationnelles + appropriées afin de garantir la sécurité du traitement des données à + caractère personnel de chacun, en application du règlement général sur la + protection des données et de la loi informatique et aux libertés, vous + disposez d’un droit d’accès, de rectification, de suppression et + d’opposition. + </p> + <p>Par courriel : camino@beta.gouv.fr</p> + <p> + Par voie postale : Ministère de la Transition écologique Direction + Générale de l'Aménagement, du Logement et de la Nature, Bureau de la + politique des ressources minérales non énergétiques, 1 place Carpeaux, + 92800 Puteaux + </p> + <p> + Cette demande écrite est accompagnée d’une copie du titre d’identité avec + signature du titulaire de la pièce, en précisant l’adresse à laquelle la + réponse doit être envoyée. Le délégué à la protection des données du + ministère de la transition écologique peut également être contacté à + l’adresse suivante : dpd.daj.sg@developpement-durable.gouv.fr. + Conformément au règlement général sur la protection des données, vous + disposez du droit d’introduire une réclamation auprès de la CNIL (3 place + de Fontenoy – TSA 80715 – 75334 PARIS CEDEX 07). Les modalités de + réclamation sont précisées sur le site de la CNIL : www.cnil.fr. + </p> + <h4>Procédure en cas de violations de données à caractère personnel</h4> + <p> + En cas de destruction, de perte, d'altération, de divulgation non + autorisée de données à caractère personnel transmises, conservées ou + traitées d'une autre manière, ou d'accès non autorisé à de telles données, + de manière accidentelle ou illicite, susceptible d'engendrer un risque + élevé pour les droits et libertés de l’utilisateur, nous vous en + informerons des faits et des mesures prises, dans les meilleurs délais. + Nous nous assurerons également que le nécessaire soit fait quant à la + notification de la violation en question à la CNIL dans les 72 heures + après en avoir pris connaissance, à moins que la violation ne présente pas + un risque élevé pour vos droits et libertés + </p> + <h4>Cookies</h4> + <p> + Nous déposons des cookies de mesure d’audience (nombre de visites, pages + consultées), respectant les conditions d’exemption du consentement de + l’internaute définies par la recommandation « Cookies » de la Commission + nationale informatique et libertés (CNIL). Cela signifie, notamment, que + ces cookies ne servent qu’à la production de statistiques anonymes et ne + permettent pas de suivre votre navigation sur d’autres sites. Nous + déposons également des cookies de navigation, aux fins strictement + techniques, qui ne sont pas conservés (mémorisation, pendant la durée de + la session, des paramètres de filtrage et de préférence de fond + cartographique). La consultation de la plateforme n’est pas affectée + lorsque les utilisateurs utilisent des navigateurs désactivant les + cookies. Les adresses IP sont collectées et conservées pour une durée de + six (6) mois. + </p> + <h3>Inscription à la lettre d’informations électronique de Camino</h3> + <p> + Le service utilise Mailjet (https://www.mailjet.com), un service d’envoi + de courriers électroniques. Ce service tiers est hébergé en France et + dispose de ses propres modalités d’utilisation. Il est conforme à la + réglementation européenne sur les données personnelles. Vous avez la + faculté de vous désinscrire en cliquant sur le lien prévu à cet effet, au + bas de chaque lettre d’information diffusée. + </p> + <h3>Évolution du service</h3> + <p> + Nous pouvons faire évoluer Camino sans information préalable ou préavis. + Nous ajoutons et corrigeons régulièrement des données, améliorons + l’interface et modifions les formulations sur la base de vos retours et + des évolutions réglementaires et législatives. Les évolutions sont + documentées et disponibles dans les informations relatives aux versions du + service disponibles à ces adresses : + </p> + <ul class="list-prefix"> + <li> + pour l’interface utilisateur : + https://github.com/MTES-MCT/camino-ui/releases + </li> + <li>pour l’API : https://github.com/MTES-MCT/camino-api/releases</li> + </ul> + + <h3>Disponibilité du service</h3> + <p> + Nous pouvons suspendre l’accès à Camino sans information préalable ni + préavis, notamment pour des raisons de maintenance. Nous mettons + l’application à jour régulièrement. L’indisponibilité ne dépasse + généralement pas une dizaine de secondes. Nous mettons Camino à + disposition sans garantie sur sa disponibilité. Même si nous nous + efforçons de maintenir le service toujours opérationnel, cela signifie que + d’éventuelles indisponibilités n’ouvriront pas droit à compensation + financière. Nous nous réservons également le droit de bloquer, sans + information préalable ni compensation financière, les usages mettant en + péril l’utilisation du logiciel par d’autres usagers. Cela nous permet + d’anticiper d’éventuelles attaques par déni de service. + </p> + <h3>Évolution des conditions d’utilisation</h3> + <p> + Les termes des présentes conditions d’utilisation peuvent être modifiés ou + complétés à tout moment, sans préavis, en fonction des modifications + apportées au service, de l’évolution de la législation ou pour tout autre + motif jugé nécessaire. Ces modifications et mises à jour s’imposent à + l’utilisateur qui doit, en conséquence, se référer régulièrement à cette + rubrique pour vérifier les conditions générales en vigueur. + </p> + <p>Nous rendons librement accessible l’historique de ces conditions :</p> + <ul class="list-prefix"> + <li> + <router-link to="/cgu/1-0-0"> + CGU v.1.0 valables du 16 octobre 2018 au 15 avril 2019 + </router-link> + </li> + </ul> + </div> +</template> diff --git a/packages/ui/src/components/content/contacts.vue b/packages/ui/src/components/content/contacts.vue new file mode 100644 index 0000000000000000000000000000000000000000..24b8be7bbe681c9e7f0a2df26bca39d82fd3bcca --- /dev/null +++ b/packages/ui/src/components/content/contacts.vue @@ -0,0 +1,33 @@ +<template> + <div class="content"> + <h1 class="mb-xl">Contacts</h1> + <hr class="mb-xl" /> + <div id="contact" class="mb-xxl"> + <h2>Partagez votre expérience avec nous</h2> + + <span class="separator" /> + + <h4>Par email</h4> + <ul class="list-prefix"> + <li> + <a href="mailto:camino@beta.gouv.fr">camino@beta.gouv.fr</a> + </li> + </ul> + + <h4>Par téléphone</h4> + <ul class="list-prefix"> + <li> + <strong>Lundi</strong>, <strong>mardi</strong>, + <strong>jeudi</strong> et <strong>vendredi</strong>, de 9h à 18h : + Laure au + <a href="tel:+33764083953">07.64.08.39.53</a> + </li> + <li> + <strong>Lundi</strong>, <strong>mardi</strong> et + <strong>mercredi</strong>, de 9h à 18h : Félix au + <a href="tel:+33763429218">07.63.42.92.18</a> + </li> + </ul> + </div> + </div> +</template> diff --git a/packages/ui/src/components/content/contribution.vue b/packages/ui/src/components/content/contribution.vue new file mode 100644 index 0000000000000000000000000000000000000000..dbe46e3b5c0bd8b3cc2b7715fde391866eeee846 --- /dev/null +++ b/packages/ui/src/components/content/contribution.vue @@ -0,0 +1,38 @@ +<template> + <div class="content mb-xxl"> + <h1 class="mb-xl">Contribuez à Camino</h1> + <hr class="mb-xl" /> + <p> + L'équipe de Camino travaille à vous fournir des données de la meilleure + qualité qui soit. Mais la tâche est d'ampleur. Elles sont souvent + éparpillées, dans des formats très divers (dont certains sont obsolètes), + elles sont parfois lacunaires ou inscrites à la plume sur des documents + vieux de plusieurs siècles ! + </p> + + <p> + Ensemble, nous sommes plus fort ! Titulaires de titres miniers, + professionnels des mines, agents publics chargés des instructions, + directions attachées et acteurs de l'écosystème, aidez nous à enrichir + Camino. Pour cela, il y a deux façon d'agir : + </p> + <ul> + <li> + Signalez-nous les erreurs que vous repérez sur les titres grâce au + bouton "Signaler une erreur" présent sur chaque pied de page des fiches + titres. + </li> + <li> + Envoyez-nous les documents numérisés relatifs à la vie du titre que vous + possédez (ne vous inquiétez pas, nous respectons scrupuleusement la + confidentialité des pièces). Pour cela, écrivez-nous à + contact@camino.beta.gouv.fr. + </li> + </ul> + + <p> + Aidez Camino à devenir l’outil commun de référence du domaine minier + français. + </p> + </div> +</template> diff --git a/packages/ui/src/components/content/mentions-legales-cgu.vue b/packages/ui/src/components/content/mentions-legales-cgu.vue new file mode 100644 index 0000000000000000000000000000000000000000..b27140d3ad107dad59f2538216b6b1f85ca7d304 --- /dev/null +++ b/packages/ui/src/components/content/mentions-legales-cgu.vue @@ -0,0 +1,20 @@ +<template> + <div> + <MentionsLegales /> + <Cgu /> + </div> +</template> + +<script> +import MentionsLegales from './mentions-legales.vue' +import Cgu from './cgu.vue' + +export default { + name: 'MentionsLegalesCgu', + + components: { + MentionsLegales, + Cgu + } +} +</script> diff --git a/packages/ui/src/components/content/mentions-legales.vue b/packages/ui/src/components/content/mentions-legales.vue new file mode 100644 index 0000000000000000000000000000000000000000..8a0a9cfac6bcd4c1dfb9e72884ad6fdafe9abc49 --- /dev/null +++ b/packages/ui/src/components/content/mentions-legales.vue @@ -0,0 +1,37 @@ +<template> + <div class="content mb-xxl"> + <h1 class="mb-xl">Mentions légales</h1> + <hr class="mb-xl" /> + <h3>Éditeurs</h3> + <p> + Camino est édité par la Fabrique numérique des ministères de la Transition + écologique et de la Cohésion des territoires, sise 1 place Carpeaux, 92800 + Puteaux, avec l’appui de l’incubateur de services numériques beta.gouv.fr + de la direction interministérielle du numérique et du système + d’information et de communication de l’État (DINSIC). + </p> + <h3>Directrice et directeur de la publication</h3> + <ul class="list-prefix"> + <li> + Madame Stéphanie Dupuy-Lyon, directrice générale de l’aménagement, du + logement et de la nature (DGALN) + </li> + <li> + Madame Catherine Latreille, directrice territoriale Guyane de l'Office + national des forêts + </li> + <li> + Monsieur Laurent Michel, directeur général de l’énergie et du climat + (DGEC). + </li> + </ul> + <h3>Prestataire d’hébergement</h3> + <p> + OVH<br /> + RCS Roubaix – Tourcoing 424 761 419 00045<br /> + Code APE 6202A<br /> + N° TVA : FR 22 424 761 419<br /> + Siège social : 2 rue Kellermann, 59100 Roubaix, France + </p> + </div> +</template> diff --git a/packages/ui/src/components/demarches.vue b/packages/ui/src/components/demarches.vue new file mode 100644 index 0000000000000000000000000000000000000000..45b03b2846dddc2865d3531cf340e8eb2de73381 --- /dev/null +++ b/packages/ui/src/components/demarches.vue @@ -0,0 +1,13 @@ +<template> + <Page :travaux="false"></Page> +</template> + +<script> +import Page from './demarches/page.vue' + +export default { + name: 'Demarches', + + components: { Page } +} +</script> diff --git a/packages/ui/src/components/demarches/filtres-custom-etapes.vue b/packages/ui/src/components/demarches/filtres-custom-etapes.vue new file mode 100644 index 0000000000000000000000000000000000000000..0d940df06373d5d4db35301011077086d9db874d --- /dev/null +++ b/packages/ui/src/components/demarches/filtres-custom-etapes.vue @@ -0,0 +1,118 @@ +<template> + <div class="mb"> + <h5>{{ filter.name }}</h5> + <hr class="mb-s" /> + + <div v-for="(value, n) in filter.value" :key="n"> + <div class="flex mb-s"> + <select v-model="value.typeId" class="p-s mr-s" @change="valueReset(n)"> + <option value="">–</option> + <option + v-for="type in filter.elements" + :key="type.id" + :value="type.id" + > + {{ type.nom }} + </option> + </select> + + <button class="btn py-s px-m rnd-xs" @click="valueRemove(n)"> + <i class="icon-24 icon-minus" /> + </button> + </div> + <div v-if="value.typeId"> + <div class="blobs mb-s"> + <div class="blob-1-4"> + <h5 class="mb-0">Statut</h5> + <p class="h6 italic mb-0">Optionnel</p> + </div> + <div class="blob-3-4"> + <select + v-model="value.statutId" + class="p-s mr-s cap-first" + @change="statutValueReset(n)" + > + <option :value="''">–</option> + <option + v-for="statut in statutsFind(n)" + :key="statut.id" + :value="statut.id" + > + {{ statut.nom }} + </option> + </select> + </div> + </div> + <div class="blobs mb-s"> + <div class="blob-1-4"> + <h5 class="mb-0">Après le</h5> + <p class="h6 italic mb-0">Optionnel</p> + </div> + <div class="blob-3-4"> + <InputDate v-model="filter.value[n].dateDebut" /> + </div> + </div> + <div class="blobs mb-s"> + <div class="blob-1-4"> + <h5 class="mb-0">Avant le</h5> + <p class="h6 italic mb-0">Optionnel</p> + </div> + <div class="blob-3-4"> + <InputDate v-model="filter.value[n].dateFin" /> + </div> + </div> + </div> + <hr class="mb-s" /> + </div> + <button + v-if="!filter.value || !filter.value.some(v => v.typeId === '')" + class="btn rnd-xs py-s px-m full-x flex mb-s h6" + @click="valueAdd" + > + <span class="mt-xxs">Ajouter un type d'étape</span + ><i class="icon-24 icon-plus flex-right" /> + </button> + </div> +</template> + +<script> +import InputDate from '../_ui/input-date.vue' + +export default { + components: { InputDate }, + + props: { + filter: { type: Object, required: true } + }, + + methods: { + statutsFind(n) { + const typeId = this.filter.value[n].typeId + const type = typeId + ? this.filter.elements.find(type => type.id === typeId) + : [] + + return type.etapesStatuts + }, + + valueAdd() { + this.filter.value.push({ typeId: '' }) + }, + + valueRemove(n) { + this.filter.value.splice(n, 1) + }, + + valueReset(n) { + delete this.filter.value[n].statutId + }, + + statutValueReset(n) { + // si l'utilisateur déselectionne le statut (chaine vide) + if (!this.filter.value[n].statutId) { + delete this.filter.value[n].statutId + } + } + } +} +</script> diff --git a/packages/ui/src/components/demarches/filtres.js b/packages/ui/src/components/demarches/filtres.js new file mode 100644 index 0000000000000000000000000000000000000000..7f3ea5495cc760641ea744d4832d3624bbb54110 --- /dev/null +++ b/packages/ui/src/components/demarches/filtres.js @@ -0,0 +1,178 @@ +import { markRaw } from '@vue/reactivity' +import FiltresTitresDomaines from '../_common/filtres/domaines.vue' +import FiltresTitresStatuts from '../_common/filtres/statuts.vue' +import FiltresEtapes from './filtres-custom-etapes.vue' +import { elementsFormat } from '../../utils/index' + +const etapesElementsFormat = (id, metas) => metas.etapesTypes +const etapesLabelFormat = f => + f.value + .filter(value => value.typeId) + .map(value => ({ + id: f.id, + name: f.name, + value, + valueName: Object.keys(value) + .map(k => { + let key + let val = value[k] + let order + + if (k === 'typeId') { + const element = f.elements.find(e => e.id === value.typeId) + key = 'type' + val = element.nom + order = 1 + } else if (k === 'statutId') { + const element = f.elements.find(e => e.id === value.typeId) + key = 'statut' + val = element.etapesStatuts.find(es => es.id === value.statutId).nom + order = 2 + } else if (k === 'dateDebut') { + key = 'après le' + order = 3 + } else if (k === 'dateFin') { + key = 'avant le' + order = 4 + } + + return { label: `${key} : ${val}`, order } + }) + .sort((a, b) => a.order - b.order) + .map(value => value.label) + .join(', ') + })) + +// supprime les clés dont les valeurs sont vides +// et les objets vides +const etapesClean = value => { + if (!value) return [] + + const etapes = value.reduce((etapes, etape) => { + // si le type d'étape n'est pas renseigné + // alors on ignore l'étape en entier + if (!etape.typeId) return etapes + + etape = Object.keys(etape) + .sort() + .reduce((o, k) => { + if (etape[k] !== '') { + o[k] = etape[k] + } + + return o + }, {}) + + if (Object.keys(etape).length) { + etapes.push(etape) + } + + return etapes + }, []) + + return etapes.length ? etapes : [] +} + +const filtres = [ + { + id: 'titresDomainesIds', + name: 'Domaines', + type: 'checkboxes', + value: [], + elements: [], + component: markRaw(FiltresTitresDomaines), + elementsFormat + }, + { + id: 'titresTypesIds', + name: 'Types de titre', + type: 'checkboxes', + value: [], + elements: [], + elementsFormat + }, + { + id: 'titresStatutsIds', + name: 'Statuts de titre', + type: 'checkboxes', + value: [], + elements: [], + component: markRaw(FiltresTitresStatuts), + elementsFormat + }, + { + id: 'titresNoms', + type: 'input', + value: '', + name: 'Noms de titre', + placeholder: '…' + }, + { + id: 'titresEntreprises', + type: 'input', + value: '', + name: 'Entreprises', + placeholder: 'Nom ou siret' + }, + { + id: 'titresSubstances', + type: 'input', + value: '', + name: 'Substances', + placeholder: 'Or, Argent, Ag, …' + }, + { + id: 'titresReferences', + type: 'input', + value: '', + name: 'Références', + placeholder: 'Référence DGEC, DEAL, DEB, BRGM, Ifremer, …' + }, + { + id: 'titresTerritoires', + type: 'input', + value: '', + name: 'Territoires', + placeholder: 'Commune, département, région, …' + }, + { + id: 'typesIds', + name: 'Types', + type: 'checkboxes', + value: [], + elementsFormat + }, + { + id: 'statutsIds', + name: 'Statuts', + type: 'checkboxes', + value: [], + elements: [], + component: markRaw(FiltresTitresStatuts), + elementsFormat + }, + { + id: 'etapesInclues', + name: "Types d'étapes incluses", + type: 'custom', + value: [], + elements: [], + component: markRaw(FiltresEtapes), + clean: etapesClean, + elementsFormat: etapesElementsFormat, + labelFormat: etapesLabelFormat + }, + { + id: 'etapesExclues', + name: "Types d'étapes exclues", + type: 'custom', + value: [], + elements: [], + component: markRaw(FiltresEtapes), + clean: etapesClean, + elementsFormat: etapesElementsFormat, + labelFormat: etapesLabelFormat + } +] + +export default filtres diff --git a/packages/ui/src/components/demarches/page.vue b/packages/ui/src/components/demarches/page.vue new file mode 100644 index 0000000000000000000000000000000000000000..f027b68166fc0b556ae5be49a25f22e01b6eccdb --- /dev/null +++ b/packages/ui/src/components/demarches/page.vue @@ -0,0 +1,133 @@ +<template> + <liste + :nom="nom" + :filtres="filtres" + :colonnes="colonnes" + :lignes="lignes" + :elements="demarches" + :metas="metas" + :params="params" + :total="total" + :initialized="initialized" + @params-update="paramsUpdate" + > + <template v-if="demarches.length" #downloads> + <Downloads + :formats="['csv', 'xlsx', 'ods']" + section="demarches" + :params="{ travaux: travaux }" + class="flex-right full-x" + /> + </template> + </liste> +</template> + +<script> +import Liste from '../_common/liste.vue' +import Downloads from '../_common/downloads.vue' +import paramsEventTrack from '../../utils/matomo-tracker.js' + +import { demarchesColonnes, demarchesLignesBuild } from './table' +import filtres from './filtres' + +export default { + name: 'Demarches', + + components: { Liste, Downloads }, + + props: { + travaux: { + type: Boolean, + required: true + } + }, + + data() { + return { + colonnes: demarchesColonnes, + filtres + } + }, + + computed: { + nom() { + return this.travaux ? 'travaux' : 'demarches' + }, + user() { + return this.$store.state.user.element + }, + + definitions() { + return this.$store.state.titresDemarches.definitions + }, + + demarches() { + return this.$store.state.titresDemarches.elements + }, + + total() { + return this.$store.state.titresDemarches.total + }, + + metas() { + return this.$store.state.titresDemarches.metas + }, + + params() { + return this.$store.state.titresDemarches.params + }, + + lignes() { + return demarchesLignesBuild(this.demarches) + }, + + initialized() { + return this.$store.state.titresDemarches.initialized + } + }, + + watch: { + user: 'init', + + '$route.query': { + handler: function () { + this.$store.dispatch('titresDemarches/routeUpdate') + } + } + }, + + async created() { + await this.init() + }, + + unmounted() { + this.$store.commit('titresDemarches/reset') + }, + + methods: { + async init() { + await this.$store.dispatch('titresDemarches/init', { + travaux: this.travaux + }) + }, + + async paramsUpdate(options) { + await this.$store.dispatch(`titresDemarches/paramsSet`, options) + + if (options.section === 'filtres') { + this.eventTrack(options.params) + } + }, + + eventTrack(params) { + paramsEventTrack( + params, + this.definitions, + this.$matomo, + 'demarches', + 'filtres' + ) + } + } +} +</script> diff --git a/packages/ui/src/components/demarches/table.js b/packages/ui/src/components/demarches/table.js new file mode 100644 index 0000000000000000000000000000000000000000..785b6030c65d7a8953a11fa13f57623f8980c647 --- /dev/null +++ b/packages/ui/src/components/demarches/table.js @@ -0,0 +1,75 @@ +import { markRaw } from '@vue/reactivity' +import Nom from '../_common/nom.vue' +import Statut from '../_common/statut.vue' +import CaminoDomaine from '../_common/domaine.vue' +import List from '../_ui/list.vue' + +const demarchesColonnes = [ + { id: 'titreNom', name: 'Titre' }, + { id: 'titreDomaine', name: '' }, + { id: 'titreType', name: 'Type de titre' }, + { + id: 'titreStatut', + name: 'Statut de titre', + class: ['nowrap', 'min-width-6'] + }, + { id: 'type', name: 'Type' }, + { id: 'statut', name: 'Statut', class: ['nowrap'] }, + { id: 'references', name: 'Références', class: ['nowrap'] } +] + +const demarchesLignesBuild = demarches => + demarches.map(demarche => { + const columns = { + titreNom: { value: demarche.titre.nom }, + titreDomaine: { + component: markRaw(CaminoDomaine), + props: { domaineId: demarche.titre.domaine.id }, + value: demarche.titre.domaine.id + }, + titreType: { + component: markRaw(Nom), + props: { nom: demarche.titre.type.type.nom }, + value: demarche.titre.type.type.nom + }, + titreStatut: { + component: markRaw(Statut), + props: { + color: demarche.titre.statut.couleur, + nom: demarche.titre.statut.nom + }, + value: demarche.titre.statut.nom + }, + type: { + component: markRaw(Nom), + props: { nom: demarche.type.nom }, + value: demarche.type.nom + }, + statut: { + component: markRaw(Statut), + props: { + color: demarche.statut.couleur, + nom: demarche.statut.nom + }, + value: demarche.statut.nom + }, + references: { + component: markRaw(List), + props: { + elements: demarche.titre.references.map( + ref => `${ref.type.nom} : ${ref.nom}` + ), + mini: true + }, + class: 'mb--xs' + } + } + + return { + id: demarche.id, + link: { name: 'titre', params: { id: demarche.titre.slug } }, + columns + } + }) + +export { demarchesColonnes, demarchesLignesBuild } diff --git a/packages/ui/src/components/document/button-add.vue b/packages/ui/src/components/document/button-add.vue new file mode 100644 index 0000000000000000000000000000000000000000..3397d7d6cdc4d7c56e7a3abaa2ca21a4eced5ad6 --- /dev/null +++ b/packages/ui/src/components/document/button-add.vue @@ -0,0 +1,48 @@ +<template> + <button class="flex small" @click="addPopupOpen"> + <span v-if="large" class="mt-xxs mr-s">Ajouter un document</span> + <i class="icon-24 icon-file-plus flex-right" /> + </button> +</template> + +<script> +import DocumentEditPopup from './edit-popup.vue' + +export default { + props: { + route: { type: Object, default: null }, + action: { type: Object, default: null }, + document: { type: Object, required: true }, + parentTypeId: { type: String, default: '' }, + repertoire: { type: String, required: true }, + title: { type: String, required: true }, + large: { type: Boolean, default: false }, + documentsTypes: { type: Array, default: null } + }, + + emits: ['titre-event-track'], + + methods: { + addPopupOpen() { + this.$store.commit('popupOpen', { + component: DocumentEditPopup, + props: { + document: this.document, + action: this.action, + route: this.route, + parentTypeId: this.parentTypeId, + repertoire: this.repertoire, + title: this.title, + documentsTypes: this.documentsTypes + } + }) + + this.$emit('titre-event-track', { + categorie: 'titre-sections', + action: 'titre-etape-doc_ajouter', + nom: this.$route.params.id + }) + } + } +} +</script> diff --git a/packages/ui/src/components/document/edit-popup.vue b/packages/ui/src/components/document/edit-popup.vue new file mode 100644 index 0000000000000000000000000000000000000000..2ca9cdf5b2bbacd1904597b7d510bebca24d3feb --- /dev/null +++ b/packages/ui/src/components/document/edit-popup.vue @@ -0,0 +1,193 @@ +<template> + <Popup :messages="messages"> + <template #header> + <div> + <h6> + <span class="cap-first"> + {{ title }} + </span> + </h6> + <h2 class="cap-first"> + {{ document.id ? 'Modification du' : "Ajout d'un" }} document + </h2> + </div> + </template> + + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5>Type</h5> + </div> + <div class="mb tablet-blob-2-3"> + <select v-if="!document.id" v-model="document.typeId" class="p-s"> + <option + v-for="dt in types" + :key="dt.id" + :value="dt.id" + :disabled="document.typeId === dt.id" + > + {{ dt.nom }} + </option> + </select> + <div v-else-if="documentType" class="p-s"> + {{ documentType.nom }} + </div> + </div> + </div> + + <hr /> + + <SectionsEdit + v-model:document="document" + :repertoire="repertoire" + :user-is-admin="userIsAdmin" + /> + + <template #footer> + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 mb tablet-mb-0"> + <button + v-if="!loading" + class="btn-border rnd-xs p-s full-x" + @click="cancel" + > + Annuler + </button> + </div> + <div class="tablet-blob-2-3"> + <button + v-if="!loading" + ref="save-button" + class="btn btn-primary" + :disabled="!complete" + @click="save" + > + Enregistrer + </button> + + <div v-else class="p-s full-x bold">Enregistrement en cours…</div> + </div> + </div> + </template> + </Popup> +</template> + +<script> +import Popup from '../_ui/popup.vue' +import SectionsEdit from './sections-edit.vue' + +export default { + name: 'CaminoDocumentEditPopup', + + components: { + Popup, + SectionsEdit + }, + + props: { + title: { type: String, required: true }, + route: { type: Object, default: null }, + action: { type: Object, default: null }, + document: { type: Object, required: true }, + repertoire: { type: String, required: true }, + parentTypeId: { type: String, default: '' }, + documentsTypes: { type: Array, default: null } + }, + + computed: { + loading() { + return this.$store.state.popup.loading + }, + + complete() { + return ( + this.document.typeId && + this.document.date && + (this.document.uri || + this.document.url || + this.document.fichier || + this.document.fichierNouveau) + ) + }, + + messages() { + return this.$store.state.popup.messages + }, + + types() { + if (this.documentsTypes) { + return this.documentsTypes + } + return this.$store.state.document.metas.documentsTypes + }, + + documentType() { + return this.types && this.types.find(d => d.id === this.document.typeId) + }, + + userIsAdmin() { + return this.$store.getters['user/userIsAdmin'] + } + }, + + async created() { + document.addEventListener('keyup', this.keyUp) + await this.get() + }, + + beforeUnmount() { + document.removeEventListener('keyup', this.keyUp) + }, + + methods: { + async get() { + if (!this.documentsTypes) { + const options = { repertoire: this.repertoire } + + if (this.parentTypeId) { + options.typeId = this.parentTypeId + } + + await this.$store.dispatch('document/init', options) + } + }, + + async save() { + await this.$store.dispatch('document/upsert', { + document: this.document, + route: this.route, + action: this.action + }) + + this.eventTrack({ + categorie: 'titre-sections', + action: 'titre-etape-doc-enregistrer', + nom: this.document.titreEtapeId + }) + }, + + cancel() { + this.errorsRemove() + this.$store.commit('popupClose') + }, + + keyUp(e) { + if (!this.loading) { + if ((e.which || e.keyCode) === 27) { + this.cancel() + } else if ((e.which || e.keyCode) === 13 && this.complete) { + this.$refs['save-button'].focus() + this.save() + } + } + }, + + eventTrack(event) { + if (this.$matomo) { + this.$matomo.trackEvent(event.categorie, event.action, event.nom) + } + }, + + errorsRemove() {} + } +} +</script> diff --git a/packages/ui/src/components/document/multi-edit.vue b/packages/ui/src/components/document/multi-edit.vue new file mode 100644 index 0000000000000000000000000000000000000000..ca38b8307e4d43d69be1ddeda8d3f3cd4d22d34c --- /dev/null +++ b/packages/ui/src/components/document/multi-edit.vue @@ -0,0 +1,99 @@ +<template> + <Documents + v-if="documents.length" + :documents="documents" + :bouton-modification="true" + :bouton-suppression="true" + :add-action="addAction" + :remove-action="removeAction" + :manquant-show="true" + :help-show="true" + :repertoire="repertoire" + :title="documentPopupTitle" + /> + + <DocumentAddButton + v-if="documentsTypes?.length" + :document="{ + date: TODAY, + entreprisesLecture: !userIsAdmin, + publicLecture: false, + fichier: null, + fichierNouveau: null, + fichierTypeId: null, + typeId: '' + }" + :action="addAction" + :title="documentPopupTitle" + :repertoire="repertoire" + class="btn py-s px-m rnd-xs mt--s mb-s full-x" + :parent-type-id="parentTypeId" + :large="true" + :documents-types="documentsTypes" + /> +</template> + +<script> +import DocumentAddButton from './button-add.vue' +import Documents from '../documents/list.vue' +import { TODAY } from '@/utils' + +export default { + components: { DocumentAddButton, Documents }, + + props: { + documents: { type: Array, required: true }, + parentTypeId: { type: String, required: true }, + documentsTypes: { type: Array, required: true }, + documentPopupTitle: { type: String, required: true }, + addAction: { type: Object, default: null }, + removeAction: { type: Object, default: null }, + repertoire: { type: String, required: true } + }, + + emits: ['complete-update'], + + data() { + return { + TODAY + } + }, + + computed: { + complete() { + return this.documents.every(d => { + const documentType = this.documentsTypes.find(dt => dt.id === d.typeId) + + return ( + !documentType || + documentType.optionnel || + !!( + (d.fichier || + d.fichierNouveau || + (this.userIsAdmin && (d.uri || d.url))) && + d.date + ) + ) + }) + }, + + userIsAdmin() { + return this.$store.getters['user/userIsAdmin'] + } + }, + + watch: { + complete: 'completeUpdate' + }, + + created() { + this.completeUpdate() + }, + + methods: { + completeUpdate() { + this.$emit('complete-update', this.complete) + } + } +} +</script> diff --git a/packages/ui/src/components/document/remove-popup.vue b/packages/ui/src/components/document/remove-popup.vue new file mode 100644 index 0000000000000000000000000000000000000000..7c2e8d430b48caf24c6592c3b0cbe5b699dde1a4 --- /dev/null +++ b/packages/ui/src/components/document/remove-popup.vue @@ -0,0 +1,105 @@ +<template> + <Popup :messages="messages"> + <template #header> + <div> + <h6> + <span class="cap-first"> + {{ title }} + </span> + </h6> + <h2 class="cap-first">Suppression du document</h2> + </div> + </template> + + <p class="bold"> + Souhaitez vous supprimer le document + <span class="color-inverse">{{ document.type.nom }}</span> de + <span class="color-inverse">{{ title }}</span> ? + </p> + <div class="bg-warning color-bg p-s mb-l"> + <span class="bold"> Attention </span>: cette opération est définitive et + ne peut pas être annulée. + </div> + + <template #footer> + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 mb tablet-mb-0"> + <button + v-if="!loading" + class="btn-border rnd-xs p-s full-x" + @click="cancel" + > + Annuler + </button> + </div> + <div class="tablet-blob-2-3"> + <button + v-if="!loading" + class="btn-flash rnd-xs p-s full-x" + @click="remove" + > + Supprimer + </button> + <div v-else class="p-s full-x bold">Suppression en cours…</div> + </div> + </div> + </template> + </Popup> +</template> + +<script> +import Popup from '../_ui/popup.vue' + +export default { + name: 'CaminoDocumentRemovePopup', + + components: { + Popup + }, + + props: { + title: { type: String, default: '' }, + route: { type: Object, required: true }, + document: { type: Object, default: () => ({}) } + }, + + computed: { + messages() { + return this.$store.state.popup.messages + }, + + loading() { + return this.$store.state.popup.loading + } + }, + + created() { + document.addEventListener('keyup', this.keyup) + }, + + beforeUnmount() { + document.removeEventListener('keyup', this.keyup) + }, + + methods: { + async remove() { + await this.$store.dispatch('document/remove', { + id: this.document.id, + route: this.route + }) + }, + + cancel() { + this.$store.commit('popupClose') + }, + + keyup(e) { + if ((e.which || e.keyCode) === 27) { + this.cancel() + } else if ((e.which || e.keyCode) === 13) { + this.remove() + } + } + } +} +</script> diff --git a/packages/ui/src/components/document/sections-edit.vue b/packages/ui/src/components/document/sections-edit.vue new file mode 100644 index 0000000000000000000000000000000000000000..c1b3a99bc7acc0bd5be9f4dbf981257ed54a4495 --- /dev/null +++ b/packages/ui/src/components/document/sections-edit.vue @@ -0,0 +1,294 @@ +<template> + <div> + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5>Date</h5> + </div> + <div class="tablet-blob-2-3"> + <InputDate v-if="modifiable" v-model="document.date" class="mb" /> + <p v-else-if="document.date" class="pt-xs"> + {{ document.date }} + </p> + <p v-else class="color-warning pt-xs">À compléter pour valider</p> + </div> + </div> + + <hr /> + + <div v-if="documentsVisibilites.length > 1 && modifiable"> + <div class="tablet-blobs"> + <div class="tablet-blob-1-3"> + <h5>Visibilité</h5> + </div> + <div class="tablet-blob-2-3"> + <ul class="list-sans"> + <li v-for="visibilite in documentsVisibilites" :key="visibilite.id"> + <label class="small bold"> + <input + :value="visibilite.id" + :checked="visibilite.id === visibiliteId" + type="radio" + class="mr-s" + @change="visibiliteUpdate(visibilite.id)" + /> + {{ visibilite.nom }} + </label> + </li> + </ul> + </div> + </div> + <hr /> + </div> + + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5 class="mb-xs">Fichier</h5> + <p v-if="userIsAdmin" class="h6 italic mb-0">Optionnel</p> + </div> + <div class="tablet-blob-2-3"> + <div v-if="document.fichier || document.fichierNouveau" class="flex"> + <p class="mb-0 word-break"> + {{ + (document.fichierNouveau && document.fichierNouveau.name) || + `${document.id}.${document.fichierTypeId}` + }} + </p> + <div v-if="modifiable" class="flex-right flex flex-center pl-s"> + <button + class="btn-border py-s px-m my--xs rnd-l-xs" + @click="fileRemove" + > + <i class="icon-24 icon-trash" /> + </button> + <button + class="btn-border py-s px-m my--xs rnd-r-xs" + @click="fileDownload" + > + <i class="icon-24 icon-download" /> + </button> + </div> + </div> + <div v-else-if="modifiable"> + <InputFile + class="btn-border small p-s full-x rnd-xs mb-s" + @change="fileChange" + /> + <p class="h5 italic">30 Mo max.</p> + </div> + <p v-else class="color-warning pt-s mb-0">À compléter pour valider</p> + </div> + </div> + + <hr /> + + <div v-if="document.fichierNouveau"> + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5>Type de fichier</h5> + </div> + <div class="tablet-blob-2-3 mb"> + <select + v-if="modifiable" + v-model="document.fichierTypeId" + class="p-s" + > + <option + v-for="fichierTypeId in fichiersTypesIds" + :key="fichierTypeId" + :value="fichierTypeId" + :disabled="document.fichierTypeId === fichierTypeId" + > + {{ fichierTypeId }} + </option> + </select> + <p v-else-if="document.fichierTypeId" class="pt-xs mb-0"> + {{ document.fichierTypeId }} + </p> + <p v-else class="color-warning pt-s mb-0">À compléter pour valider</p> + </div> + </div> + <hr /> + </div> + + <div + v-if=" + (document.typeId === 'dec' || document.typeId === 'arr') && modifiable + " + > + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5 class="mb-xs">Jorf</h5> + <p class="h6 italic mb-0">Optionnel</p> + </div> + <div class="mb tablet-blob-2-3"> + <input v-model="document.jorf" type="text" class="p-s" /> + </div> + </div> + <hr /> + </div> + + <div + v-if=" + (document.typeId === 'dec' || document.typeId === 'arr') && modifiable + " + > + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5 class="mb-xs">Nor</h5> + <p class="h6 italic mb-0">Optionnel</p> + </div> + <div class="mb tablet-blob-2-3"> + <input v-model="document.nor" type="text" class="p-s" /> + </div> + </div> + <hr /> + </div> + + <div v-if="repertoire === 'demarches' && modifiable && userIsAdmin"> + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5 class="mb-xs">URI</h5> + <p class="h6 italic mb-0">Optionnel</p> + </div> + <div class="mb tablet-blob-2-3"> + <input + v-model="document.uri" + type="url" + class="p-s" + placeholder="https://…" + /> + </div> + </div> + <hr /> + </div> + + <div v-if="repertoire === 'demarches' && modifiable && userIsAdmin"> + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5 class="mb-xs">URL</h5> + <p class="h6 italic mb-0">Optionnel</p> + </div> + <div class="mb tablet-blob-2-3"> + <input + v-model="document.url" + type="url" + class="p-s" + placeholder="https://…" + /> + </div> + </div> + <hr /> + </div> + + <div v-if="modifiable || document.description"> + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5 class="mb-xs">Description</h5> + <p v-if="modifiable" class="h6 italic mb-0">Optionnel</p> + </div> + <div class="mb tablet-blob-2-3"> + <input + v-if="modifiable" + v-model="document.description" + type="text" + class="p-s" + /> + <p v-else-if="document.description" class="pt-xs mb-0"> + {{ document.description }} + </p> + </div> + </div> + <hr /> + </div> + + <Messages :messages="warnings" /> + </div> +</template> + +<script> +import InputDate from '../_ui/input-date.vue' +import InputFile from '../_ui/input-file.vue' +import Messages from '../_ui/messages.vue' + +export default { + components: { Messages, InputFile, InputDate }, + + props: { + document: { type: Object, required: true }, + modifiable: { type: Boolean, default: true }, + repertoire: { type: String, required: true }, + userIsAdmin: { type: Boolean, default: false } + }, + + data() { + return { + fichiersTypesIds: ['pdf'], + warnings: [] + } + }, + + computed: { + documentsVisibilites() { + return this.$store.state.document.metas.documentsVisibilites + }, + + visibiliteId() { + if (this.document.publicLecture) { + return 'public' + } + + if (this.document.entreprisesLecture) { + return 'entreprise' + } + + return 'admin' + } + }, + + async mounted() { + if ( + this.documentsVisibilites.length && + this.documentsVisibilites.length < 2 + ) { + this.document.publicLecture = this.documentsVisibilites[0].id === 'public' + this.document.entreprisesLecture = + this.documentsVisibilites[0].id === 'entreprise' + } + }, + + methods: { + fileChange({ + target: { + validity, + files: [file] + } + }) { + if (file && validity.valid && file.type === 'application/pdf') { + this.warnings = [] + this.document.fichierNouveau = file + this.document.fichierTypeId = 'pdf' + } else { + this.warnings = [ + { type: 'warning', value: 'seuls les fichiers pdf sont acceptés' } + ] + } + }, + + fileRemove() { + this.document.fichier = null + this.document.fichierNouveau = null + this.document.fichierTypeId = null + this.warnings = [] + }, + + fileDownload() { + this.$store.dispatch('downloadDocument', this.document) + }, + + visibiliteUpdate(id) { + this.document.publicLecture = id === 'public' + this.document.entreprisesLecture = id === 'entreprise' + } + } +} +</script> diff --git a/packages/ui/src/components/documents/list.vue b/packages/ui/src/components/documents/list.vue new file mode 100644 index 0000000000000000000000000000000000000000..c46ceed0e5aed73c69593a2ac1681dc04dfa4e6b --- /dev/null +++ b/packages/ui/src/components/documents/list.vue @@ -0,0 +1,58 @@ +<template> + <div class="overflow-scroll-x"> + <table> + <tr> + <th>Nom</th> + <th>Date</th> + <th class="full-x-">Description</th> + <th /> + </tr> + <DocumentTr + v-for="document in documents" + :key="document.id" + :document="document" + :parent-id="parentId" + :parent-type-id="parentTypeId" + :route="route" + :add-action="addAction" + :remove-action="removeAction" + :repertoire="repertoire" + :title="title" + :etiquette="etiquette" + :bouton-visualisation="true" + :bouton-suppression="boutonSuppression && document.suppression" + :bouton-modification="boutonModification && document.modification" + :bouton-dissociation="boutonDissociation" + :manquant-show="manquantShow" + :help-show="helpShow" + /> + </table> + </div> +</template> + +<script> +import DocumentTr from './tr.vue' + +export default { + components: { + DocumentTr + }, + + props: { + documents: { type: Array, required: true }, + repertoire: { type: String, required: true }, + title: { type: String, default: '' }, + route: { type: Object, default: null }, + addAction: { type: Object, default: null }, + removeAction: { type: Object, default: null }, + parentId: { type: String, default: '' }, + parentTypeId: { type: String, default: '' }, + etiquette: { type: Boolean, default: false }, + boutonDissociation: { type: Boolean, default: false }, + boutonModification: { type: Boolean, default: false }, + boutonSuppression: { type: Boolean, default: false }, + manquantShow: { type: Boolean, default: false }, + helpShow: { type: Boolean, default: false } + } +} +</script> diff --git a/packages/ui/src/components/documents/tr.vue b/packages/ui/src/components/documents/tr.vue new file mode 100644 index 0000000000000000000000000000000000000000..1e86e922bdc801d30933d35e98c28effebe96078 --- /dev/null +++ b/packages/ui/src/components/documents/tr.vue @@ -0,0 +1,222 @@ +<template> + <tr class="h6"> + <td class="nowrap pt-m flex flex-center"> + <span class="bold">{{ document.type.nom }}</span> + <span> + <HelpTooltip v-if="helpShow && document.type.description" class="ml-xs"> + {{ document.type.description }} + </HelpTooltip> + </span> + <span v-if="etiquette"> + <Tag + v-if="document.publicLecture" + :mini="true" + color="bg-info" + class="ml-xs" + > + Public + </Tag> + <Tag + v-if="document.entreprisesLecture && !document.publicLecture" + :mini="true" + color="bg-info" + class="ml-xs" + > + Entreprise + </Tag> + </span> + <Tag + v-if="manquant && manquantShow" + color="bg-warning" + class="ml-xs" + :mini="true" + >Fichier manquant</Tag + > + </td> + <td class="nowrap pt-m"> + {{ dateFormat(document.date) }} + </td> + <td class="pt-m">{{ document.description || '–' }}</td> + <td class="flex text-right"> + <button + v-if="boutonModification" + class="btn rnd-l-xs py-s px-m my--xs mr-px" + @click="editPopupOpen" + > + <i class="icon-24 icon-pencil" /> + </button> + <button + v-if="boutonSuppression" + class="btn py-s px-m my--xs" + :class="{ + 'rnd-r-xs': !document.url && !document.uri && !document.fichier + }" + @click="removePopupOpen" + > + <i class="icon-24 icon-trash" /> + </button> + <a + v-if="document.fichier || document.fichierNouveau" + class="btn-border py-s px-m my--xs" + :class="{ + 'rnd-r-xs': !document.url && !document.uri, + 'rnd-l-xs': + !boutonVisualisation && + !boutonModification && + !boutonSuppression && + !boutonDissociation + }" + :href="`/apiUrl/fichiers/${document.id}`" + :download="document.nom" + target="_blank" + > + <i class="icon-24 icon-download" /> + </a> + <a + v-if="document.url" + class="btn-border py-s px-m my--xs" + :class="{ + 'rnd-r-xs': !document.uri, + 'rnd-l-xs': + !document.fichier && + !boutonVisualisation && + !boutonModification && + !boutonSuppression && + !boutonDissociation + }" + :href="document.url" + target="_blank" + rel="noopener noreferrer" + alt="Url" + > + <i class="icon-24 icon-link" /> + </a> + <a + v-if="document.uri" + class="btn-border py-s px-m my--xs rnd-r-xs" + :class="{ + 'rnd-l-xs': + !document.url && + !document.fichier && + !boutonVisualisation && + !boutonModification && + !boutonSuppression && + !boutonDissociation + }" + :href="document.uri" + target="_blank" + rel="noopener noreferrer" + alt="Uri" + > + <i class="icon-24 icon-link" /> + </a> + </td> + </tr> +</template> + +<script> +import { cloneAndClean, dateFormat } from '../../utils/index' +import Tag from '../_ui/tag.vue' +import DocumentEditPopup from '../document/edit-popup.vue' +import DocumentRemovePopup from '../document/remove-popup.vue' +import HelpTooltip from '../_ui/help-tooltip.vue' + +export default { + components: { + Tag, + HelpTooltip + }, + + props: { + document: { type: Object, required: true }, + repertoire: { type: String, required: true }, + title: { type: String, required: true }, + route: { type: Object, default: null }, + addAction: { type: Object, default: null }, + removeAction: { type: Object, default: null }, + parentId: { type: String, default: '' }, + parentTypeId: { type: String, default: '' }, + etiquette: { type: Boolean, default: false }, + boutonVisualisation: { type: Boolean, default: true }, + boutonDissociation: { type: Boolean, default: false }, + boutonModification: { type: Boolean, default: false }, + boutonSuppression: { type: Boolean, default: false }, + manquantShow: { type: Boolean, default: false }, + helpShow: { type: Boolean, default: false } + }, + + data() { + return { + fileReader: null + } + }, + + computed: { + manquant() { + return !( + this.document.fichier || + this.document.fichierNouveau || + this.document.uri || + this.document.url + ) + } + }, + + methods: { + editPopupOpen() { + const document = cloneAndClean(this.document) + if (this.parentId) { + if (this.repertoire === 'demarches') { + document.titreEtapeId = this.parentId + } else if (this.repertoire === 'activites') { + document.titreActiviteId = this.parentId + } else if (this.repertoire === 'entreprises') { + document.entrepriseId = this.parentId + } + } + + document.typeId = document.type.id + document.fichierNouveau = null + + delete document.type + delete document.modification + delete document.suppression + + this.$store.commit('popupOpen', { + component: DocumentEditPopup, + props: { + title: this.title, + route: this.route, + action: this.addAction, + document, + repertoire: this.repertoire, + parentTypeId: this.parentTypeId + } + }) + }, + + removePopupOpen() { + if (this.removeAction) { + this.$store.dispatch( + this.removeAction.name, + { id: this.document.id }, + { root: true } + ) + } else { + this.$store.commit('popupOpen', { + component: DocumentRemovePopup, + props: { + title: this.title, + document: this.document, + route: this.route + } + }) + } + }, + + dateFormat(date) { + return dateFormat(date) + } + } +} +</script> diff --git a/packages/ui/src/components/entreprise.vue b/packages/ui/src/components/entreprise.vue new file mode 100644 index 0000000000000000000000000000000000000000..69d22b867f98b664a875e9ffca1b29e21be9c8cc --- /dev/null +++ b/packages/ui/src/components/entreprise.vue @@ -0,0 +1,329 @@ +<template> + <Loader v-if="!loaded" /> + <div v-else> + <h5>Entreprise</h5> + <h1> + {{ nom }} + </h1> + <Accordion class="mb-xxl" :slot-sub="true" :slot-buttons="true"> + <template #title> + <span class="cap-first"> Profil </span> + </template> + + <template v-if="entreprise.modification" #buttons> + <DocumentAddButton + :route="route" + :document="documentNew" + :title="nom" + repertoire="entreprises" + class="btn py-s px-m mr-px" + /> + <button class="btn py-s px-m" @click="editPopupOpen"> + <i class="icon-24 icon-pencil" /> + </button> + </template> + + <template #sub> + <div class="px-m pt-m border-b-s"> + <div class="tablet-blobs"> + <div class="tablet-blob-1-4"> + <h5>Siren</h5> + </div> + <div class="tablet-blob-3-4"> + <p>{{ entreprise.legalSiren }}</p> + </div> + </div> + + <div class="tablet-blobs"> + <div class="tablet-blob-1-4"> + <h5>Forme juridique</h5> + </div> + <div class="tablet-blob-3-4"> + <p>{{ entreprise.legalForme }}</p> + </div> + </div> + + <div class="tablet-blobs"> + <div class="tablet-blob-1-4"> + <h5> + Établissement{{ + entreprise.etablissements.length > 1 ? 's' : '' + }} + </h5> + </div> + <div class="tablet-blob-3-4"> + <ul class="list-sans"> + <li v-for="e in entreprise.etablissements" :key="e.id"> + <h6 class="inline-block"> + {{ dateFormat(e.dateDebut) }} + </h6> + : {{ e.nom }} + </li> + </ul> + </div> + </div> + + <div class="tablet-blobs"> + <div class="tablet-blob-1-4"> + <h5>Adresse</h5> + </div> + <div class="tablet-blob-3-4"> + <p> + {{ entreprise.adresse }} + <br />{{ entreprise.codePostal }} + {{ entreprise.commune }} + </p> + </div> + </div> + + <div class="tablet-blobs"> + <div class="tablet-blob-1-4"> + <h5>Téléphone</h5> + </div> + <div class="tablet-blob-3-4"> + <p class="word-break"> + <span v-if="entreprise.telephone">{{ + entreprise.telephone + }}</span> + <span v-else>–</span> + </p> + </div> + </div> + + <div class="tablet-blobs"> + <div class="tablet-blob-1-4"> + <h5>Email</h5> + </div> + <div class="tablet-blob-3-4"> + <p class="word-break"> + <a + v-if="entreprise.email" + :href="`mailto:${entreprise.email}`" + class="btn small bold py-xs px-s rnd" + > + {{ entreprise.email }} + </a> + <span v-else>–</span> + </p> + </div> + </div> + + <div class="tablet-blobs"> + <div class="tablet-blob-1-4"> + <h5>Site</h5> + </div> + <div class="tablet-blob-3-4"> + <p class="word-break"> + <a + v-if="entreprise.url" + :href="entreprise.url" + class="btn small bold py-xs px-s rnd" + > + {{ entreprise.url }} + </a> + <span v-else>–</span> + </p> + </div> + </div> + + <div class="tablet-blobs"> + <div class="tablet-blob-1-4"> + <h5>Archivée</h5> + </div> + <div class="tablet-blob-3-4"> + <p>{{ entreprise.archive ? 'Oui' : 'Non' }}</p> + </div> + </div> + </div> + + <div v-if="entreprise.documents.length"> + <h4 class="px-m pt mb-0">Documents</h4> + <Documents + :bouton-modification="entreprise.modification" + :bouton-suppression=" + entreprise.modification && + permissionsCheck(user, ['super', 'admin', 'editeur']) + " + :route="route" + :documents="entreprise.documents" + :etiquette="entreprise.modification" + :parent-id="entreprise.id" + :title="nom" + repertoire="entreprises" + class="px-m" + /> + </div> + </template> + </Accordion> + + <div v-if="utilisateurs && utilisateurs.length" class="mb-xxl"> + <div class="line-neutral width-full mb-xxl" /> + <h3>Utilisateurs</h3> + <div class="line width-full" /> + <Table + class="width-full-p" + :columns="utilisateursColonnes" + :rows="utilisateursLignes" + :utilisateurs="utilisateurs" + /> + </div> + + <div v-if="titulaireTitres && titulaireTitres.length" class="mb-xxl"> + <div class="line-neutral width-full mb-xxl" /> + <h3>Titres miniers et autorisations</h3> + <div class="line width-full" /> + <TitresTable :titres="titulaireTitres" /> + </div> + + <div v-if="amodiataireTitres && amodiataireTitres.length" class="mb-xxl"> + <div class="line width-full my-xxl" /> + <h3>Titres miniers et autorisations (amodiataire)</h3> + <div class="line width-full" /> + <TitresTable :titres="amodiataireTitres" /> + </div> + + <div v-if="permissionsCheck(user, ['super'])" class="mb-xxl"> + <div class="line-neutral width-full mb-xxl" /> + <h2>Permissions</h2> + + <EntreprisePermission :entreprise="entreprise" /> + </div> + </div> +</template> + +<script> +import Accordion from './_ui/accordion.vue' +import Loader from './_ui/loader.vue' +import Table from './_ui/table.vue' +import TitresTable from './titres/table.vue' +import EntrepriseEditPopup from './entreprise/edit-popup.vue' +import DocumentAddButton from './document/button-add.vue' +import Documents from './documents/list.vue' +import { dateFormat, permissionsCheck } from '../utils/index' +import EntreprisePermission from './entreprise/permissions.vue' + +import { + utilisateursColonnes, + utilisateursLignesBuild +} from './utilisateurs/table' + +export default { + components: { + Accordion, + Loader, + Table, + TitresTable, + DocumentAddButton, + Documents, + EntreprisePermission + }, + + data() { + return { + utilisateursColonnes + } + }, + + computed: { + entreprise() { + return this.$store.state.entreprise.element + }, + + nom() { + return this.entreprise && this.entreprise.nom ? this.entreprise.nom : '–' + }, + + utilisateurs() { + return this.entreprise.utilisateurs + }, + + utilisateursLignes() { + return utilisateursLignesBuild(this.utilisateurs) + }, + + titulaireTitres() { + return this.entreprise.titulaireTitres + }, + + amodiataireTitres() { + return this.entreprise.amodiataireTitres + }, + + user() { + return this.$store.state.user.element + }, + + loaded() { + return !!this.entreprise + }, + + documentNew() { + return { + entrepriseId: this.entreprise.id, + entreprisesLecture: false, + publicLecture: false, + fichier: null, + fichierNouveau: null, + fichierTypeId: null, + typeId: '' + } + }, + + route() { + return { + id: this.entreprise.id, + name: 'entreprise' + } + } + }, + + watch: { + '$route.params.id': function (id) { + if (this.$route.name === 'entreprise' && id) { + this.get() + } + }, + + user: 'get' + }, + + async created() { + await this.get() + }, + + beforeUnmount() { + this.$store.commit('entreprise/reset') + }, + + methods: { + async get() { + await this.$store.dispatch('entreprise/get', this.$route.params.id) + }, + + editPopupOpen() { + const entreprise = { + id: this.entreprise.id, + telephone: this.entreprise.telephone, + url: this.entreprise.url, + email: this.entreprise.email, + archive: this.entreprise.archive + } + + this.$store.commit('popupOpen', { + component: EntrepriseEditPopup, + props: { + entreprise + } + }) + }, + + dateFormat(date) { + return dateFormat(date) + }, + + permissionsCheck(user, permissions) { + return permissionsCheck(user, permissions) + } + } +} +</script> diff --git a/packages/ui/src/components/entreprise/add-popup.vue b/packages/ui/src/components/entreprise/add-popup.vue new file mode 100644 index 0000000000000000000000000000000000000000..437988620b0f774235091c23b8452927251e23a1 --- /dev/null +++ b/packages/ui/src/components/entreprise/add-popup.vue @@ -0,0 +1,136 @@ +<template> + <Popup :messages="messages"> + <template #header> + <div> + <h2>Création d'une entreprise</h2> + </div> + </template> + + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5>Pays</h5> + </div> + <div class="mb tablet-blob-2-3"> + <select v-model="entreprise.paysId" class="p-s mr" :disabled="true"> + <option v-for="pay in pays" :key="pay.id" :value="pay.id"> + {{ pay.nom }} + </option> + </select> + </div> + </div> + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5>Siren</h5> + </div> + <div class="mb tablet-blob-2-3"> + <div> + <input + v-model="entreprise.legalSiren" + type="text" + class="p-s" + placeholder="123456789" + /> + </div> + </div> + </div> + + <template #footer> + <div v-if="!loading" class="tablet-blobs"> + <div class="tablet-blob-1-3 mb tablet-mb-0"> + <button class="btn-border rnd-xs p-s full-x" @click="cancel"> + Annuler + </button> + </div> + <div class="tablet-blob-2-3"> + <button + ref="save-button" + class="btn btn-primary" + :disabled="!complete" + :class="{ disabled: !complete }" + @click="save" + > + Enregistrer + </button> + </div> + </div> + <div v-else class="p-s full-x bold">Enregistrement en cours…</div> + </template> + </Popup> +</template> + +<script> +import Popup from '../_ui/popup.vue' + +export default { + name: 'CaminoEntrepriseEditPopup', + + components: { + Popup + }, + + data() { + return { + entreprise: { legalSiren: '', paysId: 'fr' }, + pays: [{ id: 'fr', nom: 'France' }] + } + }, + + computed: { + loading() { + return this.$store.state.popup.loading + }, + + messages() { + return this.$store.state.popup.messages + }, + + complete() { + return this.sirenValide && this.entreprise.paysId + }, + + sirenValide() { + return ( + this.entreprise.legalSiren && + this.entreprise.legalSiren.match('[0-9]{9}$') + ) + } + }, + + created() { + document.addEventListener('keyup', this.keyup) + this.element = null + }, + + beforeUnmount() { + document.removeEventListener('keyup', this.keyup) + }, + + methods: { + async save() { + if (this.complete) { + await this.$store.dispatch('entreprise/add', this.entreprise) + } + }, + + cancel() { + this.errorsRemove() + this.$store.commit('popupClose') + }, + + keyup(e) { + if ((e.which || e.keyCode) === 27) { + this.cancel() + } else if ((e.which || e.keyCode) === 13) { + if (this.complete) { + this.$refs['save-button'].focus() + this.save() + } + } + }, + + errorsRemove() { + this.$store.commit('popupMessagesRemove') + } + } +} +</script> diff --git a/packages/ui/src/components/entreprise/edit-popup.vue b/packages/ui/src/components/entreprise/edit-popup.vue new file mode 100644 index 0000000000000000000000000000000000000000..f42d290417e3b6afe337e149b3d389c606d4dbd0 --- /dev/null +++ b/packages/ui/src/components/entreprise/edit-popup.vue @@ -0,0 +1,153 @@ +<template> + <Popup :messages="messages"> + <template #header> + <div> + <h2>Modification d'une entreprise</h2> + </div> + </template> + + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5>Téléphone</h5> + </div> + <div class="mb tablet-blob-2-3"> + <input + v-model="entreprise.telephone" + type="text" + class="p-s" + placeholder="0100000000" + /> + </div> + </div> + + <hr /> + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5>Adresse électronique</h5> + </div> + <div class="mb tablet-blob-2-3"> + <input + v-model="entreprise.email" + type="text" + class="p-s" + placeholder="email@domain.tld" + /> + </div> + </div> + + <hr /> + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5>Site internet</h5> + </div> + <div class="mb tablet-blob-2-3"> + <input + v-model="entreprise.url" + type="text" + class="p-s" + placeholder="http://…" + /> + </div> + </div> + + <template v-if="permissionsCheck(user, ['super'])"> + <hr /> + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5>Archivée</h5> + </div> + <div class="mb tablet-blob-2-3"> + <input v-model="entreprise.archive" type="checkbox" class="p-s" /> + </div> + </div> + </template> + + <template #footer> + <div v-if="!loading" class="tablet-blobs"> + <div class="tablet-blob-1-3 mb tablet-mb-0"> + <button class="btn-border rnd-xs p-s full-x" @click="cancel"> + Annuler + </button> + </div> + <div class="tablet-blob-2-3"> + <button ref="save-button" class="btn btn-primary" @click="save"> + Enregistrer + </button> + </div> + </div> + <div v-else class="p-s full-x bold">Enregistrement en cours…</div> + </template> + </Popup> +</template> + +<script> +import { permissionsCheck } from '@/utils' +import Popup from '../_ui/popup.vue' + +export default { + name: 'CaminoEntrepriseEditPopup', + + components: { + Popup + }, + + props: { + entreprise: { + type: Object, + default: () => ({}) + } + }, + + computed: { + loading() { + return this.$store.state.popup.loading + }, + + messages() { + return this.$store.state.popup.messages + }, + + user() { + return this.$store.state.user.element + } + }, + + created() { + document.addEventListener('keyup', this.keyup) + this.element = null + }, + + beforeUnmount() { + document.removeEventListener('keyup', this.keyup) + }, + + methods: { + async save() { + const entreprise = JSON.parse(JSON.stringify(this.entreprise)) + await this.$store.dispatch('entreprise/update', entreprise) + }, + + cancel() { + this.errorsRemove() + this.$store.commit('popupClose') + }, + + keyup(e) { + if ((e.which || e.keyCode) === 27) { + this.cancel() + } else if ((e.which || e.keyCode) === 13) { + this.$refs['save-button'].focus() + this.save() + } + }, + + errorsRemove() { + this.$store.commit('popupMessagesRemove') + }, + + permissionsCheck(user, permissions) { + return permissionsCheck(user, permissions) + } + } +} +</script> diff --git a/packages/ui/src/components/entreprise/permissions.vue b/packages/ui/src/components/entreprise/permissions.vue new file mode 100644 index 0000000000000000000000000000000000000000..e9defd1cc2c47407b0f44421b2e8ad4609f61b19 --- /dev/null +++ b/packages/ui/src/components/entreprise/permissions.vue @@ -0,0 +1,206 @@ +<template> + <div> + <div class="mb-xxl"> + <h3>Création de demandes de titres</h3> + + <div class="h6"> + <p>Droit de faire des demande de titres par domaine / type de titre.</p> + </div> + + <div class="line width-full" /> + <div class="width-full-p"> + <div class="overflow-scroll-x mb"> + <table> + <tr> + <th>Domaine</th> + <th>Type de titre</th> + <th>Création de titres</th> + <th /> + </tr> + <tr> + <td> + <select + v-model="titreTypeNew.domaineId" + class="py-xs px-s mr-s" + > + <option + v-for="domaine in domaines" + :key="domaine.id" + :value="domaine.id" + > + {{ domaine.id.toUpperCase() }} {{ domaine.nom }} + </option> + </select> + </td> + <td> + <select + v-model="titreTypeNew.titreTypeTypeId" + class="py-xs px-s mr-s" + :disabled="!titreTypeNew.domaineId" + > + <option + v-for="titreType in titreTypeNewTypes" + :key="titreType.id" + :value="titreType.type.id" + > + {{ titreType.type.nom }} + </option> + </select> + </td> + <td> + <button + class="btn p-xs rnd-xs" + :disabled="!titreTypeNew.titreTypeTypeId" + @click=" + titreTypeNew.titresCreation = !titreTypeNew.titresCreation + " + > + <i + v-if="titreTypeNew.titresCreation" + class="icon-24 icon-check" + /> + <i v-else class="icon-24 icon-square" /> + </button> + </td> + <td> + <ButtonPlus + :disabled="!titreTypeNewActive" + @click="titreTypeNewUpdate" + /> + </td> + </tr> + <tr v-for="titreType in entreprise.titresTypes" :key="titreType.id"> + <td> + <CaminoDomaine + :domaine-id="titreType.domaine.id" + class="mt-s" + /> + </td> + <td> + <span class="small bold cap-first mt-s">{{ + titreType.type.nom + }}</span> + </td> + <td> + <button + class="btn p-xs rnd-xs" + @click=" + titreTypeUpdate( + titreType.id, + titreType.titresCreation, + true + ) + " + > + <i + v-if="titreType.titresCreation" + class="icon-24 icon-check" + /> + <i v-else class="icon-24 icon-square" /> + </button> + </td> + <td /> + </tr> + </table> + </div> + </div> + </div> + </div> +</template> + +<script> +import CaminoDomaine from '../_common/domaine.vue' +import ButtonPlus from '../../components/_ui/button-plus.vue' + +export default { + components: { + CaminoDomaine, + ButtonPlus + }, + + props: { + entreprise: { type: Object, required: true } + }, + + data() { + return { + titreTypeNew: { + domaineId: null, + titreTypeTypeId: null, + titresCreation: false + } + } + }, + + computed: { + user() { + return this.$store.state.user.element + }, + + domaines() { + return this.$store.state.entreprise.metas.domaines + }, + + loaded() { + return !!this.entreprise + }, + + titreTypeNewTypes() { + if (!this.titreTypeNew.domaineId) { + return [] + } + + const domaine = this.domaines.find( + d => d.id === this.titreTypeNew.domaineId + ) + + return domaine.titresTypes + }, + + titreTypeNewActive() { + return ( + this.titreTypeNew.titreTypeTypeId && + this.titreTypeNew.domaineId && + this.titreTypeNew.titresCreation + ) + } + }, + + created() { + this.get() + }, + + methods: { + async get() { + await this.$store.dispatch('entreprise/permissionsInit') + }, + + async titreTypeUpdate(titreTypeId, titresCreation, changed) { + if (changed) { + titresCreation = !titresCreation + } + + await this.$store.dispatch('entreprise/titreTypeUpdate', { + entrepriseId: this.entreprise.id, + titreTypeId, + titresCreation + }) + }, + + titreTypeNewUpdate() { + if (this.titreTypeNewActive) { + this.titreTypeUpdate( + `${this.titreTypeNew.titreTypeTypeId}${this.titreTypeNew.domaineId}`, + this.titreTypeNew.titresCreation + ) + + this.titreTypeNew = { + domaineId: null, + titreTypeTypeId: null, + titresCreation: false + } + } + } + } +} +</script> diff --git a/packages/ui/src/components/entreprises.vue b/packages/ui/src/components/entreprises.vue new file mode 100644 index 0000000000000000000000000000000000000000..3ff4df482bd3e2be7729a44e1cf5978e78cf0163 --- /dev/null +++ b/packages/ui/src/components/entreprises.vue @@ -0,0 +1,113 @@ +<template> + <Liste + nom="entreprises" + :filtres="filtres" + :colonnes="colonnes" + :lignes="lignes" + :elements="entreprises" + :params="params" + :total="total" + :initialized="initialized" + @params-update="paramsUpdate" + > + <template v-if="user && user.entreprisesCreation" #addButton> + <button + class="btn small rnd-xs py-s px-m full-x flex mb-s" + @click="addPopupOpen" + > + <span class="mt-xxs">Ajouter une entreprise</span> + <i class="icon-24 icon-plus flex-right" /> + </button> + </template> + + <template v-if="entreprises.length" #downloads> + <Downloads + :formats="['csv', 'xlsx', 'ods']" + section="entreprises" + class="flex-right full-x" + /> + </template> + </Liste> +</template> + +<script> +import Liste from './_common/liste.vue' +import Downloads from './_common/downloads.vue' +import EntrepriseAddPopup from './entreprise/add-popup.vue' + +import filtres from './entreprises/filtres' +import { + entreprisesColonnes, + entreprisesLignesBuild +} from './entreprises/table' + +export default { + name: 'Entreprises', + + components: { Liste, Downloads }, + + data() { + return { + filtres, + colonnes: entreprisesColonnes, + visible: false + } + }, + + computed: { + user() { + return this.$store.state.user.element + }, + + entreprises() { + return this.$store.state.entreprises.elements + }, + + total() { + return this.$store.state.entreprises.total + }, + + params() { + return this.$store.state.entreprises.params + }, + + lignes() { + return entreprisesLignesBuild(this.entreprises) + }, + + initialized() { + return this.$store.state.entreprises.initialized + } + }, + + watch: { + '$route.query': { + handler: function () { + this.$store.dispatch('entreprises/routeUpdate') + } + } + }, + + async created() { + await this.init() + }, + + unmounted() { + this.$store.commit('entreprises/reset') + }, + + methods: { + async init() { + await this.$store.dispatch('entreprises/init') + }, + + async paramsUpdate(options) { + await this.$store.dispatch(`entreprises/paramsSet`, options) + }, + + addPopupOpen() { + this.$store.commit('popupOpen', { component: EntrepriseAddPopup }) + } + } +} +</script> diff --git a/packages/ui/src/components/entreprises/filtres.js b/packages/ui/src/components/entreprises/filtres.js new file mode 100644 index 0000000000000000000000000000000000000000..8daa646b240ad7b61565465104459ff93327e12f --- /dev/null +++ b/packages/ui/src/components/entreprises/filtres.js @@ -0,0 +1,11 @@ +const filtres = [ + { + id: 'noms', + type: 'input', + value: '', + name: 'Nom / Siren / Siret', + placeholder: `Nom d'entreprise ou d'établissement, Siren, ou Siret` + } +] + +export default filtres diff --git a/packages/ui/src/components/entreprises/table.js b/packages/ui/src/components/entreprises/table.js new file mode 100644 index 0000000000000000000000000000000000000000..67f762de4ad0c8c2cc59e3b384e2fc3197829abe --- /dev/null +++ b/packages/ui/src/components/entreprises/table.js @@ -0,0 +1,28 @@ +const entreprisesColonnes = [ + { + id: 'nom', + name: 'Nom' + }, + { + id: 'siren', + name: 'Siren' + } +] + +const entreprisesLignesBuild = entreprises => + entreprises.map(entreprise => { + const columns = { + nom: { value: entreprise.nom }, + siren: { + value: entreprise.legalEtranger || entreprise.legalSiren || '–' + } + } + + return { + id: entreprise.id, + link: { name: 'entreprise', params: { id: entreprise.id } }, + columns + } + }) + +export { entreprisesColonnes, entreprisesLignesBuild } diff --git a/packages/ui/src/components/error.vue b/packages/ui/src/components/error.vue new file mode 100644 index 0000000000000000000000000000000000000000..0f8bef5096a508683687cafca2a77c09c5927ae5 --- /dev/null +++ b/packages/ui/src/components/error.vue @@ -0,0 +1,16 @@ +<template> + <div class="mb p-s color-bg" :class="`bg-${message.type}`"> + {{ message.value }} + </div> +</template> + +<script> +export default { + props: { + message: { + type: Object, + default: () => ({}) + } + } +} +</script> diff --git a/packages/ui/src/components/etape-edition.vue b/packages/ui/src/components/etape-edition.vue new file mode 100644 index 0000000000000000000000000000000000000000..bcb42b1dbbe85fbaf3e27bb271915e6237e8c830 --- /dev/null +++ b/packages/ui/src/components/etape-edition.vue @@ -0,0 +1,325 @@ +<template> + <Loader v-if="!loaded" /> + <div v-else> + <h6> + <router-link + :to="{ name: 'titre', params: { id: titre.slug } }" + class="cap-first" + > + {{ titre.nom }} + </router-link> + <span class="color-neutral"> | </span> + <span class="cap-first"> + {{ demarcheType.nom }} {{ demarcheDescription }} + </span> + </h6> + <h1>Étape</h1> + + <div v-if="helpVisible" class="p-s bg-info color-bg mb"> + Besoin d'aide pour déposer votre demande ? Contactez-nous au + <a class="color-bg" href="tel:+33763429218">07.63.42.92.18</a>, ou par + mail : + <a class="color-bg" href="mailto:camino@beta.gouv.fr" + >camino@beta.gouv.fr</a + > + </div> + + <div v-if="dateIsVisible" class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5>Date</h5> + </div> + <div class="tablet-blob-2-3"> + <InputDate v-model="newDate" class="mb" /> + </div> + </div> + + <Edit + v-else + :etape="editedEtape" + :user="user" + :events="events" + :etape-is-demande-en-construction="etapeIsDemandeEnConstruction" + :domaine-id="domaineId" + :titre-type-id="titreTypeTypeId" + :document-popup-title="documentPopupTitle" + :etape-type="etapeType" + @complete-update="completeUpdate" + @type-complete-update="typeCompleteUpdate" + @change="editChange" + /> + + <div v-if="loading" class="tablet-blobs"> + <div class="tablet-blob-1-3" /> + <div class="tablet-blob-2-3"> + <div class="p-s bold mb">Enregistrement en cours…</div> + </div> + </div> + + <div v-else-if="dateIsVisible" class="tablet-blobs mb"> + <div class="tablet-blob-1-3" /> + <div class="tablet-blob-2-3"> + <button + ref="date-button" + class="btn btn-primary" + :disabled="!newDate" + :class="{ disabled: !newDate }" + @click="dateUpdate" + > + Valider + </button> + </div> + </div> + + <div + v-else + ref="save-btn-container" + class="tablet-blobs pb-m pt-m bg-bg b-0 sticky" + > + <div class="tablet-blob-1-3" /> + <FormSaveBtn + ref="save-btn" + :help-visible="helpVisible" + :alertes="alertes" + :disabled="!isFormComplete" + class="tablet-blob-2-3 flex flex-center" + @click="save" + /> + </div> + </div> +</template> + +<script> +import { cap, dateFormat } from '@/utils' +import Loader from './_ui/loader.vue' +import InputDate from './_ui/input-date.vue' +import Edit from './etape/edit.vue' +import FormSaveBtn from './etape/form-save-btn.vue' + +export default { + components: { Loader, Edit, InputDate, FormSaveBtn }, + + beforeRouteLeave(_, __, next) { + if (this.isFormDirty && !confirm(this.promptMsg)) { + next(false) + } else { + next() + } + }, + + data() { + return { + complete: false, + isFormDirty: false, + typeComplete: false, + promptMsg: 'Quitter le formulaire sans enregistrer les changements ?', + newDate: new Date().toISOString().slice(0, 10), + events: { saveKeyUp: true } + } + }, + + computed: { + loaded() { + return this.$store.state.titreEtapeEdition.loaded + }, + + user() { + return this.$store.state.user.element + }, + + etapeId() { + return this.$route.params.id + }, + + editedEtape() { + return this.$store.state.titreEtapeEdition.element + }, + + etapeType() { + return this.$store.getters['titreEtapeEdition/etapeType'] + }, + + demarche() { + return this.$store.state.titreEtapeEdition.metas.demarche + }, + + demarcheDescription() { + return this.demarche?.description ? `(${this.demarche.description})` : '' + }, + + alertes() { + return this.$store.state.titreEtapeEdition.metas.alertes || [] + }, + + demarcheType() { + return this.demarche.type + }, + + titre() { + return this.demarche.titre + }, + + domaineId() { + return this.titre ? this.titre.domaine.id : '' + }, + + titreType() { + return this.titre ? this.titre.type : '' + }, + + titreTypeTypeId() { + return this.titreType ? this.titreType.type.id : '' + }, + + dateIsVisible() { + return !this.editedEtape.date + }, + + loading() { + return ( + this.$store.state.loading.includes('titreEtapeUpdate') || + this.$store.state.loading.includes('titreEtapeMetasGet') || + this.$store.state.loading.includes('titreEtapeGet') || + this.$store.state.loading.includes('titreEtapeEtapesTypesGet') + ) + }, + + etapeIsDemandeEnConstruction() { + return ( + this.etapeType?.id === 'mfr' && this.editedEtape?.statutId !== 'dep' + ) + }, + + isPopupOpen() { + return !!this.$store.state.popup.component + }, + + isFormComplete() { + return ( + (this.etapeIsDemandeEnConstruction && this.typeComplete) || + this.complete + ) + }, + + documentPopupTitle() { + return `${cap(this.titre.nom)} | ${cap(this.demarcheType.nom)} | ${ + this.etapeType ? cap(this.etapeType.nom) : '' + }` + }, + + userIsAdmin() { + return this.$store.getters['user/userIsAdmin'] + }, + + helpVisible() { + return ( + !this.userIsAdmin && + this.domaineId === 'm' && + ['ax', 'ar'].includes(this.titreTypeTypeId) && + this.etapeType.id === 'mfr' + ) + } + }, + + watch: { + user: 'init' + }, + + async created() { + await this.init() + + document.addEventListener('keyup', this.keyUp) + window.addEventListener('beforeunload', this.beforeWindowUnload) + }, + + beforeUnmount() { + document.removeEventListener('keyup', this.keyUp) + window.removeEventListener('beforeunload', this.beforeWindowUnload) + }, + + unmounted() { + this.$store.commit('titreEtapeEdition/reset') + }, + + methods: { + async init() { + await this.$store.dispatch('titreEtapeEdition/init', { + titreDemarcheId: this.$route.query['demarche-id'], + id: this.etapeId, + date: this.newDate + }) + }, + + beforeWindowUnload(e) { + if (!this.isFormDirty) return true + e.returnValue = this.promptMsg + return this.promptMsg + }, + + async save() { + this.isFormDirty = false + + if (this.isFormComplete) { + await this.$store.dispatch('titreEtapeEdition/upsert', { + etape: this.editedEtape + }) + + this.eventTrack({ + categorie: 'titre-etape', + action: 'titre-etape-enregistrer', + nom: this.editedEtape.id + }) + } + }, + + eventTrack(event) { + if (this.$matomo) { + this.$matomo.trackEvent(event.categorie, event.action, event.nom) + } + }, + + keyUp(e) { + if ( + (e.which || e.keyCode) === 13 && + this.events.saveKeyUp && + this.complete && + !this.isPopupOpen + ) { + if (this.dateIsVisible && this.newDate) { + this.$refs['date-button'].focus() + this.dateUpdate() + } else if ( + !this.dateIsVisible && + !this.loading && + this.isFormComplete + ) { + this.$refs['save-btn'].focusBtn() + this.save() + } + } + }, + + completeUpdate(complete) { + this.complete = complete + }, + + typeCompleteUpdate(complete) { + this.typeComplete = complete + }, + + editChange() { + if (!this.loaded) return + this.isFormDirty = true + }, + + async dateUpdate() { + await this.$store.dispatch('titreEtapeEdition/dateUpdate', { + date: this.newDate + }) + }, + + dateFormat(date) { + return dateFormat(date) + } + } +} +</script> diff --git a/packages/ui/src/components/etape.vue b/packages/ui/src/components/etape.vue new file mode 100644 index 0000000000000000000000000000000000000000..fe549317e250e9ba3593c530c1f3db49149abeb3 --- /dev/null +++ b/packages/ui/src/components/etape.vue @@ -0,0 +1,93 @@ +<template> + <Loader v-if="!loaded" /> + <div v-else> + <h6> + <router-link + :to="{ name: 'titre', params: { id: titre.slug } }" + class="cap-first" + > + {{ titre.nom }} + </router-link> + <span class="color-neutral"> | </span> + <span class="cap-first"> + {{ demarcheType.nom }} + </span> + </h6> + + <Preview + :etape="etape" + :demarche-type="demarcheType" + :titre-type-type="titreTypeType" + :domaine-id="domaineId" + :titre-nom="titre.nom" + :titre-id="titre.id" + :opened="opened" + /> + </div> +</template> + +<script> +import Preview from './etape/preview.vue' +import Loader from './_ui/loader.vue' + +export default { + components: { Preview, Loader }, + + data() { + return { + opened: true + } + }, + + computed: { + user() { + return this.$store.state.user.element + }, + etapeId() { + return this.$route.params.id + }, + etape() { + return this.$store.state.titreEtape.element + }, + loaded() { + return !!this.etape + }, + demarche() { + return this.etape.demarche + }, + demarcheType() { + return this.demarche ? this.demarche.type : '' + }, + titre() { + return this.demarche ? this.demarche.titre : '' + }, + domaineId() { + return this.titre ? this.titre.domaine.id : '' + }, + titreType() { + return this.titre ? this.titre.type : '' + }, + titreTypeType() { + return this.titreType ? this.titreType.type : {} + } + }, + watch: { + '$route.params.id': function (id) { + if (this.$route.name === 'etape' && id) { + this.get() + } + }, + user: 'get' + }, + + async created() { + await this.get() + }, + + methods: { + async get() { + await this.$store.dispatch('titreEtape/get', this.$route.params.id) + } + } +} +</script> diff --git a/packages/ui/src/components/etape/accordion.vue b/packages/ui/src/components/etape/accordion.vue new file mode 100644 index 0000000000000000000000000000000000000000..320ac394357ef956df88b49a1cf780b5a6f0321e --- /dev/null +++ b/packages/ui/src/components/etape/accordion.vue @@ -0,0 +1,55 @@ +<template> + <Accordion + class="mb-s" + :opened="opened" + :slot-default="true" + @toggle="toggle" + > + <template #title> + <div class="flex flex-center"> + <h2 class="cap-first mb-0">{{ step.name }}</h2> + <Tag + v-if="!complete" + :mini="true" + color="bg-warning" + class="ml-s mt-xs" + > + Incomplet + </Tag> + + <HelpTooltip v-if="step.help" class="ml-m"> + {{ step.help }} + </HelpTooltip> + </div> + </template> + + <div class="px pt"> + <div><slot /></div> + </div> + </Accordion> +</template> + +<script> +import Accordion from '../_ui/accordion.vue' +import HelpTooltip from '../_ui/help-tooltip.vue' + +import Tag from '../_ui/tag.vue' + +export default { + components: { Accordion, Tag, HelpTooltip }, + props: { + step: { type: Object, required: true }, + opened: { type: Boolean, required: true }, + complete: { type: Boolean, required: true }, + enConstruction: { type: Boolean, required: true } + }, + + emits: ['toggle'], + + methods: { + toggle() { + this.$emit('toggle') + } + } +} +</script> diff --git a/packages/ui/src/components/etape/autocomplete-group.vue b/packages/ui/src/components/etape/autocomplete-group.vue new file mode 100644 index 0000000000000000000000000000000000000000..7d184484a62b72222592d507a35c1fab6b7c6cb9 --- /dev/null +++ b/packages/ui/src/components/etape/autocomplete-group.vue @@ -0,0 +1,85 @@ +<template> + <div v-for="(entity, n) in entities || []" :key="`entity-${n}`"> + <div class="flex mb-s"> + <div class="mr-s flex-grow"> + <EntityInputAutocomplete + v-model:entity-id="entity.id" + :options="options" + :options-disabled="optionsDisabled" + :placeholder="placeholder" + :remove-item-button="false" + /> + </div> + <button class="btn py-s px-m rnd-xs" @click="entityRemove(n)"> + <i class="icon-24 icon-minus" /> + </button> + </div> + <slot :entity="entity" /> + </div> + + <EntityInputAutocomplete + :entity-id="entitySelected" + :options="options" + :options-disabled="optionsDisabled" + :placeholder="placeholder" + :remove-item-button="false" + @update:entity-id="entityAdd" + /> +</template> + +<script lang="ts"> +import { defineComponent, PropType } from 'vue' +import EntityInputAutocomplete from './entity-input-autocomplete.vue' + +interface IModelElement { + id: string +} + +interface IOption { + id: string + nom: string +} + +export default defineComponent({ + components: { EntityInputAutocomplete }, + + props: { + entities: { + type: Array as PropType<Array<IModelElement>>, + required: true, + default: () => [] + }, + options: { + type: Array as PropType<Array<IOption>>, + required: true, + default: () => [] + }, + optionsDisabled: { + type: Array as PropType<Array<IOption>>, + required: true, + default: () => [] + }, + placeholder: { + type: String, + default: '' + } + }, + + data: () => ({ + entitySelected: null + }), + + methods: { + entityAdd(entityId: string) { + if (entityId) { + this.entities.push({ id: entityId }) + this.entitySelected = null + } + }, + + entityRemove(entityIndex: number) { + this.entities.splice(entityIndex, 1) + } + } +}) +</script> diff --git a/packages/ui/src/components/etape/decisions-annexes-edit.vue b/packages/ui/src/components/etape/decisions-annexes-edit.vue new file mode 100644 index 0000000000000000000000000000000000000000..d46f80fe79dbcbc92d7ce9ad5b61ef4b7cd1ff2e --- /dev/null +++ b/packages/ui/src/components/etape/decisions-annexes-edit.vue @@ -0,0 +1,21 @@ +<template> + <SectionsEdit + :sections="etape.decisionsAnnexesSections" + :contenu="etape.decisionsAnnexesContenu" + @complete-update="$emit('complete-update', $event)" + @contenu-update="etape.decisionsAnnexesContenu = $event" + /> +</template> + +<script> +import SectionsEdit from '../_common/sections-edit.vue' +export default { + components: { SectionsEdit }, + + props: { + etape: { type: Object, required: true } + }, + + emits: ['complete-update'] +} +</script> diff --git a/packages/ui/src/components/etape/depose-popup.vue b/packages/ui/src/components/etape/depose-popup.vue new file mode 100644 index 0000000000000000000000000000000000000000..6d0d868e5ae1c84955e50ad18d952eadbf806bab --- /dev/null +++ b/packages/ui/src/components/etape/depose-popup.vue @@ -0,0 +1,91 @@ +<template> + <Popup :messages="messages"> + <template #header> + <h2>Dépôt d’une demande</h2> + </template> + + <p class="bold">Souhaitez vous déposer cette demande ?</p> + <div class="bg-warning color-bg p-s mb-l"> + <span class="bold"> Attention </span>: cette opération est définitive et + ne peut pas être annulée. + </div> + + <template #footer> + <div v-if="!loading" class="tablet-blobs"> + <div class="tablet-blob-1-3 mb tablet-mb-0"> + <button class="btn-border rnd-xs p-s full-x" @click="cancel"> + Annuler + </button> + </div> + <div class="tablet-blob-2-3"> + <button + id="cmn-etape-remove-popup-button-supprimer" + class="btn btn-primary" + @click="depose" + > + Déposer + </button> + </div> + </div> + <div v-else class="p-s full-x bold">Dépôt en cours…</div> + </template> + </Popup> +</template> + +<script> +import Popup from '../_ui/popup.vue' + +export default { + components: { + Popup + }, + + props: { + etape: { + type: Object, + required: true + } + }, + + computed: { + loading() { + return this.$store.state.popup.loading + }, + + messages() { + return this.$store.state.popup.messages + } + }, + + created() { + document.addEventListener('keyup', this.keyup) + }, + + beforeUnmount() { + document.removeEventListener('keyup', this.keyup) + }, + + methods: { + async depose() { + await this.$store.dispatch('titreEtape/depose', this.etape.id) + }, + + cancel() { + this.errorsRemove() + this.$store.commit('popupClose') + }, + + errorsRemove() { + this.$store.commit('popupMessagesRemove') + }, + + keyup(e) { + if ((e.which || e.keyCode) === 27) { + this.cancel() + } else if ((e.which || e.keyCode) === 13) { + this.remove() + } + } + } +} +</script> diff --git a/packages/ui/src/components/etape/edit.vue b/packages/ui/src/components/etape/edit.vue new file mode 100644 index 0000000000000000000000000000000000000000..e1ab2bf78123f0958c2d9b316a3e1545ace8a6a0 --- /dev/null +++ b/packages/ui/src/components/etape/edit.vue @@ -0,0 +1,440 @@ +<template> + <div class="mb"> + <Accordion + v-if="stepType" + id="step-type" + :step="stepType" + :opened="opened['type']" + :complete="typeComplete" + :en-construction="enConstruction" + @toggle="toggle('type')" + > + <TypeEdit + v-model:etape="etape" + :user-is-admin="userIsAdmin" + :etapes-types="etapesTypes" + :etape-type="etapeType" + :etape-is-demande-en-construction="etapeIsDemandeEnConstruction" + @type-update="typeUpdate" + @complete-update="typeCompleteUpdate" + /> + </Accordion> + + <Accordion + v-if="stepFondamentales" + id="step-fondamentales" + :step="stepFondamentales" + :opened="opened['fondamentales']" + :complete="stepFondamentalesComplete" + :en-construction="enConstruction" + @toggle="toggle('fondamentales')" + > + <FondamentalesEdit + v-model:etape="etape" + :domaine-id="domaineId" + :titre-type-id="titreTypeId" + :user-is-admin="userIsAdmin" + :user-is-super="userIsSuper" + :substances="substances" + @complete-update="fondamentalesCompleteUpdate" + /> + </Accordion> + + <Accordion + v-if="stepPoints" + id="step-points" + :step="stepPoints" + :opened="opened['points']" + :complete="stepPerimetreComplete" + :en-construction="enConstruction" + @toggle="toggle('points')" + > + <PointsEdit + v-model:etape="etape" + v-model:events="events" + :show-title="false" + @complete-update="perimetreCompleteUpdate" + /> + </Accordion> + + <Accordion + v-if="stepSections" + id="step-sections" + :step="stepSections" + :opened="opened['sections']" + :complete="stepSectionsComplete" + :en-construction="enConstruction" + @toggle="toggle('sections')" + > + <SectionsEdit + v-model:etape="etape" + :sections="etape.type.sections" + @complete-update="sectionsCompleteUpdate" + @sections-update="sectionsUpdate" + /> + </Accordion> + + <Accordion + v-if="stepDocuments" + id="step-documents" + :step="stepDocuments" + :opened="opened['documents']" + :complete="stepDocumentsComplete" + :en-construction="enConstruction" + @toggle="toggle('documents')" + > + <DocumentsEdit + v-model:documents="etape.documents" + :add-action="{ name: 'titreEtapeEdition/documentAdd' }" + :remove-action="{ name: 'titreEtapeEdition/documentRemove' }" + repertoire="demarches" + :document-popup-title="documentPopupTitle" + :parent-type-id="etapeType.id" + :documents-types="documentsTypes" + @complete-update="documentsCompleteUpdate" + /> + </Accordion> + + <Accordion + v-if="stepJustificatifs" + id="step-justificatifs" + :step="stepJustificatifs" + :opened="opened['justificatifs']" + :complete="stepJustificatifsComplete" + :en-construction="enConstruction" + @toggle="toggle('justificatifs')" + > + <JustificatifsEdit + v-model:justificatifs="etape.justificatifs" + :justificatifs-types="etape.type.justificatifsTypes" + :entreprises="entreprises" + @complete-update="justificatifsCompleteUpdate" + /> + </Accordion> + + <Accordion + v-if="stepDecisionsAnnexes" + id="step-decisionsAnnexes" + :step="stepDecisionsAnnexes" + :opened="opened['decisionsAnnexes']" + :complete="stepDecisionsAnnexesComplete" + :en-construction="enConstruction" + @toggle="toggle('decisionsAnnexes')" + > + <DecisionsAnnexesEdit + :etape="etape" + @complete-update="decisionsAnnexesComplete = $event" + /> + </Accordion> + </div> +</template> + +<script> +import Accordion from './accordion.vue' +import TypeEdit from './type-edit.vue' +import FondamentalesEdit from './fondamentales-edit.vue' +import PointsEdit from './points-edit.vue' +import SectionsEdit from './sections-edit.vue' +import DocumentsEdit from '../document/multi-edit.vue' +import JustificatifsEdit from './justificatifs-edit.vue' +import DecisionsAnnexesEdit from './decisions-annexes-edit.vue' + +export default { + components: { + DecisionsAnnexesEdit, + Accordion, + TypeEdit, + FondamentalesEdit, + PointsEdit, + SectionsEdit, + DocumentsEdit, + JustificatifsEdit + }, + + props: { + etape: { type: Object, required: true }, + etapeType: { type: Object, default: null }, + domaineId: { type: String, required: true }, + titreTypeId: { type: String, required: true }, + events: { type: Object, required: true }, + user: { type: Object, required: true }, + etapeIsDemandeEnConstruction: { type: Boolean, required: true }, + documentPopupTitle: { type: String, required: true } + }, + + emits: ['complete-update', 'type-complete-update', 'change'], + + data() { + return { + fondamentalesComplete: false, + perimetreComplete: false, + sectionsComplete: false, + documentsComplete: false, + justificatifsComplete: false, + decisionsAnnexesComplete: false, + typeComplete: false, + justificatifs: false, + opened: { + type: true, + fondamentales: false, + points: false, + sections: false, + documents: false, + justificatifs: false, + decisionsAnnexes: false + }, + help: {} + } + }, + + computed: { + etapesTypes() { + return this.$store.state.titreEtapeEdition.metas.etapesTypes.filter( + t => t.etapesCreation + ) + }, + + documentsTypes() { + return this.$store.getters['titreEtapeEdition/documentsTypes'] + }, + + entreprises() { + const titulaireIds = this.etape.titulaires.map(({ id }) => id) + const amodiatairesIds = this.etape.amodiataires.map(({ id }) => id) + + return this.$store.state.titreEtapeEdition.metas.entreprises.filter( + ({ id }) => titulaireIds.includes(id) || amodiatairesIds.includes(id) + ) + }, + + heritageLoaded() { + return this.$store.state.titreEtapeEdition.heritageLoaded + }, + + enConstruction() { + return this.etape.statutId === 'aco' + }, + + complete() { + return ( + this.typeComplete && + this.stepFondamentalesComplete && + this.stepPerimetreComplete && + this.stepSectionsComplete && + this.stepDocumentsComplete && + this.stepJustificatifsComplete && + this.stepDecisionsAnnexesComplete + ) + }, + + stepFondamentalesComplete() { + return !this.stepFondamentales || this.fondamentalesComplete + }, + + stepPerimetreComplete() { + return !this.stepFondamentales || this.perimetreComplete + }, + + stepSectionsComplete() { + return !this.stepSections || this.sectionsComplete + }, + + stepDocumentsComplete() { + return !this.stepDocuments || this.documentsComplete + }, + + stepJustificatifsComplete() { + return !this.stepJustificatifs || this.justificatifsComplete + }, + + stepDecisionsAnnexesComplete() { + return !this.stepDecisionsAnnexes || this.decisionsAnnexesComplete + }, + + steps() { + const steps = [] + + if (this.userIsAdmin) { + steps.push({ + id: 'type', + name: 'Type' + }) + } + + if (this.heritageLoaded && this.etapeType?.fondamentale) { + steps.push({ + id: 'fondamentales', + name: 'Propriétés' + }) + steps.push({ + id: 'points', + name: 'Périmètre' + }) + } + + if (this.heritageLoaded && this.etape.type.sections?.length) { + steps.push({ id: 'sections', name: 'Propriétés spécifiques' }) + } + + if (this.heritageLoaded && this.etape.type.documentsTypes?.length) { + steps.push({ + id: 'documents', + name: `Documents liés à l’étape ${this.etape.type.nom}` + }) + } + + if (this.heritageLoaded && this.etape.type.justificatifsTypes?.length) { + steps.push({ id: 'justificatifs', name: 'Justificatifs d’entreprise' }) + } + + if (this.etape.decisionsAnnexesSections) { + steps.push({ id: 'decisionsAnnexes', name: 'Décisions annexes' }) + } + + const titreTypeHelp = this.help[this.titreTypeId + this.domaineId] + if (titreTypeHelp) { + steps.forEach(step => { + step.help = titreTypeHelp[step.id] + }) + } + + return steps + }, + + stepType() { + return this.steps.find(s => s.id === 'type') + }, + + stepFondamentales() { + return this.steps.find(s => s.id === 'fondamentales') + }, + + stepPoints() { + return this.steps.find(s => s.id === 'points') + }, + + stepSections() { + return this.steps.find(s => s.id === 'sections') + }, + + stepDocuments() { + return this.steps.find(s => s.id === 'documents') + }, + + stepJustificatifs() { + return this.steps.find(s => s.id === 'justificatifs') + }, + + stepDecisionsAnnexes() { + return this.steps.find(s => s.id === 'decisionsAnnexes') + }, + + userIsAdmin() { + return this.$store.getters['user/userIsAdmin'] + }, + + userIsSuper() { + return this.$store.getters['user/userIsSuper'] + }, + + substances() { + return this.$store.state.titreEtapeEdition.metas.substances.filter(su => + su.legales.find(sl => sl.domaine.id === this.domaineId) + ) + } + }, + + watch: { + complete: 'completeUpdate', + + etape: { + handler: function () { + this.$emit('change') + }, + deep: true + } + }, + + created() { + this.typeCompleteUpdate() + this.completeUpdate() + + if (this.etapeType?.id === 'mfr') { + this.help.arm = { + fondamentales: + 'Le renseignement d’une ou plusieurs substances est obligatoire.', + points: + 'Pour la Guyane, le système géographique de référence est le RGFG95 / UTM zone 22N (2972). Pour le renseigner, cliquez sur « ajouter un système géographique » et choisissez le système RGFG95. Vous pouvez ensuite cliquer sur « ajouter un point », renseigner le nom, (le décrire si besoin) et renseigner les coordonnées (l’abscisse « X » en coordonnées cartésiennes correspond à la longitude en coordonnées géographiques et l’ordonnée « Y » correspond à une latitude ). Vous devez reproduire cette étape pour tous les sommets du ou des périmètres du titre. La surface du titre est calculée automatiquement d’après les sommets renseignés.', + sections: + 'Ce bloc permet de savoir si la prospection est mécanisée ou non et s’il y a des franchissements de cours d’eau (si oui, combien ?)', + documents: + 'Toutes les pièces obligatoires, spécifiques à la demande, doivent être déposées dans cette rubrique en format pdf.', + justificatifs: + "Les justificatifs sont des documents propres à l'entreprise, et pourront être réutilisés pour la création d'un autre dossier et mis à jour si nécessaire. Ces justificatifs sont consultables dans la fiche entreprise de votre société. Cette section permet de protéger et de centraliser les informations d'ordre privé relatives à la société et à son personnel." + } + + this.help.axm = this.help.arm + } + }, + + methods: { + fondamentalesCompleteUpdate(complete) { + this.fondamentalesComplete = complete + }, + + perimetreCompleteUpdate(complete) { + this.perimetreComplete = complete + }, + + documentsCompleteUpdate(complete) { + this.documentsComplete = complete + }, + + justificatifsCompleteUpdate(complete) { + this.justificatifsComplete = complete + }, + + sectionsCompleteUpdate(complete) { + this.sectionsComplete = complete + }, + + async sectionsUpdate() { + await this.$store.dispatch( + 'titreEtapeEdition/documentInit', + this.etape.documents + ) + }, + + typeCompleteUpdate(complete) { + this.typeComplete = complete || !this.stepType + this.$emit('type-complete-update', this.typeComplete) + }, + + async typeUpdate(typeId) { + await this.$store.dispatch('titreEtapeEdition/heritageGet', { typeId }) + }, + + completeUpdate() { + this.$emit('complete-update', this.complete) + }, + + toggle(stepId) { + this.opened[stepId] = !this.opened[stepId] + + if (this.opened[stepId]) { + this.scrollToStep(stepId) + } + + this.$emit('change') + }, + + scrollToStep(stepId) { + setTimeout(() => { + document + .getElementById(`step-${stepId}`) + .scrollIntoView({ behavior: 'smooth' }) + }, 500) + } + } +} +</script> diff --git a/packages/ui/src/components/etape/entity-input-autocomplete.vue b/packages/ui/src/components/etape/entity-input-autocomplete.vue new file mode 100644 index 0000000000000000000000000000000000000000..716ef38a832e3ed02875e9c89253942cee22d6bf --- /dev/null +++ b/packages/ui/src/components/etape/entity-input-autocomplete.vue @@ -0,0 +1,72 @@ +<template> + <InputAutocomplete + v-if="options?.length" + :selected="selected" + :options="formattedOptions" + value-prop="id" + label-prop="label" + :max-items="1" + :options-disabled="optionsDisabled" + :placeholder="placeholder" + :remove-item-button="removeItemButton" + @update:selected="$emit('update:entityId', $event)" + /> +</template> + +<script lang="ts"> +import { defineComponent, PropType } from 'vue' +import InputAutocomplete from '../_ui/input-autocomplete.vue' + +interface IOption { + id: string + nom: string +} + +interface IItem { + id: string + label: string +} + +export default defineComponent({ + components: { InputAutocomplete }, + + props: { + entityId: { + type: String, + default: '' + }, + options: { + type: Array as PropType<Array<IOption>>, + required: true, + default: () => [] + }, + optionsDisabled: { + type: Array as PropType<Array<IOption>>, + required: true, + default: () => [] + }, + placeholder: { + type: String, + default: '' + }, + removeItemButton: { + type: Boolean, + default: true + } + }, + + emits: ['update:entityId'], + + computed: { + selected() { + return this.entityId && this.entityId !== '' ? [this.entityId] : undefined + }, + formattedOptions(): IItem[] { + return this.options.map(e => ({ + id: e.id, + label: e.nom + ' (' + e.id + ')' + })) + } + } +}) +</script> diff --git a/packages/ui/src/components/etape/fondamentales-edit.test.ts b/packages/ui/src/components/etape/fondamentales-edit.test.ts new file mode 100644 index 0000000000000000000000000000000000000000..dfec13619e828457291483c7a646738c0fa49f67 --- /dev/null +++ b/packages/ui/src/components/etape/fondamentales-edit.test.ts @@ -0,0 +1,360 @@ +import { shallowMount, mount } from '@vue/test-utils' +import FondamentalesEdit from './fondamentales-edit.vue' + +describe('FondamentalesEdit', () => { + const $store = { + state: { + titreEtapeEdition: { + metas: { + entreprises: [ + { id: 'foo', nom: 'bar' }, + { id: 'baz', nom: 'quux' } + ] + } + } + } + } + + const etape = { + id: 'aZHafFDDBksskCO0ZFuaMlPA', + type: { + id: 'mfr' + }, + duree: { + ans: 0, + mois: 4 + }, + incertitudes: { + dateDebut: false, + dateFin: false, + amodiataires: false, + titulaires: false, + substances: false, + points: false, + surface: false + }, + substances: [], + titulaires: [], + amodiataires: [], + heritageProps: { + dateDebut: { + etape: null, + actif: false + }, + dateFin: { + etape: null, + actif: false + }, + duree: { + etape: null, + actif: false + }, + surface: { + etape: null, + actif: false + }, + points: { + etape: null, + actif: false + }, + substances: { + etape: null, + actif: false + }, + titulaires: { + etape: null, + actif: false + }, + amodiataires: { + etape: null, + actif: false + } + } + } + + test.each` + titreTypeId | domaineId | userIsSuper | expected + ${'ar'} | ${'m'} | ${false} | ${false} + ${'ar'} | ${'m'} | ${true} | ${true} + ${'ax'} | ${'m'} | ${false} | ${false} + ${'ax'} | ${'m'} | ${true} | ${true} + ${'ni axm'} | ${' ni arm'} | ${false} | ${true} + ${'ni axm'} | ${' ni arm'} | ${true} | ${true} + `( + '#canSeeAllDates retourne $expected si utilisateur super => $userIsSuper et démarche est $titreTypeId$domaineId', + ({ titreTypeId, domaineId, userIsSuper, expected }) => { + // ARM + utilisateur non-super + const wrapper = shallowMount(FondamentalesEdit, { + global: { + stubs: { + AutocompleteGroup: true + } + }, + props: { + etape, + titreTypeId, + domaineId, + userIsAdmin: true, + userIsSuper, + substances: [] + } + }) + expect(wrapper.vm.canSeeAllDates).toBe(expected) + } + ) + + test('affiche les éléments de dates dans le formulaire seulement si #canSeeAllDates est true', () => { + let wrapper = mount(FondamentalesEdit, { + global: { + stubs: { + AutocompleteGroup: true + }, + mocks: { + $store + } + }, + props: { + etape, + titreTypeId: 'ar', + domaineId: 'm', + userIsAdmin: true, + userIsSuper: false, + substances: [] + } + }) + expect(wrapper.vm.canSeeAllDates).toBe(false) + expect(wrapper.html().includes('Date de début')).toBe(false) + expect(wrapper.html().includes("Date d'échéance")).toBe(false) + + wrapper = mount(FondamentalesEdit, { + global: { + stubs: { + AutocompleteGroup: true + }, + mocks: { + $store + } + }, + props: { + etape, + titreTypeId: 'ar', + domaineId: 'm', + userIsAdmin: true, + userIsSuper: true, + substances: [] + } + }) + expect(wrapper.vm.canSeeAllDates).toBe(true) + expect(wrapper.html().includes('Date de début')).toBe(true) + expect(wrapper.html().includes("Date d'échéance")).toBe(true) + + wrapper = mount(FondamentalesEdit, { + global: { + stubs: { + AutocompleteGroup: true + }, + mocks: { + $store + } + }, + props: { + etape, + titreTypeId: 'ax', + domaineId: 'm', + userIsAdmin: true, + userIsSuper: false, + substances: [] + } + }) + expect(wrapper.vm.canSeeAllDates).toBe(false) + expect(wrapper.html().includes('Date de début')).toBe(false) + expect(wrapper.html().includes("Date d'échéance")).toBe(false) + + wrapper = mount(FondamentalesEdit, { + global: { + stubs: { + AutocompleteGroup: true + }, + mocks: { + $store + } + }, + props: { + etape, + titreTypeId: 'ax', + domaineId: 'm', + userIsAdmin: true, + userIsSuper: true, + substances: [] + } + }) + expect(wrapper.vm.canSeeAllDates).toBe(true) + expect(wrapper.html().includes('Date de début')).toBe(true) + expect(wrapper.html().includes("Date d'échéance")).toBe(true) + + wrapper = mount(FondamentalesEdit, { + global: { + stubs: { + AutocompleteGroup: true + }, + mocks: { + $store + } + }, + props: { + etape, + titreTypeId: 'ni axm', + domaineId: 'ni arm', + userIsAdmin: true, + userIsSuper: false, + substances: [] + } + }) + expect(wrapper.vm.canSeeAllDates).toBe(true) + expect(wrapper.html().includes('Date de début')).toBe(true) + expect(wrapper.html().includes("Date d'échéance")).toBe(true) + + wrapper = mount(FondamentalesEdit, { + global: { + stubs: { + AutocompleteGroup: true + }, + mocks: { + $store + } + }, + props: { + etape, + titreTypeId: 'ni axm', + domaineId: 'ni arm', + userIsAdmin: true, + userIsSuper: true, + substances: [] + } + }) + expect(wrapper.vm.canSeeAllDates).toBe(true) + expect(wrapper.html().includes('Date de début')).toBe(true) + expect(wrapper.html().includes("Date d'échéance")).toBe(true) + }) + + test("#canAddAmodiataires retourne true si ce n'est ni un arm ni un axm, false sinon", () => { + let wrapper = mount(FondamentalesEdit, { + global: { + stubs: { + AutocompleteGroup: true + }, + mocks: { + $store + } + }, + props: { + etape, + titreTypeId: 'ar', + domaineId: 'm', + userIsAdmin: true, + userIsSuper: false, + substances: [] + } + }) + expect(wrapper.vm.canAddAmodiataires).toBe(false) + + wrapper = mount(FondamentalesEdit, { + global: { + stubs: { + AutocompleteGroup: true + }, + mocks: { + $store + } + }, + props: { + etape, + titreTypeId: 'ax', + domaineId: 'm', + userIsAdmin: true, + userIsSuper: false, + substances: [] + } + }) + expect(wrapper.vm.canAddAmodiataires).toBe(false) + + wrapper = mount(FondamentalesEdit, { + global: { + stubs: { + AutocompleteGroup: true + }, + mocks: { + $store + } + }, + props: { + etape, + titreTypeId: 'ni arm', + domaineId: 'ni axm', + userIsAdmin: true, + userIsSuper: false, + substances: [] + } + }) + expect(wrapper.vm.canAddAmodiataires).toBe(true) + }) + + test('affiche les éléments liés aux amodiataires dans le formulaire seulement si #canAddAmodiataires est true', () => { + let wrapper = mount(FondamentalesEdit, { + global: { + mocks: { + $store + } + }, + props: { + etape, + titreTypeId: 'ni arm', + domaineId: 'ni axm', + userIsAdmin: true, + userIsSuper: false, + substances: [] + } + }) + expect(wrapper.find('.choices').exists()).toBe(true) + + wrapper = mount(FondamentalesEdit, { + global: { + stubs: { + AutocompleteGroup: true + }, + mocks: { + $store + } + }, + props: { + etape, + titreTypeId: 'ar', + domaineId: 'm', + userIsAdmin: true, + userIsSuper: false, + substances: [] + } + }) + expect(wrapper.find('.choices').exists()).toBe(false) + + wrapper = mount(FondamentalesEdit, { + global: { + stubs: { + AutocompleteGroup: true + }, + mocks: { + $store + } + }, + props: { + etape, + titreTypeId: 'ax', + domaineId: 'm', + userIsAdmin: true, + userIsSuper: false, + substances: [] + } + }) + expect(wrapper.find('.choices').exists()).toBe(false) + }) +}) diff --git a/packages/ui/src/components/etape/fondamentales-edit.vue b/packages/ui/src/components/etape/fondamentales-edit.vue new file mode 100644 index 0000000000000000000000000000000000000000..85f62d976c6ec9bba3bc2ee96f44fa410cea13da --- /dev/null +++ b/packages/ui/src/components/etape/fondamentales-edit.vue @@ -0,0 +1,508 @@ +<template> + <div> + <div v-if="!isArm || userIsAdmin" class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5 class="mb-0">Durée (années / mois)</h5> + <p v-if="dureeOptionalCheck" class="h6 italic mb-0">Optionnel</p> + </div> + + <HeritageEdit + v-model:prop="etape.heritageProps.duree" + class="tablet-blob-2-3" + prop-id="duree" + > + <template #write> + <div class="blobs-mini"> + <div class="blob-mini-1-2"> + <inputNumber + v-model="etape.duree.ans" + :integer="true" + placeholder="années" + class="py-s mb-s" + /> + </div> + <div class="blob-mini-1-2"> + <inputNumber + v-model="etape.duree.mois" + :integer="true" + placeholder="mois" + class="p-s" + /> + </div> + </div> + <div v-if="etape.duree.ans || etape.duree.mois" class="h6"> + <label> + <input + v-model="etape.incertitudes.duree" + type="checkbox" + class="mr-xs" + /> + Incertain + </label> + </div> + </template> + <template #read> + <div class="border p-s mb-s bold"> + <PropDuree :duree="etape.heritageProps.duree.etape.duree" /> + </div> + </template> + </HeritageEdit> + + <hr /> + </div> + + <div v-if="(!isArm && !isAxm) || userIsAdmin"> + <div v-if="canSeeAllDates" class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5 class="mb-0">Date de début</h5> + <p class="h6 italic mb-0">Optionnel</p> + </div> + <HeritageEdit + v-model:prop="etape.heritageProps.dateDebut" + class="tablet-blob-2-3" + prop-id="dateDebut" + > + <template #write> + <InputDate v-model="etape.dateDebut" class="mb-s" /> + <div v-if="etape.dateDebut" class="h6"> + <label> + <input + v-model="etape.incertitudes.dateDebut" + type="checkbox" + class="mr-xs" + /> + Incertain + </label> + </div> + </template> + <template #read> + <div class="border p-s mb-s bold"> + {{ dateFormat(etape.heritageProps.dateDebut.etape.dateDebut) }} + </div> + </template> + </HeritageEdit> + </div> + + <div v-if="canSeeAllDates" class="tablet-blobs"> + <hr /> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5 class="mb-0">Date d'échéance</h5> + <p class="h6 italic mb-0">Optionnel</p> + </div> + <HeritageEdit + v-model:prop="etape.heritageProps.dateFin" + class="tablet-blob-2-3" + prop-id="dateFin" + > + <template #write> + <InputDate v-model="etape.dateFin" class="mb-s" /> + <div v-if="etape.dateFin" class="h6"> + <label> + <input + v-model="etape.incertitudes.dateFin" + type="checkbox" + class="mr-xs" + /> + Incertain + </label> + </div> + </template> + <template #read> + <div class="border p-s mb-s bold"> + {{ dateFormat(etape.heritageProps.dateFin.etape.dateFin) }} + </div> + </template> + </HeritageEdit> + </div> + <hr /> + + <h3 class="mb-s">Titulaires</h3> + <p class="h6 italic">Optionnel</p> + <HeritageEdit + v-model:prop="etape.heritageProps.titulaires" + prop-id="titulaires" + :is-array="true" + > + <template #write> + <AutocompleteGroup + :entities="etape.titulaires" + :options="entreprises" + :options-disabled="entreprisesDisabled" + placeholder="Sélectionner un titulaire" + > + <template #default="{ entity }"> + <div v-if="entity && entity.id" class="h6 mb"> + <label> + <input + v-model="entity.operateur" + type="checkbox" + class="mr-xs" + /> + Opérateur + </label> + </div> + </template> + </AutocompleteGroup> + <div v-if="titulairesLength" class="h6"> + <label> + <input + v-model="etape.incertitudes.titulaires" + type="checkbox" + class="mr-xs" + /> + Incertain + </label> + </div> + </template> + <template #read> + <ul class="list-prefix"> + <li + v-for="t in etape.heritageProps.titulaires.etape.titulaires" + :key="t.id" + > + {{ etablissementNameFind(t.etablissements, etape.date) || t.nom }} + <Tag + v-if="t.operateur" + :mini="true" + color="bg-info" + class="ml-xs" + > + Opérateur + </Tag> + </li> + </ul> + </template> + </HeritageEdit> + + <template v-if="canAddAmodiataires"> + <hr /> + + <h3 class="mb-s">Amodiataires</h3> + <p class="h6 italic">Optionnel</p> + + <HeritageEdit + v-model:prop="etape.heritageProps.amodiataires" + prop-id="amodiataires" + :is-array="true" + > + <template #write> + <AutocompleteGroup + :entities="etape.amodiataires || []" + :options="entreprises" + :options-disabled="entreprisesDisabled" + placeholder="Sélectionner un amodiataire" + > + <template #default="{ entity }"> + <div v-if="entity && entity.id" class="h6 mb"> + <label> + <input + v-model="entity.operateur" + type="checkbox" + class="mr-xs" + /> + Opérateur + </label> + </div> + </template> + </AutocompleteGroup> + <div v-if="amodiatairesLength" class="h6"> + <label> + <input + v-model="etape.incertitudes.amodiataires" + type="checkbox" + class="mr-xs" + /> + Incertain + </label> + </div> + </template> + <template #read> + <ul class="list-prefix"> + <li + v-for="t in etape.heritageProps.amodiataires.etape.amodiataires" + :key="t.id" + > + {{ + etablissementNameFind(t.etablissements, etape.date) || t.nom + }} + <Tag + v-if="t.operateur" + :mini="true" + color="bg-info" + class="ml-xs" + > + Opérateur + </Tag> + </li> + </ul> + </template> + </HeritageEdit> + </template> + + <hr /> + </div> + + <h3 class="mb-s">Substances</h3> + <HeritageEdit + v-model:prop="etape.heritageProps.substances" + prop-id="substances" + :is-array="true" + > + <template #write> + <div v-for="(substance, n) in etape.substances" :key="n"> + <div class="flex mb-s"> + <select v-model="etape.substances[n]" class="p-s mr-s"> + <option + v-for="s in substances" + :key="s.id" + :value="{ id: s.id }" + :disabled="etape.substances.find(({ id }) => id === s.id)" + > + {{ s.nom }} + </option> + </select> + <button + v-if="substancesLength && n + 1 < substancesLength" + class="btn-border py-s px-m rnd-l-xs" + @click="substanceMoveDown(n)" + > + <i class="icon-24 icon-move-down" /> + </button> + <button + v-if="substancesLength && n > 0 && etape.substances[n].id" + :class="{ + 'rnd-l-xs': !(substancesLength && n + 1 < substancesLength) + }" + class="btn-border py-s px-m" + @click="substanceMoveUp(n)" + > + <i class="icon-24 icon-move-up" /> + </button> + <button + :class="{ + 'rnd-l-xs': !etape.substances[n].id || substancesLength === 1 + }" + class="btn py-s px-m rnd-r-xs" + @click="substanceRemove(n)" + > + <i class="icon-24 icon-minus" /> + </button> + </div> + </div> + + <button + v-if="!etape.substances.some(({ id }) => id === '')" + class="btn small rnd-xs py-s px-m full-x flex mb-s" + @click="substanceAdd" + > + <span class="mt-xxs">Ajouter une substance</span + ><i class="icon-24 icon-plus flex-right" /> + </button> + + <div v-if="substancesLength" class="h6"> + <label> + <input + v-model="etape.incertitudes.substances" + type="checkbox" + class="mr-xs" + /> + Incertain + </label> + </div> + </template> + + <template #read> + <TagList + class="mb-s" + :elements=" + etape.heritageProps.substances.etape.substances.map(s => s.nom) + " + /> + </template> + </HeritageEdit> + + <hr /> + </div> +</template> + +<script> +import { dateFormat } from '../../utils/index' +import Tag from '../_ui/tag.vue' +import TagList from '../_ui/tag-list.vue' +import InputDate from '../_ui/input-date.vue' +import InputNumber from '../_ui/input-number.vue' +import HeritageEdit from './heritage-edit.vue' +import PropDuree from './prop-duree.vue' +import AutocompleteGroup from './autocomplete-group.vue' + +import { etablissementNameFind } from '@/utils/entreprise' + +export default { + components: { + InputDate, + InputNumber, + HeritageEdit, + Tag, + TagList, + PropDuree, + AutocompleteGroup + }, + + props: { + etape: { type: Object, default: () => ({}) }, + domaineId: { type: String, default: '' }, + titreTypeId: { type: String, required: true }, + userIsAdmin: { type: Boolean, required: true }, + userIsSuper: { type: Boolean, required: true }, + substances: { type: Array, required: true } + }, + emits: ['complete-update'], + + computed: { + entreprisesDisabled() { + return this.entreprises.filter(entr => { + return ( + this.etape.amodiataires.find(a => a.id === entr.id) || + this.etape.titulaires.find(t => t.id === entr.id) + ) + }) + }, + + isArm() { + return this.domaineId === 'm' && this.titreTypeId === 'ar' + }, + + isAxm() { + return this.domaineId === 'm' && this.titreTypeId === 'ax' + }, + + entreprises() { + return this.$store.state.titreEtapeEdition.metas.entreprises + }, + + titulairesLength() { + return this.etape.titulaires.filter(({ id }) => id).length + }, + + amodiatairesLength() { + return this.etape.amodiataires?.filter(({ id }) => id).length || 0 + }, + + substancesLength() { + return this.etape.substances.filter(({ id }) => id).length + }, + + dureeOptionalCheck() { + return (!this.isArm && !this.isAxm) || this.etape.type.id !== 'mfr' + }, + + canSeeAllDates() { + if (this.userIsSuper) { + return true + } + + if (this.etape.type?.id === 'mfr' && (this.isArm || this.isAxm)) { + return false + } + + return true + }, + + canAddAmodiataires() { + return !this.isArm && !this.isAxm + }, + + complete() { + return ( + this.etape.type.id !== 'mfr' || + (this.substancesLength > 0 && + (this.dureeOptionalCheck || + this.etape.duree.ans || + this.etape.duree.mois)) + ) + } + }, + + watch: { + complete: 'completeUpdate', + etape: { + handler: function (etape) { + if (!etape.duree) { + etape.incertitudes.duree = false + } + + if (!etape.dateDebut) { + etape.incertitudes.dateDebut = false + } + + if (!etape.dateFin) { + etape.incertitudes.dateFin = false + } + + if (!etape.titulaires.length) { + etape.incertitudes.titulaires = false + } + + if (!etape.amodiataires?.length) { + etape.incertitudes.amodiataires = false + } + + if (!etape.substances.length) { + etape.incertitudes.substances = false + } + }, + deep: true + } + }, + + created() { + this.completeUpdate() + }, + + methods: { + titulaireAdd() { + this.etape.titulaires.push({ id: '' }) + }, + + titulaireRemove(index) { + this.etape.titulaires.splice(index, 1) + }, + + amodiataireRemove(index) { + this.etape.amodiataires?.splice(index, 1) + }, + + substanceAdd() { + this.etape.substances.push({ id: '' }) + }, + + substanceRemove(index) { + this.etape.substances.splice(index, 1) + }, + + substanceMoveDown(n) { + const substance = this.etape.substances[n] + this.etape.substances.splice(n, 1) + this.etape.substances.splice(n + 1, 0, substance) + }, + + substanceMoveUp(n) { + const substance = this.etape.substances[n] + this.etape.substances.splice(n, 1) + this.etape.substances.splice(n - 1, 0, substance) + }, + + etablissementNameFind() { + return etablissementNameFind() + }, + + dateFormat(date) { + return dateFormat(date) + }, + + completeUpdate() { + this.$emit('complete-update', this.complete) + } + } +} +</script> diff --git a/packages/ui/src/components/etape/fondamentales.vue b/packages/ui/src/components/etape/fondamentales.vue new file mode 100644 index 0000000000000000000000000000000000000000..8d049ae4de9bd08b944dd50c40d9f88a0922e1ce --- /dev/null +++ b/packages/ui/src/components/etape/fondamentales.vue @@ -0,0 +1,167 @@ +<template> + <div> + <div v-if="etape.duree" class="tablet-blobs"> + <div class="tablet-blob-1-4"> + <h5> + Durée + <Tag + v-if="etape.incertitudes && etape.incertitudes.duree" + :mini="true" + color="bg-info" + class="ml-xs" + > + Incertain + </Tag> + </h5> + </div> + <div class="tablet-blob-3-4"> + <p> + <PropDuree :duree="etape.duree" /> + </p> + </div> + </div> + + <div v-if="etape.dateDebut" class="tablet-blobs"> + <div class="tablet-blob-1-4"> + <h5> + Date de début + <Tag + v-if="etape.incertitudes && etape.incertitudes.dateDebut" + :mini="true" + color="bg-info" + class="ml-xs" + > + Incertain + </Tag> + </h5> + </div> + <div class="tablet-blob-3-4"> + <p> + {{ dateFormat(etape.dateDebut) }} + </p> + </div> + </div> + <div v-if="etape.dateFin" class="tablet-blobs"> + <div class="tablet-blob-1-4"> + <h5> + Date d'échéance + <Tag + v-if="etape.incertitudes && etape.incertitudes.dateFin" + :mini="true" + color="bg-info" + class="ml-xs" + > + Incertain + </Tag> + </h5> + </div> + <div class="tablet-blob-3-4"> + <p> + {{ dateFormat(etape.dateFin) }} + </p> + </div> + </div> + + <div + v-if="etape.titulaires && etape.titulaires.length" + class="tablet-blobs" + > + <div class="tablet-blob-1-4"> + <h5> + Titulaire{{ etape.titulaires.length > 1 ? 's' : '' }} + <Tag + v-if="etape.incertitudes && etape.incertitudes.titulaires" + :mini="true" + color="bg-info ml-xs" + > + Incertain + </Tag> + </h5> + </div> + <div class="tablet-blob-3-4"> + <ul class="list-prefix mb"> + <li v-for="t in etape.titulaires" :key="t.id"> + {{ etablissementNameFind(t.etablissements, etape.date) || t.nom }} + <Tag v-if="t.operateur" :mini="true" color="bg-info" class="ml-xs"> + Opérateur + </Tag> + </li> + </ul> + </div> + </div> + + <div + v-if="etape.amodiataires && etape.amodiataires.length" + class="tablet-blobs" + > + <div class="tablet-blob-1-4"> + <h5> + Amodiataire{{ etape.amodiataires.length > 1 ? 's' : '' }} + <Tag + v-if="etape.incertitudes && etape.incertitudes.amodiataires" + :mini="true" + color="bg-info" + class="ml-xs" + > + Incertain + </Tag> + </h5> + </div> + <div class="tablet-blob-3-4"> + <ul class="list-prefix"> + <li v-for="t in etape.amodiataires" :key="t.id"> + {{ etablissementNameFind(t.etablissements, etape.date) || t.nom }} + </li> + </ul> + </div> + </div> + + <div + v-if="etape.substances && etape.substances.length" + class="tablet-blobs" + > + <div class="tablet-blob-1-4"> + <h5> + Substance{{ etape.substances.length > 1 ? 's' : '' }} + <Tag + v-if="etape.incertitudes && etape.incertitudes.substances" + :mini="true" + color="bg-info" + class="ml-xs" + > + Incertain + </Tag> + </h5> + </div> + <div class="tablet-blob-3-4"> + <TagList :elements="etape.substances.map(s => s.nom)" /> + </div> + </div> + </div> +</template> + +<script> +import { dateFormat } from '@/utils' +import { etablissementNameFind } from '../../utils/entreprise' +import TagList from '../_ui/tag-list.vue' +import Tag from '../_ui/tag.vue' +import PropDuree from './prop-duree.vue' + +export default { + components: { TagList, Tag, PropDuree }, + + props: { + etape: { type: Object, required: true } + }, + + methods: { + etablissementNameFind(etablissements, date) { + return etablissementNameFind(etablissements, date) + }, + + dateFormat(date) { + return dateFormat(date) + } + } +} +</script> diff --git a/packages/ui/src/components/etape/form-save-btn.test.ts b/packages/ui/src/components/etape/form-save-btn.test.ts new file mode 100644 index 0000000000000000000000000000000000000000..00a8f4650e7d0f41f167f77b1bbcc674a1c58f06 --- /dev/null +++ b/packages/ui/src/components/etape/form-save-btn.test.ts @@ -0,0 +1,55 @@ +import { shallowMount } from '@vue/test-utils' +import FormSaveBtn from './form-save-btn.vue' +import HelpTooltip from '../_ui/help-tooltip.vue' + +describe('FormSaveBtn', () => { + test('rend un bouton', () => { + const wrapper = shallowMount(FormSaveBtn) + expect(wrapper.findAll('button')).toHaveLength(1) + }) + + test('rend un HelpTooltip uniquement si la prop "helpVisible" est définie à true', () => { + let wrapper = shallowMount(FormSaveBtn, { + props: { helpVisible: false } + }) + expect(wrapper.findAllComponents(HelpTooltip)).toHaveLength(0) + + wrapper = shallowMount(FormSaveBtn, { + props: { helpVisible: true } + }) + expect(wrapper.findAllComponents(HelpTooltip)).toHaveLength(1) + }) + + test('émet un événement "click" remontant dans l\'arborescence quand le bouton est cliqué', async () => { + const wrapper = shallowMount(FormSaveBtn) + const btn = wrapper.find('button') + + await btn.trigger('click') + + expect(wrapper.emitted()).toHaveProperty('click') + expect(wrapper.emitted().click).toHaveLength(1) + }) + + test('bouton "disabled" si les attributs placés sur le composant contiennent un "disabled"', () => { + let wrapper = shallowMount(FormSaveBtn) + let btn = wrapper.find('button') + expect(btn.classes()).not.toContain('disabled') + expect(btn.attributes()).not.toHaveProperty('disabled') + + wrapper = shallowMount(FormSaveBtn, { + attrs: { + disabled: true + } + }) + btn = wrapper.find('button') + expect(btn.classes()).toContain('disabled') + expect(btn.attributes()).toHaveProperty('disabled') + }) + + test('#focusBtn place le bouton en focus', async () => { + const wrapper = shallowMount(FormSaveBtn, { attachTo: document.body }) + expect(wrapper.find('button').element).not.toBe(document.activeElement) + await (wrapper.vm as any).focusBtn() + expect(wrapper.find('button').element).toBe(document.activeElement) + }) +}) diff --git a/packages/ui/src/components/etape/form-save-btn.vue b/packages/ui/src/components/etape/form-save-btn.vue new file mode 100644 index 0000000000000000000000000000000000000000..c78228682f3eb4a52f1a9cca444e95cfbb5bb49a --- /dev/null +++ b/packages/ui/src/components/etape/form-save-btn.vue @@ -0,0 +1,62 @@ +<template> + <div v-bind="$attrs"> + <div class="flex flex-direction-column full-x"> + <ul v-if="alertes?.length" class="bg-warning color-bg list-none p-s bold"> + <li v-for="alerte in alertes" :key="alerte" class="flex"> + {{ alerte.message }} + <a v-if="alerte.url" :href="alerte.url" target="_blank" class="ml-s"> + <i class="icon-24 icon-window-link" /> + </a> + </li> + </ul> + <div class="flex flex-center"> + <HelpTooltip v-if="helpVisible" class="mr-m"> + Vous pouvez à tout moment enregistrer votre demande. Le dépôt du + dossier et de toutes les pièces peut être réalisé en plusieurs fois. + Vous pourrez compléter votre demande en cliquant sur + <span class="inline-block"><i class="icon-24 icon-pencil" /></span>. + Si vous avez ajouté tous les documents spécifiques à la demande et + justificatifs d’entreprise, et que vous considérez que votre demande + est complète, vous pouvez la déposer à l’étape suivante en cliquant + sur « Déposer … ». Les administrations seront ainsi notifiées et + pourront instruire votre demande. + </HelpTooltip> + <button + id="cmn-etape-edit-button-enregistrer" + ref="save-btn" + class="btn btn-primary" + :disabled="$attrs.disabled" + :class="{ disabled: $attrs.disabled }" + @click="$emit('click')" + > + Enregistrer + </button> + </div> + </div> + </div> +</template> + +<script lang="ts"> +import { defineComponent } from 'vue' +import HelpTooltip from '../_ui/help-tooltip.vue' + +export default defineComponent({ + components: { HelpTooltip }, + + props: { + helpVisible: { + type: Boolean, + default: false + }, + alertes: { type: Array, default: () => [] } + }, + + emits: ['click'], + + methods: { + focusBtn() { + this.$refs['save-btn']?.focus() + } + } +}) +</script> diff --git a/packages/ui/src/components/etape/heritage-edit.vue b/packages/ui/src/components/etape/heritage-edit.vue new file mode 100644 index 0000000000000000000000000000000000000000..b074c8d03295f74e6f482593cf4faea65bb76383 --- /dev/null +++ b/packages/ui/src/components/etape/heritage-edit.vue @@ -0,0 +1,72 @@ +<template> + <div class="mb-s"> + <slot v-if="!prop.actif" name="write" /> + <div v-else> + <slot v-if="hasHeritage" name="read" /> + <div v-else class="border p-s mb-s">Non renseigné</div> + <div class="mb-s"> + <Tag + v-if="prop.etape.incertitudes && prop.etape.incertitudes[propId]" + :mini="true" + color="bg-info" + >Incertain + </Tag> + </div> + <p class="h6 italic mb-s"> + Hérité de : + <span class="cap-first">{{ prop.etape.type.nom }}</span> ({{ + dateFormat(prop.etape.date) + }}) + </p> + </div> + <slot /> + <button + v-if="prop.etape" + class="btn full-x rnd-xs py-s px-m small mb-s" + @click="prop.actif = !prop.actif" + > + {{ buttonText }} + </button> + </div> +</template> + +<script> +import { hasValeurCheck } from '@/utils/contenu' +import Tag from '@/components/_ui/tag.vue' +import { dateFormat } from '@/utils' + +export default { + components: { Tag }, + props: { + prop: { type: Object, required: true }, + propId: { type: String, required: true }, + isArray: { type: Boolean, default: false }, + sectionId: { type: String, default: null } + }, + computed: { + buttonText() { + return this.prop.actif ? 'Modifier' : `Hériter de l'étape précédente` + }, + + hasHeritage() { + let contenu + + if (this.sectionId) { + contenu = + this.prop.etape && + this.prop.etape.contenu && + this.prop.etape.contenu[this.sectionId] + } else { + contenu = this.prop.etape + } + + return hasValeurCheck(this.propId, contenu) + } + }, + methods: { + dateFormat(date) { + return dateFormat(date) + } + } +} +</script> diff --git a/packages/ui/src/components/etape/justificatifs-edit.vue b/packages/ui/src/components/etape/justificatifs-edit.vue new file mode 100644 index 0000000000000000000000000000000000000000..88c2c22a6f356e0dac6d119f9f005ff1567d5cae --- /dev/null +++ b/packages/ui/src/components/etape/justificatifs-edit.vue @@ -0,0 +1,290 @@ +<template> + <div v-if="entreprises.length"> + <div + v-for="(e, eId) in entreprisesJustificatifsIndex" + :key="eId" + class="mb-xs" + > + <div class="flex"> + <h4>{{ e.nom }}</h4> + </div> + + <hr class="mb-s" /> + + <div> + <div class="tablet-blobs"> + <div class="tablet-blob-1-3"> + <h5 class="mt-s">Ajouter un justificatif existant</h5> + </div> + <div class="tablet-blob-2-3"> + <select + class="p-s mb-s" + value="undefined" + @change="justificatifAdd(eId, $event)" + > + <option value="undefined" :disabled="true"> + Sélectionner un type de justificatif + </option> + <option + v-for="jt in justificatifsTypes" + :key="jt.id" + :value="jt.id" + > + {{ jt.nom }} + </option> + </select> + </div> + </div> + </div> + + <hr class="mb-s" /> + + <div v-for="(j, index) in e.justificatifs" :key="j.id"> + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 flex flex-center"> + <h5 class="mt-s">{{ j.type.nom }}</h5> + <span> + <HelpTooltip v-if="j.type.description" class="ml-xs"> + {{ j.type.description }} + </HelpTooltip> + </span> + <Tag v-if="!j.id" :mini="true" color="bg-warning" class="ml-xs"> + Manquant + </Tag> + </div> + <div class="tablet-blob-2-3"> + <div class="flex mb-s"> + <select + class="p-s" + :value="j.id" + @change="justificatifsUpdate(j, e.nom, eId, $event)" + > + <template v-if="j.documents.length"> + <option + v-for="d in j.documents" + :key="d.id" + :value="d.id" + :disabled="justificatifs.some(j => j.id === d.id)" + > + {{ d.type.nom }} : {{ d.description }} ({{ + dateFormat(d.date) + }}) + </option> + </template> + <option v-else></option> + <option value="newDocument"> + Ajouter un nouveau justificatif + </option> + </select> + + <div v-if="j.id" class="flex-right flex flex-center ml-s"> + <button + class="btn-border py-s px-m rnd-l-xs" + @click="justificatifRemove(eId, index)" + > + <i class="icon-24 icon-trash" /> + </button> + <button + class="btn-border py-s px-m rnd-r-xs" + @click="justificatifDownload(eId, index)" + > + <i class="icon-24 icon-download" /> + </button> + </div> + </div> + </div> + </div> + </div> + </div> + </div> + <p v-else>Aucun titulaire ou d'amodiataire associé à cette étape.</p> +</template> + +<script> +import { dateFormat } from '@/utils' +import DocumentEditPopup from '../document/edit-popup.vue' +import Tag from '../_ui/tag.vue' +import HelpTooltip from '../_ui/help-tooltip.vue' + +export default { + components: { Tag, HelpTooltip }, + props: { + justificatifs: { type: Array, required: true }, + justificatifsTypes: { type: Array, required: true }, + entreprises: { type: Array, required: true } + }, + + emits: ['complete-update'], + + data() { + return { + entreprisesJustificatifsIndex: {}, + entreprisesDocumentsIndex: {} + } + }, + + computed: { + complete() { + const justificatifs = [] + + this.entreprises.forEach(entreprise => { + entreprise.documents.forEach(document => { + if (this.justificatifs.some(({ id }) => id === document.id)) { + justificatifs.push(document) + } + }) + }) + + return this.justificatifsTypes.every( + jt => + jt.optionnel || justificatifs.find(({ type }) => type.id === jt.id) + ) + } + }, + + watch: { + complete: 'completeUpdate', + entreprises: { handler: 'reset', deep: true }, + justificatifsTypes: { handler: 'reset', deep: true }, + justificatifs: { handler: 'indexReset', deep: true } + }, + + created() { + this.indexReset() + + this.completeUpdate() + }, + + methods: { + reset() { + this.indexReset() + this.justificatifsReset() + }, + + indexReset() { + this.entreprisesJustificatifsIndex = {} + + this.entreprises.forEach(e => { + // { 'id-de-entreprise': {'cv': [{id: 'id-document-1', type: {id: 'cv'}}]} + this.entreprisesDocumentsIndex[e.id] = {} + + // { 'entreprise-id': { + // nom: "nom de l'entreprise", + // justificatifs: [{ id: 'id-du-document-selectionné', documents: [], type: { id: 'document-type-id' } }] + // }} + this.entreprisesJustificatifsIndex[e.id] = { + nom: e.nom, + justificatifs: [] + } + + this.justificatifsTypes.forEach(type => { + const documents = e.documents.filter(d => d.type.id === type.id) + const documentsIds = documents.map(({ id }) => id) + this.entreprisesDocumentsIndex[e.id][type.id] = documents + + const justificatifs = this.justificatifs.filter(j => + documentsIds.includes(j.id) + ) + + if (justificatifs.length) { + justificatifs.forEach(j => { + this.entreprisesJustificatifsIndex[e.id].justificatifs.push({ + id: j.id, + type, + documents + }) + }) + } else if (!type.optionnel) { + this.entreprisesJustificatifsIndex[e.id].justificatifs.push({ + id: '', + type, + documents + }) + } + }) + }) + }, + + justificatifAdd(entrepriseId, event) { + const typeId = event.target.value + const type = this.justificatifsTypes.find(jt => jt.id === typeId) + const documents = this.entreprisesDocumentsIndex[entrepriseId][typeId] + + this.entreprisesJustificatifsIndex[entrepriseId].justificatifs.push({ + id: '', + type, + documents + }) + + event.target.value = undefined + }, + + dateFormat(date) { + return dateFormat(date) + }, + + completeUpdate() { + this.$emit('complete-update', this.complete) + }, + + justificatifsUpdate(justificatif, entrepriseNom, entrepriseId, event) { + if (event.target.value === 'newDocument') { + event.target.value = null + this.$store.commit('popupOpen', { + component: DocumentEditPopup, + props: { + document: { + entrepriseId, + entreprisesLecture: true, + publicLecture: false, + fichier: null, + fichierNouveau: null, + fichierTypeId: null, + typeId: justificatif.type.id + }, + action: { + name: 'titreEtapeEdition/entrepriseDocumentAdd', + params: { entrepriseId } + }, + repertoire: 'entreprises', + documentsTypes: this.justificatifsTypes, + title: entrepriseNom + } + }) + } else { + justificatif.id = event.target.value + this.justificatifsReset() + } + }, + + justificatifRemove(entrepriseId, index) { + this.entreprisesJustificatifsIndex[entrepriseId].justificatifs.splice( + index, + 1 + ) + + this.justificatifsReset() + }, + + async justificatifDownload(entrepriseId, index) { + const document = + this.entreprisesJustificatifsIndex[entrepriseId].justificatifs[index] + await this.$store.dispatch('downloadDocument', document) + }, + + justificatifsReset() { + this.justificatifs.splice(0, this.justificatifs.length) + + Object.keys(this.entreprisesJustificatifsIndex).forEach(eId => { + this.entreprisesJustificatifsIndex[eId].justificatifs.forEach( + ({ id }) => { + if (!id) return + + this.justificatifs.push({ id }) + } + ) + }) + } + } +} +</script> diff --git a/packages/ui/src/components/etape/perimetre.vue b/packages/ui/src/components/etape/perimetre.vue new file mode 100644 index 0000000000000000000000000000000000000000..caab1a32f132f3b8b183b6d2754ee78b2deaac8c --- /dev/null +++ b/packages/ui/src/components/etape/perimetre.vue @@ -0,0 +1,76 @@ +<template> + <div class="tablet-blobs"> + <div class="tablet-blob-1-4"> + <h5> + Périmètre + <Tag v-if="incertitude" :mini="true" color="bg-info" class="ml-xs"> + Incertain + </Tag> + </h5> + </div> + + <div class="tablet-blob-3-4"> + <Perimetre + :domaine-id="domaineId" + :titre-type-id="titreTypeId" + :points="etape.points" + :geojson-multi-polygon="geojsonMultiPolygon" + :tab-id="tabId" + @tab-update="tabUpdate" + /> + </div> + </div> + + <div v-if="etape.surface" class="tablet-blobs"> + <div class="tablet-blob-1-4"> + <h5> + Surface + <Tag + v-if="etape.incertitudes && etape.incertitudes.surface" + :mini="true" + color="bg-info" + class="ml-xs" + > + Incertain + </Tag> + </h5> + </div> + <div class="tablet-blob-3-4"> + <p>{{ numberFormat(etape.surface) }} km² environ</p> + </div> + </div> +</template> + +<script> +import Perimetre from '../_common/perimetre.vue' +import Tag from '../_ui/tag.vue' +import numberFormat from '@/utils/number-format' + +export default { + components: { Perimetre, Tag }, + + props: { + etape: { type: Object, required: true }, + geojsonMultiPolygon: { type: Object, required: true }, + domaineId: { type: String, required: true }, + titreTypeId: { type: String, required: true }, + incertitude: { type: Boolean, default: false } + }, + + data() { + return { + tabId: 'points' + } + }, + + methods: { + tabUpdate(tabId) { + this.tabId = tabId + }, + + numberFormat(number) { + return numberFormat(number) + } + } +} +</script> diff --git a/packages/ui/src/components/etape/points-edit.vue b/packages/ui/src/components/etape/points-edit.vue new file mode 100644 index 0000000000000000000000000000000000000000..e2f7f502abb1318ad3bab06882f71ca1ddb773ef --- /dev/null +++ b/packages/ui/src/components/etape/points-edit.vue @@ -0,0 +1,494 @@ +<template> + <div> + <h4 v-if="showTitle" class="mb-s">Périmètre</h4> + + <HeritageEdit + v-model:prop="etape.heritageProps.points" + prop-id="points" + :is-array="true" + > + <template #write> + <button + class="btn small rnd-xs py-s px-m full-x flex mb-s" + @click="pointsImport" + > + <span class="mt-xxs">Importer depuis un fichier…</span + ><i class="icon-24 icon-file-plus flex-right" /> + </button> + + <GeoSystemeEdit v-model:etape="etape" /> + + <div v-if="etape.geoSystemeIds.length" class="mb-s"> + <hr /> + <div class="h6"> + <ul class="list-prefix"> + <li><b>Point</b> : paire de coordoonnées</li> + <li><b>Contour ou lacune</b> : ensemble de points</li> + <li><b>Groupe</b> : ensemble de contours</li> + </ul> + <p> + Le premier contour d'un groupe définit un périmètre. + <br />Les contours suivants définissent des lacunes au sein de ce + périmètre. + </p> + </div> + + <div + v-for="(groupeContours, groupeIndex) in etape.groupes" + :key="groupeIndex + 1" + class="geo-groupe mb-xs" + :class="{ + 'geo-groupe-edit': + groupeContours.length && groupeContours[0].length + }" + > + <div v-if="etape.groupes.length > 1" class="flex flex-full"> + <h4 class="color-bg pt-s pl-m mb-s"> + Groupe {{ groupeIndex + 1 }} + </h4> + <div class="flex-right hide"> + <button + class="btn-border py-s px-m rnd-xs" + @click="groupeRemove(groupeIndex)" + > + <i class="icon-24 icon-minus" /> + </button> + </div> + </div> + <div + v-for="(contourPoints, contourIndex) in groupeContours" + :key="contourIndex + 1" + class="geo-contour" + > + <div v-if="groupeContours.length > 1" class="flex flex-full"> + <h4 class="pt-xs pl-s mb-s"> + {{ + contourIndex === 0 ? 'Contour' : `Lacune ${contourIndex}` + }} + </h4> + <div class="flex-right hide"> + <button + class="btn-border py-s px-m rnd-xs" + @click="contourRemove(groupeIndex, contourIndex)" + > + <i class="icon-24 icon-minus" /> + </button> + </div> + </div> + <div + v-for="(point, pointIndex) in contourPoints" + :key="pointIndex + 1" + class="geo-point" + > + <div class="flex full-x"> + <h4 v-if="point.lot" class="mt-s">Lot de points</h4> + <h4 v-else class="mt-s">Point {{ point.nom }}</h4> + <div class="flex-right"> + <button + v-if=" + !( + etape.groupes.length === groupeIndex + 1 && + groupeContours.length === contourIndex + 1 && + contourPoints.length === pointIndex + 1 + ) + " + class="btn-border py-s px-m rnd-l-xs" + @click=" + pointMoveDown(groupeIndex, contourIndex, pointIndex) + " + > + <i class="icon-24 icon-move-down" /> + </button> + <button + v-if=" + !( + groupeIndex === 0 && + contourIndex === 0 && + pointIndex === 0 + ) + " + :class="{ + 'rnd-l-xs': + etape.groupes.length === groupeIndex + 1 && + groupeContours.length === contourIndex + 1 && + contourPoints.length === pointIndex + 1 + }" + class="btn-border py-s px-m" + @click=" + pointMoveUp(groupeIndex, contourIndex, pointIndex) + " + > + <i class="icon-24 icon-move-up" /> + </button> + <button + :class="{ + 'rnd-l-xs': + groupeIndex === 0 && + contourIndex === 0 && + pointIndex === 0 && + etape.groupes.length === groupeIndex + 1 && + groupeContours.length === contourIndex + 1 && + contourPoints.length === pointIndex + 1 + }" + class="btn py-s px-m rnd-r-xs" + @click=" + pointRemove(groupeIndex, contourIndex, pointIndex) + " + > + <i class="icon-24 icon-minus" /> + </button> + </div> + </div> + + <PointEdit + v-if="!point.lot" + v-model:point="contourPoints[pointIndex]" + :geo-systeme-opposable-id="etape.geoSystemeOpposableId" + :geo-systeme-ids="etape.geoSystemeIds" + /> + <PointsLotEdit + v-else + v-model:point="contourPoints[pointIndex]" + :geo-systeme-opposable-id="etape.geoSystemeOpposableId" + :geo-systeme-ids="etape.geoSystemeIds" + :events="events" + /> + </div> + + <button + class="btn-border rnd-s py-s px-m full-x mb-xs flex small" + @click="pointAdd(groupeIndex, contourIndex)" + > + <span class="mt-xxs">Ajouter un point</span + ><i class="icon-24 icon-plus flex-right" /> + </button> + + <!-- Désactivation de cette fonctionnalité pour vérifier dans un premier temps + si les utilisateurs se plaignent de sa disparition--> + <!-- <button>--> + <!-- class="btn-border rnd-s py-s px-m full-x mb-xs flex small"--> + <!-- @click="lotAdd(groupeIndex, contourIndex)"--> + <!-- >--> + <!-- <span class="mt-xxs">Ajouter un lot de points</span--> + <!-- ><i class="icon-24 icon-plus flex-right" />--> + <!-- </button>--> + </div> + <button + v-if="groupeContours.length && groupeContours[0].length" + class="btn rnd-s py-s px-m full-x mb-xs flex h6" + @click="contourAdd(groupeIndex)" + > + <span class="mt-xxs" + >Ajouter + {{ + groupeContours.length >= 1 ? 'une lacune' : 'un contour' + }}</span + ><i class="icon-24 icon-plus flex-right" /> + </button> + </div> + + <button + v-if=" + etape.groupes.length && + etape.groupes[0].length && + etape.groupes[0][0].length + " + class="btn rnd-s py-s px-m full-x mb-s flex h6" + @click="groupeAdd" + > + <span class="mt-xxs">Ajouter un groupe</span + ><i class="icon-24 icon-plus flex-right" /> + </button> + + <div class="h6"> + <label v-if="pointsTotal.length"> + <input v-model="etape.incertitudes.points" type="checkbox" /> + Incertain + </label> + </div> + </div> + </template> + <template #read> + <Points :points="etape.heritageProps.points.etape.points" /> + </template> + </HeritageEdit> + + <hr /> + </div> + + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s flex"> + <div> + <h5 class="mb-0">Surface (Km²)</h5> + <p class="h6 italic mb-0">Optionnel</p> + </div> + <button + v-if="!etape.heritageProps.surface.actif" + class="flex-right btn-border pill p-s tooltip" + @click="surfaceRefresh" + > + <h6 class="tooltip-content"> + Recalculer automatiquement la surface à partir du périmètre + </h6> + <i class="icon-24 icon-refresh" /> + </button> + </div> + <HeritageEdit + v-model:prop="etape.heritageProps.surface" + class="tablet-blob-2-3" + prop-id="surface" + > + <template #write> + <inputNumber + v-model="etape.surface" + min="0" + placeholder="0" + class="mb-s" + /> + <div v-if="etape.surface" class="h6"> + <label> + <input + v-model="etape.incertitudes.surface" + type="checkbox" + class="mr-xs" + /> + Incertain + </label> + </div> + </template> + <template #read> + <div class="border p-s mb-s bold"> + {{ etape.heritageProps.surface.etape.surface }} + </div> + </template> + </HeritageEdit> + </div> +</template> + +<script> +import GeoSystemeEdit from './points-geo-systemes-edit.vue' +import PointEdit from './points-point-edit.vue' +import PointsLotEdit from './points-lot-edit.vue' +import HeritageEdit from './heritage-edit.vue' +import PointsImportPopup from './points-import-popup.vue' +import Points from '../_common/points.vue' +import InputNumber from '../_ui/input-number.vue' + +export default { + components: { + GeoSystemeEdit, + PointEdit, + PointsLotEdit, + HeritageEdit, + Points, + InputNumber + }, + + props: { + etape: { type: Object, default: () => ({}) }, + events: { type: Object, default: () => ({ saveKeyUp: true }) }, + showTitle: { type: Boolean, default: true } + }, + emits: ['complete-update'], + + computed: { + pointsTotal() { + return this.etape.groupes.reduce((pointsTotal, contours) => { + pointsTotal = pointsTotal.concat( + contours.reduce((pointsTotal, points) => { + pointsTotal = pointsTotal.concat(points) + + return pointsTotal + }, []) + ) + + return pointsTotal + }, []) + }, + + complete() { + return this.etape.type.id !== 'mfr' || this.pointsTotal?.length > 3 + } + }, + + watch: { + complete: 'completeUpdate', + 'etape.geoSystemeIds': { + handler() { + this.etapeGeoSystemeOpposableIdUpdate() + }, + deep: true + }, + + etape: { + handler: function (etape) { + if ( + !etape.groupes || + !etape.groupes[0] || + !etape.groupes[0][0] || + !etape.groupes[0][0].length + ) { + etape.incertitudes.points = false + } + + if (!etape.surface) { + etape.incertitudes.surface = false + } + }, + deep: true + } + }, + + created() { + this.completeUpdate() + }, + + methods: { + etapeGeoSystemeOpposableIdUpdate() { + if (this.etape.geoSystemeIds.length < 2) { + this.etape.geoSystemeOpposableId = '' + } else if ( + this.etape.geoSystemeIds.length > 1 && + (!this.etape.geoSystemeOpposableId || + !this.etape.geoSystemeIds.includes(this.etape.geoSystemeOpposableId)) + ) { + this.etape.geoSystemeOpposableId = this.etape.geoSystemeIds[0] + } + }, + + clean(groupes, groupeIndex, contourIndex) { + const contours = groupes[groupeIndex] + const points = contours[contourIndex] + + if (!points.length && (groupes.length > 1 || contours.length > 1)) { + contours.splice(contourIndex, 1) + if (!contours.length && groupes.length > 1) { + groupes.splice(groupeIndex, 1) + } + } + }, + + referencesInit() { + return this.etape.geoSystemeIds.reduce((references, geoSystemeId) => { + references[geoSystemeId] = {} + + return references + }, {}) + }, + + pointAdd(groupeIndex, contourIndex) { + this.etape.groupes[groupeIndex][contourIndex].push({ + groupe: groupeIndex + 1, + contour: contourIndex + 1, + point: this.etape.groupes[groupeIndex][contourIndex].length, + references: this.referencesInit(), + subsidiaire: false + }) + }, + + lotAdd(groupeIndex, contourIndex) { + this.etape.groupes[groupeIndex][contourIndex].push({ + groupe: groupeIndex + 1, + contour: contourIndex + 1, + point: this.etape.groupes[groupeIndex][contourIndex].length, + references: [], + subsidiaire: false, + lot: true + }) + }, + + pointRemove(groupeIndex, contourIndex, pointIndex) { + const groupes = this.etape.groupes + const contours = groupes[groupeIndex] + const points = contours[contourIndex] + points.splice(pointIndex, 1) + + this.clean(groupes, groupeIndex, contourIndex) + }, + + pointMoveDown(groupeIndex, contourIndex, pointIndex) { + const groupes = this.etape.groupes + const contours = groupes[groupeIndex] + const points = contours[contourIndex] + if (points.length > pointIndex + 1) { + const point = points.splice(pointIndex, 1)[0] + points.splice(pointIndex + 1, 0, point) + } else if (contours.length > contourIndex + 1) { + const point = points.splice(pointIndex, 1)[0] + contours[contourIndex + 1].unshift(point) + this.clean(groupes, groupeIndex, contourIndex) + } else if (groupes.length > groupeIndex + 1) { + const point = points.splice(pointIndex, 1)[0] + groupes[groupeIndex + 1][0].unshift(point) + this.clean(groupes, groupeIndex, contourIndex) + } + }, + + pointMoveUp(groupeIndex, contourIndex, pointIndex) { + const groupes = this.etape.groupes + const contours = groupes[groupeIndex] + const points = contours[contourIndex] + if (pointIndex > 0) { + const point = points.splice(pointIndex, 1)[0] + points.splice(pointIndex - 1, 0, point) + } else if (contourIndex > 0) { + const point = points.splice(pointIndex, 1)[0] + contours[contourIndex - 1].push(point) + this.clean(groupes, groupeIndex, contourIndex) + } else if (groupeIndex > 0) { + const point = points.splice(pointIndex, 1)[0] + groupes[groupeIndex - 1][groupes[groupeIndex - 1].length - 1].push( + point + ) + this.clean(groupes, groupeIndex, contourIndex) + } + }, + + contourAdd(groupeIndex) { + this.etape.groupes[groupeIndex].push([ + { + groupe: groupeIndex + 1, + contour: 1, + point: 1, + references: this.referencesInit() + } + ]) + }, + + contourRemove(groupeIndex, contourIndex) { + this.etape.groupes[groupeIndex].splice(contourIndex, 1) + }, + + groupeAdd() { + this.etape.groupes.push([ + [ + { + groupe: this.etape.groupes.length, + contour: 1, + point: 1, + references: this.referencesInit() + } + ] + ]) + }, + + groupeRemove(groupeIndex) { + this.etape.groupes.splice(groupeIndex, 1) + }, + + completeUpdate() { + this.$emit('complete-update', this.complete) + }, + + pointsImport() { + this.$store.commit('popupOpen', { + component: PointsImportPopup + }) + }, + + surfaceRefresh() { + this.$store.dispatch('titreEtapeEdition/surfaceRefresh', this.etape) + } + } +} +</script> diff --git a/packages/ui/src/components/etape/points-geo-systemes-edit.vue b/packages/ui/src/components/etape/points-geo-systemes-edit.vue new file mode 100644 index 0000000000000000000000000000000000000000..9baa26efeae298e029fabc34f5ed2420a247d8cb --- /dev/null +++ b/packages/ui/src/components/etape/points-geo-systemes-edit.vue @@ -0,0 +1,99 @@ +<template> + <div> + <h4 class="mb-s">Systèmes géographiques</h4> + <div + v-for="(etapeGeoSystemeId, etapeGeoSystemeIndex) in etape.geoSystemeIds" + :key="etapeGeoSystemeIndex" + > + <div class="flex mb-s"> + <select + v-model="etape.geoSystemeIds[etapeGeoSystemeIndex]" + class="p-s mr-s" + @change="geoSystemeUpdate(etapeGeoSystemeIndex)" + > + <option + v-for="geoSysteme in geoSystemes" + :key="geoSysteme.id" + :value="geoSysteme.id" + :disabled="etape.geoSystemeIds.includes(geoSysteme.id)" + > + {{ geoSysteme.nom }} ({{ geoSysteme.id }}) + </option> + </select> + <button + class="btn py-s px-m rnd-xs" + @click="geoSystemeRemove(etapeGeoSystemeIndex)" + > + <i class="icon-24 icon-minus" /> + </button> + </div> + + <div v-if="etapeGeoSystemeId" class="tablet-blobs"> + <div v-if="etape.geoSystemeIds.length > 1" class="tablet-blob-1-2"> + <div class="h6 mb"> + <label> + <input + v-model="etape.geoSystemeOpposableId" + type="radio" + :value="etapeGeoSystemeId" + /> + Opposable + </label> + </div> + </div> + </div> + </div> + <button + v-if="!etape.geoSystemeIds.some(id => !id)" + class="btn small rnd-xs py-s px-m full-x flex mb-s" + @click="geoSystemeAdd" + > + <span class="mt-xxs">Ajouter un système géographique</span + ><i class="icon-24 icon-plus flex-right" /> + </button> + </div> +</template> + +<script> +export default { + props: { + etape: { type: Object, default: () => ({}) } + }, + + computed: { + geoSystemes() { + return this.$store.state.titreEtapeEdition.metas.geoSystemes + } + }, + + methods: { + geoSystemeAdd() { + this.etape.geoSystemeIds.push('') + }, + + geoSystemeRemove(etapeGeoSystemeIndex) { + this.etape.geoSystemeIds.splice(etapeGeoSystemeIndex, 1) + }, + + geoSystemeUpdate(etapeGeoSystemeIndex) { + const etapeGeoSystemeId = this.etape.geoSystemeIds[etapeGeoSystemeIndex] + + this.etape.groupes.forEach(contours => { + contours.forEach(points => { + points.forEach(point => { + if (!point.references[etapeGeoSystemeId]) { + point.references[etapeGeoSystemeId] = point.lot + ? [] + : [null, null] + } + }) + }) + }) + + if (!this.etape.groupes.length) { + this.etape.groupes.push([[]]) + } + } + } +} +</script> diff --git a/packages/ui/src/components/etape/points-import-popup.vue b/packages/ui/src/components/etape/points-import-popup.vue new file mode 100644 index 0000000000000000000000000000000000000000..c6bf2509bd0c5068bb61826b125c71d8514af52c --- /dev/null +++ b/packages/ui/src/components/etape/points-import-popup.vue @@ -0,0 +1,109 @@ +<template> + <Popup :messages="messages"> + <template #header> + <h2>Import d'un périmètre</h2> + </template> + + <div class="tablet-blobs mb-m"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5 class="mb-0">Système géographique</h5> + </div> + <div class="tablet-blob-2-3"> + <select v-model="geoSystemeId" class="p-s"> + <option + v-for="geoSysteme in geoSystemes" + :key="geoSysteme.id" + :value="geoSysteme.id" + > + {{ geoSysteme.nom }} ({{ geoSysteme.id }}) + </option> + </select> + </div> + </div> + + <div v-if="geoSystemeId"> + <InputFile + class="btn-border small bg-alt p-s full-x rnd-xs mb-s" + accept=".shp,.geojson" + @change="fileChange" + /> + <p class="h6 italic mt-0"> + Seul les fichiers Shape (.shp) et GeoJson (.geojson) sont acceptés. + </p> + </div> + <template #footer> + <div v-if="!loading" class="tablet-blobs"> + <div class="tablet-blob-1-3 mb tablet-mb-0 flex-right"> + <button class="btn-border rnd-xs p-s full-x" @click="cancel"> + Annuler + </button> + </div> + </div> + <div v-else class="p-s full-x bold">Dépôt en cours…</div> + </template> + </Popup> +</template> + +<script> +import InputFile from '../_ui/input-file.vue' +import Popup from '../_ui/popup.vue' + +export default { + components: { + Popup, + InputFile + }, + + data: function () { + return { + geoSystemeId: null + } + }, + + computed: { + loading() { + return this.$store.state.popup.loading + }, + + messages() { + return this.$store.state.popup.messages + }, + + geoSystemes() { + return this.$store.state.titreEtapeEdition.metas.geoSystemes + } + }, + + created() { + document.addEventListener('keyup', this.keyup) + }, + + beforeUnmount() { + document.removeEventListener('keyup', this.keyup) + }, + + methods: { + async fileChange({ + target: { + files: [file] + } + }) { + await this.$store.dispatch('titreEtapeEdition/pointsImport', { + file, + geoSystemeId: this.geoSystemeId + }) + }, + + cancel() { + this.$store.commit('popupMessagesRemove') + this.$store.commit('popupClose') + }, + + keyup(e) { + if ((e.which || e.keyCode) === 27) { + this.cancel() + } + } + } +} +</script> diff --git a/packages/ui/src/components/etape/points-lot-edit.vue b/packages/ui/src/components/etape/points-lot-edit.vue new file mode 100644 index 0000000000000000000000000000000000000000..08015cb9eda3821f947fa24277bee98da43fc198 --- /dev/null +++ b/packages/ui/src/components/etape/points-lot-edit.vue @@ -0,0 +1,77 @@ +<template> + <div> + <div class="mb"> + <div class="flex"> + <h5>Description</h5> + <p class="h6 italic mb-0 flex-right mt-xs">Optionnel</p> + </div> + <input v-model="point.description" type="text" class="p-s" /> + </div> + + <h5> + Coordonnées en {{ etapeGeoSysteme.nom }} ({{ etapeGeoSysteme.unite.nom }}) + </h5> + <textarea + class="p-s mb-s mono" + :value="point.references.join('\n')" + placeholder="1,4769;47,3469" + @blur="pointsLotUpdate($event)" + @focus="pointsLotEdit" + /> + + <div class="h6 p-s"> + <ul class="list-prefix"> + <li> + Une paire de coordonnées + <span class="mono bg-alt p-xxs color-text">x;y</span> + par ligne, séparées par un point-virgule, sans espace. + </li> + <li>Au format décimal, quelle que soit l'unité.</li> + <li>Unités et décimales séparées par une virgule.</li> + </ul> + <p class="mb-s"> + Exemple: + <span class="mono bg-alt px-xs py-xxs color-text">1,4769;47,3469</span> + </p> + </div> + </div> +</template> + +<script> +export default { + props: { + point: { type: Object, default: () => ({}) }, + geoSystemeIds: { type: Array, required: true }, + geoSystemeOpposableId: { type: String, required: true }, + events: { type: Object, default: () => ({ saveKeyUp: true }) } + }, + + computed: { + etapeGeoSysteme() { + const geoSystemeId = this.geoSystemeOpposableId || this.geoSystemeIds[0] + + return this.$store.state.titreEtapeEdition.metas.geoSystemes.find( + ({ id }) => id === geoSystemeId + ) + } + }, + + methods: { + pointsLotEdit() { + // lorsque l'on édite un lot, + // désactive la validation du formulaire avec `enter` + this.events.saveKeyUp = false + }, + + pointsLotUpdate(event, groupeIndex, contourIndex, pointIndex) { + const coordonnees = event.target.value.split('\n').filter(c => c) + + if (coordonnees) { + this.point.references = coordonnees + } + + this.events.saveKeyUp = true + } + } +} +</script> diff --git a/packages/ui/src/components/etape/points-point-edit.vue b/packages/ui/src/components/etape/points-point-edit.vue new file mode 100644 index 0000000000000000000000000000000000000000..4e93d1ee222cfefc54a22e0416d82769a2eb1239 --- /dev/null +++ b/packages/ui/src/components/etape/points-point-edit.vue @@ -0,0 +1,53 @@ +<template> + <div> + <div class="tablet-blobs"> + <div class="mb tablet-blob-1-3"> + <h5>Nom</h5> + <input v-model.lazy="point.nom" type="text" class="p-s" /> + </div> + <div class="mb tablet-blob-2-3"> + <div class="flex"> + <h5>Description</h5> + <p class="h6 italic mb-0 flex-right mt-xs">Optionnel</p> + </div> + <input v-model="point.description" type="text" class="p-s" /> + </div> + </div> + + <div class="h6 mb"> + <label> + <input v-model="point.subsidiaire" type="checkbox" /> Subsidiaire + </label> + </div> + + <PointReferenceEdit + v-for="geoSysteme in geoSystemes" + :key="`${point.id}-${geoSysteme.id}`" + v-model:point-references="point.references" + :geo-systeme="geoSysteme" + :geo-systeme-opposable-id="geoSystemeOpposableId" + /> + </div> +</template> + +<script> +import PointReferenceEdit from './points-point-reference-edit.vue' + +export default { + components: { PointReferenceEdit }, + + props: { + point: { type: Object, default: () => ({}) }, + geoSystemeIds: { type: Array, required: true }, + geoSystemeOpposableId: { type: String, required: true } + }, + + computed: { + geoSystemes() { + return this.$store.state.titreEtapeEdition.metas.geoSystemes.filter( + ({ id }) => this.geoSystemeIds.includes(id) + ) + } + } +} +</script> diff --git a/packages/ui/src/components/etape/points-point-reference-edit.vue b/packages/ui/src/components/etape/points-point-reference-edit.vue new file mode 100644 index 0000000000000000000000000000000000000000..b34cead4614e7dc3d262770f196968b66e8afc8a --- /dev/null +++ b/packages/ui/src/components/etape/points-point-reference-edit.vue @@ -0,0 +1,56 @@ +<template> + <div class="tablet-blobs"> + <div class="mb tablet-blob-1-3"> + <h5> + Système + <span + v-if="geoSystemeOpposableId === geoSysteme.id" + class="bg-info py-xxs px-xs rnd-xs color-bg ml-xxs" + >Opposable</span + > + </h5> + + <p class="py-s mb-0 h6 bold"> + {{ geoSysteme.nom }} + </p> + </div> + <div class="mb tablet-blob-1-3"> + <h5>X ({{ geoSysteme.unite.nom }})</h5> + <inputNumber + v-model="pointReference.x" + :negative="true" + placeholder="0,01" + /> + </div> + <div class="mb tablet-blob-1-3"> + <h5>Y ({{ geoSysteme.unite.nom }})</h5> + <inputNumber + v-model="pointReference.y" + :negative="true" + placeholder="0,01" + /> + </div> + </div> +</template> + +<script> +import InputNumber from '../_ui/input-number.vue' + +export default { + components: { InputNumber }, + + props: { + geoSysteme: { type: Object, required: true }, + geoSystemeOpposableId: { type: String, required: true }, + pointReferences: { type: Object, required: true } + }, + + computed: { + pointReference() { + return this.pointReferences[this.geoSysteme.id] + ? this.pointReferences[this.geoSysteme.id] + : { id: undefined, x: 0, y: 0 } + } + } +} +</script> diff --git a/packages/ui/src/components/etape/preview.vue b/packages/ui/src/components/etape/preview.vue new file mode 100644 index 0000000000000000000000000000000000000000..a19f391e10137dfeb561e84ef334e54c591d5787 --- /dev/null +++ b/packages/ui/src/components/etape/preview.vue @@ -0,0 +1,331 @@ +<template> + <Accordion + :id="etape.id" + :opened="opened" + class="mb-s" + :slot-default="hasSections || hasFondamentales || hasDocuments" + :slot-buttons="etape.modification" + @close="close" + @toggle="toggle" + > + <template #title> + <h5> + {{ dateFormat(etape.date) }} + <Tag + v-if="etape.incertitudes && etape.incertitudes.date" + :mini="true" + color="bg-info" + class="ml-xs" + > + Incertain + </Tag> + </h5> + + <h3 class="cap-first mb-s">{{ etape.type.nom }}</h3> + + <div class="mb-xs flex flex-center"> + <Statut :color="etape.statut.couleur" :nom="statutNom" /> + + <HelpTooltip v-if="demandeHelp" class="ml-m">{{ + demandeHelp + }}</HelpTooltip> + </div> + </template> + + <template v-if="etape.modification" #buttons> + <button + v-if="etapeIsDemandeEnConstruction" + class="btn btn-primary flex small rnd-0" + :disabled="!etape.deposable" + :class="{ disabled: !etape.deposable }" + @click="etapeDepot" + > + <span class="mt-xxs mb-xxs">Déposer…</span> + </button> + + <button class="btn py-s px-m mr-px" @click="etapeEdit"> + <i class="icon-24 icon-pencil" /> + </button> + + <button class="btn py-s px-m mr-px" @click="removePopupOpen"> + <i class="icon-24 icon-trash" /> + </button> + </template> + + <div class="px pt-m"> + <div v-if="hasFondamentales"> + <Fondamentales :etape="etape" /> + + <Perimetre + v-if="etape.points && etape.points.length" + :etape="etape" + :domaine-id="domaineId" + :titre-type-id="titreTypeType.id" + :geojson-multi-polygon="etape.geojsonMultiPolygon" + :incertitude="!!etape.incertitudes?.points" + /> + <hr class="mx--" /> + </div> + + <div v-if="etape.type.sections?.length"> + <Section + v-for="s in etape.type.sections" + :key="s.id" + :section="s" + :contenu="etape.contenu ? etape.contenu[s.id] : {}" + :date="etape.date" + /> + + <hr class="mx--" /> + </div> + + <div v-if="etape.documents?.length"> + <h4>Documents</h4> + <Documents + :bouton-suppression="false" + :bouton-modification="false" + :documents="etape.documents" + :etiquette="etape.modification" + :parent-id="etape.id" + :parent-type-id="etape.type.id" + repertoire="demarches" + :title="documentPopupTitle" + /> + + <hr class="mx--" /> + </div> + + <div v-if="etape.justificatifs?.length"> + <h4>Justificatifs</h4> + <Documents + :bouton-dissociation="false" + :bouton-modification="false" + :bouton-suppression="false" + :documents="etape.justificatifs" + :etiquette="etape.modification" + :parent-id="etape.id" + :parent-type-id="etape.type.id" + repertoire="'entreprises'" + :title="documentPopupTitle" + /> + + <hr class="mx--" /> + </div> + + <div + v-if="etape.decisionsAnnexesSections && etape.decisionsAnnexesContenu" + > + <Section + v-for="s in etape.decisionsAnnexesSections" + :key="s.id" + :section="s" + :contenu="etape.decisionsAnnexesContenu[s.id] || {}" + :etape-id="etape.id" + /> + + <hr class="mx--" /> + </div> + + <div v-if="canDownloadZip" class="flex"> + <span class="small bold mb-0 mt-s flex-grow text-right mr-l pt-xs"> + Télécharger l'ensemble de la demande dans un fichier .zip + </span> + <button + class="btn-border rnd-xs flex-right py-s px-m mb-m" + @click="demandeDownload" + > + <i class="icon-24 icon-download" /> + </button> + </div> + </div> + </Accordion> +</template> + +<script> +import { dateFormat, cap } from '@/utils' +import Perimetre from './perimetre.vue' +import Fondamentales from './fondamentales.vue' +import Section from '../_common/section.vue' +import Documents from '../documents/list.vue' +import Accordion from '../_ui/accordion.vue' +import Tag from '../_ui/tag.vue' +import Statut from '../_common/statut.vue' +import RemovePopup from './remove.vue' +import DeposePopup from './depose-popup.vue' +import HelpTooltip from '../_ui/help-tooltip.vue' + +export default { + components: { + HelpTooltip, + Accordion, + Tag, + Statut, + Perimetre, + Fondamentales, + Section, + Documents + }, + + props: { + etape: { type: Object, required: true }, + demarcheType: { type: Object, required: true }, + titreTypeType: { type: Object, required: true }, + domaineId: { type: String, required: true }, + titreNom: { type: String, required: true }, + titreId: { type: String, required: true }, + opened: { type: Boolean, default: false } + }, + + emits: ['close', 'toggle'], + + computed: { + route() { + return { + name: 'titre', + section: 'etapes', + id: this.titreId + } + }, + + documentPopupTitle() { + return `${cap(this.titreNom)} | ${cap(this.demarcheType.nom)} | ${cap( + this.etape.type.nom + )}` + }, + + etapeIsDemandeEnConstruction() { + return this.etape.type.id === 'mfr' && this.etape.statut.id === 'aco' + }, + + hasFondamentales() { + return ( + !!this.etape.duree || + !!this.etape.surface || + !!this.etape.dateDebut || + !!this.etape.dateFin || + !!(this.etape.points && this.etape.points.length) || + !!(this.etape.substances && this.etape.substances.length) || + !!(this.etape.titulaires && this.etape.titulaires.length) || + !!(this.etape.amodiataires && this.etape.amodiataires.length) + ) + }, + + hasSections() { + return !!this.etape.type.sections?.length + }, + + hasDocuments() { + return this.etape.documents && !!this.etape.documents.length + }, + + hasJustificatifs() { + return this.etape.justificatifs && !!this.etape.justificatifs.length + }, + + statutNom() { + return this.etapeIsDemandeEnConstruction && !this.etape.deposable + ? `${this.etape.statut.nom} (incomplet)` + : this.etape.statut.nom + }, + + userIsAdmin() { + return this.$store.getters['user/userIsAdmin'] + }, + + canDownloadZip() { + return ( + this.etape.type.id === 'mfr' && + (this.hasDocuments || this.hasJustificatifs) + ) + }, + + demandeHelp() { + if (!this.userIsAdmin && this.etape.type.id === 'mfr') { + if ( + this.domaineId === 'm' && + ['ar', 'ax'].includes(this.titreTypeType.id) + ) { + if (this.etape.statut.id === 'aco') { + return 'Si vous avez ajouté tous les documents spécifiques à la demande et justificatifs d’entreprise, et que vous considérez que votre demande est complète, vous pouvez la déposer en cliquant sur « Déposer … ». L’ONF et le PTMG seront ainsi notifiés et pourront instruire votre demande.' + } else { + return 'Votre demande est bien déposée. L’ONF et le PTMG instruisent votre demande.' + } + } + } + + return null + } + }, + + methods: { + dateFormat(date) { + return dateFormat(date) + }, + + close() { + this.$emit('close') + }, + + toggle() { + this.$emit('toggle') + }, + + async demandeDownload() { + await this.$store.dispatch('download', `/etape/zip/${this.etape.id}`) + }, + + etapeEdit() { + this.$router.push({ + name: 'etape-edition', + params: { id: this.etape.slug } + }) + + this.eventTrack({ + categorie: 'titre-etape', + action: 'titre-etape_editer', + nom: this.$route.params.id + }) + }, + + etapeDepot() { + this.$store.commit('popupOpen', { + component: DeposePopup, + props: { + etape: this.etape + } + }) + + this.eventTrack({ + categorie: 'titre-etape', + action: 'titre-etape_depot', + nom: this.$route.params.id + }) + }, + + removePopupOpen() { + this.$store.commit('popupOpen', { + component: RemovePopup, + props: { + etapeTypeNom: this.etape.type.nom, + etapeId: this.etape.id, + demarcheTypeNom: this.demarcheType.nom, + titreNom: this.titreNom, + titreTypeNom: this.titreTypeType.nom + } + }) + + this.eventTrack({ + categorie: 'titre-etape', + action: 'supprimer une étape', + nom: this.$route.params.id + }) + }, + + eventTrack(event) { + if (this.$matomo) { + this.$matomo.trackEvent(event.categorie, event.action, event.nom) + } + } + } +} +</script> diff --git a/packages/ui/src/components/etape/prop-duree.vue b/packages/ui/src/components/etape/prop-duree.vue new file mode 100644 index 0000000000000000000000000000000000000000..883e0272e72b321c8fa7131922b601cc82b19313 --- /dev/null +++ b/packages/ui/src/components/etape/prop-duree.vue @@ -0,0 +1,26 @@ +<template> + <span> + <span v-if="dureeFormated.ans">{{ + `${dureeFormated.ans} an${dureeFormated.ans > 1 ? 's' : ''}` + }}</span> + <span v-if="dureeFormated.ans && dureeFormated.mois"> et </span> + <span v-if="dureeFormated.mois">{{ `${dureeFormated.mois} mois` }}</span> + </span> +</template> + +<script> +export default { + props: { + duree: { type: Number, default: null } + }, + + computed: { + dureeFormated() { + return { + ans: this.duree && Math.floor(this.duree / 12), + mois: this.duree && Math.floor(this.duree % 12) + } + } + } +} +</script> diff --git a/packages/ui/src/components/etape/remove.vue b/packages/ui/src/components/etape/remove.vue new file mode 100644 index 0000000000000000000000000000000000000000..4f15eb4cd46111783b4b248260485c71f8f13ce7 --- /dev/null +++ b/packages/ui/src/components/etape/remove.vue @@ -0,0 +1,119 @@ +<template> + <Popup :messages="messages"> + <template #header> + <div> + <h6> + <span class="cap-first"> {{ titreNom }} </span + ><span class="color-neutral"> | </span + ><span class="cap-first"> + {{ demarcheTypeNom }} + </span> + </h6> + <h2 class="cap-first">Suppression de l'étape</h2> + </div> + </template> + + <p class="bold"> + Souhaitez vous supprimer l'étape + <span class="color-inverse">{{ etapeTypeNom }}</span> de la démarche + <span class="color-inverse">{{ demarcheTypeNom }}</span> du titre + <span class="color-inverse">{{ titreNom }} ({{ titreTypeNom }})</span> ? + </p> + <div class="bg-warning color-bg p-s mb-l"> + <span class="bold"> Attention </span>: cette opération est définitive et + ne peut pas être annulée. + </div> + + <template #footer> + <div v-if="!loading" class="tablet-blobs"> + <div class="tablet-blob-1-3 mb tablet-mb-0"> + <button class="btn-border rnd-xs p-s full-x" @click="cancel"> + Annuler + </button> + </div> + <div class="tablet-blob-2-3"> + <button class="btn-flash rnd-xs p-s full-x" @click="remove"> + Supprimer + </button> + </div> + </div> + <div v-else class="p-s full-x bold">Suppression en cours…</div> + </template> + </Popup> +</template> + +<script> +import Popup from '../_ui/popup.vue' + +export default { + name: 'CaminoEtapeRemovePopup', + + components: { + Popup + }, + + props: { + etapeTypeNom: { + type: String, + default: '' + }, + demarcheTypeNom: { + type: String, + default: '' + }, + etapeId: { + type: String, + default: '' + }, + titreNom: { + type: String, + default: '' + }, + titreTypeNom: { + type: String, + default: '' + } + }, + + computed: { + loading() { + return this.$store.state.popup.loading + }, + + messages() { + return this.$store.state.popup.messages + } + }, + + created() { + document.addEventListener('keyup', this.keyup) + }, + + beforeUnmount() { + document.removeEventListener('keyup', this.keyup) + }, + + methods: { + async remove() { + await this.$store.dispatch('titreEtape/remove', this.etapeId) + }, + + cancel() { + this.errorsRemove() + this.$store.commit('popupClose') + }, + + keyup(e) { + if ((e.which || e.keyCode) === 27) { + this.cancel() + } else if ((e.which || e.keyCode) === 13) { + this.remove() + } + }, + + errorsRemove() { + // this.$store.commit('utilisateur/loginMessagesRemove') + } + } +} +</script> diff --git a/packages/ui/src/components/etape/section-element-edit.vue b/packages/ui/src/components/etape/section-element-edit.vue new file mode 100644 index 0000000000000000000000000000000000000000..6936c09b0e57cb3a79594d77b3098ab212f2ac92 --- /dev/null +++ b/packages/ui/src/components/etape/section-element-edit.vue @@ -0,0 +1,82 @@ +<template> + <div> + <div class="tablet-blobs"> + <div v-if="element.nom" class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5 class="mb-0"> + <span class="cap-first">{{ element.nom }}</span> + </h5> + <p v-if="element.optionnel" class="h6 italic mb-0">Optionnel</p> + </div> + + <HeritageEdit + v-model:prop="heritage[element.id]" + class="mb" + :class="{ + 'tablet-blob-2-3': element.nom, + 'tablet-blob-1': !element.nom + }" + :prop-id="element.id" + :section-id="sectionId" + :is-array="element.type === 'checkboxes'" + > + <template #write> + <SectionElementEdit + v-model:contenu="contenu" + class="mb-s" + :element="element" + /> + </template> + <template #read> + <p v-if="element.type !== 'multiple'" class="pt-s py-xs mb-0"> + {{ valeur }} + </p> + <SectionElementMultiple + v-else + :contenu="contenu[element.id]" + :element="element" + /> + </template> + + <!-- eslint-disable vue/no-v-html --> + <p v-if="element.description" class="h6" v-html="element.description" /> + </HeritageEdit> + </div> + + <hr /> + </div> +</template> + +<script> +import { valeurFind, hasValeurCheck } from '@/utils/contenu' +import SectionElementEdit from '../_common/section-element-input-edit.vue' +import HeritageEdit from './heritage-edit.vue' +import SectionElementMultiple from '../_common/section-element-multiple.vue' + +export default { + components: { + SectionElementMultiple, + SectionElementEdit, + HeritageEdit + }, + + props: { + contenu: { type: Object, required: true }, + element: { type: Object, required: true }, + heritage: { type: Object, required: true }, + sectionId: { type: String, required: true } + }, + + computed: { + hasValeur() { + return hasValeurCheck(this.element.id, this.contenu) + }, + + valeur() { + return valeurFind( + this.element, + this.heritage[this.element.id].etape.contenu[this.sectionId] + ) + } + } +} +</script> diff --git a/packages/ui/src/components/etape/sections-edit.vue b/packages/ui/src/components/etape/sections-edit.vue new file mode 100644 index 0000000000000000000000000000000000000000..32d3bb281e0ef5cc1c63b641e36674f943d9bc7c --- /dev/null +++ b/packages/ui/src/components/etape/sections-edit.vue @@ -0,0 +1,72 @@ +<template> + <div> + <div v-for="s in sections" :key="s.id"> + <h3 v-if="s.nom">{{ s.nom }}</h3> + + <SectionElementEdit + v-for="e in s.elements" + :key="e.id" + v-model:contenu="contenu[s.id]" + :element="e" + :heritage="etape.heritageContenu[s.id]" + :section-id="s.id" + /> + </div> + </div> +</template> + +<script> +import { + elementContenuBuild, + contenuBuild, + contenuCompleteCheck +} from '@/utils/contenu' +import SectionElementEdit from './section-element-edit.vue' + +export default { + components: { + SectionElementEdit + }, + + props: { + sections: { type: Array, required: true }, + etape: { type: Object, required: true } + }, + + emits: ['complete-update', 'sections-update'], + data() { + return { + contenu: {} + } + }, + + computed: { + complete() { + return contenuCompleteCheck(this.sections, this.contenu) + } + }, + + watch: { + contenu: { + handler: function (contenu) { + this.etape.contenu = elementContenuBuild(this.sections, contenu) + this.$emit('sections-update') + }, + deep: true + }, + + complete: 'completeUpdate' + }, + + created() { + this.contenu = contenuBuild(this.sections, this.etape.contenu) + this.completeUpdate() + }, + + methods: { + completeUpdate() { + this.$emit('complete-update', this.complete) + } + } +} +</script> diff --git a/packages/ui/src/components/etape/type-edit.vue b/packages/ui/src/components/etape/type-edit.vue new file mode 100644 index 0000000000000000000000000000000000000000..d46b4501547be7a4b05529ecdf55457423b0ba4a --- /dev/null +++ b/packages/ui/src/components/etape/type-edit.vue @@ -0,0 +1,129 @@ +<template> + <div> + <div v-if="userIsAdmin" class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5>Date</h5> + </div> + <div class="tablet-blob-2-3"> + <InputDate + v-model="etape.date" + :class="{ 'mb-s': etape.date, mb: !etape.date }" + /> + <div class="h6"> + <label v-if="etape.date"> + <input + v-model="etape.incertitudes.date" + type="checkbox" + class="mr-xs" + /> + Incertain + </label> + </div> + </div> + + <hr /> + </div> + + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5>Type</h5> + </div> + <div class="mb tablet-blob-2-3"> + <select :value="etapeType?.id" class="p-s" @change="typeUpdate($event)"> + <option + v-for="eType in etapesTypes" + :key="eType.id" + :value="eType.id" + :disabled="etapeType?.id === eType.id" + > + {{ eType.nom }} + </option> + </select> + </div> + </div> + + <hr /> + + <div v-if="etapesStatuts && !etapeIsDemandeEnConstruction"> + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5>Statut</h5> + </div> + <div class="mb tablet-blob-2-3"> + <select v-model="etape.statutId" class="p-s"> + <option + v-for="etapeStatut in etapesStatuts" + :key="etapeStatut.id" + :value="etapeStatut.id" + :disabled="etape.statutId === etapeStatut.id" + > + {{ etapeStatut.nom }} + </option> + </select> + </div> + </div> + + <hr /> + </div> + </div> +</template> + +<script> +import InputDate from '../_ui/input-date.vue' + +export default { + components: { InputDate }, + props: { + userIsAdmin: { type: Boolean, required: true }, + etape: { type: Object, required: true }, + etapeType: { type: Object, default: () => ({}) }, + etapesTypes: { type: Array, required: true }, + etapeIsDemandeEnConstruction: { type: Boolean, default: false } + }, + + emits: ['type-update', 'complete-update'], + + computed: { + etapesStatuts() { + return this.etapeType && this.etapeType.etapesStatuts + }, + + complete() { + if (this.userIsAdmin) { + return this.etapeIsDemandeEnConstruction + ? !!(this.etapeType && this.etape.date) + : !!(this.etapeType && this.etape.date && this.etape.statutId) + } + + return !!this.etapeType.id + } + }, + + watch: { + etapesStatuts: function () { + if (this.etapesStatuts?.length === 1) { + this.etape.statutId = this.etapesStatuts[0].id + } else { + this.etape.statutId = null + } + }, + + complete: 'completeUpdate' + }, + + created() { + this.completeUpdate() + }, + + methods: { + async typeUpdate(event) { + const typeId = event.target.value + this.$emit('type-update', typeId) + }, + + completeUpdate() { + this.$emit('complete-update', this.complete) + } + } +} +</script> diff --git a/packages/ui/src/components/glossaire.vue b/packages/ui/src/components/glossaire.vue new file mode 100644 index 0000000000000000000000000000000000000000..781e608b65ff9ff6216b3a46f6587d79981e442b --- /dev/null +++ b/packages/ui/src/components/glossaire.vue @@ -0,0 +1,62 @@ +<template> + <div> + <h1 class="mt-m">Glossaire</h1> + + <hr class="mb-xl" /> + + <div class="desktop-blobs"> + <div class="desktop-blob-1-3"> + <Sommaire :slug="slug" :definitions="definitions" /> + </div> + <div class="desktop-blob-2-3"> + <Router-view v-if="slug" :slug="slug" :definition="definition" /> + <div v-else> + <h3>Définitions des termes utilisés dans Camino.</h3> + </div> + </div> + </div> + </div> +</template> + +<script> +import Sommaire from './glossaire/sommaire.vue' + +export default { + name: 'Glossaire', + + components: { Sommaire }, + + data() { + return { + loaded: false + } + }, + + computed: { + definitions() { + return this.$store.state.definitions.elements + }, + + definition() { + return this.definitions.find(d => d.slug === this.slug) || {} + }, + + slug() { + return this.$route.params.slug + } + }, + + async created() { + await this.definitionsGet() + }, + + methods: { + async definitionsGet() { + await this.$store.dispatch('definitions/get') + if (!this.loaded) { + this.loaded = true + } + } + } +} +</script> diff --git a/packages/ui/src/components/glossaire/definition-entree.vue b/packages/ui/src/components/glossaire/definition-entree.vue new file mode 100644 index 0000000000000000000000000000000000000000..d1222deaa5e93e336d038aa0ff2c8e42b92b30cc --- /dev/null +++ b/packages/ui/src/components/glossaire/definition-entree.vue @@ -0,0 +1,58 @@ +<template> + <div> + <div> + <h3> + <Pill + v-if="id === 'dom'" + :color="`bg-domaine-${entree.id}`" + class="mr-xs mono mt--s" + > + {{ entree.id }} + </Pill> + <svg v-if="id === 'tty'" width="24" height="24" class="mr-s mb--xs"> + <rect + width="24" + height="24" + :class="`svg-fill-pattern-${entree.id}`" + /> + </svg> + <Statut + v-if="id === 'tst' || id === 'dst' || id === 'est'" + :color="entree.couleur" + :nom="entree.nom" + class="inline-block" + /> + <span v-else class="cap-first">{{ entree.nom }}</span> + </h3> + </div> + <!-- eslint-disable-next-line vue/no-v-html --> + <div v-if="entree.description" class="mb-l" v-html="descriptionHtml" /> + </div> +</template> + +<script> +import snarkdown from 'snarkdown' +import Pill from '../_ui/pill.vue' +import Statut from '../_common/statut.vue' + +export default { + name: 'DefinitionEntree', + + components: { Pill, Statut }, + + props: { + entree: { type: Object, default: () => ({}) }, + id: { type: String, default: () => '' } + }, + + computed: { + elements() { + return this.entree.elements + }, + + descriptionHtml() { + return snarkdown(this.entree.description) + } + } +} +</script> diff --git a/packages/ui/src/components/glossaire/definition.vue b/packages/ui/src/components/glossaire/definition.vue new file mode 100644 index 0000000000000000000000000000000000000000..2a5ba0633b0c50e186ead761a87706cb96aef6b4 --- /dev/null +++ b/packages/ui/src/components/glossaire/definition.vue @@ -0,0 +1,63 @@ +<template> + <div> + <MapPattern + v-if="definition.id === 'tty'" + :domaines-ids="['h']" + :types-ids="entrees.map(t => t.id)" + /> + <h2>{{ definition.nom }}</h2> + <!-- eslint-disable-next-line vue/no-v-html --> + <p v-if="definition.description" v-html="descriptionHtml" /> + <div v-if="entrees && entrees.length"> + <DefinitionEntree + v-for="entree in entrees" + :id="definition.id" + :key="entree.id" + :entree="entree" + /> + </div> + </div> +</template> + +<script> +import snarkdown from 'snarkdown' +import DefinitionEntree from './definition-entree.vue' +import MapPattern from '../_map/pattern.vue' + +export default { + name: 'Definition', + + components: { DefinitionEntree, MapPattern }, + + props: { + definition: { type: Object, required: true }, + slug: { type: String, required: true } + }, + + computed: { + entrees() { + return this.$store.state.definitions.entrees + }, + + descriptionHtml() { + return snarkdown(this.definition.description) + } + }, + + watch: { + '$route.params.slug': function (slug) { + this.entreesGet(slug) + } + }, + + async created() { + await this.entreesGet(this.slug) + }, + + methods: { + async entreesGet(slug) { + await this.$store.dispatch('definitions/entreesGet', slug) + } + } +} +</script> diff --git a/packages/ui/src/components/glossaire/sommaire.vue b/packages/ui/src/components/glossaire/sommaire.vue new file mode 100644 index 0000000000000000000000000000000000000000..090951cb6b7fe7a5c86f648d457dbb2b9caef41a --- /dev/null +++ b/packages/ui/src/components/glossaire/sommaire.vue @@ -0,0 +1,30 @@ +<template> + <div> + <ul class="list-sans mb-l"> + <li + v-for="definition in definitions" + id="==" + :key="definition.id" + :class="{ active: slug === definition.slug }" + > + <router-link + :to="{ name: 'definition', params: { slug: definition.slug } }" + class="btn-menu text-decoration-none bold" + > + {{ definition.nom }} + </router-link> + </li> + </ul> + </div> +</template> + +<script> +export default { + name: 'Sommaire', + + props: { + definitions: { type: Array, default: () => [] }, + slug: { type: String, default: () => null } + } +} +</script> diff --git a/packages/ui/src/components/journaux.vue b/packages/ui/src/components/journaux.vue new file mode 100644 index 0000000000000000000000000000000000000000..d15287861fe25abaacbfba318ee2966fa279013a --- /dev/null +++ b/packages/ui/src/components/journaux.vue @@ -0,0 +1,32 @@ +<template> + <Journaux /> +</template> + +<script lang="ts"> +import { defineComponent } from 'vue' +import Journaux from './journaux/journaux.vue' + +export default defineComponent({ + components: { Journaux }, + + watch: { + user: 'refresh', + + '$route.query': { + handler: function () { + this.$store.dispatch('journaux/routeUpdate') + } + } + }, + + unmounted() { + this.$store.commit('journaux/reset') + }, + + methods: { + async refresh() { + await this.$store.dispatch('journaux/init') + } + } +}) +</script> diff --git a/packages/ui/src/components/journaux/differences.vue b/packages/ui/src/components/journaux/differences.vue new file mode 100644 index 0000000000000000000000000000000000000000..c737622baeacdfad670e74485150bb7e3fb8ce43 --- /dev/null +++ b/packages/ui/src/components/journaux/differences.vue @@ -0,0 +1,38 @@ +<template> + <div v-if="journal.operation === 'create'"> + {{ journal.elementId }} + </div> + <div v-else class="differences overflow-scroll-y"> + <!-- eslint-disable vue/no-v-html --> + <div v-html="differencesHtml"></div> + </div> +</template> + +<script lang="ts"> +import { defineComponent } from 'vue' +import { formatters } from 'jsondiffpatch' +import 'jsondiffpatch/dist/formatters-styles/html.css' + +export default defineComponent({ + props: { + journal: { type: Object, required: true } + }, + + computed: { + differencesHtml() { + if (this.journal.differences) { + let html = formatters.html.format(this.journal.differences) + html = html.replaceAll('jsondiffpatch-child-node-type-object', '') + return html + } + + return '' + } + } +}) +</script> +<style> +.differences { + max-height: 200px; +} +</style> diff --git a/packages/ui/src/components/journaux/journaux.vue b/packages/ui/src/components/journaux/journaux.vue new file mode 100644 index 0000000000000000000000000000000000000000..0e2efc8402dcbd902b34caceb1560c6e83d777dd --- /dev/null +++ b/packages/ui/src/components/journaux/journaux.vue @@ -0,0 +1,126 @@ +<template> + <Liste + nom="journaux" + :colonnes="colonnes" + :lignes="lignes" + :elements="journaux" + :filtres="filtres" + :params="params" + :total="total" + :initialized="initialized" + @params-update="paramsUpdate" + /> +</template> + +<script lang="ts"> +import { defineComponent } from 'vue' +import Liste from '../_common/liste.vue' +import { markRaw } from '@vue/reactivity' +import Differences from './differences.vue' + +export default defineComponent({ + components: { Liste }, + props: { + titreId: { type: String, default: undefined } + }, + computed: { + journaux() { + return this.$store.state.journaux.elements + }, + total() { + return this.$store.state.journaux.total + }, + params() { + return this.$store.state.journaux.params + }, + initialized() { + return this.$store.state.journaux.initialized + }, + colonnes() { + const colonnes = [ + { id: 'date', name: 'Date' }, + { id: 'titre', name: 'Titre' }, + { id: 'utilisateur', name: 'Utilisateur' }, + { id: 'operation', name: 'Action' }, + { + id: 'differences', + name: 'Modifications' + } + ] + + if (!this.titreId) { + return colonnes + } + return colonnes.filter(({ id }) => id !== 'titre') + }, + filtres() { + return !this.titreId + ? [ + { + id: 'recherche', + type: 'input', + value: '', + name: 'Recherche' + } + ] + : [] + }, + lignes() { + return this.journaux?.map(journal => { + const date = new Date(Number.parseInt(journal.date)) + const columns = { + date: { + value: date.toLocaleString('fr-FR') + }, + titre: { + value: journal.titre?.nom + }, + utilisateur: { + value: journal.utilisateur + ? `${journal.utilisateur.nom} ${journal.utilisateur.prenom}` + : 'Système' + }, + operation: { + value: journal.operation + }, + differences: { + component: markRaw(Differences), + props: { + journal + } + } + } + + return { + id: journal.id, + link: { name: 'etape', params: { id: journal.elementId } }, + columns + } + }) + } + }, + + async created() { + if (this.titreId) { + this.paramsUpdate({ + section: 'filtres', + params: { titreId: this.titreId } + }) + } + await this.init() + }, + + unmounted() { + this.$store.commit('journaux/reset') + }, + + methods: { + async init() { + await this.$store.dispatch('journaux/init') + }, + async paramsUpdate(options: any) { + await this.$store.dispatch(`journaux/paramsSet`, options) + } + } +}) +</script> diff --git a/packages/ui/src/components/menu/button.vue b/packages/ui/src/components/menu/button.vue new file mode 100644 index 0000000000000000000000000000000000000000..fbc975a613c7380f9328efdbff18ea6e68a8eb3b --- /dev/null +++ b/packages/ui/src/components/menu/button.vue @@ -0,0 +1,44 @@ +<template> + <div + :class="{ active: menu.component && menu.component.name === 'MainMenu' }" + > + <button + id="cmn-menu-button-button-menu" + class="btn-border small pill p-s" + alt="Url" + @click="menuToggle" + > + <i class="icon-24 icon-menu" /> + </button> + </div> +</template> + +<script> +import MainMenu from './menu.vue' + +export default { + data() { + return { + popupVisible: false + } + }, + + computed: { + menu() { + return this.$store.state.menu + } + }, + + methods: { + menuToggle() { + this.eventTrack() + this.$store.dispatch('menuToggle', MainMenu) + }, + eventTrack() { + if (this.$matomo) { + this.$matomo.trackEvent('menu', 'bouton', 'sections') + } + } + } +} +</script> diff --git a/packages/ui/src/components/menu/menu.vue b/packages/ui/src/components/menu/menu.vue new file mode 100644 index 0000000000000000000000000000000000000000..44dd724e8524282fb35b4d05a997a0c7a1231ac7 --- /dev/null +++ b/packages/ui/src/components/menu/menu.vue @@ -0,0 +1,189 @@ +<template> + <div class="bg-alt"> + <div class="container pt"> + <div class="tablet-blobs mb flex-align-items-stretch"> + <div class="tablet-blob-1-4 border-l pl-s"> + <ul class="list-sans mb-0"> + <li> + <router-link + v-if="$route.name !== 'titres'" + id="cmn-menu-menu-a-titres" + :to="{ name: 'titres' }" + class="btn-menu text-decoration-none bold" + @click="eventTrack('titres')" + > + Titres miniers et autorisations + </router-link> + <div v-else class="bold color-neutral"> + Titres miniers et autorisations + </div> + </li> + <li> + <router-link + v-if="$route.name !== 'demarches'" + id="cmn-menu-menu-a-demarches" + :to="{ name: 'demarches' }" + class="btn-menu text-decoration-none bold" + @click="eventTrack('demarches')" + > + Démarches + </router-link> + <div v-else class="bold color-neutral">Démarches</div> + </li> + <li v-if="sections.travaux"> + <router-link + v-if="$route.name !== 'travaux'" + id="cmn-menu-menu-a-travaux" + :to="{ name: 'travaux' }" + class="btn-menu text-decoration-none bold" + @click="eventTrack('travaux')" + > + Travaux + </router-link> + <div v-else class="bold color-neutral">Travaux</div> + </li> + </ul> + </div> + <div v-if="sections.activites" class="tablet-blob-1-4 border-l pl-s"> + <ul class="list-sans mb-0"> + <li v-if="sections.activites"> + <router-link + v-if="$route.name !== 'activites'" + id="cmn-menu-menu-a-activites" + :to="{ name: 'activites' }" + class="btn-menu text-decoration-none bold" + @click="eventTrack('activites')" + > + Activités + </router-link> + <div v-else class="bold color-neutral">Activités</div> + </li> + </ul> + </div> + <div class="tablet-blob-1-4 border-l pl-s"> + <ul class="list-sans mb-0"> + <li v-if="sections.administrations"> + <router-link + v-if="$route.name !== 'administrations'" + id="cmn-menu-menu-a-administrations" + :to="{ name: 'administrations' }" + class="btn-menu text-decoration-none bold" + @click="eventTrack('administrations')" + > + Administrations + </router-link> + <div v-else class="bold color-neutral">Administrations</div> + </li> + <li> + <router-link + v-if="$route.name !== 'entreprises'" + id="cmn-menu-menu-a-entreprises" + :to="{ name: 'entreprises' }" + class="btn-menu text-decoration-none bold" + @click="eventTrack('entreprises')" + > + Entreprises + </router-link> + <div v-else class="bold color-neutral">Entreprises</div> + </li> + <li v-if="sections.utilisateurs"> + <router-link + v-if="$route.name !== 'utilisateurs'" + id="cmn-menu-menu-a-utilisateurs" + :to="{ name: 'utilisateurs' }" + class="btn-menu text-decoration-none bold" + @click="eventTrack('utilisateurs')" + > + Utilisateurs + </router-link> + <div v-else class="bold color-neutral">Utilisateurs</div> + </li> + </ul> + </div> + <div class="tablet-blob-1-4 border-l pl-s"> + <ul class="list-sans mb-0"> + <li> + <router-link + v-if="$route.name !== 'glossaire'" + id="cmn-menu-menu-a-glossaire" + :to="{ name: 'glossaire' }" + class="btn-menu text-decoration-none bold" + @click="eventTrack('glossaire')" + > + Glossaire + </router-link> + <div v-else class="bold color-neutral">Glossaire</div> + </li> + <li> + <router-link + v-if=" + $route.name !== 'statistiques' && + $route.name !== 'statistiques-globales' && + $route.name !== 'statistiques-guyane' + " + id="cmn-menu-menu-a-statistiques" + :to="{ name: 'statistiques' }" + class="btn-menu text-decoration-none bold" + @click="eventTrack('statistiques')" + > + Statistiques + </router-link> + <div v-else class="bold color-neutral">Statistiques</div> + </li> + <li v-if="sections.metas"> + <router-link + v-if="$route.name !== 'metas'" + id="cmn-menu-menu-a-metas" + :to="{ name: 'metas' }" + class="btn-menu text-decoration-none bold" + @click="eventTrack('metas')" + > + Métas + </router-link> + <div v-else class="bold color-neutral">Métas</div> + </li> + <li v-if="sections.journaux"> + <router-link + v-if="$route.name !== 'journaux'" + id="cmn-menu-menu-a-journaux" + :to="{ name: 'journaux' }" + class="btn-menu text-decoration-none bold" + > + Journaux + </router-link> + <div v-else class="bold color-neutral">Journaux</div> + </li> + </ul> + </div> + </div> + </div> + </div> +</template> + +<script> +export default { + name: 'MainMenu', + + computed: { + user() { + return this.$store.state.user.element + }, + + sections() { + return this.user && this.user.sections ? this.user.sections : {} + }, + + menu() { + return this.$store.state.menu + } + }, + + methods: { + eventTrack(id) { + if (this.$matomo) { + this.$matomo.trackEvent('menu-sections', 'menu-section', id) + } + } + } +} +</script> diff --git a/packages/ui/src/components/meta-activite.vue b/packages/ui/src/components/meta-activite.vue new file mode 100644 index 0000000000000000000000000000000000000000..8fa999bb7c374ab383f2797c1ea15a87210b19c9 --- /dev/null +++ b/packages/ui/src/components/meta-activite.vue @@ -0,0 +1,40 @@ +<template> + <Metas title="Activité" :definitions-tree="definitionsTree" /> +</template> + +<script lang="ts"> +import { defineComponent } from 'vue' +import Metas from '@/components/metas/meta-page-template.vue' + +export default defineComponent({ + components: { + Metas + }, + + data() { + return { + definitionsTree: { + id: 'activites-types', + foreignKey: 'activiteTypeId', + definitions: [ + { + id: 'titres-types', + foreignKey: 'titreTypeId', + joinTable: 'activites-types--titres-types' + }, + { + id: 'documents-types', + foreignKey: 'documentTypeId', + joinTable: 'activites-types--documents-types' + }, + { + id: 'pays', + foreignKey: 'paysId', + joinTable: 'activites-types--pays' + } + ] + } + } + } +}) +</script> diff --git a/packages/ui/src/components/meta-demarche.vue b/packages/ui/src/components/meta-demarche.vue new file mode 100644 index 0000000000000000000000000000000000000000..fac7477c53abf7a665d79393cdb6583382df3a4a --- /dev/null +++ b/packages/ui/src/components/meta-demarche.vue @@ -0,0 +1,53 @@ +<template> + <Metas title="Démarche" :definitions-tree="definitionsTree" /> +</template> + +<script lang="ts"> +import { defineComponent } from 'vue' +import Metas from '@/components/metas/meta-page-template.vue' + +export default defineComponent({ + components: { + Metas + }, + + data() { + return { + definitionsTree: { + id: 'demarches-types', + foreignKey: 'demarcheTypeId', + definitions: [ + { + id: 'titres-types', + foreignKey: 'titreTypeId', + joinTable: 'titres-types--demarches-types', + definitions: [ + { + id: 'etapes-types', + foreignKey: 'etapeTypeId', + joinTable: 'titres-types--demarches-types--etapes-types', + definitions: [ + { + id: 'documents-types', + foreignKey: 'documentTypeId', + joinTable: + 'titres-types--demarches-types--etapes-types--documents-types', + definitions: [] + }, + { + id: 'documents-types', + foreignKey: 'documentTypeId', + joinTable: + 'titres-types--demarches-types--etapes-types--justificatifs-types', + definitions: [] + } + ] + } + ] + } + ] + } + } + } +}) +</script> diff --git a/packages/ui/src/components/meta-etape.vue b/packages/ui/src/components/meta-etape.vue new file mode 100644 index 0000000000000000000000000000000000000000..9c09bc1e697ba199b8dcf3a7afb2ed03c18a51dd --- /dev/null +++ b/packages/ui/src/components/meta-etape.vue @@ -0,0 +1,70 @@ +<template> + <Metas title="Étape" :definitions-tree="definitionsTree" /> +</template> + +<script lang="ts"> +import { defineComponent } from 'vue' +import Metas from '@/components/metas/meta-page-template.vue' + +export default defineComponent({ + components: { + Metas + }, + + data() { + return { + definitionsTree: { + id: 'etapes-types', + foreignKey: 'etapeTypeId', + definitions: [ + { + id: 'etapes-statuts', + foreignKey: 'etapeStatutId', + joinTable: 'etapes-types--etapes-statuts', + definitions: [] + }, + { + id: 'documents-types', + foreignKey: 'documentTypeId', + joinTable: 'etapes-types--documents-types', + definitions: [] + }, + { + id: 'documents-types', + foreignKey: 'documentTypeId', + joinTable: 'etapes-types--justificatifs-types', + definitions: [] + }, + { + id: 'titres-types', + foreignKey: 'titreTypeId', + definitions: [ + { + id: 'demarches-types', + foreignKey: 'demarcheTypeId', + joinTable: 'titres-types--demarches-types--etapes-types', + definitions: [ + { + id: 'documents-types', + foreignKey: 'documentTypeId', + joinTable: + 'titres-types--demarches-types--etapes-types--documents-types', + definitions: [] + }, + { + id: 'documents-types', + foreignKey: 'documentTypeId', + joinTable: + 'titres-types--demarches-types--etapes-types--justificatifs-types', + definitions: [] + } + ] + } + ] + } + ] + } + } + } +}) +</script> diff --git a/packages/ui/src/components/meta-titre.vue b/packages/ui/src/components/meta-titre.vue new file mode 100644 index 0000000000000000000000000000000000000000..6f181689afb098d9de03278aed510dde257c2087 --- /dev/null +++ b/packages/ui/src/components/meta-titre.vue @@ -0,0 +1,58 @@ +<template> + <Metas title="Titre" :definitions-tree="definitionsTree" /> +</template> + +<script lang="ts"> +import { defineComponent } from 'vue' +import Metas from '@/components/metas/meta-page-template.vue' + +export default defineComponent({ + components: { + Metas + }, + + data() { + return { + definitionsTree: { + id: 'titres-types', + foreignKey: 'titreTypeId', + definitions: [ + { + id: 'titres-statuts', + foreignKey: 'titreStatutId', + joinTable: 'titre-types--titres-statuts' + }, + { + id: 'demarches-types', + foreignKey: 'demarcheTypeId', + joinTable: 'titres-types--demarches-types', + definitions: [ + { + id: 'etapes-types', + foreignKey: 'etapeTypeId', + joinTable: 'titres-types--demarches-types--etapes-types', + definitions: [ + { + id: 'documents-types', + foreignKey: 'documentTypeId', + joinTable: + 'titres-types--demarches-types--etapes-types--documents-types', + definitions: [] + }, + { + id: 'documents-types', + foreignKey: 'documentTypeId', + joinTable: + 'titres-types--demarches-types--etapes-types--justificatifs-types', + definitions: [] + } + ] + } + ] + } + ] + } + } + } +}) +</script> diff --git a/packages/ui/src/components/meta.vue b/packages/ui/src/components/meta.vue new file mode 100644 index 0000000000000000000000000000000000000000..a6806c7cc9182749f9c22a7b6c6cfa51b4c8cc02 --- /dev/null +++ b/packages/ui/src/components/meta.vue @@ -0,0 +1,198 @@ +<template> + <Loader v-if="!loaded" /> + <div v-else> + <router-link :to="{ name: 'metas' }"> + <h5>Métas</h5> + </router-link> + <h1> + <span class="cap-first">{{ definition.nom }}</span> + </h1> + + <div class="line-neutral width-full" /> + + <div class="mb-xxl width-full-p"> + <div> + <div class="overflow-scroll-x mb"> + <table> + <tr> + <th + v-for="colonne in definition.colonnes" + :key="colonne.id" + class="min-width-5" + :class="colonne.class" + > + {{ colonne.nom }} + </th> + <th v-if="definition.delete || definition.create" /> + </tr> + + <tr v-if="definition.create"> + <td + v-for="colonne in definition.colonnes" + :key="colonne.id" + :class="colonne.class" + > + <MetaInput v-model:element="elementNew" :colonne="colonne"> + </MetaInput> + </td> + <td> + <ButtonPlus :disabled="!elementNewComplete" @click="create" /> + </td> + </tr> + + <tr v-for="element in elements" :key="elementKeyFind(element)"> + <td v-for="colonne in definition.colonnes" :key="colonne.id"> + <template v-if="definition.update"> + <div v-if="colonne.type === 'entities'"> + {{ entityIdLabelGet(colonne, element[colonne.id]) }} + </div> + <MetaLabelOrInput + v-else + :colonne="colonne" + :element="element" + @update="update" + > + </MetaLabelOrInput> + </template> + <div v-else>{{ element[colonne.id] }}</div> + </td> + <td v-if="definition.delete || definition.create"> + <button + v-if="definition.delete" + class="btn p-xs rnd-xs" + @click="remove(element)" + > + <i class="icon-24 icon-minus" /> + </button> + </td> + </tr> + </table> + </div> + </div> + </div> + </div> +</template> + +<script> +import Loader from './_ui/loader.vue' +import metasIndex from '../store/metas-definitions' +import MetaLabelOrInput from './metas/meta-label-or-input.vue' +import MetaInput from './metas/meta-input.vue' +import ButtonPlus from './_ui/button-plus.vue' + +export default { + components: { + Loader, + MetaLabelOrInput, + MetaInput, + ButtonPlus + }, + + data() { + return { + elementNew: {} + } + }, + + computed: { + id() { + return this.$route.params.id + }, + + elements() { + return this.$store.getters['meta/elements'](this.id) + }, + + definition() { + return metasIndex[this.id] + }, + + entities() { + return this.$store.state.meta.elementsIndex + }, + + user() { + return this.$store.state.user.element + }, + + loaded() { + return !!this.elements + }, + + elementNewComplete() { + return this.definition.colonnes.every( + c => !!this.elementNew[c.id] || c.optional + ) + } + }, + + watch: { + '$route.params.id': function (id) { + if (this.$route.name === 'meta' && id) { + this.get() + } + }, + + user: 'get' + }, + + created() { + this.get() + }, + + beforeUnmount() { + this.$store.commit('meta/reset') + }, + + methods: { + async get() { + if (!this.user || !this.user.sections || !this.user.sections.metas) { + await this.$store.dispatch('pageError') + } else { + await this.$store.dispatch('meta/get', this.id) + } + }, + + async update(content, element, colonneId) { + await this.$store.dispatch('meta/update', { + id: this.id, + partialElement: { [colonneId]: content }, + element + }) + }, + + async create() { + await this.$store + .dispatch('meta/create', { + id: this.id, + element: this.elementNew, + joinTable: this.id, + foreignKey: 'id' + }) + .then(_ => { + this.elementNew = {} + }) + }, + + async remove(element) { + await this.$store.dispatch('meta/delete', { + id: this.id, + element + }) + }, + + elementKeyFind(element) { + if (!this.definition.ids) return element.id + + return this.definition.ids.map(id => element[id]).join('-') + }, + + entityIdLabelGet(colonne, entityId) { + const entity = this.entities[colonne.entities]?.find( + ({ id }) => entityId === id + ) + return entity ? metasIndex[colonne.entities].labelGet(entity) : '' + } + } +} +</script> diff --git a/packages/ui/src/components/metas.vue b/packages/ui/src/components/metas.vue new file mode 100644 index 0000000000000000000000000000000000000000..da7c73732a2128cdbcba794b9cf3f0efddf1b703 --- /dev/null +++ b/packages/ui/src/components/metas.vue @@ -0,0 +1,82 @@ +<template> + <Liste + nom="métas" + :colonnes="colonnes" + :lignes="lignes" + :elements="metas" + :params="params" + :total="metas.length" + :initialized="initialized" + @params-update="paramsUpdate" + /> +</template> + +<script> +import Liste from './_common/liste.vue' +import { metasColonnes, metasLignesBuild } from './metas/table' + +export default { + name: 'Metas', + + components: { Liste }, + + data() { + return { + colonnes: metasColonnes, + visible: false + } + }, + + computed: { + user() { + return this.$store.state.user.element + }, + + metas() { + return this.$store.getters['metas/elements'] + }, + + preferences() { + return this.$store.state.metas.preferences + }, + + params() { + return this.$store.state.metas.params + }, + + lignes() { + return metasLignesBuild(this.metas) + }, + + initialized() { + return this.$store.state.metas.initialized + } + }, + + watch: { + user: 'init' + }, + + async created() { + await this.init() + }, + + unmounted() { + this.$store.commit('metas/reset') + }, + + methods: { + async init() { + if (!this.user || !this.user.sections || !this.user.sections.metas) { + await this.$store.dispatch('pageError') + } else { + this.visible = true + } + }, + + async paramsUpdate(options) { + await this.$store.dispatch(`metas/paramsSet`, options) + } + } +} +</script> diff --git a/packages/ui/src/components/metas/definition-edit.vue b/packages/ui/src/components/metas/definition-edit.vue new file mode 100644 index 0000000000000000000000000000000000000000..7193e218fbfa478ca32cb52f8e093f22a6799e51 --- /dev/null +++ b/packages/ui/src/components/metas/definition-edit.vue @@ -0,0 +1,248 @@ +<template> + <Loader v-if="!loaded" /> + <template v-else> + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h4>{{ title }}</h4> + </div> + + <div class="mb tablet-blob-2-3" :class="{ flex: hasButtonPlus }"> + <select :value="elementSelected?.id" class="p-s" @change="selectChange"> + <option + v-for="element in elements" + :key="element.id" + :value="element.id" + > + {{ labelGet(element) }} + </option> + </select> + + <span class="ml-m"> + <ButtonPlus v-if="hasButtonPlus" @click="elementCreate" /> + </span> + </div> + </div> + + <div v-if="elementSelected" class="mb-xl"> + <div + v-if="rootComponent || definitionsTree.joinTable" + class="rnd-s border p-m" + > + <div class="tablet-blobs"> + <div + v-for="colonne of colonnesToEdit" + :key="colonne.id" + class="tablet-blob-1-2" + > + <div class="tablet-blobs mb-s"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5> + {{ colonne.nom }} + </h5> + </div> + <div class="tablet-blob-2-3"> + <MetaLabelOrInput + :colonne="colonne" + :element="elementToEdit" + @update="update" + > + </MetaLabelOrInput> + </div> + </div> + </div> + </div> + <div class="flex blobs pr-m"> + <button + v-if="definition.delete" + class="btn py-s px-m btn rnd-xs p-s flex-right" + title="supprimer" + @click="elementDelete(elementToEdit)" + > + <i class="icon-24 icon-trash" /> + </button> + </div> + </div> + <div + v-for="definitionChild of definitionsTree.definitions" + :key="definitionChild.joinTable" + class="pl-l" + > + <span class="separator" /> + <DefinitionEdit + :definitions-tree="definitionChild" + :foreign-keys="foreignKeysNew" + :root-component="false" + /> + </div> + </div> + </template> +</template> + +<script lang="ts"> +import { defineComponent } from 'vue' +import metasIndex from '@/store/metas-definitions' +import MetaCreatePopup from './meta-create-popup.vue' +import MetaLabelOrInput from '@/components/metas/meta-label-or-input.vue' +import ButtonPlus from '@/components/_ui/button-plus.vue' +import Loader from '@/components/_ui/loader.vue' + +export default defineComponent({ + name: 'DefinitionEdit', + components: { + MetaLabelOrInput, + ButtonPlus, + Loader + }, + props: { + definitionsTree: { type: Object, required: true }, + foreignKeys: { type: Object, default: () => ({}) }, + rootComponent: { type: Boolean, default: true } + }, + data() { + return { + loaded: false + } + }, + computed: { + hasButtonPlus() { + return ( + this.definition.create && + !this.rootComponent && + this.definitionsTree.joinTable + ) + }, + title() { + return ( + this.definition.colonnes.find( + colonne => colonne.id === this.definitionsTree.foreignKey + )?.nom || this.definition.nom + ) + }, + elementSelected() { + return this.$store.getters['meta/elementSelected']( + this.definitionsTree.joinTable || this.definitionsTree.id + ) + }, + definition() { + return metasIndex[ + this.definitionsTree.joinTable + ? this.definitionsTree.joinTable + : this.definitionsTree.id + ] + }, + elements() { + if (!this.definitionsTree.joinTable) { + // si pas de table de jointure on peut directement charger les éléments + return this.$store.getters['meta/elements'](this.definitionsTree.id) + } + // via une table de jointure + const elementIdsFiltered = this.$store.getters['meta/elements']( + this.definitionsTree.joinTable + ) + // on garde les lignes en fonction des éléments déjà sélectionnés + .filter(joinRow => + Object.keys(this.foreignKeys).every( + foreignKey => joinRow[foreignKey] === this.foreignKeys[foreignKey] + ) + ) + .map(joinRow => joinRow[this.definitionsTree.foreignKey]) + + return ( + this.$store.getters['meta/elements'](this.definitionsTree.id)?.filter( + ({ id }) => elementIdsFiltered.includes(id) + ) || [] + ) + }, + + colonnesToEdit() { + return this.definition.colonnes + .filter(colonne => colonne.id !== 'id') + .filter(colonne => colonne.type !== 'entities') + }, + + elementToEdit() { + if (!this.definitionsTree.joinTable) { + return this.elementSelected + } + + return this.$store.getters['meta/elements']( + this.definitionsTree.joinTable + ).find(joinRow => + Object.keys(this.foreignKeysNew).every( + foreignKey => joinRow[foreignKey] === this.foreignKeysNew[foreignKey] + ) + ) + }, + + foreignKeysNew() { + return { + ...this.foreignKeys, + [this.definitionsTree.foreignKey]: this.elementSelected?.id + } + } + }, + + async created() { + const promises = [] + promises.push(this.$store.dispatch('meta/get', this.definitionsTree.id)) + if (this.definitionsTree.joinTable) { + promises.push( + this.$store.dispatch('meta/get', this.definitionsTree.joinTable) + ) + } + await Promise.all(promises) + this.loaded = true + }, + + async unmounted() { + await this.elementSelect(null) + }, + + methods: { + async selectChange(event) { + const elementId = event.target.value + const element = this.elements.find(({ id }) => id === elementId) + await this.elementSelect(element) + }, + async update(content: string, element: any, colonneId: string) { + await this.$store.dispatch('meta/update', { + id: this.definitionsTree.joinTable || this.definitionsTree.id, + partialElement: { [colonneId]: content }, + element + }) + }, + labelGet(element: any) { + return metasIndex[this.definitionsTree.id].labelGet(element) + }, + async elementSelect(element) { + await this.$store.dispatch('meta/elementSelect', { + id: this.definitionsTree.joinTable || this.definitionsTree.id, + element + }) + }, + async elementDelete(element) { + if ( + !window.confirm( + 'Voulez-vous supprimer cet élément ? Cette action ne peut pas être annulée.' + ) + ) + return + await this.$store.dispatch('meta/delete', { + id: this.definitionsTree.joinTable || this.definitionsTree.id, + element + }) + }, + async elementCreate() { + this.$store.commit('popupOpen', { + component: MetaCreatePopup, + props: { + id: this.definitionsTree.id, + joinTable: this.definitionsTree.joinTable || this.definitionsTree.id, + foreignKeys: this.foreignKeys, + foreignKey: this.definitionsTree.foreignKey + } + }) + } + } +}) +</script> diff --git a/packages/ui/src/components/metas/meta-create-popup.vue b/packages/ui/src/components/metas/meta-create-popup.vue new file mode 100644 index 0000000000000000000000000000000000000000..67ac9486553838bac6d657031e155a4ee21e9d94 --- /dev/null +++ b/packages/ui/src/components/metas/meta-create-popup.vue @@ -0,0 +1,148 @@ +<template> + <Popup :messages="messages"> + <template #header> + <div> + <h2 class="cap-first">Ajout d’une nouvelle méta</h2> + </div> + </template> + + <div class="blobs"> + <div + v-for="colonne of colonnesToEdit" + :key="colonne.id" + class="tablet-blob-1-2" + > + <div class="tablet-blobs mb-s"> + <div class="tablet-blob-1-3 pb-s"> + <h5> + {{ colonne.nom }} + </h5> + </div> + <div class="tablet-blob-2-3"> + <MetaInput + v-model:element="element" + :colonne="colonne" + :join-table="joinTable" + class="blob-1-2" + > + </MetaInput> + </div> + </div> + </div> + </div> + + <template #footer> + <div v-if="!loading" class="tablet-blobs"> + <div class="tablet-blob-1-3 mb tablet-mb-0"> + <button class="btn-border rnd-xs p-s full-x" @click="cancel"> + Annuler + </button> + </div> + <div class="tablet-blob-2-3"> + <button + ref="save-button" + class="btn btn-primary" + :disabled="!complete" + :class="{ disabled: !complete }" + @click="save" + > + Enregistrer + </button> + </div> + </div> + <div v-else class="p-s full-x bold">Enregistrement en cours…</div> + </template> + </Popup> +</template> + +<script lang="ts"> +import Popup from '../_ui/popup.vue' + +import { defineComponent } from 'vue' +import metasIndex from '@/store/metas-definitions' +import MetaInput from './meta-input.vue' + +export default defineComponent({ + name: 'CaminoMetaCreatePopup', + + components: { + Popup, + MetaInput + }, + + props: { + id: { type: String, required: true }, + foreignKeys: { type: Object, required: true }, + joinTable: { type: String, required: true }, + foreignKey: { type: String, required: true } + }, + + data() { + return { + element: {} + } + }, + + computed: { + loading() { + return this.$store.state.popup.loading + }, + + messages() { + return this.$store.state.popup.messages + }, + + colonnesToEdit() { + const keys = Object.keys(this.foreignKeys) + + return metasIndex[this.joinTable].colonnes.filter( + colonne => !keys.includes(colonne.id) + ) + }, + + complete() { + return metasIndex[this.joinTable].colonnes.every( + c => !!this.element[c.id] || c.optional + ) + } + }, + + created() { + this.element = { ...this.foreignKeys } + document.addEventListener('keyup', this.keyup) + }, + + beforeUnmount() { + document.removeEventListener('keyup', this.keyup) + }, + + methods: { + async save() { + if (this.complete) { + await this.$store.dispatch('meta/create', { + id: this.id, + element: this.element, + joinTable: this.joinTable, + foreignKey: this.foreignKey + }) + this.$store.commit('popupClose') + } + }, + + cancel() { + this.$store.commit('popupClose') + }, + + keyup(e) { + if ((e.which || e.keyCode) === 27) { + this.cancel() + } else if ((e.which || e.keyCode) === 13) { + if (this.complete) { + this.$refs['save-button'].focus() + this.save() + } + } + } + } +}) +</script> diff --git a/packages/ui/src/components/metas/meta-input.vue b/packages/ui/src/components/metas/meta-input.vue new file mode 100644 index 0000000000000000000000000000000000000000..9efd8362973a4294774be259e062eca8c9f8f1dc --- /dev/null +++ b/packages/ui/src/components/metas/meta-input.vue @@ -0,0 +1,101 @@ +<template> + <select + v-if="colonne.type === 'entities'" + v-model="element[colonne.id]" + class="py-xs px-s mb-s" + > + <option + v-for="entity in entitiesGet(colonne)" + :key="entity.id" + :value="entity.id" + > + {{ entityLabelGet(colonne, entity) }} + </option> + </select> + <input + v-else-if="colonne.type === Number" + v-model.number="element[colonne.id]" + type="number" + class="px-s py-xs mb-s text-right" + min="1" + /> + <InputDate + v-else-if="colonne.type === Date" + v-model="element[colonne.id]" + class="mb-s" + :padding="'px-s py-xs'" + /> + <input + v-else-if="colonne.type === Boolean" + v-model="element[colonne.id]" + type="checkbox" + class="px-s py-xs mb-s" + /> + <select + v-else-if="colonne.type === Array" + v-model="element[colonne.id]" + class="py-xs px-s mb-s" + > + <option v-for="el in colonne.elements" :key="el" :value="el"> + {{ el }} + </option> + </select> + <textarea + v-else-if="colonne.type === String || colonne.type === 'json'" + v-model="element[colonne.id]" + rows="1" + class="px-s py-xs mb-s" + /> + <input + v-else + v-model="element[colonne.id]" + type="text" + class="px-s py-xs mb-s" + /> +</template> + +<script lang="ts"> +import { defineComponent } from 'vue' +import InputDate from '@/components/_ui/input-date.vue' +import metasIndex from '@/store/metas-definitions' + +export default defineComponent({ + components: { InputDate }, + props: { + colonne: { type: Object, required: true }, + element: { type: Object, required: true }, + joinTable: { type: String, default: '' } + }, + + computed: { + entities() { + return this.$store.state.meta.elementsIndex + } + }, + + methods: { + entitiesGet(colonne) { + const entities = this.entities[colonne.entities] + if (!this.joinTable) { + return entities + } + + const definitions = metasIndex[this.joinTable] + const idsUsed = definitions.ids + ? this.entities[this.joinTable] + .filter(e => + definitions.ids.every( + id => id === colonne.id || e[id] === this.element[id] + ) + ) + .map(e => e[colonne.id]) + : [] + + return entities.filter(e => !idsUsed.includes(e.id)) + }, + entityLabelGet(colonne, entity) { + return entity ? metasIndex[colonne.entities].labelGet(entity) : '' + } + } +}) +</script> diff --git a/packages/ui/src/components/metas/meta-label-or-input.vue b/packages/ui/src/components/metas/meta-label-or-input.vue new file mode 100644 index 0000000000000000000000000000000000000000..26c9298302d08cfa32a1a0d3e83dcf9d41b73218 --- /dev/null +++ b/packages/ui/src/components/metas/meta-label-or-input.vue @@ -0,0 +1,62 @@ +<template> + <EditNumber + v-if="colonne.type === Number" + :value="element[colonne.id]" + @update="$emit('update', $event, element, colonne.id)" + /> + <EditDate + v-else-if="colonne.type === Date" + :value="element[colonne.id] || ''" + @update="$emit('update', $event, element, colonne.id)" + /> + <EditBoolean + v-else-if="colonne.type === Boolean" + :value="element[colonne.id] || false" + class="mt-m" + @update="$emit('update', $event, element, colonne.id)" + /> + <EditArray + v-else-if="colonne.type === Array" + :value="element[colonne.id] || ''" + :elements="colonne.elements" + @update="$emit('update', $event, element, colonne.id)" + /> + <EditJson + v-else-if="colonne.type === 'json'" + :value="element[colonne.id]" + @update="$emit('update', $event, element, colonne.id)" + /> + <EditString + v-else-if="colonne.type === String" + :value="element[colonne.id] || ''" + @update="$emit('update', $event, element, colonne.id)" + /> + <div v-else>{{ element[colonne.id] || '' }}</div> +</template> + +<script lang="ts"> +import { defineComponent } from 'vue' +import EditString from '@/components/_ui/edit-string.vue' +import EditNumber from '@/components/_ui/edit-number.vue' +import EditArray from '@/components/_ui/edit-array.vue' +import EditBoolean from '@/components/_ui/edit-boolean.vue' +import EditDate from '@/components/_ui/edit-date.vue' +import EditJson from '@/components/_ui/edit-json.vue' + +export default defineComponent({ + components: { + EditString, + EditNumber, + EditArray, + EditBoolean, + EditDate, + EditJson + }, + props: { + colonne: { type: Object, required: true }, + element: { type: Object, required: true } + }, + + emits: ['update'] +}) +</script> diff --git a/packages/ui/src/components/metas/meta-page-template.vue b/packages/ui/src/components/metas/meta-page-template.vue new file mode 100644 index 0000000000000000000000000000000000000000..27b4a69b48cf549ccad085eb07e7fb62a388a40c --- /dev/null +++ b/packages/ui/src/components/metas/meta-page-template.vue @@ -0,0 +1,43 @@ +<template> + <div class="desktop-blobs"> + <div class="desktop-blob-2-3"> + <router-link :to="{ name: 'metas' }"> + <h5>Métas</h5> + </router-link> + <h1> + <span class="cap-first">{{ title }}</span> + </h1> + </div> + </div> + + <div class="line-neutral width-full mb-m" /> + + <div class="mb-xxl"> + <DefinitionEdit :definitions-tree="definitionsTree" /> + </div> +</template> + +<script lang="ts"> +import { defineComponent } from 'vue' +import DefinitionEdit from '@/components/metas/definition-edit.vue' + +export default defineComponent({ + components: { + DefinitionEdit + }, + + props: { + title: { + type: String, + required: true, + default: '' + }, + + definitionsTree: { + type: Object, + required: true, + default: () => ({}) + } + } +}) +</script> diff --git a/packages/ui/src/components/metas/table.js b/packages/ui/src/components/metas/table.js new file mode 100644 index 0000000000000000000000000000000000000000..e1af0254fd18e7f9f529d15f299adad32f0b3718 --- /dev/null +++ b/packages/ui/src/components/metas/table.js @@ -0,0 +1,23 @@ +const metasColonnes = [ + { + id: 'nom', + name: 'Nom' + } +] + +const metasLignesBuild = metas => + metas.map(meta => { + const columns = { + nom: { value: meta.nom } + } + + const linkName = meta.linkName || 'meta' + + return { + id: meta.id, + link: { name: linkName, params: { id: meta.id } }, + columns + } + }) + +export { metasColonnes, metasLignesBuild } diff --git a/packages/ui/src/components/page/footer.vue b/packages/ui/src/components/page/footer.vue new file mode 100644 index 0000000000000000000000000000000000000000..31411a8768c65eac886067b343775bcefb5b214c --- /dev/null +++ b/packages/ui/src/components/page/footer.vue @@ -0,0 +1,152 @@ +<template> + <div class="tablet-blobs pt flex-align-items-stretch"> + <div class="tablet-blob-1 desktop-blob-1-3"> + <ul class="list-sans text-decoration-none li-sep mb-0"> + <li> + <a href="https://economie.gouv.fr/" + >Ministère de l'Économie, des Finances et de la Relance</a + > + </li> + <li> + <a href="https://ecologie.gouv.fr/" + >Ministère de la Transition écologique</a + > + </li> + <li> + <a href="https://onf.fr/">Office National des forêts</a> + </li> + <li> + <div class="blobs"> + <div class="blob-1-3"> + <img class="sponsor" src="/img/logo-fabriquenumerique.svg" /> + </div> + <div class="blob-2-3"> + <p class="h6 mb-0"> + La Fabrique numérique du Ministère de la Transition écologique, + membre du réseau + <a href="http://beta.gouv.fr">beta.gouv.fr</a>. + </p> + </div> + </div> + </li> + </ul> + </div> + + <div class="tablet-blob-1-2 desktop-blob-1-3"> + <ul class="list-prefix text-decoration-none li-mb-s mb-0"> + <li> + <router-link to="/contacts"> Contact </router-link> + </li> + <li> + <router-link to="/a-propos"> À propos </router-link> + </li> + <li> + <router-link to="/mentions-legales-cgu"> + Mentions légales et CGU + </router-link> + </li> + <li> + <router-link to="/accessibilite"> Accessibilité </router-link> + </li> + <li> + <router-link to="/contribution"> Contribution </router-link> + </li> + <li> + <a + href="https://www.dailymotion.com/camino-le-cadastre-minier" + target="_blank" + rel="noopener noreferrer" + > + Tutoriels + </a> + </li> + <li> + <a + href="https://docs.camino.beta.gouv.fr/" + target="_blank" + rel="noopener noreferrer" + > + Open data et documentation + </a> + </li> + </ul> + </div> + + <div class="tablet-blob-1-2 desktop-blob-1-3 flex flex-direction-column"> + <NewsletterForm v-if="newsletterForm" class="mb-xxs" /> + <ul class="list-prefix text-decoration-none li-mb-s"> + <li> + <a + href="http://www.mineralinfo.fr/" + target="_blank" + rel="noopener noreferrer" + > + MineralInfo + </a> + </li> + <li> + <a + href="http://www.minergies.fr/" + target="_blank" + rel="noopener noreferrer" + > + Minergies + </a> + </li> + </ul> + + <p class="h6 flex-bottom"> + <a + href="https://github.com/MTES-MCT/camino-ui/blob/master/CHANGELOG.md" + target="_blank" + rel="noopener noreferrer" + class="text-decoration-none" + > + UI v.{{ versionUi }} + </a> + | + <a + href="https://github.com/MTES-MCT/camino-api/blob/master/CHANGELOG.md" + target="_blank" + rel="noopener noreferrer" + class="text-decoration-none" + > + API v.{{ versionApi }} + </a> + </p> + </div> + </div> + + <div + data-tf-popover="qqGEhNhT" + data-tf-button-color="#000091" + data-tf-button-text="Launch me" + data-tf-iframe-props="title=Satisfaction_CAMINO" + data-tf-medium="snippet" + style="all: unset" + ></div> +</template> + +<script> +import NewsletterForm from './footer/newsletter-form.vue' + +export default { + components: { + NewsletterForm + }, + + computed: { + versionApi() { + return this.$store.state.user.metas.version + }, + + versionUi() { + return this.$store.state.user.metas.versionUi + }, + + newsletterForm() { + return !this.$store.state.user.element?.newsletter + } + } +} +</script> diff --git a/packages/ui/src/components/page/footer/newsletter-form.vue b/packages/ui/src/components/page/footer/newsletter-form.vue new file mode 100644 index 0000000000000000000000000000000000000000..a98ad96d4b9a3d673199ae72426a7be63db889a0 --- /dev/null +++ b/packages/ui/src/components/page/footer/newsletter-form.vue @@ -0,0 +1,37 @@ +<template> + <div> + <h5>Newsletter</h5> + + <div class="blobs-mini mb"> + <div class="blob-mini-2-3"> + <input + v-model="email" + type="text" + placeholder="Email" + class="p-s rnd-l-xs small" + /> + </div> + <div class="blob-mini-1-3"> + <button class="btn rnd-r-xs p-s full-x small" @click="subscribe"> + S'inscrire + </button> + </div> + </div> + </div> +</template> + +<script> +export default { + data() { + return { + email: '' + } + }, + + methods: { + async subscribe() { + await this.$store.dispatch('user/newsletterSubscribe', this.email) + } + } +} +</script> diff --git a/packages/ui/src/components/page/header.vue b/packages/ui/src/components/page/header.vue new file mode 100644 index 0000000000000000000000000000000000000000..2dfd5de875c54b606569670da2b864f336c6b622 --- /dev/null +++ b/packages/ui/src/components/page/header.vue @@ -0,0 +1,70 @@ +<template> + <div class="tablet-blobs header-blobs mb"> + <div class="tablet-blob-1-3 flex"> + <div v-if="!apiError && loaded" class="flex-right"> + <div class="mt-m tablet-mb-m flex"> + <div class="ml-xs flex"> + <UserButton /> + </div> + <div class="ml-xs"> + <MenuButton /> + </div> + </div> + </div> + </div> + + <div class="tablet-blob-2-3 pt-m"> + <router-link + v-if="$route.name !== 'titres'" + :to="{ name: 'titres' }" + class="flex text-decoration-none" + > + <img src="/img/logo-rf.svg" class="logo mr" /> + <div> + <p class="mb-0 mt-xs title"> + camino<span class="color-neutral">.beta.gouv.fr</span> + </p> + <p class="h6 mb-0 bold color-text"> + Le cadastre minier numérique ouvert + </p> + </div> + </router-link> + + <span v-else class="flex"> + <img src="/img/logo-rf.svg" class="logo mr" /> + <div> + <p class="mb-0 mt-xs title"> + camino<span class="color-neutral">.beta.gouv.fr</span> + </p> + <p class="h6 mb-0 bold color-text"> + Le cadastre minier numérique ouvert + </p> + </div> + </span> + </div> + </div> +</template> + +<script> +import UserButton from '../user/button.vue' +import MenuButton from '../menu/button.vue' + +export default { + name: 'PageHeader', + + components: { + UserButton, + MenuButton + }, + + props: { + loaded: { type: Boolean, default: false } + }, + + computed: { + apiError() { + return this.$store.state.apiError + } + } +} +</script> diff --git a/packages/ui/src/components/page/strike.vue b/packages/ui/src/components/page/strike.vue new file mode 100644 index 0000000000000000000000000000000000000000..c79a081989525f110cb2a96bc7ee1f3d6a9ebbd9 --- /dev/null +++ b/packages/ui/src/components/page/strike.vue @@ -0,0 +1,17 @@ +<template> + <div class="tablet-flex"> + <div> + <i class="icon-48 icon-announcement mr mb tablet-mb-0" /> + </div> + <div> + <p class="strong mb-0"> + En raison d’un mouvement social national interprofessionnel, <br /> + le service est susceptible d'être perturbé pendant les prochains jours. + </p> + </div> + </div> +</template> + +<script> +export default {} +</script> diff --git a/packages/ui/src/components/statistiques.vue b/packages/ui/src/components/statistiques.vue new file mode 100644 index 0000000000000000000000000000000000000000..4ac41f0a255196571b90e77c9985ca1456977416 --- /dev/null +++ b/packages/ui/src/components/statistiques.vue @@ -0,0 +1,52 @@ +<template> + <div> + <h1 class="mt-m">Statistiques</h1> + <div class="flex"> + <div + v-for="tab in tabs" + :key="tab.id" + class="mr-xs" + :class="{ active: tabActive === tab.id }" + > + <router-link :to="{ name: tab.name }" class="p-m btn-tab rnd-t-s"> + {{ tab.nom }} + </router-link> + </div> + </div> + <div class="line-neutral width-full" /> + + <Router-view v-if="tabActive" /> + </div> +</template> + +<script> +export default { + name: 'Statistiques', + + data() { + return { + tabs: [ + { id: 'globales', nom: 'Globales', name: 'statistiques-globales' }, + { id: 'guyane', nom: 'Guyane', name: 'statistiques-guyane' }, + { + id: 'granulats-marins', + nom: 'Granulats marins', + name: 'statistiques-granulats-marins' + } + ] + } + }, + + computed: { + tabActive() { + return this.$route.name.replace(/statistiques-/, '') + } + }, + + created() { + if (this.$route.name === 'statistiques') { + this.$router.replace({ name: 'statistiques-globales' }) + } + } +} +</script> diff --git a/packages/ui/src/components/statistiques/_utils.js b/packages/ui/src/components/statistiques/_utils.js new file mode 100644 index 0000000000000000000000000000000000000000..9c78bd25f3e1e06fdad8142e97723ea2399dc32b --- /dev/null +++ b/packages/ui/src/components/statistiques/_utils.js @@ -0,0 +1,76 @@ +const suggestedMaxCalc = (annees, ids) => + Math.max( + ...annees.reduce((acc, annee) => { + acc.push(...ids.map(id => annee[id].quantite)) + + return acc + }, []) + ) + +const statsBarFormat = ({ + annees, + id, + bar, + line, + labelX, + labelBar, + labelLine +}) => + annees.reduce( + (acc, stats) => { + acc.labels.push(stats[labelX]) + const dataLine = id ? stats[id][line] : stats[line] + const dataBar = id ? stats[id][bar] : stats[bar] + acc.datasets[0].data.push(dataLine) + acc.datasets[1].data.push(dataBar) + + return acc + }, + { + labels: [], + datasets: [ + { + type: 'line', + label: labelLine, + data: [], + yAxisID: 'line', + fill: 'start', + tension: 0.5, + backgroundColor: 'rgba(55, 111, 170, 0.2)', + borderColor: 'rgb(55, 111, 170)' + }, + { + type: 'bar', + label: labelBar, + yAxisID: 'bar', + data: [], + backgroundColor: 'rgb(118, 182, 189)' + } + ] + } + ) + +const statsLineFormat = ({ stats, id, labelX, labelY }) => + stats.reduce( + (acc, stat) => { + acc.labels.push(stat[labelX]) + acc.datasets[0].data.push(stat[id]) + + return acc + }, + { + labels: [], + datasets: [ + { + label: labelY, + data: [], + fill: 'start', + tension: 0.5, + backgroundColor: 'rgba(118, 182, 189, 0.2)', + borderColor: 'rgb(118, 182, 189)' + } + ] + } + ) + +export { suggestedMaxCalc, statsBarFormat, statsLineFormat } diff --git a/packages/ui/src/components/statistiques/globales.vue b/packages/ui/src/components/statistiques/globales.vue new file mode 100644 index 0000000000000000000000000000000000000000..2209aea46c128d635eb2e9ccf2856e96f4b543c9 --- /dev/null +++ b/packages/ui/src/components/statistiques/globales.vue @@ -0,0 +1,236 @@ +<template> + <Loader v-if="!loaded" class="content" /> + <div v-else class="content"> + <div id="engagement" class="mb-xxl"> + <h2 class="mt">Engagement général sur le site</h2> + <span class="separator" /> + <p class="mb-xl"> + Les données retenues ici témoignent du comportement général des + utilisateurs sur le site et de leur engagement auprès du service + </p> + <div class="tablet-float-blobs clearfix"> + <div class="tablet-float-blob-1-3"> + <div class="mb-xl mt"> + <p class="h0 text-center"> + {{ numberFormat(recherches) }} + </p> + <p class="bold text-center"> + recherches effectuées le mois dernier + </p> + <p> + Le nombre de recherches mensuelles est l'indicateur clé de + l'utilisation du service de "cadastre minier" + </p> + </div> + + <div class="mb-xl"> + <p class="h0 text-center"> + {{ Math.round(statistiques.actions) }} + </p> + <p class="bold text-center"> + nombre moyen d'actions effectuées par utilisateur + </p> + </div> + + <div class="mb-xl"> + <p class="h0 text-center">{{ statistiques.sessionDuree }} min</p> + <p class="bold text-center"> + temps de session moyen par utilisateur + </p> + </div> + </div> + <div class="tablet-float-blob-2-3 mb-xxl"> + <LineChart + :data=" + statsLineFormat({ + stats: statistiques['recherches'], + labelY: 'recherches', + labelX: 'mois', + id: 'quantite' + }) + " + /> + </div> + </div> + </div> + + <div id="amelioration" class="mb-xxl content"> + <h2>Amélioration continue et accès aux données publiques</h2> + <span class="separator" /> + <p class="mb-xl"> + En tant que secteur régulé par l'État, la publication en ligne des + données minières doit permettre leur amélioration et leur utilisation + par la communauté + </p> + <div class="tablet-float-blobs clearfix"> + <div class="tablet-float-blob-1-3 mb-xl"> + <p class="h0 text-center"> + {{ titresModifies }} + </p> + <p class="bold text-center"> + mise à jour de titres miniers par l'administration et les + entreprises du secteur le mois dernier + </p> + <p> + Le nombre de mises à jour mensuelles du cadastre par les différents + services de l'administration ou par les professionnels du secteur + reflète l'intensité de l'activité d'instruction et administrative + sur le domaine minier en France. Une mise à jour peut être l'ajout + d'un titre, une modification de son statut ou des documents + concernant son instruction. + </p> + </div> + <div class="tablet-float-blob-2-3 mb-xxl"> + <LineChart + :data=" + statsLineFormat({ + stats: statistiques['titresModifies'], + labelY: 'titres modifiés', + labelX: 'mois', + id: 'quantite' + }) + " + /> + </div> + </div> + <div class="desktop-blobs"> + <div class="desktop-blob-1-3 mb-xl"> + <p class="h0 text-center"> + {{ statistiques.telechargements }} + </p> + <p class="bold text-center"> + téléchargements de pièces relatives à la bonne instruction des + titres et autorisations miniers le mois dernier + </p> + </div> + <div class="desktop-blob-1-3 mb-xl"> + <p class="h0 text-center"> + {{ statistiques.signalements }} + </p> + <p class="bold text-center"> + erreurs corrigées sur les bases de données de l'État grâce à la + participation des utilisateurs + </p> + </div> + <div class="desktop-blob-1-3 mb-xl"> + <p class="h0 text-center"> + {{ statistiques.reutilisations }} + </p> + <p class="bold text-center"> + réutilisations connues des données ouvertes distribuées + </p> + </div> + </div> + </div> + + <div id="gains" class="mb-xxl"> + <h2>Gains de la dématérialisation sur l'instruction minière</h2> + <span class="separator" /> + <p> + La dématérialisation des démarches relatives à l'instruction minière + doit permettre un gain de temps pour ceux qui les effectuent et ceux qui + les instruisent + </p> + <div class="desktop-blobs"> + <div class="desktop-blob-1-3 mb-xl"> + <p class="h0 text-center"> + {{ statistiques.demarches }} + </p> + <p class="bold text-center"> + démarches effectuées en ligne cette année + </p> + </div> + <div class="desktop-blob-1-3 mb-xl"> + <p class="h0 text-center"> + {{ statistiques.titresActivitesBeneficesEntreprise }} + </p> + <p class="bold text-center"> + jours de travail sans valeur ajoutée économisés par les entreprises + en Guyane + </p> + <p> + La dématérialisation d’un rapport trimestriel d’activité de + production d’or en Guyane permet en moyenne l’économie de 2 heures + de travail de saisie ou de déplacement pour son dépôt physique à + l’administration. + </p> + </div> + <div class="desktop-blob-1-3 mb-xl"> + <p class="h0 text-center"> + {{ statistiques.titresActivitesBeneficesAdministration }} + </p> + <p class="bold text-center"> + jours de travail à faible valeur ajoutée économisés par + l’administration + </p> + <p> + La dématérialisation d’un rapport trimestriel d’activité de + production d’or en Guyane permet en moyenne l’économie d’une heure + de travail de traitement et re-saisie de données par un agent de + l’administration. Le gain de temps est réinvesti sur + l’accompagnement et le contrôle de l’activité. + </p> + </div> + </div> + </div> + </div> +</template> + +<script> +import Loader from '../_ui/loader.vue' +import LineChart from '../_charts/line.vue' +import numberFormat from '@/utils/number-format' +import { statsLineFormat } from './_utils' + +export default { + name: 'CaminoStatistiques', + + components: { Loader, LineChart }, + + data() { + return { + loaded: false + } + }, + + computed: { + statistiques() { + return this.$store.state.statistiques.globales + }, + + recherches() { + const recherches = this.statistiques.recherches + + return recherches[recherches.length - 1].quantite + }, + + titresModifies() { + const titresModifies = this.statistiques.titresModifies + + return titresModifies[titresModifies.length - 1].quantite + } + }, + + async created() { + await this.get() + }, + + methods: { + async get() { + await this.$store.dispatch('statistiques/get', 'globales') + + if (!this.loaded) { + this.loaded = true + } + }, + + statsLineFormat({ stats, id, labelX, labelY }) { + return statsLineFormat({ stats, id, labelX, labelY }) + }, + + numberFormat(number) { + return numberFormat(number) + } + } +} +</script> diff --git a/packages/ui/src/components/statistiques/granulats-marins-activite.vue b/packages/ui/src/components/statistiques/granulats-marins-activite.vue new file mode 100644 index 0000000000000000000000000000000000000000..7bb3ad93c09e7028d04162cee72e585b39ee8ad9 --- /dev/null +++ b/packages/ui/src/components/statistiques/granulats-marins-activite.vue @@ -0,0 +1,76 @@ +<template> + <div id="indicateurs"> + <p v-if="enConstruction" class="p-s bg-warning color-bg"> + Données en cours de collecte et consolidation + </p> + <div class="tablet-blobs"> + <div class="tablet-blob-1-2 mb-xl"> + <h4 class="text-center">Production nette en volume</h4> + <div v-if="statistiqueGranulatsMarins.activitesDeposesQuantite > 3"> + <p class="h0 text-center"> + {{ numberFormat(statistiqueGranulatsMarins.volume) }} + m³ + </p> + </div> + <div v-else> + <p class="h0 text-center">-</p> + </div> + </div> + <div class="tablet-blob-1-2 mb-xl"> + <h4 class="text-center">Production nette en masse</h4> + <div v-if="statistiqueGranulatsMarins.activitesDeposesQuantite > 3"> + <p class="h0 text-center"> + {{ numberFormat(statistiqueGranulatsMarins.masse) }} + t + </p> + </div> + <div v-else> + <p class="h0 text-center">-</p> + </div> + </div> + </div> + <div class="tablet-blobs"> + <div class="tablet-blob-1-2 mb-xl"> + <h4 class="text-center">Sources des données</h4> + <p class="h0 text-center"> + {{ + numberFormat(statistiqueGranulatsMarins.activitesDeposesQuantite) + }} + </p> + <p> + Rapports d’activité de production collectés via Camino utilisés pour + consolider ces statistiques. + </p> + </div> + <div class="tablet-blob-1-2 mb-xl"> + <h4 class="text-center">Taux de collecte</h4> + <p class="h0 text-center"> + {{ statistiqueGranulatsMarins.activitesDeposesRatio }} % + </p> + <p> + Des rapports d’activité de production attendus ont été déposés par les + opérateurs miniers pour consolider ces statistiques. + </p> + </div> + </div> + </div> +</template> + +<script> +import numberFormat from '@/utils/number-format' + +export default { + name: 'IndicateursActiviteGranulatsMarins', + + props: { + statistiqueGranulatsMarins: { type: Object, required: true }, + enConstruction: { type: Boolean, default: false } + }, + + methods: { + numberFormat(number) { + return numberFormat(number) + } + } +} +</script> diff --git a/packages/ui/src/components/statistiques/granulats-marins.vue b/packages/ui/src/components/statistiques/granulats-marins.vue new file mode 100644 index 0000000000000000000000000000000000000000..83074d0d50a7e1e5a9547040f47d5b368e7df41a --- /dev/null +++ b/packages/ui/src/components/statistiques/granulats-marins.vue @@ -0,0 +1,463 @@ +<template> + <Loader v-if="!loaded" class="content" /> + <div v-else class="content"> + <div id="etat" class="mb-xxl mt"> + <h2>État du domaine minier en temps réel</h2> + <span class="separator" /> + <p> + Les données affichées ici sont celles contenues dans la base de donnée + Camino. Elles sont susceptibles d’évoluer chaque jour au grès des + décisions et de la fin de validité des titres et autorisations. + </p> + <p> + Les surfaces cumulées concernées par un titre ou une autorisation + n’impliquent pas qu’elles sont effectivement explorées ou exploitées sur + tout ou partie de l'année. Les travaux miniers font l’objet de + déclarations ou d’autorisations distinctes portant sur une partie + seulement de la surface des titres miniers. + </p> + <div class="mb-xxl"> + <h3>Titres d’exploration</h3> + <hr /> + <div class="tablet-blobs"> + <div class="tablet-blob-1-3"> + <p class="h0 text-center"> + {{ statistiquesGranulatsMarins.titresInstructionExploration }} + </p> + <div + v-if=" + statistiquesGranulatsMarins.titresInstructionExploration > 1 + " + > + <p class="bold text-center"> + Demandes en cours d'instruction (initiale et modification en + instance) + </p> + </div> + <div v-else> + <p class="bold text-center"> + Demande en cours d'instruction (initiale et modification en + instance) + </p> + </div> + <p class="h6 text-center"> + <router-link + :to="{ + name: 'titres', + query: { + domainesIds: 'w', + typesIds: 'ar,ap,pr', + statutsIds: 'dmi,mod', + vueId: 'table' + } + }" + > + Voir les titres + </router-link> + </p> + </div> + <div class="tablet-blob-1-3"> + <p class="h0 text-center"> + {{ statistiquesGranulatsMarins.titresValPrw }} + </p> + <p class="bold text-center">Permis exclusifs de recherches</p> + <p class="h6 text-center"> + <router-link + :to="{ + name: 'titres', + query: { + domainesIds: 'w', + typesIds: 'pr', + statutsIds: 'val', + vueId: 'table' + } + }" + > + Voir les titres + </router-link> + </p> + </div> + <div class="tablet-blob-1-3"> + <p class="h0 text-center"> + {{ numberFormat(statistiquesGranulatsMarins.surfaceExploration) }} + ha + </p> + <p class="bold text-center"> + Surfaces cumulées des titres pouvant faire l'objet d'une activité + d’exploration + </p> + </div> + </div> + </div> + <div class="mb-xxl"> + <h3>Titres d’exploitation</h3> + <hr /> + <div class="tablet-blobs"> + <div class="tablet-blob-1-3"> + <p class="h0 text-center"> + {{ statistiquesGranulatsMarins.titresInstructionExploitation }} + </p> + <div + v-if=" + statistiquesGranulatsMarins.titresInstructionExploitation > 1 + " + > + <p class="bold text-center"> + Demandes en cours d'instruction (initiale et modification en + instance) + </p> + </div> + <div v-else> + <p class="bold text-center"> + Demande en cours d'instruction (initiale et modification en + instance) + </p> + </div> + <p class="h6 text-center"> + <router-link + :to="{ + name: 'titres', + query: { + domainesIds: 'w', + typesIds: 'ax,cx,px', + statutsIds: 'dmi,mod', + vueId: 'table' + } + }" + > + Voir les titres + </router-link> + </p> + </div> + <div class="tablet-blob-1-3"> + <p class="h0 text-center"> + {{ statistiquesGranulatsMarins.titresValCxw }} + </p> + <div v-if="statistiquesGranulatsMarins.titresValCxw > 1"> + <p class="bold text-center">Concessions</p> + </div> + <div v-else> + <p class="bold text-center">Concession</p> + </div> + <p class="h6 text-center"> + <router-link + :to="{ + name: 'titres', + query: { + domainesIds: 'w', + typesIds: 'cx', + statutsIds: 'val', + vueId: 'table' + } + }" + > + Voir les titres + </router-link> + </p> + </div> + <div class="tablet-blob-1-3"> + <p class="h0 text-center"> + {{ + numberFormat(statistiquesGranulatsMarins.surfaceExploitation) + }} + ha + </p> + <p class="bold text-center"> + Surfaces cumulées des titres pouvant faire l'objet d'une activité + d’exploitation + </p> + </div> + </div> + </div> + </div> + + <div class="line-neutral width-full mb" /> + + <h2>Production annuelle</h2> + <span class="separator" /> + <p class="mb-xl"> + Données contenues dans la base de données Camino, stabilisées pour l’année + n-1. + </p> + + <div class="tablet-pt-s pb-s"> + <BarChart + :data=" + statsBarFormat({ + annees: statsAnneesAfter2010, + bar: 'volume', + line: 'masse', + labelX: 'annee', + labelBar: 'Volume en m³', + labelLine: 'Tonnage' + }) + " + :suggested-max="suggestedMaxProduction" + /> + </div> + + <div class="line-neutral width-full mb-xl" /> + <h5>Sélectionner une année</h5> + + <select v-model="anneeActive" class="p-s mb-l full" @change="anneeSelect"> + <option v-for="annee in annees" :key="annee.id" :value="annee.id"> + {{ annee.nom }} + </option> + </select> + + <GranulatsMarinsActivite + :statistique-granulats-marins="statistiques[anneeActive]" + :en-construction="annees.find(t => t.id === anneeActive).enConstruction" + class="mb-xxl" + /> + <div class="line-neutral width-full mb-xl" /> + + <div id="evolution" class="mb-xxl"> + <h2>Titres octroyés et surface</h2> + <span class="separator" /> + <p> + Données contenues dans la base de données Camino, concernant + exclusivement le territoire français. + </p> + <h3>Permis exclusif de recherche (PER) octroyés</h3> + <hr /> + <div class="tablet-float-blobs clearfix"> + <div class="tablet-float-blob-1-3 mb-xl mt"> + <p class="h0 text-center"> + {{ statistiques[anneeCurrent - 1].titresPrw.quantite }} + </p> + <p>Permis exclusifs de recherches octroyés l’an dernier</p> + </div> + <div class="tablet-float-blob-2-3 relative mb-xl"> + <BarChart + :data=" + statsBarFormat({ + annees: statistiquesGranulatsMarins.annees, + id: 'titresPrw', + bar: 'quantite', + line: 'surface', + labelX: 'annee', + labelBar: 'Permis de recherches', + labelLine: 'Surface des permis de recherches (ha)' + }) + " + :suggested-max="suggestedMaxTitres('titresPrw')" + /> + </div> + </div> + <div v-if="pexAnneeCurrent"> + <h3>Permis d'exploitation (PEX) octroyés</h3> + <hr /> + <div class="tablet-float-blobs clearfix"> + <div class="tablet-float-blob-1-3 mb-xl mt"> + <p class="h0 text-center"> + {{ statistiques[anneeCurrent - 1].titresPxw.quantite }} + </p> + <p>Permis d’exploitation octroyés l’an dernier</p> + </div> + <div class="tablet-float-blob-2-3 relative mb-xl"> + <BarChart + :data=" + statsBarFormat({ + annees: statistiquesGranulatsMarins.annees, + id: 'titresPxw', + bar: 'quantite', + line: 'surface', + labelX: 'annee', + labelBar: 'Permis d\'exploitation', + labelLine: 'Surface des permis d\'exploitation (ha)' + }) + " + :suggested-max="suggestedMaxTitres('titresPxw')" + /> + </div> + </div> + </div> + <h3>Concessions octroyées</h3> + <hr /> + <div class="tablet-float-blobs clearfix"> + <div class="tablet-float-blob-1-3 mb-xl mt"> + <p class="h0 text-center"> + {{ statistiques[anneeCurrent - 1].titresCxw.quantite }} + </p> + <p>Concessions octroyées l’an dernier</p> + </div> + <div class="tablet-float-blob-2-3 relative mb-xl"> + <BarChart + :data=" + statsBarFormat({ + annees: statistiquesGranulatsMarins.annees, + id: 'titresCxw', + bar: 'quantite', + line: 'surface', + labelX: 'annee', + labelBar: 'Concessions', + labelLine: 'Surfaces des concessions (ha)' + }) + " + :suggested-max="suggestedMaxTitres('titresCxw')" + /> + </div> + </div> + <h3>Concessions valides</h3> + <hr /> + <div class="tablet-float-blobs clearfix"> + <div class="tablet-float-blob-1-3 mb-xl mt"> + <p class="h0 text-center"> + {{ statistiques[anneeCurrent - 1].concessionsValides.quantite }} + </p> + <p>Concessions valides l’an dernier</p> + </div> + <div class="tablet-float-blob-2-3 relative mb-xl"> + <BarChart + :data=" + statsBarFormat({ + annees: statistiquesGranulatsMarins.annees, + id: 'concessionsValides', + bar: 'quantite', + line: 'surface', + labelX: 'annee', + labelBar: 'Concessions', + labelLine: 'Surfaces des concessions (ha)' + }) + " + :suggested-max="suggestedMaxTitres('concessionsValides')" + /> + </div> + </div> + </div> + </div> +</template> + +<script> +import Loader from '../_ui/loader.vue' +import GranulatsMarinsActivite from './granulats-marins-activite.vue' +import BarChart from '../_charts/bar.vue' +import { suggestedMaxCalc, statsBarFormat } from './_utils' +import numberFormat from '@/utils/number-format' + +export default { + name: 'TableauBordGranulatsMarins', + + components: { Loader, GranulatsMarinsActivite, BarChart }, + + data() { + return { + loaded: false, + anneeActive: 0 + } + }, + + computed: { + statistiquesGranulatsMarins() { + return this.$store.state.statistiques.granulatsMarins + }, + + statistiques() { + return this.statistiquesGranulatsMarins.annees.reduce( + (acc, statsAnnee) => { + acc[statsAnnee.annee] = statsAnnee + + return acc + }, + {} + ) + }, + + anneeCurrent() { + return new Date().getFullYear() + }, + + annees() { + return this.statsAnneesAfter2010.map(annee => { + const id = annee.annee + return { + id, + nom: id.toString(), + enConstruction: id === this.anneeCurrent - 1 // l'année en cours n'étant pas affichée, seule l'année précédente est affichée à partir du 1er avril de l'année courante + } + }) + }, + + suggestedMaxProduction() { + return Math.max(...this.statsAnneesAfter2010.map(annee => annee.volume)) + }, + + statsAnneesAfter2010() { + const statsAnneesAfter2010 = + this.statistiquesGranulatsMarins.annees.filter( + annee => annee.annee >= 2010 && annee.annee < this.anneeCurrent + ) + + // affichage des données de l'année n-2 à partir du 1er avril de l'année en cours + const toggleDate = new Date(this.anneeCurrent, 3, 1) + const beforeToggleDate = + Date.parse(new Date()) < Date.parse(toggleDate.toString()) + + return beforeToggleDate + ? statsAnneesAfter2010.filter( + annee => annee.annee < this.anneeCurrent - 1 + ) + : statsAnneesAfter2010 + }, + + pexAnneeCurrent() { + const statistiquesGranulatsMarinsAnneeCurrent = + this.statistiquesGranulatsMarins.annees.find( + annee => annee.annee === this.anneeCurrent + ) + return statistiquesGranulatsMarinsAnneeCurrent.titresPxw.quantite > 0 + } + }, + + async created() { + this.anneeActive = this.anneeCurrent - 2 + await this.get() + }, + + methods: { + async get() { + await this.$store.dispatch('statistiques/get', 'granulatsMarins') + + if (!this.loaded) { + this.loaded = true + } + }, + + anneeSelect(event) { + this.anneeActive = Number(event.target.value) + }, + + statsBarFormat({ annees, id, bar, line, labelX, labelBar, labelLine }) { + return statsBarFormat({ + annees, + id, + bar, + line, + labelX, + labelBar, + labelLine + }) + }, + + numberFormat(number) { + return numberFormat(number) + }, + + suggestedMaxTitres(titreType) { + const annees = this.statistiquesGranulatsMarins.annees + const ids = ['titresPrw', 'titresPxw', 'titresCxw', 'concessionsValides'] + // si le nombre maximum de titres est inférieur à 10 + if ( + titreType && + ids.includes(titreType) && + Math.max(...annees.map(annee => annee[titreType].quantite)) <= 10 + ) { + return 10 + } + + return suggestedMaxCalc(annees, ids) + } + } +} +</script> diff --git a/packages/ui/src/components/statistiques/guyane-activite.vue b/packages/ui/src/components/statistiques/guyane-activite.vue new file mode 100644 index 0000000000000000000000000000000000000000..84dc680add023a191000784df4dc421a4d417185 --- /dev/null +++ b/packages/ui/src/components/statistiques/guyane-activite.vue @@ -0,0 +1,111 @@ +<template> + <div id="indicateurs"> + <p v-if="enConstruction" class="p-s bg-warning color-bg"> + Données en cours de collecte et consolidation + </p> + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 mb-xl"> + <h4 class="text-center">Production d'or nette</h4> + <p class="h0 text-center"> + {{ numberFormat(statistiqueGuyane.orNet) }} kg + </p> + <p>Production d’or nette (après affinage) issue des mines en Guyane.</p> + </div> + <div class="tablet-blob-1-3 mb-xl"> + <h4 class="text-center">Energie consommée</h4> + <p class="h0 mb-s text-center"> + {{ + numberFormat( + statistiqueGuyane.carburantConventionnel + + statistiqueGuyane.carburantDetaxe + ) + }} + kl + </p> + <p class="bold text-center"> + dont + {{ numberFormat(statistiqueGuyane.carburantDetaxe) }} kl détaxés + </p> + <p>Volume de carburant consommé par les activités extractives.</p> + </div> + <div class="tablet-blob-1-3 mb-xl"> + <h4 class="text-center">Mercure collecté</h4> + <p class="h0 text-center"> + {{ numberFormat(statistiqueGuyane.mercure) }} kg + </p> + <p> + Masse de mercure d’origine anthropique historique ou illégale récupéré + lors de l’exploitation. + </p> + </div> + </div> + <div class="tablet-blobs"> + <div class="tablet-blob-1-2 mb-xl"> + <h4 class="text-center">Protection de l'environnement</h4> + <p class="h0 text-center"> + {{ numberFormat(statistiqueGuyane.environnementCout) }} € + </p> + <p> + Montant en euros des investissements * déclarés contribuant à la + protection de l’environnement. + </p> + <p> + <small + >* listés à l’article 318 C de l’annexe II du code général des + impôts.</small + > + </p> + </div> + <div class="tablet-blob-1-2 mb-xl"> + <h4 class="text-center">Emplois</h4> + <p class="h0 text-center"> + {{ numberFormat(statistiqueGuyane.effectifs) }} + </p> + <p> + Salariés mobilisés sur les exploitations minières (équivalent temps + plein). + </p> + </div> + </div> + <div class="tablet-blobs"> + <div class="tablet-blob-1-2 mb-xl"> + <h4 class="text-center">Sources des données</h4> + <p class="h0 text-center"> + {{ numberFormat(statistiqueGuyane.activitesDeposesQuantite) }} + </p> + <p> + Rapports d’activité de production collectés via Camino utilisés pour + consolider ces statistiques. + </p> + </div> + <div class="tablet-blob-1-2 mb-xl"> + <h4 class="text-center">Taux de collecte</h4> + <p class="h0 text-center"> + {{ statistiqueGuyane.activitesDeposesRatio }} % + </p> + <p> + Des rapports d’activité de production attendus ont été déposés par les + opérateurs miniers pour consolider ces statistiques. + </p> + </div> + </div> + </div> +</template> + +<script> +import numberFormat from '@/utils/number-format' +export default { + name: 'IndicateursActiviteGuyane', + + props: { + statistiqueGuyane: { type: Object, required: true }, + enConstruction: { type: Boolean, default: false } + }, + + methods: { + numberFormat(number) { + return numberFormat(number) + } + } +} +</script> diff --git a/packages/ui/src/components/statistiques/guyane.vue b/packages/ui/src/components/statistiques/guyane.vue new file mode 100644 index 0000000000000000000000000000000000000000..1a7976e5d3ac2ce7953a8a58cc38263fdea6e07c --- /dev/null +++ b/packages/ui/src/components/statistiques/guyane.vue @@ -0,0 +1,477 @@ +<template> + <Loader v-if="!loaded" class="content" /> + <div v-else class="content"> + <div id="etat" class="mb-xxl mt"> + <h2>État du domaine minier en temps réel</h2> + <span class="separator" /> + <p> + Les données affichées ici sont celles contenues dans la base de donnée + Camino. Elles sont susceptibles d’évoluer chaque jour au grès des + décisions et de la fin de validité des titres et autorisations. Ces + données concernent exclusivement le territoire guyanais. + </p> + <p> + Les surfaces cumulées concernées par un titre ou une autorisation + d’exploration et ou d’exploitation n’impliquent pas qu’elles sont + effectivement explorées ou exploitées sur tout ou partie de l'année. Les + travaux miniers font l’objet de déclarations ou d’autorisations + distinctes portant sur une partie seulement de la surface des titres + miniers. + </p> + <div class="mb-xxl"> + <h3>Autorisations et titres d’exploration</h3> + <hr /> + <div class="tablet-blobs"> + <div class="tablet-blob-1-4"> + <p class="h0 text-center"> + {{ statistiquesGuyane.titresArm }} + </p> + <p class="bold text-center">Autorisations de recherche</p> + <p class="h6 text-center"> + <router-link + :to="{ + name: 'titres', + query: { + domainesIds: 'm', + typesIds: 'ar', + statutsIds: 'val,mod', + territoires: 'guyane', + vueId: 'table' + } + }" + > + Voir les titres + </router-link> + </p> + </div> + <div class="tablet-blob-1-4"> + <p class="h0 text-center"> + {{ statistiquesGuyane.titresPrm }} + </p> + <p class="bold text-center">Permis exclusifs de recherches</p> + <p class="h6 text-center"> + <router-link + :to="{ + name: 'titres', + query: { + domainesIds: 'm', + typesIds: 'pr', + statutsIds: 'val,mod', + territoires: 'guyane', + vueId: 'table' + } + }" + > + Voir les titres + </router-link> + </p> + </div> + <div class="tablet-blob-1-2"> + <p class="h0 text-center"> + {{ numberFormat(statistiquesGuyane.surfaceExploration) }} ha + </p> + <p class="bold text-center"> + Surfaces cumulées des titres pouvant faire l'objet d'une activité + d’exploration + </p> + </div> + </div> + </div> + <div class="mb-xxl"> + <h3>Autorisations et titres d’exploitation</h3> + <hr /> + <div class="tablet-blobs"> + <div class="tablet-blob-1-4"> + <p class="h0 text-center"> + {{ statistiquesGuyane.titresAxm }} + </p> + <p class="bold text-center">Autorisations d'exploitation</p> + <p class="h6 text-center"> + <router-link + :to="{ + name: 'titres', + query: { + domainesIds: 'm', + typesIds: 'ax', + statutsIds: 'val,mod', + territoires: 'guyane', + vueId: 'table' + } + }" + > + Voir les titres + </router-link> + </p> + </div> + <div class="tablet-blob-1-4"> + <p class="h0 text-center"> + {{ statistiquesGuyane.titresPxm }} + </p> + <p class="bold text-center">Permis d'exploitation</p> + <p class="h6 text-center"> + <router-link + :to="{ + name: 'titres', + query: { + domainesIds: 'm', + typesIds: 'px', + statutsIds: 'val,mod', + territoires: 'guyane', + vueId: 'table' + } + }" + > + Voir les titres + </router-link> + </p> + </div> + <div class="tablet-blob-1-4"> + <p class="h0 text-center"> + {{ statistiquesGuyane.titresCxm }} + </p> + <p class="bold text-center">Concessions</p> + <p class="h6 text-center"> + <router-link + :to="{ + name: 'titres', + query: { + domainesIds: 'm', + typesIds: 'cx', + statutsIds: 'val,mod', + territoires: 'guyane', + vueId: 'table' + } + }" + > + Voir les titres + </router-link> + </p> + </div> + <div class="tablet-blob-1-4"> + <p class="h0 text-center"> + {{ numberFormat(statistiquesGuyane.surfaceExploitation) }} ha + </p> + <p class="bold text-center"> + Surfaces cumulées des titres pouvant faire l'objet d'une activité + d’exploitation + </p> + </div> + </div> + </div> + </div> + + <h2>Production et activité minière légales</h2> + <span class="separator" /> + <p class="mb-xl"> + Les données affichées ici sont celles contenues dans la base de donnée + Camino. Elles sont stabilisées pour l’année n-2 mais sont susceptibles + d’évoluer jusqu’à la cloture de la collecte des déclarations + règlementaires de l’année précédente et l'année en cours. Ces données + concernent exclusivement le territoire guyanais. + </p> + + <div class="flex"> + <div + v-for="tab in tabs" + :key="tab.id" + class="mr-xs" + :class="{ active: tabActive === tab.id }" + > + <div class="p-m btn-tab rnd-t-s" @click="tabToggle(tab.id)"> + {{ tab.nom }} + </div> + </div> + </div> + + <div class="line-neutral width-full mb" /> + <GuyaneActivite + :statistique-guyane="statistiques[tabActive]" + :en-construction="tabs.find(t => t.id === tabActive).enConstruction" + class="mb-xxl" + /> + <div class="line-neutral width-full mb-xl" /> + <div id="evolution" class="mb-xxl"> + <h2>Activité</h2> + <span class="separator" /> + <p> + Les données affichées ici sont celles contenues dans la base de donnée + Camino. Les données antérieures à 2018 reprises d’anciens systèmes + peuvent ne pas être exhautives. Ces données concernent exclusivement le + territoire guyanais. + </p> + <div class="hide"> + <h3>Évolution de la production annuelle d’or nette</h3> + <hr /> + <div class="tablet-float-blobs clearfix"> + <div class="tablet-float-blob-1-3 mb-xl mt"> + <p class="h0 text-center"> + {{ numberFormat(statistiques[anneeCurrent - 1].orNet) }} kg + </p> + <p> + Production d’or nette (après affinage) issue des mines en Guyane + l'an dernier + </p> + </div> + <div class="tablet-float-blob-2-3 relative mb-xl"> + <LineChart + :data=" + statsLineFormat({ + stats: statistiquesGuyane.annees, + id: 'orNet', + labelX: 'annee', + labelY: 'Or net extrait en Kg' + }) + " + /> + </div> + </div> + </div> + <h3>Autorisations de recherche octroyées</h3> + <hr /> + <div class="tablet-float-blobs clearfix"> + <div class="tablet-float-blob-1-3 mb-xl mt"> + <p class="h0 text-center"> + {{ statistiques[anneeCurrent - 1].titresArm.quantite }} + </p> + <p>Autorisations de recherches octroyées l’an dernier</p> + </div> + <div class="tablet-float-blob-2-3 relative mb-xl"> + <BarChart + :data=" + statsBarFormat({ + annees: statistiquesGuyane.annees, + id: 'titresArm', + bar: 'quantite', + line: 'surface', + labelX: 'annee', + labelBar: 'Autorisations de recherche', + labelLine: 'Surface des autorisations de recherche (ha)' + }) + " + :suggested-max="suggestedMaxTitres" + /> + </div> + </div> + <h3>Permis de recherches octroyés</h3> + <hr /> + <div class="tablet-float-blobs clearfix"> + <div class="tablet-float-blob-1-3 mb-xl mt"> + <p class="h0 text-center"> + {{ statistiques[anneeCurrent - 1].titresPrm.quantite }} + </p> + <p>Permis exclusifs de recherches octroyés l’an dernier</p> + </div> + <div class="tablet-float-blob-2-3 relative mb-xl"> + <BarChart + :data=" + statsBarFormat({ + annees: statistiquesGuyane.annees, + id: 'titresPrm', + bar: 'quantite', + line: 'surface', + labelX: 'annee', + labelBar: 'Permis de recherches', + labelLine: 'Surface des permis de recherches (ha)' + }) + " + :suggested-max="suggestedMaxTitres" + /> + </div> + </div> + <h3>Autorisations d'exploitation octroyées</h3> + <hr /> + <div class="tablet-float-blobs clearfix"> + <div class="tablet-float-blob-1-3 mb-xl mt"> + <p class="h0 text-center"> + {{ statistiques[anneeCurrent - 1].titresAxm.quantite }} + </p> + <p>Autorisations d’exploitation octroyées l’an dernier</p> + </div> + <div class="tablet-float-blob-2-3 relative mb-xl"> + <BarChart + :data=" + statsBarFormat({ + annees: statistiquesGuyane.annees, + id: 'titresAxm', + bar: 'quantite', + line: 'surface', + labelX: 'annee', + labelBar: 'Autorisations d\'exploitation', + labelLine: 'Surface des autorisations de recherche (ha)' + }) + " + :suggested-max="suggestedMaxTitres" + /> + </div> + </div> + <h3>Permis d'exploitation octroyés</h3> + <hr /> + <div class="tablet-float-blobs clearfix"> + <div class="tablet-float-blob-1-3 mb-xl mt"> + <p class="h0 text-center"> + {{ statistiques[anneeCurrent - 1].titresPxm.quantite }} + </p> + <p>Permis d’exploitation octroyés l’an dernier</p> + </div> + <div class="tablet-float-blob-2-3 relative mb-xl"> + <BarChart + :data=" + statsBarFormat({ + annees: statistiquesGuyane.annees, + id: 'titresPxm', + bar: 'quantite', + line: 'surface', + labelX: 'annee', + labelBar: 'Permis d\'exploitation', + labelLine: 'Surface des permis d\'exploitation (ha)' + }) + " + :suggested-max="suggestedMaxTitres" + /> + </div> + </div> + <h3>Concessions octroyées</h3> + <hr /> + <div class="tablet-float-blobs clearfix"> + <div class="tablet-float-blob-1-3 mb-xl mt"> + <p class="h0 text-center"> + {{ statistiques[anneeCurrent - 1].titresCxm.quantite }} + </p> + <p>concessions octroyées l’an dernier</p> + </div> + <div class="tablet-float-blob-2-3 relative mb-xl"> + <BarChart + :data=" + statsBarFormat({ + annees: statistiquesGuyane.annees, + id: 'titresCxm', + bar: 'quantite', + line: 'surface', + labelX: 'annee', + labelBar: 'Concessions', + labelLine: 'Surface des concessions (ha)' + }) + " + :suggested-max="suggestedMaxTitres" + /> + </div> + </div> + </div> + </div> +</template> + +<script> +import Loader from '../_ui/loader.vue' +import GuyaneActivite from './guyane-activite.vue' +import BarChart from '../_charts/bar.vue' +import LineChart from '../_charts/line.vue' +import { suggestedMaxCalc, statsBarFormat, statsLineFormat } from './_utils' +import numberFormat from '@/utils/number-format' + +export default { + name: 'TableauBordGuyane', + + components: { Loader, GuyaneActivite, LineChart, BarChart }, + + data() { + return { + loaded: false, + tabActive: 0 + } + }, + + computed: { + statistiquesGuyane() { + return this.$store.state.statistiques.guyane + }, + + statistiques() { + return this.statistiquesGuyane.annees.reduce((acc, statsAnnee) => { + acc[statsAnnee.annee] = statsAnnee + + return acc + }, {}) + }, + + anneeCurrent() { + return new Date().getFullYear() + }, + + tabs() { + return [ + { + id: this.anneeCurrent - 4, + nom: (this.anneeCurrent - 4).toString() + }, + { + id: this.anneeCurrent - 3, + nom: (this.anneeCurrent - 3).toString() + }, + { + id: this.anneeCurrent - 2, + nom: (this.anneeCurrent - 2).toString() + }, + { + id: this.anneeCurrent - 1, + nom: (this.anneeCurrent - 1).toString(), + enConstruction: true + }, + { + id: this.anneeCurrent, + nom: this.anneeCurrent.toString(), + enConstruction: true + } + ] + }, + + suggestedMaxTitres() { + return suggestedMaxCalc(this.statistiquesGuyane.annees, [ + 'titresArm', + 'titresPrm', + 'titresAxm', + 'titresPxm', + 'titresCxm' + ]) + } + }, + + async created() { + this.tabToggle(this.anneeCurrent - 2) + await this.get() + }, + + methods: { + async get() { + await this.$store.dispatch('statistiques/get', 'guyane') + + if (!this.loaded) { + this.loaded = true + } + }, + + tabToggle(tabId) { + this.tabActive = tabId + }, + + statsLineFormat({ stats, id, labelX, labelY }) { + return statsLineFormat({ stats, id, labelX, labelY }) + }, + + statsBarFormat({ annees, id, bar, line, labelX, labelBar, labelLine }) { + return statsBarFormat({ + annees, + id, + bar, + line, + labelX, + labelBar, + labelLine + }) + }, + + numberFormat(number) { + return numberFormat(number) + } + } +} +</script> diff --git a/packages/ui/src/components/titre-creation.vue b/packages/ui/src/components/titre-creation.vue new file mode 100644 index 0000000000000000000000000000000000000000..29a2dcd61e343b36f8c550539d9ef0d29a5f651c --- /dev/null +++ b/packages/ui/src/components/titre-creation.vue @@ -0,0 +1,237 @@ +<template> + <h1 class="mt-xs mb-m">Demande de titre</h1> + <hr /> + + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5>Entreprise</h5> + </div> + <div class="tablet-blob-2-3"> + <select + class="p-s mb" + :value="titreDemande?.entrepriseId" + @change="entrepriseUpdate" + > + <option + v-for="e in entreprises" + :key="e.id" + :value="e.id" + :disabled="titreDemande.entrepriseId === e.id" + > + {{ e.nom }} + </option> + </select> + </div> + </div> + + <hr /> + + <TitreTypeSelect + v-if="titreDemande.entrepriseId" + v-model:element="titreDemande" + :domaines="domaines" + /> + + <div v-if="titreDemande.typeId"> + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5>Nom du titre</h5> + </div> + <div class="tablet-blob-2-3"> + <input v-model="titreDemande.nom" type="text" class="p-s mb" /> + </div> + </div> + <hr /> + </div> + + <div + v-if="titreDemande.typeId && titreDemande.entrepriseId && !entrepriseCheck" + > + <h3 class="mb-s">Références</h3> + <p class="h6 italic">Optionnel</p> + <div + v-for="(reference, index) in titreDemande.references" + :key="index" + class="flex full-x mb-s" + > + <select v-model="reference.typeId" class="p-s mr-s"> + <option + v-for="referenceType in referencesTypes" + :key="referenceType.id" + :value="referenceType.id" + > + {{ referenceType.nom }} + </option> + </select> + <input + v-model="reference.nom" + type="text" + class="p-s mr-s" + placeholder="valeur" + /> + <div class="flex-right"> + <button class="btn py-s px-m rnd-xs" @click="referenceRemove(index)"> + <i class="icon-24 icon-minus" /> + </button> + </div> + </div> + + <button + v-if=" + titreDemande.references && + !titreDemande.references.find(r => !r.typeId || !r.nom) + " + class="btn small rnd-xs py-s px-m full-x mb flex" + @click="referenceAdd" + > + <span class="mt-xxs">Ajouter une référence</span + ><i class="icon-24 icon-plus flex-right" /> + </button> + + <hr /> + </div> + + <div class="tablet-blobs mb"> + <div class="tablet-blob-1-3" /> + <div class="tablet-blob-2-3"> + <button + v-if="!loading" + id="cmn-titre-activite-edit-popup-button-enregistrer" + ref="save-button" + :disabled="!complete" + class="btn btn-primary" + @click="save" + > + Créer le titre + </button> + <div v-else class="p-s full-x bold">Enregistrement en cours…</div> + </div> + </div> +</template> + +<script> +import { permissionsCheck } from '@/utils' + +import TitreTypeSelect from './_common/titre-type-select.vue' + +export default { + components: { TitreTypeSelect }, + + data() { + return { + titreDemande: {} + } + }, + + computed: { + user() { + return this.$store.state.user.element + }, + + entreprises() { + return this.$store.state.user.metas.entreprisesTitresCreation + }, + + entreprise() { + return this.entreprises.find(e => e.id === this.titreDemande.entrepriseId) + }, + + entrepriseCheck() { + return permissionsCheck(this.user, ['entreprise']) + }, + + domaines() { + if (permissionsCheck(this.user, ['super', 'admin', 'editeur'])) { + return this.$store.state.user.metas.domaines + } + + if (permissionsCheck(this.user, ['entreprise'])) { + return this.entreprise.titresTypes.reduce((domaines, tt) => { + if (!domaines.find(({ id }) => tt.domaine.id === id)) { + tt.domaine.titresTypes = [] + domaines.push(tt.domaine) + } + + const domaine = domaines.find(({ id }) => tt.domaine.id === id) + + domaine.titresTypes.push({ + id: tt.id, + type: tt.type, + titresCreation: tt.titresCreation + }) + + return domaines + }, []) + } + + return [] + }, + + referencesTypes() { + return this.$store.state.titreCreation.metas.referencesTypes + }, + + complete() { + return ( + this.titreDemande.entrepriseId && + this.titreDemande.typeId && + this.titreDemande.nom + ) + }, + + loading() { + return this.$store.state.loading.includes('titreCreationAdd') + } + }, + + watch: { + entreprises: 'init' + }, + + async created() { + await this.init() + + document.addEventListener('keyup', this.keyUp) + }, + + beforeUnmount() { + document.removeEventListener('keyup', this.keyUp) + }, + + methods: { + keyUp(e) { + if ((e.which || e.keyCode) === 13 && this.complete && !this.loading) { + this.$refs['save-button'].focus() + this.save() + } + }, + async init() { + if (!this.entreprises.length) { + await this.$store.dispatch('pageError') + } + + await this.$store.dispatch('titreCreation/init') + + if (this.entreprises?.length === 1) { + this.titreDemande.entrepriseId = this.entreprises[0].id + } + }, + + entrepriseUpdate(event) { + this.titreDemande = { entrepriseId: event.target.value, references: [] } + }, + + save() { + this.$store.dispatch('titreCreation/save', this.titreDemande) + }, + + referenceAdd() { + this.titreDemande.references.push({ typeId: '', nom: '' }) + }, + + referenceRemove(index) { + this.titreDemande.references.splice(index, 1) + } + } +} +</script> diff --git a/packages/ui/src/components/titre.vue b/packages/ui/src/components/titre.vue new file mode 100644 index 0000000000000000000000000000000000000000..6cb00ffe431822306f7a8dceb2cae9b178f9402d --- /dev/null +++ b/packages/ui/src/components/titre.vue @@ -0,0 +1,220 @@ +<template> + <Loader v-if="!loaded" /> + <div v-else> + <div v-if="titre.doublonTitre?.id" class="p-m bg-warning color-bg mb"> + Ce titre est un doublon. Le titre déjà existant est : + <a class="color-bg" :href="`/titres/${titre.doublonTitre.id}`">{{ + titre.doublonTitre.nom + }}</a + >. + </div> + + <TitreHeader :titre="titre" @titre-event-track="eventTrack" /> + + <TitreInfos :titre="titre" class="mb" /> + + <Perimetre + v-if="titre.geojsonMultiPolygon && titre.points" + :titre-id="titre.id" + :domaine-id="titre.domaine.id" + :titre-type-id="titre.type.type.id" + :points="titre.points" + :is-main="true" + :tab-id="geoTabId" + :geojson-multi-polygon="titre.geojsonMultiPolygon" + @tab-update="geoTabUpdate" + /> + + <TitreTerritoires + :pays="titre.pays" + :forets="titre.forets" + :sdom-zones="titre.sdomZones" + :surface="titre.surface" + /> + + <div class="line width-full mb-xl" /> + + <TitreRepertoire + :titulaires="titre.titulaires" + :amodiataires="titre.amodiataires" + :administrations="titre.administrations" + @titre-event-track="eventTrack" + /> + + <div v-if="tabs.length > 1"> + <div class="flex"> + <div + v-for="tab in tabs" + :key="tab.id" + class="mr-xs" + :class="{ active: tabId === tab.id }" + > + <button + :id="`cmn-titre-tab-${tab.id}`" + class="p-m btn-tab rnd-t-s" + @click="tabUpdate(tab.id)" + > + {{ tab.nom }} + <ActivitesPills + v-if="tab.id === 'activites'" + class="inline-block ml-s" + :activites-absentes="titre.activitesAbsentes" + :activites-en-construction="titre.activitesEnConstruction" + /> + </button> + </div> + </div> + <div class="line-neutral width-full mb" /> + </div> + + <TitreDemarches + v-if="tabId === 'demarches'" + :demarches="demarches" + :tab-id="tabId" + @event-track="eventTrack" + /> + + <TitreActivitesList + v-if="tabId === 'activites'" + :activites="titre.activites" + :titre-id="titre.id" + /> + + <TitreDemarches + v-if="tabId === 'travaux'" + :demarches="travaux" + :tab-id="tabId" + @titre-event-track="eventTrack" + /> + + <Journaux v-if="tabId === 'journaux'" :titre-id="titre.id" /> + </div> +</template> + +<script> +import Loader from './_ui/loader.vue' +import Perimetre from './_common/perimetre.vue' +import ActivitesPills from './activites/pills.vue' + +import TitreHeader from './titre/header.vue' +import TitreInfos from './titre/infos.vue' +import TitreTerritoires from './titre/territoires.vue' +import TitreRepertoire from './titre/repertoire.vue' +import TitreDemarches from './titre/demarches.vue' +import TitreActivitesList from './activites/list.vue' +import Journaux from './journaux/journaux.vue' + +export default { + components: { + Loader, + ActivitesPills, + TitreHeader, + TitreInfos, + TitreTerritoires, + TitreRepertoire, + TitreDemarches, + TitreActivitesList, + Perimetre, + Journaux + }, + + data() { + return { + geoTabId: 'carte', + show: false + } + }, + + computed: { + titre() { + return this.$store.state.titre.element + }, + + user() { + return this.$store.state.user.element + }, + + loaded() { + return !!this.titre + }, + + tabs() { + return this.$store.getters['titre/tabs'] + }, + + tabId() { + return this.$store.getters['titre/tabId'] + }, + + demarches() { + return this.$store.getters['titre/demarches'] + }, + + travaux() { + return this.$store.getters['titre/travaux'] + } + }, + + watch: { + '$route.params.id': function (id) { + if (this.$route.name === 'titre' && id) { + this.get() + } + }, + + user: 'get' + }, + + async created() { + await this.get() + + if (this.$route.hash) { + const yOffset = -88 + const id = this.$route.hash.substring(1) + const element = document.getElementById(id) + if (element) { + const y = + element.getBoundingClientRect().top + window.pageYOffset + yOffset + + window.scrollTo({ top: y }) + } + } + }, + + beforeUnmount() { + this.$store.commit('titre/reset') + }, + + methods: { + async get() { + await this.$store.dispatch('titre/get', this.$route.params.id) + }, + + tabUpdate(tabId) { + this.eventTrack({ + categorie: 'titre-sections', + action: `titre-${this.tabId}_consulter`, + nom: this.$store.state.titre.element.id + }) + + this.$store.commit('titre/openTab', tabId) + }, + + geoTabUpdate(tabId) { + this.eventTrack({ + categorie: 'titre-sections', + action: `titre-vue${this.tabId}_consulter`, + nom: this.$store.state.titre.element.id + }) + + this.geoTabId = tabId + }, + + eventTrack(event) { + if (this.$matomo) { + this.$matomo.trackEvent(event.categorie, event.action, event.nom) + } + } + } +} +</script> diff --git a/packages/ui/src/components/titre/administration.vue b/packages/ui/src/components/titre/administration.vue new file mode 100644 index 0000000000000000000000000000000000000000..e9b0c03455dff711ee9c1e1258282e713bf82b1f --- /dev/null +++ b/packages/ui/src/components/titre/administration.vue @@ -0,0 +1,147 @@ +<template> + <Accordion + class="mb" + :opened="opened" + :slot-default="true" + @close="close" + @toggle="toggle" + > + <template #title> + <span>{{ administration.nom }}</span> + </template> + + <div v-if="content" class="px-m pt-m"> + <div v-if="administration.service" class="large-blobs"> + <div class="large-blob-1-6"> + <h5>Service</h5> + </div> + <div class="large-blob-5-6"> + <p> + {{ administration.service }} + </p> + </div> + </div> + <div + v-if="administration.adresse1 || administration.adresse2" + class="large-blobs" + > + <div class="large-blob-1-6"> + <h5>Adresse</h5> + </div> + <div class="large-blob-5-6"> + <p> + {{ administration.adresse1 }} + <span v-if="administration.adresse2" + ><br />{{ administration.adresse2 }}</span + > + <br />{{ administration.codePostal }} + {{ administration.commune }} + </p> + </div> + </div> + <div v-if="administration.telephone" class="large-blobs"> + <div class="large-blob-1-6"> + <h5>Téléphone</h5> + </div> + <div class="large-blob-5-6"> + <p class="word-break"> + {{ administration.telephone }} + </p> + </div> + </div> + <div v-if="administration.email" class="large-blobs"> + <div class="large-blob-1-6"> + <h5>Email</h5> + </div> + <div class="large-blob-5-6"> + <p class="word-break"> + <a + :href="`mailto:${administration.email}`" + class="btn small bold py-xs px-s rnd" + > + {{ administration.email }} + </a> + </p> + </div> + </div> + <div v-if="administration.url" class="large-blobs"> + <div class="large-blob-1-6"> + <h5>Site</h5> + </div> + <div class="large-blob-5-6"> + <p class="word-break"> + <a + :href="administration.url" + class="btn small bold py-xs px-s rnd" + target="_blank" + rel="noopener noreferrer" + > + {{ administration.url }} + </a> + </p> + </div> + </div> + </div> + </Accordion> +</template> + +<script> +import Accordion from '../_ui/accordion.vue' + +export default { + components: { + Accordion + }, + + props: { + administration: { + type: Object, + default: () => {} + } + }, + + emits: ['titre-event-track'], + + data() { + return { + opened: false + } + }, + + computed: { + content() { + return ( + this.administration.legalForme || + this.administration.adresse1 || + this.administration.adresse2 || + this.administration.codePostal || + this.administration.commune || + this.administration.telephone || + this.administration.email || + this.administration.url + ) + } + }, + + methods: { + close() { + this.opened = false + }, + + toggle() { + this.opened = !this.opened + if (this.opened) { + this.eventTrack() + } + }, + + eventTrack() { + this.$emit('titre-event-track', { + categorie: 'titre-sections', + action: 'titre-administration_consulter', + nom: this.$route.params.id + }) + } + } +} +</script> diff --git a/packages/ui/src/components/titre/demarche-edit-popup.vue b/packages/ui/src/components/titre/demarche-edit-popup.vue new file mode 100644 index 0000000000000000000000000000000000000000..3f696aeace1d192bd7ed828055c97b7c3ccd61e5 --- /dev/null +++ b/packages/ui/src/components/titre/demarche-edit-popup.vue @@ -0,0 +1,176 @@ +<template> + <Popup :messages="messages"> + <template #header> + <div> + <h6> + <span class="cap-first" + ><span class="cap-first"> {{ titreNom }} </span + ><span class="color-neutral"> | </span + ><span class="cap-first"> + {{ titreTypeNom }} + </span> + </span> + </h6> + <h2 class="cap-first"> + {{ label }} + </h2> + </div> + </template> + <div> + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5>Type</h5> + </div> + <div class="mb tablet-blob-2-3"> + <select + v-model="demarche.typeId" + class="p-s mr" + :disabled="!creation" + > + <option + v-for="demarcheType in types" + :key="demarcheType.id" + :value="demarcheType.id" + :disabled="demarche.typeId === demarcheType.id" + > + {{ demarcheType.nom }} + </option> + </select> + </div> + </div> + <div class="tablet-blobs mb-s"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5>Description</h5> + <p class="h6 italic mb-0 flex-right mt-xs">Optionnel</p> + </div> + <input + v-model="demarche.description" + type="text" + class="tablet-blob-2-3 p-s" + /> + </div> + </div> + + <template #footer> + <div v-if="!loading" class="tablet-blobs"> + <div class="tablet-blob-1-3 mb tablet-mb-0"> + <button class="btn-border rnd-xs p-s full-x" @click="cancel"> + Annuler + </button> + </div> + <div class="tablet-blob-2-3"> + <button + ref="save-button" + :disabled="!complete" + :class="{ disabled: !complete }" + class="btn btn-primary" + @click="save" + > + Enregistrer + </button> + </div> + </div> + <div v-else class="p-s full-x bold">Enregistrement en cours…</div> + </template> + </Popup> +</template> + +<script> +import Popup from '../_ui/popup.vue' + +export default { + name: 'CaminoDemarcheEditPopup', + + components: { + Popup + }, + + props: { + demarche: { type: Object, default: () => ({}) }, + titreNom: { type: String, default: '' }, + titreTypeNom: { type: String, default: '' }, + creation: { type: Boolean, default: false }, + tabId: { type: String, required: true } + }, + + computed: { + loading() { + return this.$store.state.popup.loading + }, + + label() { + return `${ + this.creation ? "Ajout d'une" : 'Modification de la' + } démarche ${this.tabId === 'travaux' ? 'de travaux' : ''}` + }, + + messages() { + return this.$store.state.popup.messages + }, + + types() { + return this.$store.state.titreDemarche.metas.types + .filter(t => (this.tabId === 'travaux' ? t.travaux : !t.travaux)) + .filter(t => t.demarchesCreation) + }, + + complete() { + return this.demarche.typeId + } + }, + + created() { + this.get() + document.addEventListener('keyup', this.keyup) + }, + + beforeUnmount() { + document.removeEventListener('keyup', this.keyup) + }, + + methods: { + async get() { + await this.$store.dispatch('titreDemarche/init', this.demarche) + }, + + async save() { + if (this.complete) { + const demarche = JSON.parse(JSON.stringify(this.demarche)) + + if (this.creation) { + await this.$store.dispatch('titreDemarche/add', demarche) + } else { + await this.$store.dispatch('titreDemarche/update', demarche) + } + + this.eventTrack({ + categorie: 'titre-sections', + action: `titre-${this.tabId}-enregistrer`, + nom: demarche.id + }) + } + }, + + cancel() { + this.$store.commit('popupClose') + }, + + keyup(e) { + if ((e.which || e.keyCode) === 27) { + this.cancel() + } else if ((e.which || e.keyCode) === 13) { + if (this.complete) { + this.$refs['save-button'].focus() + this.save() + } + } + }, + + eventTrack(event) { + if (this.$matomo) { + this.$matomo.trackEvent(event.categorie, event.action, event.nom) + } + } + } +} +</script> diff --git a/packages/ui/src/components/titre/demarche-remove-popup.vue b/packages/ui/src/components/titre/demarche-remove-popup.vue new file mode 100644 index 0000000000000000000000000000000000000000..904f91615af0fba0c2d9aff5936f876363fe6c55 --- /dev/null +++ b/packages/ui/src/components/titre/demarche-remove-popup.vue @@ -0,0 +1,120 @@ +<template> + <Popup :messages="messages"> + <template #header> + <div> + <h6> + <span class="cap-first"> {{ titreNom }} </span + ><span class="color-neutral"> | </span + ><span class="cap-first"> + {{ titreTypeNom }} + </span> + </h6> + <h2 class="cap-first">Suppression de la démarche</h2> + </div> + </template> + + <p class="bold"> + Souhaitez vous supprimer la démarche + <span class="color-inverse">{{ typeNom }}</span> du titre + <span class="color-inverse">{{ titreNom }}</span> (<span + class="color-inverse" + >{{ titreTypeNom }}</span + >) ? + </p> + <div class="bg-warning color-bg p-s mb-l"> + <span class="bold"> Attention </span>: cette opération est définitive et + ne peut pas être annulée. + </div> + + <template #footer> + <div v-if="!loading" class="tablet-blobs"> + <div class="tablet-blob-1-3 mb tablet-mb-0"> + <button class="btn-border rnd-xs p-s full-x" @click="cancel"> + Annuler + </button> + </div> + <div class="tablet-blob-2-3"> + <button class="btn-flash rnd-xs p-s full-x" @click="remove"> + Supprimer + </button> + </div> + </div> + <div v-else class="p-s full-x bold">Suppression en cours…</div> + </template> + </Popup> +</template> + +<script> +import Popup from '../_ui/popup.vue' + +export default { + name: 'CaminoDemarcheRemovePopup', + + components: { + Popup + }, + + props: { + id: { + type: String, + default: '' + }, + + typeNom: { + type: String, + default: '' + }, + + titreNom: { + type: String, + default: '' + }, + + titreTypeNom: { + type: String, + default: '' + } + }, + + computed: { + loading() { + return this.$store.state.popup.loading + }, + + messages() { + return this.$store.state.popup.messages + } + }, + + created() { + document.addEventListener('keyup', this.keyup) + }, + + beforeUnmount() { + document.removeEventListener('keyup', this.keyup) + }, + + methods: { + async remove() { + await this.$store.dispatch('titreDemarche/remove', this.id) + }, + + cancel() { + this.errorsRemove() + this.$store.commit('popupClose') + }, + + keyup(e) { + if ((e.which || e.keyCode) === 27) { + this.cancel() + } else if ((e.which || e.keyCode) === 13) { + this.remove() + } + }, + + errorsRemove() { + // this.$store.commit('utilisateur/loginMessagesRemove') + } + } +} +</script> diff --git a/packages/ui/src/components/titre/demarche.vue b/packages/ui/src/components/titre/demarche.vue new file mode 100644 index 0000000000000000000000000000000000000000..3d975c52037e5e97c9cb0978075b35390e597a98 --- /dev/null +++ b/packages/ui/src/components/titre/demarche.vue @@ -0,0 +1,183 @@ +<template> + <div class="mb-xxl"> + <div class="tablet-blobs mb"> + <div class="tablet-blob-1-2"> + <div class="flex mb-s flex-center"> + <h2 class="cap-first"> + {{ demarche.type.nom }} + </h2> + <h3 v-if="demarche.description" class="ml-s"> + ({{ demarche.description }}) + </h3> + </div> + <div class="mb-s"> + <Statut :color="demarche.statut.couleur" :nom="demarche.statut.nom" /> + </div> + </div> + <div class="tablet-blob-1-2 flex"> + <div + v-if=" + demarche.modification || + demarche.suppression || + demarche.etapesCreation + " + class="flex-right flex" + > + <button + v-if="demarche.etapesCreation" + class="btn small rnd-l-xs py-s px-m flex mr-px" + :class="{ + 'rnd-r-xs': !demarche.suppression && !demarche.modification + }" + @click="etapeAdd" + > + <span class="mt-xxs">Ajouter une étape…</span> + </button> + <button + v-if="demarche.modification" + class="btn py-s px-m mr-px" + :class="{ 'rnd-l-xs': !demarche.etapesCreation }" + @click="editPopupOpen" + > + <i class="icon-24 icon-pencil" /> + </button> + <button + v-if="demarche.suppression" + class="btn rnd-r-xs py-s px-m mr-px" + :class="{ + 'rnd-l-xs': !demarche.modification && !demarche.etapesCreation + }" + @click="removePopupOpen" + > + <i class="icon-24 icon-trash" /> + </button> + </div> + </div> + </div> + + <TitreEtape + v-for="etape in demarche.etapes" + :key="etape.id" + :etape="etape" + :demarche-type="demarche.type" + :titre-type-type="titreType.type" + :domaine-id="domaineId" + :titre-id="titreId" + :titre-nom="titreNom" + :opened="etapeOpened[etape.id]" + @event-track="eventTrack" + @close="etapeClose(etape.id)" + @toggle="etapeToggle(etape.id)" + /> + + <div class="line width-full my-xxl" /> + </div> +</template> + +<script> +import Statut from '../_common/statut.vue' +import TitreEtape from '../etape/preview.vue' +import EditPopup from './demarche-edit-popup.vue' +import RemovePopup from './demarche-remove-popup.vue' + +export default { + components: { + Statut, + TitreEtape + }, + + props: { + demarche: { type: Object, required: true }, + titreNom: { type: String, required: true }, + titreId: { type: String, required: true }, + titreType: { type: Object, required: true }, + domaineId: { type: String, required: true }, + tabId: { type: String, required: true } + }, + + emits: ['titre-event-track'], + + computed: { + etapeOpened() { + return this.$store.state.titre.opened.etapes + }, + + eventPrefix() { + return this.tabId && this.tabId === 'travaux' + ? 'titre-travaux' + : 'titre-demarche' + } + }, + + methods: { + editPopupOpen() { + const demarche = {} + + demarche.description = this.demarche.description + demarche.typeId = this.demarche.type.id + demarche.titreId = this.titreId + demarche.id = this.demarche.id + + this.$store.commit('popupOpen', { + component: EditPopup, + props: { + demarche, + types: this.titreType.demarchesTypes, + titreTypeNom: this.titreType.type.nom, + titreNom: this.titreNom, + tabId: this.tabId + } + }) + + this.eventTrack({ + categorie: 'titre-sections', + action: `${this.eventPrefix}_editer`, + nom: this.$route.params.id + }) + }, + + removePopupOpen() { + this.$store.commit('popupOpen', { + component: RemovePopup, + props: { + id: this.demarche.id, + typeNom: this.demarche.type.nom, + titreNom: this.titreNom, + titreTypeNom: this.titreType.type.nom + } + }) + + this.eventTrack({ + categorie: 'titre-sections', + action: `${this.eventPrefix}_supprimer`, + nom: this.$route.params.id + }) + }, + + etapeAdd() { + this.$router.push({ + name: 'etape-creation', + query: { 'demarche-id': this.demarche.slug } + }) + + this.eventTrack({ + categorie: 'titre-sections', + action: 'titre-etape_ajouter', + nom: this.$route.params.id + }) + }, + + etapeClose(id) { + this.$store.commit('titre/close', { section: 'etapes', id }) + }, + + etapeToggle(id) { + this.$store.commit('titre/toggle', { section: 'etapes', id }) + }, + + eventTrack(event) { + this.$emit('titre-event-track', event) + } + } +} +</script> diff --git a/packages/ui/src/components/titre/demarches.vue b/packages/ui/src/components/titre/demarches.vue new file mode 100644 index 0000000000000000000000000000000000000000..5f92eee96c0c49ee97b36f35cc2e16ae348e88d9 --- /dev/null +++ b/packages/ui/src/components/titre/demarches.vue @@ -0,0 +1,87 @@ +<template> + <div> + <div + v-if=" + tabId === 'travaux' ? titre.travauxCreation : titre.demarchesCreation + " + > + <button + class="btn small rnd-xs py-s px-m full-x flex mb" + @click="demarcheAddPopupOpen" + > + <span class="mt-xxs" + >Ajouter une démarche + {{ tabId === 'travaux' ? 'de travaux' : '' }}</span + > + <i class="icon-24 icon-plus flex-right" /> + </button> + <div class="line width-full mb-xxl" /> + </div> + + <TitreDemarche + v-for="demarche in demarches" + :key="demarche.id" + :demarche="demarche" + :domaine-id="titre.domaine.id" + :titre-type="titre.type" + :titre-nom="titre.nom" + :titre-id="titre.id" + :tab-id="tabId" + @event-track="eventTrack" + /> + </div> +</template> + +<script> +import TitreDemarche from './demarche.vue' +import EditPopup from './demarche-edit-popup.vue' + +export default { + components: { + TitreDemarche + }, + + props: { + demarches: { type: Array, default: () => [] }, + tabId: { type: String, required: true } + }, + + emits: ['event-track'], + + computed: { + titre() { + return this.$store.state.titre.element + } + }, + + methods: { + demarcheAddPopupOpen() { + const demarche = { + typeId: null, + titreId: this.titre.id + } + + this.$store.commit('popupOpen', { + component: EditPopup, + props: { + demarche, + titreTypeNom: this.titre.type.type.nom, + titreNom: this.titre.nom, + creation: true, + tabId: this.tabId + } + }) + + this.eventTrack({ + categorie: 'titre-sections', + action: `titre-${this.tabId}_ajouter`, + nom: this.$route.params.id + }) + }, + + eventTrack(event) { + this.$emit('event-track', event) + } + } +} +</script> diff --git a/packages/ui/src/components/titre/edit-popup.vue b/packages/ui/src/components/titre/edit-popup.vue new file mode 100644 index 0000000000000000000000000000000000000000..b02d21ce5659d01cd1b52ad4f20ebb99b8bb5cf2 --- /dev/null +++ b/packages/ui/src/components/titre/edit-popup.vue @@ -0,0 +1,264 @@ +<template> + <Popup :messages="messages"> + <template #header> + <div> + <h2 class="cap-first"> + {{ creation ? "Ajout d'un" : 'Modification du' }} titre + </h2> + </div> + </template> + + <div> + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5>Nom</h5> + </div> + <div class="mb tablet-blob-2-3"> + <input v-model="titre.nom" type="text" class="p-s" /> + </div> + </div> + <hr /> + </div> + + <TitreTypeSelect v-model:element="titre" :domaines="domaines" /> + + <div> + <h3 class="mb-s">Références</h3> + <p class="h6 italic">Optionnel</p> + <hr /> + <div + v-for="(reference, index) in titre.references" + :key="index" + class="flex full-x mb-s" + > + <select v-model="reference.typeId" class="p-s mr-s"> + <option + v-for="referenceType in referencesTypes" + :key="referenceType.id" + :value="referenceType.id" + > + {{ referenceType.nom }} + </option> + </select> + <input + v-model="reference.nom" + type="text" + class="p-s mr-s" + placeholder="valeur" + /> + <div class="flex-right"> + <button class="btn py-s px-m rnd-xs" @click="referenceRemove(index)"> + <i class="icon-24 icon-minus" /> + </button> + </div> + </div> + + <button + v-if=" + titre.references && !titre.references.find(r => !r.typeId || !r.nom) + " + class="btn rnd-xs py-s px-m full-x mb flex h6" + @click="referenceAdd" + > + <span class="mt-xxs">Ajouter une référence</span + ><i class="icon-24 icon-plus flex-right" /> + </button> + </div> + + <div v-if="userIsSuper"> + <h3 class="mb-s">Administrations</h3> + <p class="h6 italic">Administrations ajoutées manuellement au titre</p> + <hr /> + <div + v-for="(administration, index) in titre.titresAdministrations" + :key="index" + class="flex full-x mb-s" + > + <select v-model="administration.id" class="p-s mr-s"> + <option v-for="a in administrations" :key="a.id" :value="a.id"> + {{ a.nom }} + </option> + </select> + <div class="flex-right"> + <button + class="btn py-s px-m rnd-xs" + @click="administrationRemove(index)" + > + <i class="icon-24 icon-minus" /> + </button> + </div> + </div> + + <button + v-if=" + titre.titresAdministrations && + !titre.titresAdministrations.find(r => !r.id) + " + class="btn rnd-xs py-s px-m full-x mb flex h6" + @click="administrationAdd" + > + <span class="mt-xxs">Ajouter une administration</span + ><i class="icon-24 icon-plus flex-right" /> + </button> + </div> + + <template #footer> + <div v-if="!loading" class="tablet-blobs"> + <div class="tablet-blob-1-3 mb tablet-mb-0"> + <button class="btn-border rnd-xs p-s full-x" @click="cancel"> + Annuler + </button> + </div> + <div class="tablet-blob-2-3"> + <button + ref="save-button" + class="btn btn-primary" + :disabled="!complete" + :class="{ disabled: !complete }" + @click="save" + > + Enregistrer + </button> + </div> + </div> + <div v-else class="p-s full-x bold">Enregistrement en cours…</div> + </template> + </Popup> +</template> + +<script> +import Popup from '../_ui/popup.vue' + +import TitreTypeSelect from '../_common/titre-type-select.vue' + +export default { + name: 'CaminoDemarcheEditPopup', + + components: { + Popup, + TitreTypeSelect + }, + + props: { + titre: { + type: Object, + default: () => ({}) + }, + + creation: { + type: Boolean, + default: false + } + }, + + computed: { + loading() { + return this.$store.state.popup.loading + }, + + messages() { + return this.$store.state.popup.messages + }, + + domaines() { + return this.$store.state.user.metas.domaines.filter(d => + d.titresTypes.some(dtt => dtt.titresCreation) + ) + }, + + referencesTypes() { + return this.$store.state.titre.metas.referencesTypes + }, + + administrations() { + return this.$store.state.titre.metas.administrations + }, + + complete() { + return !!this.titre.nom && !!this.titre.typeId && !!this.titre.domaineId + }, + + userIsSuper() { + return this.$store.getters['user/userIsSuper'] + } + }, + + created() { + this.get() + document.addEventListener('keyup', this.keyup) + }, + + beforeUnmount() { + document.removeEventListener('keyup', this.keyup) + }, + + methods: { + async get() { + await this.$store.dispatch('titre/init') + }, + + async save() { + if (this.complete) { + const titre = JSON.parse(JSON.stringify(this.titre)) + titre.references = titre.references.filter(reference => { + return reference.nom + }) + + if (this.creation) { + await this.$store.dispatch('titre/add', titre) + } else { + await this.$store.dispatch('titre/update', titre) + } + + this.eventTrack({ + categorie: 'titre-sections', + action: 'titre-enregistrer', + nom: titre.id + }) + } + }, + + cancel() { + this.errorsRemove() + this.$store.commit('popupClose') + }, + + keyup(e) { + if ((e.which || e.keyCode) === 27) { + this.cancel() + } else if ((e.which || e.keyCode) === 13) { + if (this.complete) { + this.$refs['save-button'].focus() + this.save() + } + } + }, + + errorsRemove() { + // this.$store.commit('utilisateur/loginMessagesRemove') + }, + + referenceAdd() { + this.titre.references.push({ typeId: '', nom: '' }) + }, + + referenceRemove(index) { + this.titre.references.splice(index, 1) + }, + + administrationAdd() { + this.titre.titresAdministrations.push({ id: '' }) + }, + + administrationRemove(index) { + this.titre.titresAdministrations.splice(index, 1) + }, + + eventTrack(event) { + if (this.$matomo) { + this.$matomo.trackEvent(event.categorie, event.action, event.nom) + } + } + } +} +</script> diff --git a/packages/ui/src/components/titre/entreprise.vue b/packages/ui/src/components/titre/entreprise.vue new file mode 100644 index 0000000000000000000000000000000000000000..004a7e0836da776cefd2946eee1d61b1ba101f1f --- /dev/null +++ b/packages/ui/src/components/titre/entreprise.vue @@ -0,0 +1,203 @@ +<template> + <Accordion + class="mb" + :opened="opened" + :slot-default="true" + :slot-buttons="true" + @close="close" + @toggle="toggle" + > + <template #title> + <h4 class="mb-0"> + {{ entrepriseNameFind(entreprise) }} + </h4> + <Tag v-if="entreprise.operateur" :color="'bg-info'" :mini="true"> + Opérateur + </Tag> + </template> + + <template #buttons> + <router-link + :to="{ name: 'entreprise', params: { id: entreprise.id } }" + class="btn-alt py-s px-m" + tag="button" + > + <i + class="icon-24 icon-window-link" + @click="eventTrack('titre-entreprise_acceder')" + /> + </router-link> + </template> + + <div v-if="content" class="px-m pt-m"> + <div v-if="entreprise.legalSiren" class="large-blobs"> + <div class="large-blob-1-4"> + <h5>Siren</h5> + </div> + <div class="large-blob-3-4"> + <p>{{ entreprise.legalSiren }}</p> + </div> + </div> + + <div v-if="entreprise.legalForme" class="large-blobs"> + <div class="large-blob-1-4"> + <h5>Forme juridique</h5> + </div> + <div class="large-blob-3-4"> + <p>{{ entreprise.legalForme }}</p> + </div> + </div> + + <div + v-if="entreprise.etablissements && entreprise.etablissements.length" + class="large-blobs" + > + <div class="large-blob-1-4"> + <h5> + Établissement{{ entreprise.etablissements.length > 1 ? 's' : '' }} + </h5> + </div> + <div class="large-blob-3-4"> + <ul class="list-sans"> + <li v-for="e in entreprise.etablissements" :key="e.id"> + <h6 class="inline-block"> + {{ dateFormat(e.dateDebut) }} + </h6> + : {{ e.nom }} + </li> + </ul> + </div> + </div> + + <div v-if="entreprise.adresse" class="large-blobs"> + <div class="large-blob-1-4"> + <h5>Adresse</h5> + </div> + <div class="large-blob-3-4"> + <p> + {{ entreprise.adresse }} + <br />{{ entreprise.codePostal }} + {{ entreprise.commune }} + </p> + </div> + </div> + <div v-if="entreprise.telephone" class="large-blobs"> + <div class="large-blob-1-4"> + <h5>Téléphone</h5> + </div> + <div class="large-blob-3-4"> + <p class="word-break"> + {{ entreprise.telephone }} + </p> + </div> + </div> + <div v-if="entreprise.email" class="large-blobs"> + <div class="large-blob-1-4"> + <h5>Email</h5> + </div> + <div class="large-blob-3-4"> + <p class="word-break"> + <a + :href="`mailto:${entreprise.email}`" + class="btn small bold py-xs px-s rnd" + > + {{ entreprise.email }} + </a> + </p> + </div> + </div> + <div v-if="entreprise.url" class="large-blobs"> + <div class="large-blob-1-4"> + <h5>Site</h5> + </div> + <div class="large-blob-3-4"> + <p class="word-break"> + <a :href="entreprise.url" class="btn small bold py-xs px-s rnd"> + {{ entreprise.url }} + </a> + </p> + </div> + </div> + </div> + </Accordion> +</template> + +<script> +import { dateFormat } from '@/utils' +import Accordion from '../_ui/accordion.vue' +import Tag from '../_ui/tag.vue' + +export default { + components: { + Accordion, + Tag + }, + + props: { + entreprise: { + type: Object, + default: () => {} + } + }, + + emits: ['titre-event-track'], + + data() { + return { + opened: false + } + }, + + computed: { + content() { + return ( + this.entreprise.legalSiren || + this.entreprise.legalForme || + this.entreprise.etablissements.length || + this.entreprise.adresse || + this.entreprise.codePostal || + this.entreprise.commune || + this.entreprise.telephone || + this.entreprise.email || + this.entreprise.url + ) + } + }, + + methods: { + entrepriseNameFind(entreprise) { + return ( + entreprise.nom || + // trouve l'établissement le plus récent + entreprise.etablissements.reduce( + (res, e) => (res && res.dateDebut > e.dateDebut ? res : e), + null + ).nom + ) + }, + + close() { + this.opened = false + }, + + toggle() { + this.opened = !this.opened + if (this.opened) { + this.eventTrack('titre-entreprise_consulter') + } + }, + + eventTrack(action) { + this.$emit('titre-event-track', { + categorie: 'titre-sections', + action, + nom: this.$route.params.id + }) + }, + + dateFormat(date) { + return dateFormat(date) + } + } +} +</script> diff --git a/packages/ui/src/components/titre/header.vue b/packages/ui/src/components/titre/header.vue new file mode 100644 index 0000000000000000000000000000000000000000..ff0a402dda98b34a5e23fe23cdf9855bdf82ceaa --- /dev/null +++ b/packages/ui/src/components/titre/header.vue @@ -0,0 +1,145 @@ +<template> + <div class="sticky-header width-full"> + <div class="container"> + <div class="tablet-blobs"> + <div class="tablet-blob-1-2"> + <h1 class="mt-m mb-m"> + {{ titre.nom }} + </h1> + </div> + <div class="tablet-blob-1-2 flex"> + <div class="flex-right flex my-s"> + <button + v-if="user" + class="btn small rnd-0 rnd-l-xs px-m py-s lh-2 mr-px" + :class="{ + 'btn-primary': !titre.abonnement, + 'btn-secondary': titre.abonnement + }" + @click="subscribe(!titre.abonnement)" + > + <span class="mt-xs" + >{{ titre.abonnement ? 'Se désabonner' : 'S’abonner' }} au + titre</span + > + </button> + <button + class="btn-border small px-m py-s lh-2" + :class="{ + 'rnd-l-xs': !user, + 'rnd-r-xs': !titre.suppression || !titre.modification, + 'mr-px': titre.suppression || titre.modification + }" + @click="emailSend" + > + <span class="mt-xs nowrap">Signaler une erreur…</span> + </button> + <button + v-if="titre.modification" + class="btn py-s px-m mr-px" + :class="{ 'rnd-r-xs': !titre.suppression }" + @click="editPopupOpen" + > + <i class="icon-24 icon-pencil" /> + </button> + <button + v-if="titre.suppression" + class="btn rnd-r-xs py-s px-m" + @click="removePopupOpen" + > + <i class="icon-24 icon-trash" /> + </button> + </div> + </div> + </div> + + <div class="line width-full" /> + </div> + </div> +</template> + +<script> +import EditPopup from './edit-popup.vue' +import RemovePopup from './remove-popup.vue' + +export default { + props: { + titre: { + type: Object, + default: () => ({}) + } + }, + + emits: ['titre-event-track'], + + computed: { + user() { + return this.$store.state.user.element + } + }, + methods: { + editPopupOpen() { + const titre = {} + titre.id = this.titre.id + titre.nom = this.titre.nom + titre.domaineId = this.titre.domaine.id + titre.typeId = this.titre.type.id + titre.references = this.titre.references.map(reference => ({ + typeId: reference.type.id, + nom: reference.nom + })) + titre.titresAdministrations = this.titre.titresAdministrations + + this.$store.commit('popupOpen', { + component: EditPopup, + props: { + titre + } + }) + + this.eventTrack({ + categorie: 'titre-sections', + action: 'titre-editer', + nom: this.$route.params.id + }) + }, + + removePopupOpen() { + this.$store.commit('popupOpen', { + component: RemovePopup, + props: { + titreNom: this.titre.nom, + titreId: this.titre.id, + typeNom: this.titre.type.type.nom + } + }) + + this.eventTrack({ + categorie: 'titre-sections', + action: 'titre-supprimer', + nom: this.$route.params.id + }) + }, + + emailSend() { + this.eventTrack({ + categorie: 'titre-sections', + action: 'titre-erreur_signaler', + nom: this.$route.params.id + }) + window.location.href = `mailto:camino@beta.gouv.fr?subject=Erreur ${this.$route.params.id}&body=Bonjour, j'ai repéré une erreur sur le titre ${window.location.href} : ` + }, + + subscribe(abonner) { + this.$store.dispatch('titre/subscribe', { + titreId: this.titre.id, + abonner + }) + }, + + eventTrack(event) { + this.$emit('titre-event-track', event) + } + } +} +</script> diff --git a/packages/ui/src/components/titre/infos.vue b/packages/ui/src/components/titre/infos.vue new file mode 100644 index 0000000000000000000000000000000000000000..0fd416ca078ae48daa53da9a5e66f5c04f54986e --- /dev/null +++ b/packages/ui/src/components/titre/infos.vue @@ -0,0 +1,186 @@ +<template> + <div class="desktop-blobs"> + <div class="desktop-blob-1-2"> + <div class="rnd-b-s bg-alt pt px overflow-auto"> + <h4 class="mb"> + <Pill :color="`bg-domaine-${titre.domaine.id}`" class="mono mr-s"> + {{ titre.domaine.id }} + </Pill> + <span class="cap-first"> + {{ titre.type.type.nom }} + </span> + </h4> + + <div class="mb"> + <Statut :color="titre.statut.couleur" :nom="titre.statut.nom" /> + </div> + + <div + v-if="phases && phases.length" + class="mb bg-bg mx--m px-m pt-xs pb-s rnd-xs" + > + <table class="table-xxs full-x mb-0"> + <tr> + <th class="max-width-1" /> + <th>Phase</th> + <th>Début</th> + <th>Fin</th> + </tr> + <tr v-for="demarche in phases" :key="demarche.id"> + <td class="max-width-1"> + <Dot + class="mt-xs" + :color="`bg-${demarche.phase.statut.couleur}`" + /> + </td> + <td> + <span class="cap-first bold h5 mb-0"> + {{ demarche.type.nom }} + </span> + </td> + <td> + <span class="h5 mb-0">{{ + dateFormat(demarche.phase.dateDebut) + }}</span> + </td> + <td> + <span class="h5 mb-0">{{ + dateFormat(demarche.phase.dateFin) + }}</span> + </td> + </tr> + </table> + </div> + + <div v-if="titre.references && titre.references.length" class="mb"> + <ul class="list-prefix h6"> + <li v-for="reference in titre.references" :key="reference.nom"> + <span v-if="reference.type" class="word-break fixed-width bold"> + {{ reference.type.nom }} + </span> + {{ reference.nom }} + </li> + </ul> + </div> + </div> + </div> + + <div class="desktop-blob-1-2 mt"> + <div v-if="titre.substances && titre.substances.length > 0" class="mb"> + <h5>Substances</h5> + <TagList :elements="titre.substances.map(s => s.nom)" /> + </div> + + <div v-if="titre.titulaires.length" class="mb"> + <h5> + {{ titre.titulaires.length > 1 ? 'Titulaires' : 'Titulaire' }} + </h5> + <ul class="list-inline"> + <li v-for="e in titre.titulaires" :key="e.id" class="mb-xs mr-xs"> + <router-link + :to="{ name: 'entreprise', params: { id: e.id } }" + class="btn-border small p-s rnd-xs mr-xs" + tag="button" + > + <span class="mr-xs">{{ + e.legalSiren ? `${e.nom} (${e.legalSiren})` : e.nom + }}</span> + <Tag + v-if="e.operateur" + :mini="true" + color="bg-info" + class="ml-xs" + > + Opérateur + </Tag> + </router-link> + </li> + </ul> + </div> + + <div v-if="titre.amodiataires.length" class="mb"> + <h5> + {{ titre.amodiataires.length > 1 ? 'Amodiataires' : 'Amodiataire' }} + </h5> + <ul class="list-prefix"> + <li v-for="e in titre.amodiataires" :key="e.id"> + <router-link + :to="{ name: 'entreprise', params: { id: e.id } }" + class="btn-border small p-s rnd-xs mr-xs" + tag="button" + > + <span class="mr-xs">{{ + e.legalSiren ? `${e.nom} (${e.legalSiren})` : e.nom + }}</span> + <Tag + v-if="e.operateur" + :mini="true" + color="bg-info" + class="ml-xs" + > + Opérateur + </Tag> + </router-link> + </li> + </ul> + </div> + + <div v-if="hasContenu"> + <Section + v-for="s in titre.type.sections" + :key="s.id" + :entete="false" + :section="s" + :contenu="titre.contenu[s.id]" + /> + </div> + </div> + </div> +</template> + +<script> +import Pill from '../_ui/pill.vue' +import Tag from '../_ui/tag.vue' +import TagList from '../_ui/tag-list.vue' +import Dot from '../_ui/dot.vue' +import Section from '../_common/section.vue' +import Statut from '../_common/statut.vue' +import { dateFormat } from '@/utils' + +export default { + components: { Pill, Dot, TagList, Section, Statut, Tag }, + + props: { + titre: { + type: Object, + default: () => ({}) + } + }, + + computed: { + phases() { + return this.titre.demarches.filter(d => d.phase) + }, + + hasContenu() { + return ( + this.titre.contenu && + this.titre.type.sections && + this.titre.type.sections.some(s => + s.elements.some( + e => + this.titre.contenu[s.id] && + this.titre.contenu[s.id][e.id] !== undefined + ) + ) + ) + } + }, + + methods: { + dateFormat(date) { + return dateFormat(date) + } + } +} +</script> diff --git a/packages/ui/src/components/titre/remove-popup.vue b/packages/ui/src/components/titre/remove-popup.vue new file mode 100644 index 0000000000000000000000000000000000000000..703ba08a19371141e3de0bd8eaefb2b3dec5cb8a --- /dev/null +++ b/packages/ui/src/components/titre/remove-popup.vue @@ -0,0 +1,114 @@ +<template> + <Popup :messages="messages"> + <template #header> + <div> + <h6> + <span class="cap-first"> {{ titreNom }} </span + ><span class="color-neutral"> | </span + ><span class="cap-first"> + {{ typeNom }} + </span> + </h6> + <h2 class="cap-first">Suppression du titre</h2> + </div> + </template> + + <p class="bold"> + Souhaitez vous supprimer le titre + <span class="color-inverse">{{ titreNom }}</span> (<span + class="color-inverse" + >{{ typeNom }}</span + >) ? + </p> + <div class="bg-warning color-bg p-s mb-l"> + <span class="bold"> Attention </span>: cette opération est définitive et + ne peut pas être annulée. + </div> + + <template #footer> + <div v-if="!loading" class="tablet-blobs"> + <div class="tablet-blob-1-3 mb tablet-mb-0"> + <button class="btn-border rnd-xs p-s full-x" @click="cancel"> + Annuler + </button> + </div> + <div class="tablet-blob-2-3"> + <button class="btn-flash rnd-xs p-s full-x" @click="remove"> + Supprimer + </button> + </div> + </div> + <div v-else class="p-s full-x bold">Suppression en cours…</div> + </template> + </Popup> +</template> + +<script> +import Popup from '../_ui/popup.vue' + +export default { + name: 'CaminoTitreRemovePopup', + + components: { + Popup + }, + + props: { + titreId: { + type: String, + default: '' + }, + + titreNom: { + type: String, + default: '' + }, + + typeNom: { + type: String, + default: '' + } + }, + + computed: { + loading() { + return this.$store.state.popup.loading + }, + + messages() { + return this.$store.state.popup.messages + } + }, + + created() { + document.addEventListener('keyup', this.keyup) + }, + + beforeUnmount() { + document.removeEventListener('keyup', this.keyup) + }, + + methods: { + async remove() { + await this.$store.dispatch('titre/remove', this.titreId) + }, + + cancel() { + this.errorsRemove() + this.$store.commit('popupClose') + }, + + keyup(e) { + if ((e.which || e.keyCode) === 27) { + this.cancel() + } else if ((e.which || e.keyCode) === 13) { + this.remove() + } + }, + + errorsRemove() { + // this.$store.commit('utilisateur/loginMessagesRemove') + } + } +} +</script> diff --git a/packages/ui/src/components/titre/repertoire.vue b/packages/ui/src/components/titre/repertoire.vue new file mode 100644 index 0000000000000000000000000000000000000000..9464de2763b7677a09492d0c8774fcd4f10450f3 --- /dev/null +++ b/packages/ui/src/components/titre/repertoire.vue @@ -0,0 +1,64 @@ +<template> + <div class="tablet-blobs mb-xl"> + <div class="tablet-blob-1-2"> + <div v-if="titulaires.length" class="mb"> + <h5>Titulaire{{ titulaires.length > 1 ? 's' : '' }}</h5> + <Entreprise + v-for="titulaire in titulaires" + :key="titulaire.id" + :entreprise="titulaire" + class="mb-s" + @titre-event-track="eventTrack" + /> + </div> + <div v-if="amodiataires.length" class="mb"> + <h5>Amodiataire{{ amodiataires.length > 1 ? 's' : '' }}</h5> + <Entreprise + v-for="amodiataire in amodiataires" + :key="amodiataire.id" + :entreprise="amodiataire" + class="mb-s" + @titre-event-track="eventTrack" + /> + </div> + </div> + + <div class="tablet-blob-1-2"> + <div v-if="administrations.length" class="mb"> + <h5>Administrations</h5> + <Administration + v-for="administration in administrations" + :key="administration.id" + :administration="administration" + class="mb-s" + @titre-event-track="eventTrack" + /> + </div> + </div> + </div> +</template> + +<script> +import Entreprise from '../titre/entreprise.vue' +import Administration from '../titre/administration.vue' + +export default { + components: { Entreprise, Administration }, + + props: { + titulaires: { type: Array, default: () => [] }, + + amodiataires: { type: Array, default: () => [] }, + + administrations: { type: Array, default: () => [] } + }, + + emits: ['titre-event-track'], + + methods: { + eventTrack(event) { + this.$emit('titre-event-track', event) + } + } +} +</script> diff --git a/packages/ui/src/components/titre/statut-dot.vue b/packages/ui/src/components/titre/statut-dot.vue new file mode 100644 index 0000000000000000000000000000000000000000..3a3df41da53653d9ed7eced5f4a2d338fc9f2ed6 --- /dev/null +++ b/packages/ui/src/components/titre/statut-dot.vue @@ -0,0 +1,35 @@ +<template> + <Dot :color="colorGet(statut)" /> +</template> + +<script> +import Dot from '../_ui/dot.vue' + +export default { + components: { + Dot + }, + + props: { + statut: { + type: String, + default: 'neutral' + } + }, + + computed: { + colors() { + return this.$store.state.lib.statuts + } + }, + + methods: { + colorGet(value) { + const res = Object.keys(this.colors).find(color => + this.colors[color].find(v => v === value) + ) + return this.colors && res ? `bg-${res}` : 'bg-neutral' + } + } +} +</script> diff --git a/packages/ui/src/components/titre/territoires.vue b/packages/ui/src/components/titre/territoires.vue new file mode 100644 index 0000000000000000000000000000000000000000..69930203a60af541bc04cfdb22e68b18555593da --- /dev/null +++ b/packages/ui/src/components/titre/territoires.vue @@ -0,0 +1,69 @@ +<template> + <div class="tablet-blobs mb-xl"> + <div class="tablet-blob-1-4"> + <div v-if="surface"> + <h5>Surface</h5> + <p>{{ numberFormat(surface) }} km² environ</p> + </div> + </div> + <div + v-if="(pays && pays.length) || (forets && forets.length)" + class="tablet-blob-3-4" + > + <h5>Territoires</h5> + <template v-if="pays && pays.length"> + <div v-for="region in pays[0].regions" :key="region.id"> + <div v-for="departement in region.departements" :key="departement.id"> + <h6 class="mb-s"> + {{ + pays[0].nom === 'République Française' + ? region.nom + ' / ' + departement.nom + : region.nom + }} + </h6> + <TagList :elements="departement.communes.map(c => c.nom)" /> + </div> + </div> + </template> + <div v-if="forets?.length"> + <div> + <h6 class="mb-s">Forêts</h6> + <TagList :elements="forets.map(f => f.nom)" /> + </div> + </div> + <div v-if="sdomZones?.length"> + <div> + <h6 class="mb-s">Zones du SDOM</h6> + <TagList :elements="sdomZones.map(f => f.nom)" /> + </div> + </div> + </div> + </div> +</template> + +<script> +import numberFormat from '@/utils/number-format' +import TagList from '../_ui/tag-list.vue' + +export default { + components: { + TagList + }, + + props: { + pays: { type: Array, default: () => [] }, + + forets: { type: Array, default: () => [] }, + + sdomZones: { type: Array, default: () => [] }, + + surface: { type: Number, default: 0 } + }, + + methods: { + numberFormat(number) { + return numberFormat(number) + } + } +} +</script> diff --git a/packages/ui/src/components/titres.vue b/packages/ui/src/components/titres.vue new file mode 100644 index 0000000000000000000000000000000000000000..fc74a3cbf321f13206d8b5fd2a477a1c69c6fd52 --- /dev/null +++ b/packages/ui/src/components/titres.vue @@ -0,0 +1,191 @@ +<template> + <div> + <div class="desktop-blobs"> + <div class="desktop-blob-2-3"> + <h1 class="mt-xs mb-m">Titres miniers et autorisations</h1> + </div> + + <div class="desktop-blob-1-3"> + <button + v-if="titresDemandeCreation" + class="btn btn-primary small flex" + @click="titreDemandeOpen" + > + <span class="mt-xxs">Demander un titre…</span> + <i class="icon-24 icon-plus flex-right" /> + </button> + </div> + </div> + + <Filtres :initialized="initialized" /> + + <div class="tablet-blobs tablet-flex-direction-reverse"> + <div class="tablet-blob-1-3 flex mb-s"> + <Downloads + v-if="titres.length" + :formats="['geojson', 'csv', 'xlsx', 'ods']" + section="titres" + class="flex-right full-x downloads" + /> + </div> + + <div class="tablet-blob-2-3 flex"> + <div + v-for="v in vues" + :key="v.id" + class="mr-xs" + :class="{ active: vueId === v.id }" + > + <button + v-if="vueId !== v.id" + class="p-m btn-tab rnd-t-s" + @click="vueClick(v.id)" + > + <i :class="`icon-${v.icon}`" class="icon-24" /> + </button> + <div v-else class="p-m span-tab rnd-t-s"> + <i :class="`icon-${v.icon}`" class="icon-24" /> + </div> + </div> + <div class="pl-m pt-m h5 bold"> + {{ resultat }} + </div> + </div> + </div> + + <div class="line-neutral width-full" /> + <template v-if="initialized"> + <Map v-if="vueId === 'carte'" :titres="titres" /> + + <Table v-else-if="vueId === 'table'" :titres="titres" :total="total" /> + </template> + <div v-else class="table-view mb-xxl mt">…</div> + </div> +</template> + +<script> +import Downloads from './_common/downloads.vue' +import Table from './titres/table-pagination.vue' +import Map from './titres/map.vue' +import Filtres from './titres/filtres.vue' + +export default { + name: 'Titres', + + components: { Filtres, Downloads, Map, Table }, + + data() { + return { + vues: [ + { id: 'carte', icon: 'globe' }, + { id: 'table', icon: 'list' } + ] + } + }, + + computed: { + user() { + return this.$store.state.user.element + }, + + titres() { + return this.$store.state.titres.elements + }, + + metas() { + return { + domaines: this.$store.state.titres.metas.domaines, + types: this.$store.state.titres.metas.types, + statuts: this.$store.state.titres.metas.statuts + } + }, + + initialized() { + return this.$store.state.titres.initialized + }, + + preferences() { + return this.$store.state.titres.params + }, + + vueId() { + return this.$store.state.titres.vueId + }, + + titresCreation() { + return this.$store.state.user.metas.domaines.some(d => + d.titresTypes.some(dtt => dtt.titresCreation) + ) + }, + + titresDemandeCreation() { + return this.$store.state.user.metas.entreprisesTitresCreation.length + }, + + total() { + return this.$store.state.titres.total + }, + + resultat() { + const res = + this.total > this.titres.length + ? `${this.titres.length} / ${this.total}` + : this.titres.length + + return `${res} résultat${this.titres.length > 1 ? 's' : ''}` + }, + + loading() { + return this.$store.state.loading.includes('titres') + } + }, + + watch: { + user: 'init', + + '$route.query': { + handler: function () { + this.$store.dispatch('titres/routeUpdate') + } + } + }, + + async created() { + await this.init() + }, + + unmounted() { + this.$store.commit('titres/reset') + }, + + methods: { + async init() { + await this.$store.dispatch('titres/init') + }, + + async vueSet(vueId) { + await this.$store.dispatch('titres/vueSet', vueId) + + if (this.$matomo) { + this.$matomo.trackEvent('titres-vue', 'titres-vueId', vueId) + } + }, + + vueClick(vueId) { + if (!this.loading) { + this.vueSet(vueId) + } + }, + + titreDemandeOpen() { + this.$router.push({ name: 'titre-creation' }) + }, + + eventTrack(event) { + if (this.$matomo) { + this.$matomo.trackEvent(event.categorie, event.action, event.nom) + } + } + } +} +</script> diff --git a/packages/ui/src/components/titres/filtres.js b/packages/ui/src/components/titres/filtres.js new file mode 100644 index 0000000000000000000000000000000000000000..54bc0d74e4ae1cc14228b201957e968142be93f7 --- /dev/null +++ b/packages/ui/src/components/titres/filtres.js @@ -0,0 +1,78 @@ +import { markRaw } from '@vue/reactivity' + +import FiltresDomaines from '../_common/filtres/domaines.vue' +import FiltresStatuts from '../_common/filtres/statuts.vue' +import FiltresTypes from '../_common/filtres/types.vue' + +import { elementsFormat } from '../../utils/index' +import { titresFiltres, titresRechercher } from '@/api/titres' + +const filtres = [ + { + id: 'titresIds', + type: 'autocomplete', + value: [], + elements: [], + name: 'Noms', + lazy: true, + search: value => titresRechercher({ noms: value, intervalle: 100 }), + load: value => titresFiltres({ titresIds: value }) + }, + { + id: 'entreprisesIds', + type: 'autocomplete', + value: [], + name: 'Entreprises', + elementsFormat + }, + { + id: 'substancesLegalesIds', + type: 'autocomplete', + value: [], + name: 'Substances', + elementsFormat + }, + { + id: 'references', + type: 'input', + value: '', + name: 'Références', + placeholder: 'Référence DGEC, DEAL, DEB, BRGM, Ifremer, …' + }, + { + id: 'territoires', + type: 'input', + value: '', + name: 'Territoires', + placeholder: 'Commune, département, région, …' + }, + { + id: 'domainesIds', + name: 'Domaines', + type: 'checkboxes', + value: [], + elements: [], + component: markRaw(FiltresDomaines), + elementsFormat + }, + { + id: 'typesIds', + name: 'Types', + type: 'checkboxes', + value: [], + elements: [], + component: markRaw(FiltresTypes), + elementsFormat + }, + { + id: 'statutsIds', + name: 'Statuts', + type: 'checkboxes', + value: [], + elements: [], + component: markRaw(FiltresStatuts), + elementsFormat + } +] + +export default filtres diff --git a/packages/ui/src/components/titres/filtres.vue b/packages/ui/src/components/titres/filtres.vue new file mode 100644 index 0000000000000000000000000000000000000000..92e6899bbb53ce8a465b98a95d6a70eafa3e8247 --- /dev/null +++ b/packages/ui/src/components/titres/filtres.vue @@ -0,0 +1,76 @@ +<template> + <Filtres + :filtres="filtres" + :initialized="initialized" + :metas="metas" + :params="params" + @params-update="paramsFiltresUpdate" + @toggle="filtresToggle" + /> +</template> + +<script> +import Filtres from '../_common/filtres.vue' +import filtres from './filtres.js' +import paramsEventTrack from '../../utils/matomo-tracker.js' + +export default { + components: { Filtres }, + + props: { + initialized: { type: Boolean, required: true } + }, + + data() { + return { + filtres + } + }, + + computed: { + metas() { + return this.$store.state.titres.metas + }, + + params() { + return this.$store.state.titres.params.filtres + }, + + definitions() { + return this.$store.state.titres.definitions + } + }, + + methods: { + paramsFiltresUpdate(params) { + this.$store.dispatch('titres/paramsSet', { + section: 'filtres', + params + }) + + this.$store.dispatch('titres/paramsSet', { + section: 'table', + params: { page: 1 } + }) + + this.paramsEventTrack(params) + }, + + paramsEventTrack(params) { + paramsEventTrack( + params, + this.definitions, + this.$matomo, + 'titres', + 'filtres' + ) + }, + + filtresToggle(opened) { + if (opened) { + this.paramsEventTrack() + } + } + } +} +</script> diff --git a/packages/ui/src/components/titres/map.js b/packages/ui/src/components/titres/map.js new file mode 100644 index 0000000000000000000000000000000000000000..8fcec645f82fa062dec54ac73b1e37620d0a3f39 --- /dev/null +++ b/packages/ui/src/components/titres/map.js @@ -0,0 +1,170 @@ +import { + leafletMarkerClusterGroupBuild, + leafletCoordinatesFind, + leafletGeojsonCenterFind, + leafletGeojsonBuild, + leafletMarkerBuild, + leafletIconBuild +} from '../_map/leaflet.js' + +const zones = [ + { + id: 'fr', + name: 'Métropole', + type: 'LineString', + coordinates: [ + [-5, 41], + [10, 51] + ] + }, + { + id: 'gf', + name: 'Guyane', + type: 'LineString', + coordinates: [ + [-55, 6], + [-51, 2] + ] + }, + { + id: 'oi', + name: 'Océan Indien', + type: 'LineString', + coordinates: [ + [39, -23], + [58, -13] + ] + }, + { + id: 'an', + name: 'Antilles', + type: 'LineString', + coordinates: [ + [-64, 15], + [-59, 16] + ] + } +] + +const clustersBuild = domaines => + domaines.reduce((clusters, { id }) => { + const divIconOptions = { + html: id.toUpperCase(), + className: `py-xs px-s pill small mono color-bg bold bg-domaine-${id}`, + iconSize: null, + iconAnchor: [0, 0] + } + + clusters[id] = leafletMarkerClusterGroupBuild(divIconOptions) + + return clusters + }, {}) + +const domainesColors = { + c: '#b88847', + f: '#4a515d', + g: '#c94f17', + h: '#c2266a', + i: '#aaaaaa', + m: '#376faa', + r: '#a0aa31', + s: '#7657b5', + w: '#1ea88c' +} + +const iconUrlFind = domaineId => { + const iconSvg = `<svg width="32" height="40" xmlns="http://www.w3.org/2000/svg"><style>text {font-family:'Lucida Sans Typewriter', monaco, 'Lucida Console', monospace; font-weight:700;}</style><polygon points="16,40 24,30 8,30" fill="white" /><ellipse ry="16" rx="16" cy="16" cx="16" stroke-width="1" stroke="white" fill="${ + domainesColors[domaineId] + }"/><text xml:space="preserve" text-anchor="middle" font-size="13" y="21" x="16" fill="white">${domaineId.toUpperCase()}</text></svg>` + + return 'data:image/svg+xml;base64,' + btoa(iconSvg) +} + +const layersBuild = (titres, router) => + titres.reduce( + ({ geojsons, markers }, titre, index) => { + if (!titre.geojsonMultiPolygon && !titre.geojsonCentre) + return { geojsons, markers } + + const titreId = titre.id || index + const domaineId = titre.domaine.id + const icon = leafletIconBuild({ + iconUrl: iconUrlFind(domaineId), + iconSize: [32, 40], + iconAnchor: [16, 40] + }) + + const latLng = titre.geojsonCentre + ? leafletCoordinatesFind(titre.geojsonCentre) + : leafletGeojsonCenterFind(titre.geojsonMultiPolygon) + + const marker = leafletMarkerBuild(latLng, icon) + + const popupHtmlTitulaires = + titre.titulaires && titre.titulaires.length + ? titre.titulaires.map(tt => `<li>${tt.nom}</li>`).join('') + : '' + + const popupHtml = `<h4 class="mb-s">${ + titre.nom ? titre.nom : '' + }</h4><div class="mb-m"><span class="rnd py-xxs px-s cap-first mb-0 bold color-bg h6 bg-${ + titre.statut.couleur + }">${ + titre.statut.nom + }</span></div><ul class="list-prefix h6">${popupHtmlTitulaires}</ul>` + + const popupOptions = { + closeButton: false, + offset: [0, -24], + autoPan: false + } + + const titreRoute = titre.slug + ? { name: 'titre', params: { id: titre.slug } } + : null + + const methods = { + click() { + if (titreRoute) { + router.push(titreRoute) + } + }, + mouseover(e) { + this.openPopup() + }, + mouseout(e) { + this.closePopup() + } + } + + marker.id = titreId + marker.domaineId = domaineId + marker.bindPopup(popupHtml, popupOptions) + marker.on(methods) + + const className = `svg-fill-pattern-${titre.type.type.id}-${domaineId}` + const geojsonOptions = { + style: { fillOpacity: 0.75, weight: 1, color: 'white', className }, + onEachFeature: (feature, layer) => { + layer.bindPopup(popupHtml, popupOptions) + layer.on(methods) + } + } + + const geojson = leafletGeojsonBuild( + titre.geojsonMultiPolygon, + geojsonOptions + ) + + if (marker) { + markers.push(marker) + } + + geojsons[titreId] = geojson + + return { geojsons, markers } + }, + { geojsons: {}, markers: [] } + ) + +export { zones, clustersBuild, layersBuild } diff --git a/packages/ui/src/components/titres/map.vue b/packages/ui/src/components/titres/map.vue new file mode 100644 index 0000000000000000000000000000000000000000..fde9d3f818b7ce6362d16ed43a6e25f120adff62 --- /dev/null +++ b/packages/ui/src/components/titres/map.vue @@ -0,0 +1,320 @@ +<template> + <div class="width-full bg-alt"> + <Mapo + ref="map" + :tiles-layer="tilesLayer" + :geojson-layers="geojsonLayers" + :marker-layers="markerLayers" + :canvas-markers="canvasMarkers" + :legends="legends" + class="map map-view mb-s" + @map-update="titresPreferencesUpdate" + /> + + <MapPattern :domaines-ids="domainesIds" :types-ids="typesIds" /> + + <MapWarningBrgm :zoom="preferences.zoom" :tiles-id="tilesId" /> + + <div class="container overflow-auto"> + <div class="desktop-blobs"> + <div class="desktop-blob-1-2 desktop-flex"> + <div class="mb-s"> + <span class="mr-s"> + <button + class="btn-border small rnd-m px-s py-xs" + @click="mapFrame" + > + Tout afficher + </button> + </span> + </div> + <ul class="list-inline pill-list mb-s"> + <li v-for="z in zones" :key="z.id" class="mr-px mb-px"> + <button + class="btn-border small pill-item px-s py-xs" + @click="mapCenter(z.id)" + > + {{ z.name }} + </button> + </li> + </ul> + </div> + + <div class="desktop-blob-1-2 desktop-flex"> + <div class="flex mb-s"> + <div :class="{ active: markerLayersId === 'clusters' }"> + <button + class="btn-border p-s rnd-l-s" + title="regroupe les marqueurs" + @click="markerLayersIdSet('clusters')" + > + <i class="icon-24 icon-markers-clusters" /> + </button> + </div> + <div :class="{ active: markerLayersId === 'markers' }"> + <button + class="btn-border p-s" + title="affiche les marqueurs" + @click="markerLayersIdSet('markers')" + > + <i class="icon-24 icon-markers-markers" /> + </button> + </div> + <div :class="{ active: markerLayersId === 'none' }" class="mr-s"> + <button + class="btn-border p-s rnd-r-s" + title="affiche les contours uniquement" + @click="markerLayersIdSet('none')" + > + <i class="icon-24 icon-markers-none" /> + </button> + </div> + </div> + + <MapTilesSelector + :tiles="tiles" + :tiles-id="tilesId" + class="flex-grow mb-s" + @params-update="userPreferencesUpdate" + /> + </div> + </div> + </div> + </div> +</template> + +<script> +import { nextTick } from 'vue' +import Mapo from '../_map/index.vue' +import MapTilesSelector from '../_map/tiles-selector.vue' +import MapWarningBrgm from '../_map/warning-brgm.vue' +import MapPattern from '../_map/pattern.vue' +import { + leafletGeojsonBoundsGet, + leafletTilesBuild, + leafletTilesLegendGet +} from '../_map/leaflet.js' +import { clustersBuild, layersBuild, zones } from './map.js' + +export default { + components: { + MapWarningBrgm, + Mapo, + MapTilesSelector, + MapPattern + }, + + props: { + titres: { type: Array, required: true } + }, + + data() { + return { + zones, + zoneId: 'fr', + geojsons: {}, + clusters: [], + markers: [], + geojsonLayers: [] + } + }, + + computed: { + tilesActive() { + return this.$store.getters['user/tilesActive'] + }, + tilesLayer() { + return leafletTilesBuild(this.tilesActive) + }, + legends() { + return leafletTilesLegendGet(this.tilesActive) + }, + markerLayersId() { + return this.$store.state.user.preferences.carte.markerLayersId + }, + + markerLayers() { + if (this.markerLayersId === 'clusters') { + return this.clusters + } + + return [] + }, + + canvasMarkers() { + if (this.markerLayersId === 'markers') { + return this.markers + } + + return [] + }, + + zone() { + return this.zones.find(z => z.id === this.zoneId) + }, + + bounds() { + return leafletGeojsonBoundsGet(this.zone) + }, + + domaines() { + return this.$store.state.titres.metas.domaines + }, + + domainesIds() { + return this.domaines.map(({ id }) => id) + }, + + typesIds() { + return this.$store.state.titres.metas.types.map(({ id }) => id) + }, + + tiles() { + return this.$store.state.user.metas.tiles + }, + + tilesId() { + return this.$store.state.user.preferences.carte.tilesId + }, + + preferences() { + return this.$store.state.titres.params.carte + } + }, + + watch: { + titres: 'titresInit' + }, + + mounted() { + this.init() + }, + + created() { + window.addEventListener('popstate', this.popState) + }, + + beforeUnmount() { + window.removeEventListener('popstate', this.popState) + }, + + methods: { + init() { + if (this.preferences.zoom && this.preferences.centre) { + this.positionSet() + } else { + this.boundsFit() + } + }, + + titresInit() { + const { geojsons, markers } = layersBuild(this.titres, this.$router) + const clusters = clustersBuild(this.domaines) + this.geojsons = geojsons + this.markers = markers + this.markers.forEach(marker => { + if (clusters[marker.domaineId]) { + clusters[marker.domaineId].addLayer(marker) + } + }) + + this.clusters = Object.keys(clusters).map( + domaineId => clusters[domaineId] + ) + + this.geojsonLayersDisplay() + }, + + titresPreferencesUpdate(params) { + if (params.center || params.zoom || params.bbox) { + if (params.center) { + params.centre = params.center + + delete params.center + } + + if (params.bbox) { + params.perimetre = params.bbox + + delete params.bbox + } + + this.$store.dispatch('titres/paramsSet', { + section: 'carte', + params + }) + } + }, + + userPreferencesUpdate(params) { + this.eventTrack() + this.$store.dispatch('user/preferencesSet', { + section: 'carte', + params + }) + }, + + mapCenter(zoneId) { + if (this.zoneId !== zoneId) { + this.zoneId = zoneId + } + + this.boundsFit() + }, + + async mapFrame() { + const params = { perimetre: [-180, -90, 180, 90] } + + await this.$store.dispatch('titres/paramsSet', { + section: 'carte', + params + }) + + if (this.$refs.map) { + // le traitement au dessus peut-être très long et l’utilisateur a pu changer de page + this.$refs.map.allFit() + } + }, + + boundsFit() { + this.$refs.map.boundsFit(this.bounds) + }, + + positionSet() { + const zoom = this.preferences.zoom + const center = this.preferences.centre + this.$refs.map.positionSet({ zoom, center }) + }, + + popState() { + this.positionSet() + }, + + geojsonLayersDisplay() { + nextTick(() => { + this.geojsonLayers = [] + this.markers.forEach(marker => { + if ( + this.markerLayersId !== 'clusters' || + (this.$refs.map && this.$refs.map.hasLayer(marker)) + ) { + this.geojsonLayers.push(this.geojsons[marker.id]) + } + }) + }) + }, + + markerLayersIdSet(markerLayersId) { + this.userPreferencesUpdate({ markerLayersId }) + + this.geojsonLayersDisplay() + }, + + eventTrack() { + if (this.$matomo) { + this.$matomo.trackEvent('titres-vue', 'titre-id-fond-carte') + } + } + } +} +</script> diff --git a/packages/ui/src/components/titres/table-pagination.vue b/packages/ui/src/components/titres/table-pagination.vue new file mode 100644 index 0000000000000000000000000000000000000000..decce6b6997738efcc3d51bb4e0996418a331c47 --- /dev/null +++ b/packages/ui/src/components/titres/table-pagination.vue @@ -0,0 +1,88 @@ +<template> + <Table + :column="preferences.colonne" + :columns="colonnes" + :order="preferences.ordre" + :page="preferences.page" + :range="preferences.intervalle" + :rows="lignes" + :total="total" + @params-update="preferencesUpdate" + /> +</template> + +<script> +import Table from '../_ui/table-pagination.vue' + +import { titresColonnes, titresLignesBuild } from './table.js' + +export default { + name: 'Titres', + + components: { Table }, + + props: { + titres: { type: Array, required: true }, + total: { type: Number, required: true } + }, + + computed: { + preferences() { + return this.$store.state.titres.params.table + }, + + activitesCol() { + const user = this.$store.state.user.element + + return user && user.sections.activites + }, + + colonnes() { + return titresColonnes.filter(({ id }) => + this.activitesCol ? true : id !== 'activites' + ) + }, + + lignes() { + return titresLignesBuild(this.titres, this.activitesCol) + }, + + pages() { + const pages = Math.ceil(this.lignes.length / this.preferences.intervalle) + return pages || 0 + } + }, + + methods: { + preferencesUpdate(params) { + if (params.range) { + params.intervalle = params.range + delete params.range + } + + if (params.column) { + params.colonne = params.column + delete params.column + } + + if (params.order) { + params.ordre = params.order + delete params.order + } + + this.$store.dispatch('titres/paramsSet', { + section: 'table', + params + }) + }, + + pageUpdate(page) { + this.preferencesUpdate({ page }) + }, + + intervalleUpdate(range) { + this.preferencesUpdate({ range, page: 1 }) + } + } +} +</script> diff --git a/packages/ui/src/components/titres/table.js b/packages/ui/src/components/titres/table.js new file mode 100644 index 0000000000000000000000000000000000000000..6509eec3e2ff62319879c3e0ee2911b5e1c4b8f0 --- /dev/null +++ b/packages/ui/src/components/titres/table.js @@ -0,0 +1,172 @@ +import { markRaw } from '@vue/reactivity' +import TagList from '../_ui/tag-list.vue' +import List from '../_ui/list.vue' +import CaminoDomaine from '../_common/domaine.vue' +import TitreNom from '../_common/titre-nom.vue' +import TitreTypeTypeNom from '../_common/titre-type-type-nom.vue' +import CoordonneesIcone from '../_common/coordonnees-icone.vue' +import ActivitesPills from '../activites/pills.vue' +import Statut from '../_common/statut.vue' + +const titresColonnes = [ + { + id: 'nom', + name: 'Nom', + class: ['min-width-8'] + }, + { + id: 'domaine', + name: '' + }, + { + id: 'type', + name: 'Type', + class: ['min-width-8'] + }, + { + id: 'statut', + name: 'Statut', + class: ['nowrap', 'min-width-5'] + }, + { + id: 'activites', + name: 'Activités', + class: ['min-width-5'] + }, + { + id: 'substances', + name: 'Substances', + class: ['min-width-6'] + }, + { + id: 'coordonnees', + name: 'Carte' + }, + { + id: 'titulaires', + name: 'Titulaires', + class: ['min-width-10'] + }, + { + id: 'regions', + name: 'Régions', + class: ['min-width-8'] + }, + { + id: 'departements', + name: 'Départements', + class: ['min-width-8'] + }, + { + id: 'references', + name: 'Références', + class: ['min-width-8'] + } +] + +const titresLignesBuild = (titres, activitesCol, ordre = 'asc') => + titres.map(titre => { + const columns = { + nom: { + component: markRaw(TitreNom), + props: { nom: titre.nom }, + value: titre.nom + }, + domaine: { + component: markRaw(CaminoDomaine), + props: { domaineId: titre.domaine.id }, + value: titre.domaine.id + }, + coordonnees: { + component: markRaw(CoordonneesIcone), + props: { coordonnees: titre.coordonnees }, + value: titre.coordonnees ? '·' : '' + }, + type: { + component: markRaw(TitreTypeTypeNom), + props: { nom: titre.type.type.nom }, + value: titre.type.type.nom + }, + statut: { + component: markRaw(Statut), + props: { + color: titre.statut.couleur, + nom: titre.statut.nom + }, + value: titre.statut.nom + }, + substances: { + component: markRaw(TagList), + props: { elements: titre.substances?.map(s => s.nom) }, + class: 'mb--xs', + value: titre.substances?.map(s => s.nom).join(', ') + }, + titulaires: { + component: markRaw(List), + props: { + elements: titre.titulaires?.map(({ nom }) => nom), + mini: true + }, + class: 'mb--xs', + value: titre.titulaires?.map(({ nom }) => nom).join(', ') + }, + regions: { + component: markRaw(List), + props: { + elements: titre.pays?.reduce( + (acc, pay) => acc.concat(pay.regions?.map(({ nom }) => nom)), + [] + ), + mini: true + }, + class: 'mb--xs' + }, + departements: { + component: markRaw(List), + props: { + elements: titre.pays?.reduce( + (pays, pay) => + pays.concat( + pay.regions?.reduce( + (regions, region) => + regions.concat(region.departements?.map(({ nom }) => nom)), + [] + ) + ), + [] + ), + mini: true + }, + class: 'mb--xs' + }, + references: { + component: List, + props: { + elements: titre.references?.map( + ref => `${ref.type.nom} : ${ref.nom}` + ), + mini: true + }, + class: 'mb--xs' + } + } + + if (activitesCol) { + columns.activites = { + component: markRaw(ActivitesPills), + props: { + activitesAbsentes: titre.activitesAbsentes, + activitesEnConstruction: titre.activitesEnConstruction + }, + value: titre.activitesAbsentes + titre.activitesEnConstruction + } + } + + return { + id: titre.id, + link: { name: 'titre', params: { id: titre.slug } }, + columns + } + }) + +export { titresColonnes, titresLignesBuild } diff --git a/packages/ui/src/components/titres/table.vue b/packages/ui/src/components/titres/table.vue new file mode 100644 index 0000000000000000000000000000000000000000..44d6d404f0ea610508e74318386c8ad7e9476211 --- /dev/null +++ b/packages/ui/src/components/titres/table.vue @@ -0,0 +1,85 @@ +<template> + <Tablo + :column="preferences.colonne" + :columns="colonnes" + :order="preferences.ordre" + :rows="lignes" + class="width-full-p" + @params-update="preferencesUpdate" + /> +</template> + +<script> +import Tablo from '../_ui/table.vue' + +import { titresColonnes, titresLignesBuild } from './table.js' + +export default { + name: 'Titres', + + components: { Tablo }, + + props: { + titres: { type: Array, required: true } + }, + + computed: { + preferences() { + return this.$store.state.titres.params.table + }, + + activitesCol() { + const user = this.$store.state.user.element + + return user && user.sections.activites + }, + + colonnes() { + return titresColonnes.filter(({ id }) => + this.activitesCol ? true : id !== 'activites' + ) + }, + + lignes() { + return titresLignesBuild(this.titres, this.activitesCol) + }, + + pages() { + const pages = Math.ceil(this.lignes.length / this.preferences.intervalle) + return pages || 0 + } + }, + + methods: { + preferencesUpdate(params) { + if (params.range) { + params.intervalle = params.range + delete params.range + } + + if (params.column) { + params.colonne = params.column + delete params.column + } + + if (params.order) { + params.ordre = params.order + delete params.order + } + + this.$store.dispatch('titres/paramsSet', { + section: 'table', + params + }) + }, + + pageUpdate(page) { + this.preferencesUpdate({ page }) + }, + + intervalleUpdate(range) { + this.preferencesUpdate({ range, page: 1 }) + } + } +} +</script> diff --git a/packages/ui/src/components/travaux.vue b/packages/ui/src/components/travaux.vue new file mode 100644 index 0000000000000000000000000000000000000000..f067d4407331acc8a2469260894ecedd6ae3b940 --- /dev/null +++ b/packages/ui/src/components/travaux.vue @@ -0,0 +1,13 @@ +<template> + <Page :travaux="true"></Page> +</template> + +<script> +import Page from './demarches/page.vue' + +export default { + name: 'Travaux', + + components: { Page } +} +</script> diff --git a/packages/ui/src/components/user/__snapshots__/pure-button.stories.storyshot b/packages/ui/src/components/user/__snapshots__/pure-button.stories.storyshot new file mode 100644 index 0000000000000000000000000000000000000000..4f2f087ca272a0ddc4d2a9a784e27a12f8ca7610 --- /dev/null +++ b/packages/ui/src/components/user/__snapshots__/pure-button.stories.storyshot @@ -0,0 +1,28 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Automated Storybook Snapshots Components/User/Button Connected 1`] = ` +<div + class="flex" +> + <button + aria-label="profil utilisateur" + class="btn-menu text-decoration-none bold p-0" + id="cmn-user-button-menu" + > + prenom Nom + </button> +</div> +`; + +exports[`Automated Storybook Snapshots Components/User/Button Not Connected 1`] = ` +<div + class="flex" +> + <button + class="btn btn-primary small lh-2" + id="cmn-user-button-connexion" + > + Connexion + </button> +</div> +`; diff --git a/packages/ui/src/components/user/add-popup.vue b/packages/ui/src/components/user/add-popup.vue new file mode 100644 index 0000000000000000000000000000000000000000..7edc954df9c03b8502d51b7286f20de2109b1799 --- /dev/null +++ b/packages/ui/src/components/user/add-popup.vue @@ -0,0 +1,112 @@ +<template> + <Popup :messages="messages"> + <template #header> + <h2>Création d'un compte utilisateur</h2> + </template> + + <div> + <p>Renseignez votre email pour créer votre compte.</p> + <hr /> + </div> + + <div class="tablet-blobs"> + <div class="mb tablet-blob-1-3 tablet-pt-s pb-s"> + <h5>Email</h5> + </div> + <div class="mb tablet-blob-2-3"> + <input + id="cmn-user-add-popup-input-email" + v-model="email" + type="email" + class="p-s" + placeholder="Email" + /> + </div> + </div> + + <template #footer> + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 mb tablet-mb-0"> + <button class="btn-border rnd-xs p-s full-x" @click="cancel"> + Annuler + </button> + </div> + <div class="tablet-blob-2-3"> + <button + id="cmn-user-add-popup-button-valider" + :disabled="!complete" + :class="{ disabled: !complete }" + class="btn-flash rnd-xs p-s full-x" + @click="save" + > + Valider + </button> + </div> + </div> + </template> + </Popup> +</template> + +<script> +import Popup from '../_ui/popup.vue' +import emailValidator from 'email-validator' + +export default { + name: 'CaminoUserAccountCreatePopup', + + components: { + Popup + }, + + data() { + return { + email: '' + } + }, + + computed: { + messages() { + return this.$store.state.popup.messages + }, + + complete() { + return emailValidator.validate(this.email) + } + }, + + created() { + document.addEventListener('keyup', this.keyup) + }, + + beforeUnmount() { + document.removeEventListener('keyup', this.keyup) + }, + + methods: { + save() { + if (this.complete) { + this.$store.dispatch('user/addEmail', this.email) + } + }, + + cancel() { + this.errorsRemove() + this.$store.commit('popupClose') + }, + + keyup(e) { + if ((e.which || e.keyCode) === 27) { + this.cancel() + } else if ((e.which || e.keyCode) === 13) { + if (this.complete) { + this.save() + } + } + }, + + errorsRemove() { + this.$store.commit('popupMessagesRemove') + } + } +} +</script> diff --git a/packages/ui/src/components/user/add.vue b/packages/ui/src/components/user/add.vue new file mode 100644 index 0000000000000000000000000000000000000000..fa51a73e6d4a2697336c41f16e61a5a8388aa239 --- /dev/null +++ b/packages/ui/src/components/user/add.vue @@ -0,0 +1,207 @@ +<template> + <div class="mb-xxl"> + <h2>Création de compte</h2> + + <hr /> + + <p>Renseignez au moins le mot de passe, le prénom et le nom.</p> + + <hr /> + + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5>Email</h5> + </div> + <div class="mb tablet-blob-2-3"> + <div class="py-s mb-xs"> + {{ utilisateur.email }} + </div> + </div> + </div> + + <hr /> + + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5>Mot de passe</h5> + </div> + <div class="mb tablet-blob-2-3"> + <input + id="cmn-user-add-input-mot-de-passe" + v-model="utilisateur.motDePasse" + type="password" + class="p-s mb-s" + placeholder="Mot de passe" + /> + <p class="h6 mb-0">8 caractères minimum.</p> + </div> + </div> + + <hr /> + + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5>Prénom</h5> + </div> + <div class="mb tablet-blob-2-3"> + <input + id="cmn-user-add-input-prenom" + v-model="utilisateur.prenom" + type="text" + class="p-s" + placeholder="Prénom" + /> + </div> + </div> + + <hr /> + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5>Nom</h5> + </div> + <div class="mb tablet-blob-2-3"> + <input + id="cmn-user-add-input-nom" + v-model="utilisateur.nom" + type="text" + class="p-s" + placeholder="Nom" + /> + </div> + </div> + + <hr /> + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5>Téléphone fixe</h5> + </div> + <div class="mb tablet-blob-2-3"> + <input + v-model="utilisateur.telephoneFixe" + type="text" + class="p-s" + placeholder="01…" + /> + </div> + </div> + + <hr /> + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5>Téléphone mobile</h5> + </div> + <div class="mb tablet-blob-2-3"> + <input + v-model="utilisateur.telephoneMobile" + type="text" + class="p-s" + placeholder="06…" + /> + </div> + </div> + + <hr /> + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5>Newsletter</h5> + </div> + <div class="mb tablet-blob-2-3"> + <label class="tablet-pt-s"> + <input + v-model="utilisateur.newsletter" + type="checkbox" + class="p-s mt-s mb-s mr-xs" + /> + <span v-if="utilisateur.newsletter">Inscrit</span> + </label> + </div> + </div> + + <hr /> + + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s" /> + <div class="mb tablet-blob-2-3"> + <input id="cmn-user-add-checkbox-cgu" v-model="cgu" type="checkbox" /> + Vous avez lu et vous acceptez les + <a href="/cgu" target="_blank" rel="noopener noreferrer"> + conditions générales d'utilisation </a + >. + </div> + </div> + + <hr /> + <div class="tablet-blobs"> + <div class="tablet-blob-1-3" /> + <div class="tablet-blob-2-3"> + <button + id="cmn-user-add-button-enregistrer" + ref="save-button" + :disabled="!complete" + :class="{ disabled: !complete }" + class="btn btn-primary" + @click="save" + > + Enregistrer + </button> + </div> + </div> + </div> +</template> + +<script> +export default { + name: 'CaminoUserAdd', + + data() { + return { + utilisateur: { email: this.$route.query.email }, + cgu: false + } + }, + + computed: { + complete() { + return ( + this.utilisateur.nom && + this.utilisateur.prenom && + this.utilisateur.email && + this.utilisateur.motDePasse && + this.cgu + ) + } + }, + + created() { + document.addEventListener('keyup', this.keyup) + }, + + beforeUnmount() { + document.removeEventListener('keyup', this.keyup) + }, + + methods: { + async save() { + if (this.complete) { + if (!this.utilisateur.permissionId) { + this.utilisateur.permissionId = 'defaut' + } + + await this.$store.dispatch('user/add', { + utilisateur: this.utilisateur, + token: this.$route.query.token + }) + } + }, + + keyup(e) { + if ((e.which || e.keyCode) === 13) { + if (this.complete) { + this.$refs['save-button'].focus() + this.save() + } + } + } + } +} +</script> diff --git a/packages/ui/src/components/user/button.vue b/packages/ui/src/components/user/button.vue new file mode 100644 index 0000000000000000000000000000000000000000..ba88db0e07f1961f1bd3e13cbc66ed959c3d497b --- /dev/null +++ b/packages/ui/src/components/user/button.vue @@ -0,0 +1,41 @@ +<template> + <pure-button + :menu-active="menu.component && menu.component.name === 'UserMenu'" + :user="user" + @onConnectionClicked="popupOpen" + @onUserClicked="goToUser" + /> +</template> + +<script> +import UserLoginPopup from './login-popup.vue' +import PureButton from './pure-button.vue' + +export default { + components: { PureButton }, + + computed: { + user() { + return this.$store.state.user.element + }, + menu() { + return this.$store.state.menu + } + }, + + methods: { + popupOpen() { + this.$store.commit('popupOpen', { component: UserLoginPopup }) + }, + goToUser() { + this.eventTrack() + this.$router.push({ name: 'utilisateur', params: { id: this.user.id } }) + }, + eventTrack() { + if (this.$matomo) { + this.$matomo.trackEvent('menu', 'bouton', 'utilisateur') + } + } + } +} +</script> diff --git a/packages/ui/src/components/user/login-popup.vue b/packages/ui/src/components/user/login-popup.vue new file mode 100644 index 0000000000000000000000000000000000000000..1cffa9b5bd2dcb44169fa99248205e054512d230 --- /dev/null +++ b/packages/ui/src/components/user/login-popup.vue @@ -0,0 +1,196 @@ +<template> + <Popup :messages="messages"> + <template #header> + <h2>Connexion</h2> + </template> + + <div class="tablet-blobs mb"> + <label for="cmn-user-login-popup-input-email" class="tablet-blob-1-3 py-s" + >Email</label + > + <div class="tablet-blob-2-3"> + <input + id="cmn-user-login-popup-input-email" + v-model="email" + type="email" + class="p-s" + /> + </div> + </div> + <div class="tablet-blobs mb"> + <label + for="cmn-user-login-popup-input-mot-de-passe" + class="tablet-blob-1-3 py-s" + >Mot de passe</label + > + <div class="tablet-blob-2-3"> + <input + id="cmn-user-login-popup-input-mot-de-passe" + v-model="motDePasse" + type="password" + class="p-s" + /> + </div> + </div> + + <template #footer> + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 mb tablet-mb-0"> + <button class="btn-border rnd-xs p-s full-x" @click="cancel"> + Annuler + </button> + </div> + <div class="tablet-blob-2-3"> + <button + id="cmn-user-login-popup-button-se-connecter" + :disabled="!complete" + :class="{ disabled: !complete }" + class="btn btn-primary mb" + @click="login" + > + Se connecter + </button> + </div> + </div> + <ul class="list-inline mb-0"> + <li> + <button + id="cmn-user-cerbere-login-popup-button-creer-votre-compte" + class="btn-border small rnd-xs py-xs px-s mr-s mb-s tablet-mb-0" + @click="userAddPopupOpen" + > + Créer un compte… + </button> + </li> + <li> + <button + id="cmn-user-login-popup-button-reinitialiser" + class="btn-border small rnd-xs py-xs px-s mr-s mb-s tablet-mb-0" + @click="userPasswordInitPopupOpen" + > + Réinitialiser son mot de passe… + </button> + </li> + + <li> + <button + id="cmn-user-login-popup-button-reinitialiser" + class="btn-border small rnd-xs py-xs px-s mr-s" + @click="cerbereLogin" + > + Se connecter avec Cerbère… + </button> + </li> + </ul> + </template> + </Popup> +</template> + +<script> +import Popup from '../_ui/popup.vue' +import UserAdd from './add-popup.vue' +import UserPasswordInitPopup from './password-init-popup.vue' + +export default { + name: 'UiPopupLogin', + + components: { + Popup + }, + + data() { + return { + email: '', + motDePasse: '' + } + }, + + computed: { + messages() { + return this.$store.state.popup.messages + }, + + complete() { + return !!this.email && !!this.motDePasse + } + }, + + created() { + document.addEventListener('keyup', this.keyup) + }, + + beforeUnmount() { + document.removeEventListener('keyup', this.keyup) + }, + + methods: { + async login() { + if (this.complete) { + await this.$store.dispatch('user/login', { + email: this.email, + motDePasse: this.motDePasse + }) + } + }, + + cancel() { + this.errorsRemove() + this.$store.commit('popupClose') + }, + + errorsRemove() { + this.$store.commit('popupMessagesRemove') + }, + + keyup(e) { + if ((e.which || e.keyCode) === 27) { + this.cancel() + } else if ((e.which || e.keyCode) === 13) { + if (this.complete) { + this.login() + } + } + }, + + userAddPopupOpen() { + this.$store.commit('popupOpen', { + component: UserAdd + }) + }, + + userPasswordInitPopupOpen() { + this.$store.commit('popupOpen', { + component: UserPasswordInitPopup + }) + }, + + async cerbereLogin() { + const query = { ...this.$route.query } + + if ( + query.ticket || + !query.authentification || + query.authentification !== 'cerbere' || + query.TARGET + ) { + delete query.ticket + delete query.authentification + delete query.TARGET + + query.authentification = 'cerbere' + + await this.$router.replace({ query }) + } + + const currentUrlEncoded = encodeURIComponent(window.location.href) + + const redirectUrl = await this.$store.dispatch( + 'user/cerbereUrlGet', + currentUrlEncoded + ) + + window.location.href = redirectUrl + } + } +} +</script> diff --git a/packages/ui/src/components/user/password-init-popup.vue b/packages/ui/src/components/user/password-init-popup.vue new file mode 100644 index 0000000000000000000000000000000000000000..d3d4b9e7a6ddb178fcd7423dfb4e2b4fa5e0f984 --- /dev/null +++ b/packages/ui/src/components/user/password-init-popup.vue @@ -0,0 +1,102 @@ +<template> + <Popup :messages="messages"> + <template #header> + <h2>Réinitialisation du mot de passe</h2> + </template> + + <p> + Pour réinitialiser votre mot de passe, renseignez votre adresse email. + </p> + <div class="tablet-blobs"> + <div class="mb tablet-blob-1-3 tablet-pt-s pb-s"> + <h5>Email</h5> + </div> + <div class="mb tablet-blob-2-3"> + <input v-model="email" type="email" class="p-s" placeholder="Email" /> + </div> + </div> + + <template #footer> + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 mb tablet-mb-0"> + <button class="btn-border rnd-xs p-s full-x" @click="cancel"> + Annuler + </button> + </div> + <div class="tablet-blob-2-3"> + <button + class="btn-flash rnd-xs p-s full-x" + :disabled="!complete" + :class="{ disabled: !complete }" + @click="save" + > + Envoyer + </button> + </div> + </div> + </template> + </Popup> +</template> + +<script> +import Popup from '../_ui/popup.vue' + +export default { + name: 'CaminoUtilisateurPasswordInitPopup', + + components: { + Popup + }, + + data() { + return { + email: '' + } + }, + + computed: { + complete() { + return !!this.email + }, + + messages() { + return this.$store.state.popup.messages + } + }, + + created() { + document.addEventListener('keyup', this.keyup) + }, + + beforeUnmount() { + document.removeEventListener('keyup', this.keyup) + }, + + methods: { + async save() { + if (this.complete) { + await this.$store.dispatch('user/passwordInitEmail', this.email) + } + }, + + cancel() { + this.errorsRemove() + this.$store.commit('popupClose') + }, + + keyup(e) { + if ((e.which || e.keyCode) === 27) { + this.cancel() + } else if ((e.which || e.keyCode) === 13) { + if (this.complete) { + this.save() + } + } + }, + + errorsRemove() { + this.$store.commit('popupMessagesRemove') + } + } +} +</script> diff --git a/packages/ui/src/components/user/password-init.vue b/packages/ui/src/components/user/password-init.vue new file mode 100644 index 0000000000000000000000000000000000000000..ca93ce5c0393c758242124e513e8a26823df135a --- /dev/null +++ b/packages/ui/src/components/user/password-init.vue @@ -0,0 +1,99 @@ +<template> + <div class="mb-xxl"> + <h2>Initialisation du mot de passe</h2> + + <hr /> + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5>Nouveau mot de passe</h5> + </div> + <div class="mb tablet-blob-2-3"> + <input + v-model="motDePasse1" + type="password" + class="p-s mb-s" + placeholder="Mot de passe" + /> + <p class="h6 mb-0">8 caractères minimum.</p> + </div> + </div> + <hr /> + + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5>Nouveau mot de passe (vérification)</h5> + </div> + <div class="mb tablet-blob-2-3"> + <input + v-model="motDePasse2" + type="password" + class="p-s" + placeholder="Mot de passe" + /> + </div> + </div> + <hr /> + <div class="tablet-blobs"> + <div class="tablet-blob-1-3" /> + <div class="tablet-blob-2-3"> + <button + ref="save-button" + class="btn btn-primary" + :disabled="!complete" + :class="{ disabled: !complete }" + @click="save" + > + Enregistrer + </button> + </div> + </div> + </div> +</template> + +<script> +export default { + name: 'CaminoUserPassordInit', + + data() { + return { + motDePasse1: '', + motDePasse2: '' + } + }, + + computed: { + complete() { + return this.motDePasse1 && this.motDePasse2 + } + }, + + created() { + document.addEventListener('keyup', this.keyup) + }, + + beforeUnmount() { + document.removeEventListener('keyup', this.keyup) + }, + + methods: { + save() { + if (this.complete) { + this.$store.dispatch('user/passwordInit', { + motDePasse1: this.motDePasse1, + motDePasse2: this.motDePasse2, + token: this.$route.query.token + }) + } + }, + + keyup(e) { + if ((e.which || e.keyCode) === 13) { + if (this.complete) { + this.$refs['save-button'].focus() + this.save() + } + } + } + } +} +</script> diff --git a/packages/ui/src/components/user/pure-button.stories.ts b/packages/ui/src/components/user/pure-button.stories.ts new file mode 100644 index 0000000000000000000000000000000000000000..aed3cef59f8fa804484ac5f8d2ab61c482e6ad03 --- /dev/null +++ b/packages/ui/src/components/user/pure-button.stories.ts @@ -0,0 +1,42 @@ +import PureButton from './pure-button.vue' +import { action } from '@storybook/addon-actions' +import { User } from '@/components/user/user' +import { Story } from '@storybook/vue3' +export default { + title: 'Components/User/Button', + component: PureButton, + argTypes: { + user: Object, + menuActive: Boolean + } +} +type Props = { + user: User + menuActive: boolean +} +const Template: Story<Props> = (args: Props) => ({ + components: { PureButton }, + setup() { + return { args } + }, + template: + '<PureButton @onConnectionClicked="onConnectionClicked" @onUserClicked="onUserClicked" v-bind="args" />', + methods: { + onConnectionClicked: action('onConnectionClicked'), + onUserClicked: action('onUserClicked') + } +}) + +export const NotConnected = Template.bind({}) +NotConnected.args = { + menuActive: false +} +const user: User = { + nom: 'Nom', + prenom: 'prenom' +} +export const Connected = Template.bind({}) +Connected.args = { + user: user, + menuActive: false +} diff --git a/packages/ui/src/components/user/pure-button.vue b/packages/ui/src/components/user/pure-button.vue new file mode 100644 index 0000000000000000000000000000000000000000..933dd5984ba79e1ca57f009ab140d528d3d806cb --- /dev/null +++ b/packages/ui/src/components/user/pure-button.vue @@ -0,0 +1,35 @@ +<template> + <div :class="{ active: menuActive }" class="flex"> + <button + v-if="user" + id="cmn-user-button-menu" + class="btn-menu text-decoration-none bold p-0" + aria-label="profil utilisateur" + @click="$emit('onUserClicked')" + > + {{ user.prenom || '–' }} {{ user.nom || '–' }} + </button> + <button + v-else + id="cmn-user-button-connexion" + class="btn btn-primary small lh-2" + @click="$emit('onConnectionClicked')" + > + Connexion + </button> + </div> +</template> + +<script setup lang="ts"> +import { User } from '@/components/user/user' + +defineProps<{ + user?: User + menuActive: boolean +}>() + +defineEmits<{ + (e: 'onConnectionClicked'): void + (e: 'onUserClicked'): void +}>() +</script> diff --git a/packages/ui/src/components/user/user.ts b/packages/ui/src/components/user/user.ts new file mode 100644 index 0000000000000000000000000000000000000000..a15b0f6040b7bbd44ed66188bda06925d69f5e7c --- /dev/null +++ b/packages/ui/src/components/user/user.ts @@ -0,0 +1,4 @@ +export interface User { + nom: string + prenom: string +} diff --git a/packages/ui/src/components/utilisateur.vue b/packages/ui/src/components/utilisateur.vue new file mode 100644 index 0000000000000000000000000000000000000000..48177b361dbb03de59e7600306bddc8f912ebded --- /dev/null +++ b/packages/ui/src/components/utilisateur.vue @@ -0,0 +1,309 @@ +<template> + <div v-if="!loaded"> + <Loader /> + </div> + <div v-else> + <h5>Utilisateur</h5> + <div class="flex"> + <h1> + {{ + utilisateur + ? `${utilisateur.prenom || '–'} ${utilisateur.nom || '–'}` + : '–' + }} + </h1> + + <button + v-if="user && user.id === utilisateur.id" + id="cmn-user-menu-button-deconnexion" + class="btn-menu text-decoration-none bold p-0 flex-right" + @click="logout" + > + Déconnexion + </button> + </div> + + <Accordion class="mb" :slot-sub="true" :slot-buttons="true"> + <template #title> + <span class="cap-first"> Profil </span> + </template> + + <template v-if="utilisateur.modification" #buttons> + <button + v-if=" + (user && user.id === utilisateur.id) || + permissionsCheck(user, 'super') + " + id="cmn-utilisateur-button-password-popup" + class="btn-alt py-s px-m" + title="changer de mot de passe" + @click="passwordPopupOpen" + > + <i class="icon-24 icon-key" /> + </button> + + <button + v-if="user && user.id === utilisateur.id" + id="cmn-utilisateur-button-email-popup" + class="btn-alt py-s px-m" + title="changer d'email" + @click="emailPopupOpen" + > + <i class="icon-24 icon-at" /> + </button> + + <button + id="cmn-utilisateur-button-popup-editer" + class="btn-alt py-s px-m" + title="modifier le compte utilisateur" + @click="editPopupOpen" + > + <i class="icon-24 icon-pencil" /> + </button> + + <button + id="cmn-utilisateur-button-popup-supprimer" + class="btn-alt py-s px-m" + title="supprimer le compte utilisateur" + @click="removePopupOpen" + > + <i class="icon-24 icon-trash" /> + </button> + </template> + + <template #sub> + <div class="px-m pt-m"> + <div class="tablet-blobs"> + <div class="tablet-blob-1-4"> + <h5>Prénom</h5> + </div> + <div class="tablet-blob-3-4"> + <p>{{ utilisateur.prenom || '–' }}</p> + </div> + </div> + + <div class="tablet-blobs"> + <div class="tablet-blob-1-4"> + <h5>Nom</h5> + </div> + <div class="tablet-blob-3-4"> + <p>{{ utilisateur.nom || '–' }}</p> + </div> + </div> + + <div class="tablet-blobs"> + <div class="tablet-blob-1-4"> + <h5>Email</h5> + </div> + <div class="tablet-blob-3-4"> + <p>{{ utilisateur.email || '–' }}</p> + </div> + </div> + + <div class="tablet-blobs"> + <div class="tablet-blob-1-4"> + <h5>Téléphone fixe</h5> + </div> + <div class="tablet-blob-3-4"> + <p>{{ utilisateur.telephoneFixe || '–' }}</p> + </div> + </div> + + <div class="tablet-blobs"> + <div class="tablet-blob-1-4"> + <h5>Téléphone mobile</h5> + </div> + <div class="tablet-blob-3-4"> + <p>{{ utilisateur.telephoneMobile || '–' }}</p> + </div> + </div> + + <div v-if="utilisateur.permissionModification" class="tablet-blobs"> + <div class="tablet-blob-1-4"> + <h5>Permissions</h5> + </div> + <div class="tablet-blob-3-4"> + <Pill v-if="utilisateur.permission" class="mb"> + {{ utilisateur.permission.nom }} + </Pill> + <p v-else>–</p> + </div> + </div> + + <div class="tablet-blobs"> + <div class="tablet-blob-1-4"> + <h5>Newsletter</h5> + </div> + <div class="tablet-blob-3-4"> + <p v-if="utilisateur.newsletter">Inscrit</p> + <p v-else>–</p> + </div> + </div> + + <div v-if="utilisateur.entreprises.length" class="tablet-blobs"> + <div class="tablet-blob-1-4"> + <h5> + Entreprise{{ utilisateur.entreprises.length > 1 ? 's' : '' }} + </h5> + </div> + + <div class="tablet-blob-3-4"> + <ul class="list-inline"> + <li + v-for="e in utilisateur.entreprises" + :key="e.id" + class="mb-xs" + > + <router-link + :to="{ name: 'entreprise', params: { id: e.id } }" + class="btn-border small p-s rnd-xs mr-xs" + tag="button" + > + {{ e.legalSiren ? `${e.nom} (${e.legalSiren})` : e.nom }} + </router-link> + </li> + </ul> + </div> + </div> + + <div v-if="utilisateur.administrations.length" class="tablet-blobs"> + <div class="tablet-blob-1-4"> + <h5>Administration</h5> + </div> + + <div class="tablet-blob-3-4"> + <ul class="list-prefix"> + <li v-for="a in utilisateur.administrations" :key="a.id"> + {{ `${a.nom}${a.service ? ` - ${a.service}` : ''}` }} + </li> + </ul> + </div> + </div> + </div> + </template> + </Accordion> + </div> +</template> + +<script> +import { cloneAndClean, permissionsCheck } from '../utils/index' +import Accordion from './_ui/accordion.vue' +import Pill from './_ui/pill.vue' +import Loader from './_ui/loader.vue' +import UtilisateurEditPopup from './utilisateur/edit-popup.vue' +import UtilisateurRemovePopup from './utilisateur/remove-popup.vue' +import UtilisateurPasswordPopup from './utilisateur/password-popup.vue' +import UtilisateurEmailPopup from './utilisateur/email-popup.vue' + +export default { + components: { + Accordion, + Pill, + Loader + }, + + computed: { + utilisateur() { + return this.$store.state.utilisateur.element + }, + + user() { + return this.$store.state.user.element + }, + + loaded() { + return !!this.utilisateur + } + }, + + watch: { + user: 'get', + + '$route.params.id': function (id) { + if (this.$route.name === 'utilisateur' && id) { + this.get() + } + } + }, + + async created() { + await this.get() + }, + + beforeUnmount() { + this.$store.commit('utilisateur/reset') + }, + + methods: { + logout() { + this.eventTrack('deconnexion') + this.$store.dispatch('user/logout') + }, + eventTrack(id) { + if (this.$matomo) { + this.$matomo.trackEvent('menu-utilisateur', 'menu-utilisateur', id) + } + }, + + async get() { + await this.$store.dispatch('utilisateur/get', this.$route.params.id) + }, + + editPopupOpen() { + const utilisateur = cloneAndClean(this.utilisateur) + + utilisateur.entreprises = utilisateur.entreprises.map(({ id }) => ({ + id + })) + + utilisateur.administrations = utilisateur.administrations.map( + ({ id }) => ({ id }) + ) + + utilisateur.permissionId = utilisateur.permission.id + + delete utilisateur.permission + + delete utilisateur.sections + delete utilisateur.modification + delete utilisateur.suppression + + this.$store.commit('popupOpen', { + component: UtilisateurEditPopup, + props: { + utilisateur, + action: 'edit' + } + }) + }, + + removePopupOpen() { + this.$store.commit('popupOpen', { + component: UtilisateurRemovePopup, + props: { + utilisateur: cloneAndClean(this.utilisateur) + } + }) + }, + + passwordPopupOpen() { + this.$store.commit('popupOpen', { + component: UtilisateurPasswordPopup, + props: { + utilisateur: cloneAndClean(this.utilisateur) + } + }) + }, + + emailPopupOpen() { + this.$store.commit('popupOpen', { + component: UtilisateurEmailPopup + }) + }, + + permissionsCheck(user, permissions) { + return permissionsCheck(user, permissions) + } + } +} +</script> diff --git a/packages/ui/src/components/utilisateur/edit-popup.vue b/packages/ui/src/components/utilisateur/edit-popup.vue new file mode 100644 index 0000000000000000000000000000000000000000..5bdfee1f42831bebaac04e591e6a485577d69b82 --- /dev/null +++ b/packages/ui/src/components/utilisateur/edit-popup.vue @@ -0,0 +1,529 @@ +<template> + <Popup :messages="messages"> + <template #header> + <h2> + {{ + action === 'create' + ? "Création d'un compte utilisateur" + : 'Modification du compte utilisateur' + }} + </h2> + </template> + + <Loader v-if="!loaded" /> + <div v-else> + <div v-if="action === 'create'"> + <p> + Renseignez au moins l'email, le mot de passe, le prénom et le nom. + </p> + <hr /> + </div> + <div + v-if="permissionsCheck(user, ['super', 'admin'])" + class="tablet-blobs" + > + <div class="mb tablet-blob-1-3 tablet-pt-s pb-s"> + <h5>Email</h5> + </div> + <div class="mb tablet-blob-2-3"> + <input + v-model="utilisateur.email" + type="email" + class="p-s" + placeholder="Email" + /> + </div> + </div> + + <div v-if="action === 'create'"> + <hr /> + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5>Mot de passe</h5> + </div> + <div class="mb tablet-blob-2-3"> + <input + v-model="utilisateur.motDePasse" + type="password" + class="p-s mb-s" + placeholder="Mot de passe" + /> + <p class="h6 mb-0">8 caractères minimum.</p> + </div> + </div> + </div> + + <hr /> + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5>Prénom</h5> + </div> + <div class="mb tablet-blob-2-3"> + <input + v-model="utilisateur.prenom" + type="text" + class="p-s" + placeholder="Prénom" + /> + </div> + </div> + + <hr /> + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5>Nom</h5> + </div> + <div class="mb tablet-blob-2-3"> + <input + v-model="utilisateur.nom" + type="text" + class="p-s" + placeholder="Nom" + /> + </div> + </div> + + <hr /> + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5>Téléphone fixe</h5> + </div> + <div class="mb tablet-blob-2-3"> + <input + v-model="utilisateur.telephoneFixe" + type="text" + class="p-s" + placeholder="0100000000" + /> + </div> + </div> + + <hr /> + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5>Téléphone mobile</h5> + </div> + <div class="mb tablet-blob-2-3"> + <input + v-model="utilisateur.telephoneMobile" + type="text" + class="p-s" + placeholder="0100000000" + /> + </div> + </div> + + <div v-if="utilisateur.permissionModification"> + <hr /> + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5>Permissions</h5> + </div> + <div class="mb tablet-blob-2-3"> + <ul class="list-inline mb-0 tablet-pt-s"> + <li + v-for="permission in permissions" + :key="permission.id" + class="mb-xs" + > + <button + :id="`cmn-utilisateur-edit-popup-permission-button-${permission.id}`" + :class="{ + active: utilisateur.permissionId === permission.id + }" + class="btn-flash small py-xs px-s pill cap-first mr-xs" + @click="permissionToggle(permission)" + > + {{ permission.nom }} + </button> + </li> + </ul> + </div> + </div> + + <div v-if="utilisateurIsEntreprise"> + <hr /> + <h3 class="mb-s">Entreprises</h3> + <div v-for="(entreprise, n) in utilisateur.entreprises" :key="n"> + <div + class="flex full-x" + :class="{ + 'mb-s': utilisateurEntreprisesLength, + mb: !utilisateurEntreprisesLength + }" + > + <select + id="cmn-utilisateur-edit-popup-entreprise-select" + v-model="utilisateur.entreprises[n]" + class="p-s mr-s" + > + <option + v-for="e in entreprises" + :key="e.id" + :value="{ id: e.id }" + :disabled=" + utilisateur.entreprises.find(({ id }) => id === e.id) + " + > + {{ e.nom }} + </option> + </select> + <div class="flex-right"> + <button + class="btn py-s px-m rnd-xs" + @click="entrepriseRemove(n)" + > + <i class="icon-24 icon-minus" /> + </button> + </div> + </div> + </div> + + <button + v-if="!utilisateur.entreprises.some(({ id }) => id === '')" + id="cmn-utilisateur-edit-popup-entreprise-button-ajouter" + class="btn small rnd-xs py-s px-m full-x flex mb" + @click="entrepriseAdd" + > + <span class="mt-xxs">Ajouter une entreprise</span + ><i class="icon-24 icon-plus flex-right" /> + </button> + </div> + + <div v-if="utilisateurIsAdministration"> + <hr /> + <h3 class="mb-s">Administrations</h3> + <div + v-for="(administration, n) in utilisateur.administrations" + :key="n" + > + <div + v-if="administrationsDisabledIds.includes(administration.id)" + class="p-s bg-alt mb-s" + > + {{ administrationNameFind(administration.id) }} + </div> + <div v-else class="flex full-x mb"> + <select + id="cmn-utilisateur-edit-popup-administration-select" + v-model="utilisateur.administrations[n]" + class="p-s mr-s" + :class="{ + '': !administrationsDisabledIds.includes(administration.id) + }" + :disabled=" + administrationsDisabledIds.includes(administration.id) + " + > + <option + v-for="a in administrationsFiltered" + :key="a.id" + :value="{ id: a.id }" + :disabled=" + utilisateur.administrations.find(({ id }) => id === a.id) || + administrationsDisabledIds.includes(a.id) + " + > + {{ `${a.abreviation}` }} + </option> + </select> + <div class="flex-right"> + <button + class="btn py-s px-m rnd-xs" + @click="administrationRemove(n)" + > + <i class="icon-24 icon-minus" /> + </button> + </div> + </div> + </div> + + <button + v-if=" + !utilisateur.administrations.some(({ id }) => id === '') && + utilisateurAdministrationsLength < 1 + " + id="cmn-utilisateur-edit-popup-administration-button-ajouter" + class="btn small rnd-xs py-s px-m full-x flex mb" + @click="administrationAdd" + > + <span class="mt-xxs">Ajouter une administration</span + ><i class="icon-24 icon-plus flex-right" /> + </button> + </div> + </div> + + <hr /> + <div class="tablet-blobs"> + <div class="tablet-blob-1-3 tablet-pt-s pb-s"> + <h5>Newsletter</h5> + </div> + <div class="mb tablet-blob-2-3"> + <label class="tablet-pt-s"> + <input + v-model="utilisateur.newsletter" + type="checkbox" + class="p-s mt-s mb-s mr-xs" + /> + <span v-if="utilisateur.newsletter">Inscrit</span> + </label> + </div> + </div> + </div> + + <template #footer> + <div v-if="!loading" class="tablet-blobs"> + <div class="tablet-blob-1-3 mb tablet-mb-0"> + <button class="btn-border rnd-xs p-s full-x" @click="cancel"> + Annuler + </button> + </div> + <div class="tablet-blob-2-3"> + <button + id="cmn-utilisateur-edit-popup-button-enregistrer" + ref="save-button" + :disabled="!complete" + :class="{ disabled: !complete }" + class="btn btn-primary" + @click="save" + > + Enregistrer + </button> + </div> + </div> + <div v-else class="p-s full-x bold">Enregistrement en cours…</div> + </template> + </Popup> +</template> + +<script> +import { permissionsCheck } from '@/utils' +import Popup from '../_ui/popup.vue' +import Loader from '../_ui/loader.vue' + +export default { + name: 'CaminoUtilisateurEditPopup', + + components: { Popup, Loader }, + + props: { + utilisateur: { + type: Object, + default: () => ({}) + }, + + action: { + type: String, + default: 'edit', + validator: val => ['edit', 'create'].includes(val) + } + }, + + data() { + return { + cgu: null + } + }, + + computed: { + loading() { + return this.$store.state.popup.loading + }, + + loaded() { + return this.$store.state.utilisateur.metasLoaded + }, + + messages() { + return this.$store.state.popup.messages + }, + + permissions() { + return this.$store.state.utilisateur.metas.permissions + }, + + entreprises() { + return this.$store.state.utilisateur.metas.entreprises + }, + + administrations() { + return this.$store.state.utilisateur.metas.administrations + }, + + user() { + return this.$store.state.user.element + }, + + complete() { + const formComplete = + this.action === 'create' + ? this.utilisateur.nom && + this.utilisateur.prenom && + this.utilisateur.email && + this.utilisateur.motDePasse + : this.utilisateur.nom && + this.utilisateur.prenom && + this.utilisateur.id && + this.utilisateur.email + + if (!formComplete) { + return false + } + + if (this.utilisateurIsEntreprise && !this.utilisateurEntreprisesLength) { + return false + } + + if ( + this.utilisateurIsAdministration && + !this.utilisateurAdministrationsLength + ) { + return false + } + + return true + }, + + utilisateurEntreprisesLength() { + return this.utilisateur.entreprises.filter(({ id }) => id).length + }, + + utilisateurAdministrationsLength() { + return this.utilisateur.administrations.filter(({ id }) => id).length + }, + + utilisateurIsEntreprise() { + return ['entreprise'].includes(this.utilisateur.permissionId) + }, + + utilisateurIsAdministration() { + return ['admin', 'editeur', 'lecteur'].includes( + this.utilisateur.permissionId + ) + }, + + administrationsDisabledIds() { + return this.administrations.reduce((res, a) => { + if (!a.membre && !this.permissionsCheck(this.user, ['super'])) { + res.push(a.id) + } + + return res + }, []) + }, + + administrationsFiltered() { + const a = this.permissionsCheck(this.user, ['super']) + ? this.administrations + : this.administrations.filter(a => a.membre) + + return a + } + }, + + created() { + this.get() + document.addEventListener('keyup', this.keyup) + }, + + beforeUnmount() { + document.removeEventListener('keyup', this.keyup) + }, + + unmounted() { + this.$store.commit('utilisateur/metasReset') + }, + + methods: { + async get() { + await this.$store.dispatch('utilisateur/init') + }, + + async save() { + if (this.complete) { + const utilisateur = JSON.parse(JSON.stringify(this.utilisateur)) + + delete utilisateur.permissionModification + delete utilisateur.entreprisesCreation + delete utilisateur.utilisateursCreation + + if (this.utilisateurIsAdministration) { + utilisateur.administrations = utilisateur.administrations.filter( + ({ id }) => id + ) + } else { + utilisateur.administrations = [] + } + + if (this.utilisateurIsEntreprise) { + utilisateur.entreprises = utilisateur.entreprises.filter( + ({ id }) => id + ) + } else { + utilisateur.entreprises = [] + } + + if (this.action === 'create') { + if (!utilisateur.permissionId) { + utilisateur.permissionId = 'defaut' + } + + await this.$store.dispatch('utilisateur/add', utilisateur) + } else { + await this.$store.dispatch('utilisateur/update', utilisateur) + } + } + }, + + cancel() { + this.errorsRemove() + this.$store.commit('popupClose') + }, + + keyup(e) { + if ((e.which || e.keyCode) === 27) { + this.cancel() + } else if ((e.which || e.keyCode) === 13) { + if (this.complete) { + this.$refs['save-button'].focus() + this.save() + } + } + }, + + errorsRemove() { + this.$store.commit('popupMessagesRemove') + }, + + permissionToggle(permission) { + this.utilisateur.permissionId = permission.id + }, + + entrepriseAdd() { + this.utilisateur.entreprises.push({ id: '' }) + }, + + entrepriseRemove(index) { + this.utilisateur.entreprises.splice(index, 1) + }, + + administrationAdd() { + this.utilisateur.administrations.push({ id: '' }) + }, + + administrationRemove(index) { + this.utilisateur.administrations.splice(index, 1) + }, + + administrationNameFind(id) { + const administration = this.administrations.find(a => a.id === id) + + return administration.abreviation + }, + + permissionsCheck(user, permissions) { + return permissionsCheck(user, permissions) + } + } +} +</script> diff --git a/packages/ui/src/components/utilisateur/email-popup.vue b/packages/ui/src/components/utilisateur/email-popup.vue new file mode 100644 index 0000000000000000000000000000000000000000..c05e2efec93bb397d9466ff6cc68e0d3663c6761 --- /dev/null +++ b/packages/ui/src/components/utilisateur/email-popup.vue @@ -0,0 +1,113 @@ +<template> + <Popup :messages="messages"> + <template #header> + <h2>Modification de l’email</h2> + </template> + + <div class="tablet-blobs"> + <div class="mb tablet-blob-1-3 tablet-pt-s pb-s"> + <h5>Nouvel email</h5> + </div> + <div class="mb tablet-blob-2-3"> + <input + v-model="emailNouveau" + type="email" + class="p-s mb-s" + placeholder="Email" + /> + </div> + </div> + + <template #footer> + <div v-if="!loading" class="tablet-blobs"> + <div class="tablet-blob-1-3 mb tablet-mb-0"> + <button class="btn-border rnd-xs p-s full-x" @click="cancel"> + Annuler + </button> + </div> + <div class="tablet-blob-2-3"> + <button + ref="save-button" + :disabled="!complete" + :class="{ disabled: !complete }" + class="btn btn-primary" + @click="save" + > + Enregistrer + </button> + </div> + </div> + <div v-else class="p-s full-x bold">Enregistrement en cours…</div> + </template> + </Popup> +</template> + +<script> +import Popup from '../_ui/popup.vue' + +export default { + name: 'CaminoUtilisateurEmailPopup', + + components: { + Popup + }, + + data() { + return { + emailNouveau: '' + } + }, + + computed: { + loading() { + return this.$store.state.popup.loading + }, + + messages() { + return this.$store.state.popup.messages + }, + + complete() { + return this.emailNouveau + } + }, + + created() { + document.addEventListener('keyup', this.keyup) + }, + + beforeUnmount() { + document.removeEventListener('keyup', this.keyup) + }, + + methods: { + async save() { + if (this.complete) { + await this.$store.dispatch('utilisateur/emailVerification', { + email: this.emailNouveau + }) + } + }, + + cancel() { + this.errorsRemove() + this.$store.commit('popupClose') + }, + + keyup(e) { + if ((e.which || e.keyCode) === 27) { + this.cancel() + } else if ((e.which || e.keyCode) === 13) { + if (this.complete) { + this.$refs['save-button'].focus() + this.save() + } + } + }, + + errorsRemove() { + this.$store.commit('popupMessagesRemove') + } + } +} +</script> diff --git a/packages/ui/src/components/utilisateur/password-popup.vue b/packages/ui/src/components/utilisateur/password-popup.vue new file mode 100644 index 0000000000000000000000000000000000000000..9fcd94f35f84c68aebc5b2d28e1a2bfde89ea31a --- /dev/null +++ b/packages/ui/src/components/utilisateur/password-popup.vue @@ -0,0 +1,175 @@ +<template> + <Popup :messages="messages"> + <template #header> + <h2>Modification du mot de passe</h2> + </template> + + <div v-if="!permissionsCheck(user, 'super')"> + <div class="tablet-blobs"> + <div class="mb tablet-blob-1-3 tablet-pt-s pb-s"> + <h5>Mot de passe actuel</h5> + </div> + <div class="mb tablet-blob-2-3"> + <input + v-model="motDePasse" + type="password" + class="p-s" + placeholder="Mot de passe" + /> + </div> + </div> + <hr /> + </div> + + <div class="tablet-blobs"> + <div class="mb tablet-blob-1-3 tablet-pt-s pb-s"> + <h5>Nouveau mot de passe</h5> + </div> + <div class="mb tablet-blob-2-3"> + <input + v-model="motDePasseNouveau1" + type="password" + class="p-s mb-s" + placeholder="Mot de passe" + /> + <p class="h6 mb-0">8 caractères minimum.</p> + </div> + </div> + <hr /> + + <div class="tablet-blobs"> + <div class="mb tablet-blob-1-3 tablet-pt-s pb-s"> + <h5>Nouveau mot de passe (vérification)</h5> + </div> + <div class="mb tablet-blob-2-3"> + <input + v-model="motDePasseNouveau2" + type="password" + class="p-s" + placeholder="Mot de passe" + /> + </div> + </div> + + <template #footer> + <div v-if="!loading" class="tablet-blobs"> + <div class="tablet-blob-1-3 mb tablet-mb-0"> + <button class="btn-border rnd-xs p-s full-x" @click="cancel"> + Annuler + </button> + </div> + <div class="tablet-blob-2-3"> + <button + ref="save-button" + :disabled="!complete" + :class="{ disabled: !complete }" + class="btn btn-primary" + @click="save" + > + Enregistrer + </button> + </div> + </div> + <div v-else class="p-s full-x bold">Enregistrement en cours…</div> + </template> + </Popup> +</template> + +<script> +import { permissionsCheck } from '@/utils' +import Popup from '../_ui/popup.vue' + +export default { + name: 'CaminoUtilisateurPasswordPopup', + + components: { + Popup + }, + + props: { + utilisateur: { + type: Object, + default: () => ({}) + } + }, + + data() { + return { + motDePasse: '', + motDePasseNouveau1: '', + motDePasseNouveau2: '' + } + }, + + computed: { + loading() { + return this.$store.state.popup.loading + }, + + messages() { + return this.$store.state.popup.messages + }, + + user() { + return this.$store.state.user.element + }, + + complete() { + return ( + this.motDePasseNouveau1 && + this.motDePasseNouveau2 && + (this.permissionsCheck(this.user, 'super') || this.motDePasse) + ) + } + }, + + created() { + document.addEventListener('keyup', this.keyup) + }, + + beforeUnmount() { + document.removeEventListener('keyup', this.keyup) + }, + + methods: { + async save() { + if (this.complete) { + await this.$store.dispatch('utilisateur/passwordUpdate', { + id: this.utilisateur.id, + motDePasse: this.motDePasse, + motDePasseNouveau1: this.motDePasseNouveau1, + motDePasseNouveau2: this.motDePasseNouveau2 + }) + } + }, + + cancel() { + this.errorsRemove() + this.$store.commit('popupClose') + }, + + keyup(e) { + if ((e.which || e.keyCode) === 27) { + this.cancel() + } else if ((e.which || e.keyCode) === 13) { + if (this.complete) { + this.$refs['save-button'].focus() + this.save() + } + } + }, + + errorsRemove() { + this.$store.commit('popupMessagesRemove') + }, + + permissionToggle(permission) { + this.utilisateur.permission = permission + }, + + permissionsCheck(user, permissions) { + return permissionsCheck(user, permissions) + } + } +} +</script> diff --git a/packages/ui/src/components/utilisateur/remove-popup.vue b/packages/ui/src/components/utilisateur/remove-popup.vue new file mode 100644 index 0000000000000000000000000000000000000000..4f077ec0733afaa67fd9220176e7a977948ad1cc --- /dev/null +++ b/packages/ui/src/components/utilisateur/remove-popup.vue @@ -0,0 +1,96 @@ +<template> + <Popup :messages="messages"> + <template #header> + <h2>Suppression du compte utilisateur</h2> + </template> + + <p class="bold"> + Souhaitez vous supprimer le compte de {{ utilisateur.prenom }} + {{ utilisateur.nom }} ? + </p> + <div class="bg-warning color-bg p-s mb-l"> + <span class="bold"> Attention </span>: cette opération est définitive et + ne peut pas être annulée. + </div> + + <template #footer> + <div v-if="!loading" class="tablet-blobs"> + <div class="tablet-blob-1-3 mb tablet-mb-0"> + <button class="btn-border rnd-xs p-s full-x" @click="cancel"> + Annuler + </button> + </div> + <div class="tablet-blob-2-3"> + <button + id="cmn-utilisateur-remove-popup-button-supprimer" + class="btn-flash rnd-xs p-s full-x" + @click="remove" + > + Supprimer + </button> + </div> + </div> + <div v-else class="p-s full-x bold">Suppression en cours…</div> + </template> + </Popup> +</template> + +<script> +import Popup from '../_ui/popup.vue' + +export default { + name: 'CaminoUtilisateurRemovePopup', + + components: { + Popup + }, + + props: { + utilisateur: { + type: Object, + default: () => ({}) + } + }, + + computed: { + loading() { + return this.$store.state.popup.loading + }, + + messages() { + return this.$store.state.popup.messages + } + }, + + created() { + document.addEventListener('keyup', this.keyup) + }, + + beforeUnmount() { + document.removeEventListener('keyup', this.keyup) + }, + + methods: { + async remove() { + await this.$store.dispatch('utilisateur/remove', this.utilisateur.id) + }, + + cancel() { + this.errorsRemove() + this.$store.commit('popupClose') + }, + + errorsRemove() { + this.$store.commit('popupMessagesRemove') + }, + + keyup(e) { + if ((e.which || e.keyCode) === 27) { + this.cancel() + } else if ((e.which || e.keyCode) === 13) { + this.remove() + } + } + } +} +</script> diff --git a/packages/ui/src/components/utilisateurs.vue b/packages/ui/src/components/utilisateurs.vue new file mode 100644 index 0000000000000000000000000000000000000000..d976a36cb8c7df98d89bf28e7c5d3f73392bcc1a --- /dev/null +++ b/packages/ui/src/components/utilisateurs.vue @@ -0,0 +1,140 @@ +<template> + <liste + v-if="visible" + nom="utilisateurs" + :filtres="filtres" + :colonnes="colonnes" + :lignes="lignes" + :elements="utilisateurs" + :metas="metas" + :params="params" + :total="total" + :initialized="initialized" + @params-update="paramsUpdate" + > + <template v-if="user.utilisateursCreation" #addButton> + <button + class="btn small rnd-xs py-s px-m full-x flex mb-s" + @click="addPopupOpen" + > + <span class="mt-xxs">Ajouter un utilisateur</span> + <i class="icon-24 icon-plus flex-right" /> + </button> + </template> + + <template v-if="utilisateurs.length" #downloads> + <Downloads + :formats="['csv', 'xlsx', 'ods']" + section="utilisateurs" + class="flex-right full-x" + /> + </template> + </liste> +</template> + +<script> +import Liste from './_common/liste.vue' +import Downloads from './_common/downloads.vue' +import UtilisateurEditPopup from './utilisateur/edit-popup.vue' + +import filtres from './utilisateurs/filtres' +import { + utilisateursColonnes, + utilisateursLignesBuild +} from './utilisateurs/table' + +export default { + name: 'Utilisateurs', + + components: { Liste, Downloads }, + + data() { + return { + filtres, + colonnes: utilisateursColonnes, + visible: false + } + }, + + computed: { + user() { + return this.$store.state.user.element + }, + + utilisateurs() { + return this.$store.state.utilisateurs.elements + }, + + total() { + return this.$store.state.utilisateurs.total + }, + + metas() { + return this.$store.state.utilisateurs.metas + }, + + params() { + return this.$store.state.utilisateurs.params + }, + + lignes() { + return utilisateursLignesBuild(this.utilisateurs) + }, + + initialized() { + return this.$store.state.utilisateurs.initialized + } + }, + + watch: { + user: 'init', + + '$route.query': { + handler: function () { + this.$store.dispatch('utilisateurs/routeUpdate') + } + } + }, + + async created() { + await this.init() + }, + + unmounted() { + this.$store.commit('utilisateurs/reset') + }, + + methods: { + async init() { + if ( + !this.user || + !this.user.sections || + !this.user.sections.utilisateurs + ) { + await this.$store.dispatch('pageError') + } else { + this.visible = true + await this.$store.dispatch('utilisateurs/init') + } + }, + + async paramsUpdate(options) { + await this.$store.dispatch(`utilisateurs/paramsSet`, options) + }, + + addPopupOpen() { + this.$store.commit('popupOpen', { + component: UtilisateurEditPopup, + props: { + utilisateur: { + permissionId: 'defaut', + entreprises: [], + administrations: [] + }, + action: 'create' + } + }) + } + } +} +</script> diff --git a/packages/ui/src/components/utilisateurs/filtres.js b/packages/ui/src/components/utilisateurs/filtres.js new file mode 100644 index 0000000000000000000000000000000000000000..44a751dc4cf44be5abb73c071c0969c435bb6a50 --- /dev/null +++ b/packages/ui/src/components/utilisateurs/filtres.js @@ -0,0 +1,48 @@ +import { elementsFormat } from '../../utils/index' + +const utilisateursFiltres = [ + { + id: 'noms', + type: 'input', + value: '', + name: 'Noms, prénoms', + placeholder: '...' + }, + { + id: 'emails', + type: 'input', + value: '', + name: 'Emails', + placeholder: 'prenom.nom@domaine.fr, ...' + }, + { + id: 'permissionIds', + name: 'Permissions', + type: 'checkboxes', + value: [], + elements: [], + elementsFormat + }, + { + id: 'administrationIds', + name: 'Administrations', + type: 'select', + value: [], + elements: [], + buttonAdd: 'Ajouter une administration', + elementName: 'abreviation', + elementsFormat + }, + { + id: 'entrepriseIds', + name: 'Entreprises', + type: 'select', + value: [], + elements: [], + buttonAdd: 'Ajouter une entreprise', + elementName: 'nom', + elementsFormat + } +] + +export default utilisateursFiltres diff --git a/packages/ui/src/components/utilisateurs/table.js b/packages/ui/src/components/utilisateurs/table.js new file mode 100644 index 0000000000000000000000000000000000000000..294d86acdea47c7d48c70a0d47922f9c4afc6e7c --- /dev/null +++ b/packages/ui/src/components/utilisateurs/table.js @@ -0,0 +1,79 @@ +import List from '../_ui/list.vue' + +const utilisateursColonnes = [ + { + id: 'nom', + name: 'Nom', + class: ['min-width-6'] + }, + { + id: 'prenom', + name: 'Prénom', + class: ['min-width-6'] + }, + { + id: 'email', + name: 'Email' + }, + { + id: 'permissions', + name: 'Permissions', + class: ['min-width-6'] + }, + { + id: 'lien', + name: 'Lien', + class: ['min-width-6'] + } +] + +const utilisateursLignesBuild = utilisateurs => + utilisateurs.map(utilisateur => { + let elements + + if (utilisateur.administrations && utilisateur.administrations.length) { + elements = utilisateur.administrations.map(({ nom }) => nom) + } else if (utilisateur.entreprises && utilisateur.entreprises.length) { + elements = utilisateur.entreprises.map(({ nom }) => nom) + } + + const lien = + elements && elements.length + ? { + component: List, + props: { + elements, + mini: true + }, + class: 'mb--xs', + value: elements.join(', ') + } + : { value: '' } + + const columns = { + prenom: { value: utilisateur.prenom || '–' }, + nom: { value: utilisateur.nom || '–' }, + email: { value: utilisateur.email || '–', class: ['h6'] }, + permissions: { + value: (utilisateur.permission && utilisateur.permission.nom) || '–', + class: [ + 'bg-neutral', + 'color-bg', + 'pill', + 'py-xs', + 'px-s', + 'small', + 'bold' + ] + }, + lien + } + + return { + id: utilisateur.id, + link: { name: 'utilisateur', params: { id: utilisateur.id } }, + columns + } + }) + +export { utilisateursColonnes, utilisateursLignesBuild } diff --git a/packages/ui/src/index.html b/packages/ui/src/index.html new file mode 100644 index 0000000000000000000000000000000000000000..c9e3a28f9788ef16aaad229372d1f7a925290a3e --- /dev/null +++ b/packages/ui/src/index.html @@ -0,0 +1,43 @@ +<!DOCTYPE html> +<html lang="fr"> + <head> + <meta charset="utf-8" /> + <meta http-equiv="X-UA-Compatible" content="IE=edge" /> + <meta name="viewport" content="width=device-width,initial-scale=1.0" /> + <link rel="shortcut icon" href="./favicon.ico" /> + <title>Camino | le cadastre minier numérique ouvert</title> + </head> + + <body class="bg-bg"> + <noscript> + <h1>Camino</h1> + <h2>le cadastre minier numérique ouvert</h2> + + <p> + Camino ouvre les projets miniers pour mieux les gérer. Il présente les + caractéristiques des titres miniers sur une carte, détaille chaque étape + de leur vie et expose les données publiques dans un format ouvert et + réutilisable. + </p> + + <h3>Usages</h3> + + <ul> + <li> + Les <b>entreprises</b> gagnent en visibilité sur leur business et cela + simplifie leurs démarches. + </li> + <li> + Les <b>citoyens</b> accèdent simplement aux informations publiques. + </li> + <li> + Les <b>agents publics</b> centralisent leurs contributions et + bénéficient d’une vision partagée. + </li> + </ul> + </noscript> + <app-root></app-root> + <script type="module" src="/index.ts"></script> + <script src="https://embed.typeform.com/next/embed.js"></script> + </body> +</html> diff --git a/packages/ui/src/index.ts b/packages/ui/src/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..cc84a504df278fcf3592e9d44c52150f7bde11c0 --- /dev/null +++ b/packages/ui/src/index.ts @@ -0,0 +1,80 @@ +import './styles/styles.css' +import { createApp } from 'vue' +import { sync } from 'vuex-router-sync' +import * as Sentry from '@sentry/browser' +import * as SentryIntegrations from '@sentry/integrations' + +// le polyfill ResizeObserver est nécessaire pour chart.js sur Firefox 60 +// on devrait pourvoir l'injecter dans vite.config, mais ça ne marche pas… +// plugins.legacy({additionalLegacyPolyfills: ['@juggle/resize-observer']}) +import { ResizeObserver as resizeObserverPolyfill } from '@juggle/resize-observer' + +import VueMatomo from './stats' +import App from './app.vue' + +import router from './router' +import store from './store' + +window.ResizeObserver = window.ResizeObserver || resizeObserverPolyfill + +const app = createApp(App) +sync(store, router) + +if (import.meta.env.PROD) { + fetch('/sentryOptions') + .then(response => response.json()) + .then(options => { + if (!options.dsn) throw new Error('dsn manquant') + Sentry.init({ + dsn: options.dsn, + environment: options.environment ? options.environment : 'production', + autoSessionTracking: false, + integrations: [ + new SentryIntegrations.Vue({ + Vue: app, + attachProps: true + }), + new SentryIntegrations.RewriteFrames() + ], + /* global npmVersion */ + // @ts-ignore + release: `camino-ui-${npmVersion}` + }) + }) + .catch(e => console.error('erreur : Sentry :', e)) + + fetch('/matomoOptions') + .then(response => response.json()) + .then(options => { + if (!options || !options.host || !options.siteId) + throw new Error('host et/ou siteId manquant(s)') + VueMatomo(app, { + host: options.host, + siteId: options.siteId, + router, + store, + requireConsent: false, + disableCookies: true, + trackInitialView: true, + trackerFileName: 'piwik', + enableHeartBeatTimer: true, + enableLinkTracking: true + }) + }) + .catch(e => console.error('erreur : matomo :', e)) + + const eventSource = new EventSource('/stream/version') + + eventSource.addEventListener('version', event => { + if (event.data !== npmVersion) { + eventSource.close() + window.location.reload() + } + }) +} + +app.use(router) + +app.use(store) + +app.mount('app-root') diff --git a/packages/ui/src/public/favicon.ico b/packages/ui/src/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..77cc5f2c72fd8f831c1bdd297cb18fbbc97743f2 Binary files /dev/null and b/packages/ui/src/public/favicon.ico differ diff --git a/packages/ui/src/public/img/about/gallery-apresmine.jpg b/packages/ui/src/public/img/about/gallery-apresmine.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0597937d968ab0bac77093d6d86f76bc1eef2144 Binary files /dev/null and b/packages/ui/src/public/img/about/gallery-apresmine.jpg differ diff --git a/packages/ui/src/public/img/about/gallery-energetique.jpg b/packages/ui/src/public/img/about/gallery-energetique.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c91a7dae3ccf27ac6ac9d06782b04de47e0f2728 Binary files /dev/null and b/packages/ui/src/public/img/about/gallery-energetique.jpg differ diff --git a/packages/ui/src/public/img/about/gallery-geothermie.jpg b/packages/ui/src/public/img/about/gallery-geothermie.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b07c8eec236a80a4623cd6c22b0e457c6822562f Binary files /dev/null and b/packages/ui/src/public/img/about/gallery-geothermie.jpg differ diff --git a/packages/ui/src/public/img/about/gallery-non-energetique.jpg b/packages/ui/src/public/img/about/gallery-non-energetique.jpg new file mode 100644 index 0000000000000000000000000000000000000000..60f18067ca1451887798994de73e72a2568f59e5 Binary files /dev/null and b/packages/ui/src/public/img/about/gallery-non-energetique.jpg differ diff --git a/packages/ui/src/public/img/about/gallery-stockages.jpg b/packages/ui/src/public/img/about/gallery-stockages.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0e5f7d333b87ad439d8f10a3a304657f9014c4eb Binary files /dev/null and b/packages/ui/src/public/img/about/gallery-stockages.jpg differ diff --git a/packages/ui/src/public/img/about/gallery-travaux.jpg b/packages/ui/src/public/img/about/gallery-travaux.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cbc83c94656e4ae600e72837c1d64ed48abb87e9 Binary files /dev/null and b/packages/ui/src/public/img/about/gallery-travaux.jpg differ diff --git a/packages/ui/src/public/img/leaflet/fullscreen.png b/packages/ui/src/public/img/leaflet/fullscreen.png new file mode 100644 index 0000000000000000000000000000000000000000..7384960aeb574240163a493a151fead20dc0611a Binary files /dev/null and b/packages/ui/src/public/img/leaflet/fullscreen.png differ diff --git a/packages/ui/src/public/img/leaflet/fullscreen@2x.png b/packages/ui/src/public/img/leaflet/fullscreen@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9fca7f875440b883c5bf0475b17681956291d3ee Binary files /dev/null and b/packages/ui/src/public/img/leaflet/fullscreen@2x.png differ diff --git a/packages/ui/src/public/img/leaflet/layers-2x.png b/packages/ui/src/public/img/leaflet/layers-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..200c333dca9652ac4cba004d609e5af4eee168c1 Binary files /dev/null and b/packages/ui/src/public/img/leaflet/layers-2x.png differ diff --git a/packages/ui/src/public/img/leaflet/layers.png b/packages/ui/src/public/img/leaflet/layers.png new file mode 100644 index 0000000000000000000000000000000000000000..1a72e5784b2b456eac5d7670738db80697af3377 Binary files /dev/null and b/packages/ui/src/public/img/leaflet/layers.png differ diff --git a/packages/ui/src/public/img/leaflet/marker-icon.png b/packages/ui/src/public/img/leaflet/marker-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..950edf24677ded147df13b26f91baa2b0fa70513 Binary files /dev/null and b/packages/ui/src/public/img/leaflet/marker-icon.png differ diff --git a/packages/ui/src/public/img/logo-camino.svg b/packages/ui/src/public/img/logo-camino.svg new file mode 100644 index 0000000000000000000000000000000000000000..2c0629f79ea9c25f19faa5ce519751964ef849c5 --- /dev/null +++ b/packages/ui/src/public/img/logo-camino.svg @@ -0,0 +1,11 @@ +<svg viewBox="0 0 720 128" xmlns="http://www.w3.org/2000/svg"> + <path d="M207.36 71.589c-4.704 0-8.064-3.6-8.064-8.4 0-4.752 3.36-8.4 8.016-8.4 2.784 0 4.992 1.344 6.336 3.216l3.888-2.976c-2.208-2.976-5.808-4.896-10.224-4.896-8.112 0-13.2 6-13.2 13.056 0 7.056 5.088 13.056 13.2 13.056 4.464 0 8.016-1.92 10.224-4.896l-3.888-2.976c-1.344 1.872-3.552 3.216-6.288 3.216zm21.648 4.416c3.024 0 6.048-1.296 7.728-3.456v2.736h4.944V59.301c0-5.328-3.6-9.168-10.128-9.168-4.32 0-7.776 1.824-9.936 4.704l3.696 2.832c1.392-1.968 3.456-3.168 6.096-3.168 3.12 0 5.328 1.824 5.328 4.8v1.248l-7.824 1.296c-5.136.864-7.968 3.504-7.968 7.152 0 4.272 3.264 7.008 8.064 7.008zm-3.072-7.2c0-1.824 1.248-3.12 4.272-3.648l6.528-1.104v4.176c-1.44 2.304-3.792 3.744-6.816 3.744-2.496 0-3.984-1.296-3.984-3.168zm23.472 6.48h4.944v-16.32c1.152-2.064 2.976-4.176 6.048-4.176 3.168 0 5.088 2.112 5.088 5.664v14.832h4.992V60.261c0-.48 0-.912-.048-1.344 1.296-2.304 3.168-4.128 6.048-4.128 3.12 0 5.088 2.112 5.088 5.664v14.832h4.992V60.261c0-6.672-3.888-10.128-8.928-10.128-4.176 0-6.576 1.968-8.448 4.368-1.536-2.88-4.32-4.368-7.632-4.368-3.216 0-5.472 1.344-7.2 3.216v-2.256h-4.944v24.192zm47.328-29.568c1.824 0 3.36-1.536 3.36-3.36 0-1.824-1.536-3.36-3.36-3.36-1.824 0-3.36 1.536-3.36 3.36 0 1.824 1.536 3.36 3.36 3.36zm-2.496 29.568h4.944V51.093h-4.944v24.192zm13.008 0h4.944v-16.32c1.248-2.112 3.216-4.176 6.528-4.176 3.456 0 5.568 2.304 5.568 6.144v14.352h4.992V60.741c0-7.008-4.08-10.608-9.408-10.608-3.456 0-5.856 1.392-7.68 3.312v-2.352h-4.944v24.192zm40.944-25.152c-7.824 0-13.152 5.904-13.152 13.056 0 7.152 5.328 13.056 13.152 13.056 7.872 0 13.152-5.904 13.152-13.056 0-7.152-5.28-13.056-13.152-13.056zm.048 21.456c-4.656 0-8.016-3.744-8.016-8.4 0-4.656 3.36-8.4 8.016-8.4 4.56 0 7.92 3.696 7.92 8.4 0 4.608-3.36 8.4-7.92 8.4z"/> + <path d="M368.736 75.861a3.544 3.544 0 003.552-3.552c0-1.92-1.584-3.552-3.552-3.552-2.016 0-3.6 1.632-3.6 3.552 0 1.968 1.584 3.552 3.6 3.552zm35.904-12.672c0-7.056-4.752-13.056-12.336-13.056-3.504 0-6.096 1.248-8.16 3.456V39.285H379.2v36h4.944v-2.496c2.064 2.208 4.656 3.456 8.16 3.456 7.584 0 12.336-6 12.336-13.056zm-12.96-8.4c4.656 0 7.776 3.648 7.776 8.4 0 4.752-3.12 8.4-7.776 8.4-3.12 0-5.76-1.44-7.536-4.08v-8.64c1.68-2.592 4.368-4.08 7.536-4.08zm41.232 16.56l-3.6-2.88c-1.488 2.016-3.936 3.312-6.864 3.312-4.656 0-7.872-2.736-8.208-8.016h17.856c.192-.72.336-1.824.336-2.976 0-6.144-4.32-10.656-10.992-10.656-7.68 0-12.288 5.808-12.288 13.056 0 7.056 4.944 13.056 13.296 13.056 4.512 0 8.208-1.872 10.464-4.896zm-11.52-17.088c3.744 0 6 2.736 6.096 5.808H414.48c.768-3.744 3.264-5.808 6.912-5.808zm18.864 12.624c0 5.904 2.976 8.88 8.64 8.88 1.872 0 3.216-.24 4.368-.72v-4.368c-.864.336-1.968.528-3.6.528-2.688 0-4.416-1.056-4.416-4.32V55.557h8.016v-4.464h-8.016v-6.048h-4.992v6.048h-4.56v4.464h4.56v11.328zm25.584 9.12c3.024 0 6.048-1.296 7.728-3.456v2.736h4.944V59.301c0-5.328-3.6-9.168-10.128-9.168-4.32 0-7.776 1.824-9.936 4.704l3.696 2.832c1.392-1.968 3.456-3.168 6.096-3.168 3.12 0 5.328 1.824 5.328 4.8v1.248l-7.824 1.296c-5.136.864-7.968 3.504-7.968 7.152 0 4.272 3.264 7.008 8.064 7.008zm-3.072-7.2c0-1.824 1.248-3.12 4.272-3.648l6.528-1.104v4.176c-1.44 2.304-3.792 3.744-6.816 3.744-2.496 0-3.984-1.296-3.984-3.168zm25.968 7.056a3.544 3.544 0 003.552-3.552c0-1.92-1.584-3.552-3.552-3.552-2.016 0-3.6 1.632-3.6 3.552 0 1.968 1.584 3.552 3.6 3.552zm7.44 3.744c0 4.944 4.608 7.68 12.048 7.68 7.344 0 12.432-3.936 12.432-9.168 0-4.368-3.12-7.584-9.36-7.584h-6.576c-1.296 0-1.824-.576-1.824-1.584 0-.72.432-1.44 1.2-2.064.912.192 1.872.336 2.928.336 6 0 9.6-3.888 9.6-8.592 0-1.152-.24-2.304-.672-3.312h4.752v-4.224h-8.928c-1.344-.624-2.928-.96-4.752-.96-5.904 0-9.504 3.84-9.504 8.496 0 2.688 1.2 5.136 3.312 6.72-1.872 1.296-2.784 2.832-2.784 4.752 0 1.248.528 2.544 1.584 3.456-2.256 1.68-3.456 3.6-3.456 6.048zm10.896-16.176c-3.12 0-4.944-2.064-4.944-4.8 0-2.688 1.824-4.704 4.944-4.704s4.944 2.016 4.944 4.704c0 2.736-1.824 4.8-4.944 4.8zm-6.192 15.504c0-1.728.96-3.024 2.688-4.08h7.248c3.696 0 4.896 1.632 4.896 3.696 0 2.832-2.784 4.704-7.584 4.704-4.56 0-7.248-1.632-7.248-4.32zm34.752-28.8c-7.824 0-13.152 5.904-13.152 13.056 0 7.152 5.328 13.056 13.152 13.056 7.872 0 13.152-5.904 13.152-13.056 0-7.152-5.28-13.056-13.152-13.056zm.048 21.456c-4.656 0-8.016-3.744-8.016-8.4 0-4.656 3.36-8.4 8.016-8.4 4.56 0 7.92 3.696 7.92 8.4 0 4.608-3.36 8.4-7.92 8.4zm35.712-6.672c0 4.176-2.256 6.672-5.952 6.672-3.792 0-6-2.496-6-6.672V51.093h-4.992v13.584c0 7.248 4.176 11.568 10.992 11.568 6.768 0 10.944-4.32 10.944-11.568V51.093h-4.992v13.824zm9.264-13.824l9.12 24.192h6.576l9.168-24.192h-5.376l-7.056 18.816-7.104-18.816h-5.328zm28.608 24.768a3.544 3.544 0 003.552-3.552c0-1.92-1.584-3.552-3.552-3.552-2.016 0-3.6 1.632-3.6 3.552 0 1.968 1.584 3.552 3.6 3.552zm7.344-24.768v4.464h4.56v19.728h4.992V55.557h8.016v-4.464h-8.016v-2.928c0-2.736 1.632-4.416 4.08-4.416 1.344 0 2.4.432 3.216 1.056l2.112-4.176c-1.392-.768-3.216-1.344-5.424-1.344-5.616 0-8.976 3.888-8.976 9.024v2.784h-4.56zm21.408 24.192h4.944V59.157c1.248-2.064 3.264-3.696 6.336-3.696 1.008 0 1.776.144 2.544.336v-4.848a7.212 7.212 0 00-2.112-.336c-2.976 0-5.088 1.344-6.768 3.216v-2.736h-4.944v24.192z" fill="#ccc"/> + <g> + <path d="M55.188 122.098c.398 0 .797.399.638 1.276l-2.154.479c.319-.957.957-1.755 1.516-1.755m1.116 3.509h-.399c-.558.559-1.116 1.117-1.674 1.117-.559 0-.878-.399-.878-1.117 0-.319 0-.638.08-.957l3.429-1.116c.718-1.595-.079-2.313-1.036-2.313-.957 0-3.509 2.712-3.509 5.104 0 1.037.558 1.675 1.276 1.675.717 0 1.914-.957 2.711-2.393m-.638-5.024l2.393-2.233v-.319h-1.276l-1.516 2.552h.399zm-7.417 1.595h1.117l-1.835 4.945c-.159.319 0 .717.319.797.08 0 .08 0 .16.08 1.435-.239 2.711-1.117 3.35-2.472h-.399c-.559.638-1.276 1.116-2.074 1.276l1.675-4.626h1.675l.239-.718h-1.675l.638-1.754h-.638l-1.196 1.754-1.356.16v.558zm-1.595-.239c.16-.479-.159-.718-.399-.718-1.196.16-2.233.957-2.631 2.153h.319c.319-.478.797-.877 1.355-1.036l-1.914 4.944c-.079.319.08.638.399.718h.08c.877 0 1.994-.957 2.472-2.153h-.319c-.319.478-.797.797-1.356 1.036l1.994-4.944zm.399-2.472c.478-.08.797-.399.797-.878 0-.398-.398-.797-.797-.797-.479 0-.798.319-.877.797 0 .479.398.878.877.878m-11.006 7.576c-.159.319-.079.718.24.877.079.08.239.08.319.08.398 0 .478-.08.638-.479l1.355-3.509c.638-.717 1.436-1.276 2.313-1.515.399 0 .319.319.08.718l-1.994 3.908c-.159.239-.08.638.16.797.079.08.239.08.319.08 1.196-.16 2.233-1.037 2.631-2.153h-.319c-.319.478-.797.797-1.355 1.036l1.754-3.509c.16-.398.319-.797.319-1.196.08-.478-.319-.877-.797-.957h-.16c-.797 0-1.675.957-2.711 2.153v-.957c0-.638-.24-1.196-.798-1.196-.478.08-.877.399-1.116.798.638 0 .957.957.478 1.993l-1.356 3.031zm0-4.307c.24-.797.08-1.515-.478-1.515-.558 0-.957.558-1.675 2.153v-.957c0-.638-.239-1.196-.797-1.196-.559 0-1.356 1.037-1.835 2.153h.319c.319-.478.638-.797.878-.797.239 0 .478.478 0 1.515l-1.356 2.951c-.16.319-.08.718.239.877.08.08.239.08.319.08.399 0 .479-.08.638-.479l1.356-3.509c.319-.478.718-.877 1.116-1.276h1.276zm-7.656-.638c.479 0 .878.399.718 1.276l-2.153.479c.319-.957.957-1.755 1.435-1.755m1.197 3.509h-.399c-.558.559-1.117 1.117-1.675 1.117s-.877-.399-.877-1.117c0-.319 0-.638.08-.957l3.429-1.116c.718-1.595-.08-2.313-1.037-2.313s-3.509 2.712-3.509 5.104c0 1.037.479 1.675 1.276 1.675.798 0 1.914-.957 2.712-2.393m-8.055-3.429h1.116l-1.834 4.945c-.16.319 0 .717.319.797.08 0 .08 0 .159.08a4.056 4.056 0 003.27-2.472h-.319c-.558.638-1.276 1.116-2.073 1.276l1.674-4.626h1.675l.24-.718h-1.675l.638-1.754h-.638l-1.197 1.754-1.355.16v.558zm-6.301 3.828c0-1.515 1.675-3.589 2.632-3.589h.558l-.957 2.632c-.558.718-1.435 1.595-1.834 1.595s-.399-.239-.399-.638m5.184-5.184h-.478l-.559.559h-.159c-2.871 0-5.264 3.19-5.264 5.502-.079.559.319.957.878 1.037h.159c.718 0 1.436-1.037 2.233-2.153v.319c-.08 1.196.319 1.834.877 1.834.559 0 1.356-1.116 1.835-2.153h-.319c-.319.478-.638.718-.878.718-.239 0-.478-.479 0-1.436l1.675-4.227zm-5.981 1.835c.239-.798.08-1.516-.558-1.516s-.878.559-1.675 2.154v-.957c0-.638-.16-1.197-.798-1.197s-1.276 1.037-1.754 2.154h.319c.319-.479.638-.798.877-.798s.479.479 0 1.515l-1.356 2.951c-.239.558 0 .957.559.957.558 0 .478-.08.638-.478l1.276-3.509c.319-.479.717-.878 1.196-1.276h1.276zm-9.57 4.944l.159-.319c-1.674-.319-1.834-.319-1.196-2.153l.638-1.755H6.3c.798 0 .878.319.718 1.197h.479l1.116-2.951h-.478c-.399.718-.718 1.196-1.675 1.196H4.705l.957-2.632c.24-.797.479-.957 1.595-.957h.798c1.116 0 1.276.319 1.276 1.436h.478l.319-1.994H3.27v.399c1.356.239 1.435.399.797 2.073l-1.435 4.068c-.638 1.754-.877 1.834-2.472 2.153v.319l4.705-.08zm33.655-20.974c.478 0 .877.319.638 1.196l-2.154.479c.399-.957 1.037-1.675 1.516-1.675m1.196 3.429h-.479c-.319.638-.957 1.037-1.674 1.117-.559 0-.878-.319-.878-1.117 0-.319.08-.638.16-.957l3.429-1.116c.638-1.595-.159-2.313-1.116-2.313-.957 0-3.43 2.711-3.43 5.104 0 1.116.479 1.675 1.276 1.675.798 0 1.914-.878 2.712-2.393m-.718-5.024l2.472-2.233v-.239h-1.355l-1.516 2.472h.399zm-7.417 1.595h1.117l-1.755 4.944c-.159.479 0 .878.479.878 1.435-.16 2.632-1.117 3.27-2.393h-.319c-.559.558-1.276 1.037-2.074 1.276l1.595-4.705h1.755l.159-.718h-1.595l.638-1.754h-.718l-1.116 1.754-1.436.239v.479zm-1.515-.239c.08-.479-.159-.718-.399-.718-1.276.159-2.312.957-2.711 2.153h.319c.319-.558.877-.877 1.435-1.037l-1.914 4.945c-.159.478.16.718.399.718 1.196-.16 2.153-1.037 2.552-2.154h-.319c-.319.559-.877.878-1.435 1.037l2.073-4.944zm.319-2.473c.399.08.718-.239.798-.638v-.159c0-.479-.319-.798-.798-.798-.478 0-.797.319-.797.798-.08.399.239.718.638.797h.159m-6.619 7.417l3.509-9.092h-.16l-2.153.24v.239l.399.319c.399.319.319.558-.08 1.515l-2.712 7.098c-.159.319 0 .718.319.798.08 0 .08 0 .16.079 1.196-.159 2.233-.957 2.552-2.153h-.319c-.319.558-.877.877-1.515 1.037m-6.54-.798c0-1.595 1.675-3.668 2.632-3.668h.558l-.957 2.711c-.558.638-1.435 1.516-1.914 1.516-.478 0-.319-.24-.319-.638m5.184-5.104h-.479l-.638.558h-.079c-2.871 0-5.264 3.19-5.264 5.503-.08.558.319.957.877 1.036h.08c.798 0 1.515-1.036 2.313-2.153v.399c-.08 1.116.239 1.754.877 1.754s1.276-1.116 1.834-2.153h-.319c-.398.479-.717.798-.957.798-.239 0-.398-.479 0-1.516l1.755-4.226zm-12.601 8.214c0-.638.638-1.037 1.516-1.436l1.355.479c.957.319 1.276.478 1.276.797 0 .319-1.036 1.037-2.392 1.037-1.356 0-1.755-.239-1.755-.877m2.552-3.988c-.398 0-.558-.398-.558-.797s.558-2.712 1.515-2.712c.957 0 .559.319.559.718 0 .399-.559 2.791-1.516 2.791m2.712 3.35c0-.798-.718-1.037-1.914-1.436-1.196-.398-1.436-.319-1.436-.638 0-.398.24-.717.638-.797 1.516-.08 2.632-1.276 2.712-2.791 0-.24-.08-.479-.16-.718h1.356l.239-.718h-2.153l-.877-.239c-1.515 0-2.791 1.276-2.871 2.791-.08.798.478 1.436 1.276 1.595-.798.399-1.196.798-1.196 1.276 0 .239.079.558.319.718-1.835.558-2.632 1.116-2.632 1.994 0 .877 1.116 1.276 2.472 1.276 1.356 0 4.227-1.276 4.227-2.313m-8.693-5.264c.798 0 .798.319.718 1.197h.478l1.037-2.951h-.478c-.399.638-.718 1.196-1.595 1.196H4.705l.957-2.472c.24-.877.479-1.037 1.595-1.037h.798c1.116 0 1.276.319 1.276 1.515h.478l.319-2.073H3.27v.399c1.356.239 1.435.398.797 2.073l-1.435 4.067c-.638 1.755-.877 1.914-2.472 2.154v.398h7.496l1.356-2.153h-.558c-.878.957-2.154 1.515-3.509 1.595-1.994 0-1.835-.08-1.117-1.994l.718-1.914H6.38zm.957-5.263l2.472-1.595v-.319H8.294l-1.356 1.914h.399zm30.385-11.405c.479 0 .877.319.638 1.197l-2.153.558c.399-1.037 1.037-1.755 1.515-1.755m1.196 3.43h-.478c-.399.638-.957 1.036-1.675 1.116-.558 0-.877-.319-.877-1.116 0-.798.08-.638.08-.957l3.509-1.117c.638-1.595-.16-2.313-1.117-2.313s-3.509 2.792-3.509 5.104c0 2.313.558 1.675 1.356 1.675.797 0 1.914-.877 2.711-2.392m-.717-5.025l2.392-2.233v-.239h-1.276l-1.515 2.472h.399zm-7.098 1.595h.877L30.146 96.1c-.16.239 0 .638.239.717.08.08.16.08.319.08 1.436-.239 2.632-1.116 3.27-2.392h-.319c-.558.638-1.356 1.036-2.153 1.276l1.674-4.706h1.755l.159-.638h-1.595l.559-1.834h-.638l-1.197 1.834-1.116.16v.478zm-.877.559c.239-.798.079-1.516-.559-1.516s-.877.559-1.674 2.233v-.957c0-.638-.16-1.276-.798-1.276s-1.356 1.117-1.834 2.154h.319c.399-.479.718-.718.957-.718s.399.399 0 1.435l-1.356 3.031c-.239.558 0 .877.558.877.319.08.559-.159.638-.399l1.276-3.509 1.117-1.355h1.356zm-7.657-.559c.479 0 .878.319.638 1.197l-2.153.558c.399-1.037 1.037-1.755 1.515-1.755m1.197 3.43h-.479c-.319.638-.957 1.036-1.675 1.116-.558 0-.877-.319-.877-1.116 0-.319.08-.638.16-.957l3.429-1.117c.638-1.595-.16-2.313-1.117-2.313s-3.429 2.792-3.429 5.104c0 2.313.479 1.675 1.276 1.675.798 0 1.914-.877 2.712-2.392m-8.454 1.435c-.319 0-.797-.319-.797-.638s.159-.478.319-.957l.558-1.435c.558-.718 1.515-1.516 1.994-1.516.478 0 .558.24.558.718 0 .479-1.276 3.828-2.632 3.828m3.908-4.386c0-1.037-.399-1.436-1.037-1.436-.638 0-1.754.957-2.552 2.074l2.074-5.423v-.16l-2.233.24v.239l.478.319c.399.319.239.638-.08 1.515l-2.312 5.742c-.16.399-.319.718-.399 1.117 0 .558.797 1.116 1.515 1.116.718 0 4.546-3.03 4.546-5.343m-6.779-.718c.16-.239.08-.558-.159-.638-.08 0-.16-.08-.24-.08-1.196.16-2.233 1.037-2.631 2.154h.319c.319-.479.797-.798 1.355-1.037l-1.914 4.944c-.079.319.08.638.399.718h.08c1.196-.159 2.153-1.037 2.472-2.153h-.319c-.319.478-.797.877-1.356 1.037l1.994-4.945zm.399-2.472c.478 0 .797-.319.797-.798 0-.478-.319-.797-.797-.797-.479 0-.798.319-.798.797 0 .479.319.798.798.798m-5.024-.798H3.27v.399c1.276.319 1.435.399.797 2.153l-1.435 4.068C1.994 95.86 1.755 96.02.16 96.259v.399h6.699l1.515-2.632h-.558c-.798.877-1.835 2.074-3.35 2.074-1.515 0-1.276-.16-.638-1.914l1.436-4.068c.638-1.754.877-1.834 2.392-2.153l.16-.399zM0 50.402V33.974h5.024c1.516-.08 3.031.319 4.307 1.276 1.037.877 1.675 2.233 1.595 3.589 0 .957-.239 1.834-.718 2.631a4.868 4.868 0 01-1.914 1.675l5.104 7.257H9.411l-4.387-6.619H3.35v6.619H0zm5.184-13.637H3.35v4.147h1.834c.638.08 1.196-.159 1.675-.558.398-.399.638-.957.638-1.515 0-.559-.24-1.117-.638-1.516-.479-.398-1.037-.558-1.675-.558zm10.288 13.637V33.974h9.649v2.791h-6.3v3.828h5.343v2.871h-5.343v4.067h6.3v2.871h-9.649zm6.3-17.864h-3.031l2.632-3.19h3.509l-3.11 3.19zm7.178 17.864V33.974h5.502a6.632 6.632 0 014.227 1.276c1.994 1.834 2.153 4.865.319 6.858-.08.08-.159.24-.319.319a6.257 6.257 0 01-4.227 1.356h-2.153v6.619H28.95zm5.582-13.637h-2.233v4.147h2.233c.638.08 1.196-.159 1.675-.558.399-.399.638-.957.638-1.515 0-.559-.239-1.117-.638-1.516-.479-.398-1.037-.558-1.675-.558zm18.183 7.497V33.974h3.35v9.969c.08 1.914-.558 3.668-1.834 5.104a7.31 7.31 0 01-9.73 0c-1.196-1.436-1.834-3.27-1.755-5.104v-9.969h3.35v10.288c-.08.957.239 1.834.877 2.552.638.638 1.515 1.036 2.393.957.957.079 1.834-.319 2.472-.957.638-.718.957-1.595.877-2.552zm7.497 6.14V33.974h4.705c1.436-.08 2.871.319 3.988 1.196 1.036.798 1.595 1.994 1.515 3.27 0 .638-.16 1.276-.479 1.834-.319.558-.717 1.037-1.276 1.356.798.319 1.516.957 1.994 1.675.479.638.718 1.435.718 2.233.08 1.435-.558 2.711-1.675 3.588-1.276.957-2.871 1.356-4.466 1.276h-5.024zm4.705-13.637h-1.356v3.669h1.356c.558 0 1.117-.16 1.515-.479.718-.718.718-1.994 0-2.711-.398-.319-.957-.479-1.515-.479zm.479 6.54h-1.835v4.226h1.835c.638.08 1.355-.159 1.834-.558.478-.399.718-.957.718-1.595s-.24-1.196-.718-1.595c-.558-.319-1.196-.558-1.834-.478zm9.33 7.097V33.974h3.35v13.398h6.3v3.03h-9.65zm12.601-16.428h3.35v16.429h-3.35zm21.772 16.03c.479.478 1.117.877 1.755 1.196.558.239 1.116.399 1.674.399h.559l.638-.16v2.871l-.798.24h-.957c-.877 0-1.834-.24-2.632-.559-.957-.398-1.754-.957-2.552-1.674l-1.914-1.675-1.116.159h-1.196a8.907 8.907 0 01-3.51-.718c-1.036-.478-1.993-1.036-2.791-1.834-1.515-1.675-2.392-3.828-2.392-6.141 0-2.312.877-4.466 2.392-6.14a8.1 8.1 0 012.791-1.835 8.923 8.923 0 013.51-.717c1.196 0 2.472.239 3.588.717 1.037.479 1.994 1.037 2.792 1.835 1.515 1.674 2.392 3.828 2.392 6.14 0 1.356-.319 2.632-.877 3.828-.558 1.197-1.356 2.233-2.393 3.031l1.037 1.037zm-6.539-2.233c1.435 0 2.791-.638 3.828-1.595.478-.559.797-1.117 1.116-1.755a6.167 6.167 0 000-4.466c-.239-.638-.638-1.196-1.116-1.754a6.387 6.387 0 00-1.675-1.197c-.718-.239-1.436-.398-2.153-.398-.718 0-1.436.159-2.074.398a4.078 4.078 0 00-1.675 1.197 5.064 5.064 0 00-1.116 1.754 6.156 6.156 0 000 4.466 5.078 5.078 0 001.116 1.755c.479.558 1.037.877 1.675 1.116a4.655 4.655 0 002.074.479zm21.692-3.509V33.974h3.349v9.969c.08 1.914-.558 3.668-1.834 5.104a7.31 7.31 0 01-9.73 0c-1.276-1.436-1.914-3.19-1.834-5.104v-9.969h3.35v10.288c-.08.957.319 1.914.957 2.552.638.638 1.515 1.036 2.392.957.957.079 1.834-.319 2.472-.957.638-.718.957-1.595.878-2.552zm7.496 6.14V33.974h9.57v2.791h-6.22v3.828h5.263v2.871h-5.263v4.067h6.22v2.871h-9.57zM0 75.285V58.856h9.57v2.791H3.35v3.828h5.343v2.871H3.35v6.939H0zm12.521 0V58.856h5.024c1.515-.08 3.031.319 4.307 1.276 1.036.877 1.674 2.233 1.595 3.589 0 .957-.24 1.834-.718 2.632a4.879 4.879 0 01-1.914 1.674l5.184 7.258h-3.988l-4.386-6.62H15.87v6.62h-3.349zm5.263-13.638H15.87v4.147h1.914c.559.08 1.197-.159 1.595-.558.399-.399.638-.957.638-1.515 0-.558-.239-1.117-.638-1.515a2.435 2.435 0 00-1.595-.559zm8.933 13.638l6.22-16.429h4.386l6.221 16.429h-3.589l-1.595-4.307h-6.539l-1.595 4.307h-3.509zm6.14-7.098h4.466l-2.233-6.221-2.233 6.221zm13.239 7.098V58.856h4.227l7.417 11.723V58.856h3.349v16.429h-4.306l-7.417-11.803v11.803h-3.27zm26.876-2.632c.877 0 1.754-.239 2.552-.638.718-.399 1.276-.957 1.755-1.595l2.631 1.994a7.747 7.747 0 01-2.392 2.153 8.952 8.952 0 01-3.19 1.116l-2.074 3.43h-2.951l2.074-3.509c-1.037-.16-2.074-.479-2.951-1.037-.797-.558-1.595-1.196-2.233-1.914a8.477 8.477 0 01-1.435-2.632 9.153 9.153 0 01-.479-2.951c0-2.312.877-4.466 2.393-6.14a8.08 8.08 0 012.791-1.835 8.919 8.919 0 013.509-.717c1.435 0 2.791.319 4.067.877a7.785 7.785 0 012.871 2.472l-2.631 1.994c-.479-.638-1.037-1.196-1.755-1.595-.798-.399-1.675-.638-2.552-.638-.718 0-1.436.159-2.074.399-.638.319-1.276.717-1.754 1.196-.399.558-.798 1.116-1.037 1.754a6.167 6.167 0 000 4.466c.239.638.638 1.197 1.037 1.755a5.064 5.064 0 001.754 1.116 4.655 4.655 0 002.074.479zm7.656 2.632l6.221-16.429h4.386l6.22 16.429h-3.509l-1.595-4.307h-6.539l-1.595 4.307h-3.589zm6.221-7.098h4.466l-2.233-6.221-2.233 6.221zm13.158-9.331h3.35v16.429h-3.35zm6.46 14.196l2.473-2.233a7.249 7.249 0 001.674 1.435c.559.399 1.276.558 1.994.558.558 0 1.117-.159 1.515-.478.399-.399.559-.877.559-1.436 0-.717-.479-1.435-1.197-1.674l-2.552-1.276c-.957-.399-1.834-1.037-2.631-1.675-.798-.877-1.197-1.994-1.117-3.11 0-.638.08-1.276.399-1.835a4.245 4.245 0 011.037-1.595 5.76 5.76 0 011.674-.957c.638-.319 1.436-.398 2.154-.398 1.116 0 2.233.239 3.269.717.957.559 1.755 1.197 2.473 2.074l-2.473 2.153a6.826 6.826 0 00-1.515-1.515c-.558-.319-1.116-.558-1.754-.558-.479 0-1.037.159-1.356.558-.399.319-.558.718-.558 1.196 0 .718.478 1.436 1.196 1.675l2.552 1.276c.957.399 1.834 1.037 2.632 1.754.797.798 1.276 1.914 1.196 3.111a8.719 8.719 0 01-.479 2.073 7.56 7.56 0 01-1.196 1.595 5.72 5.72 0 01-1.675.957c-.717.239-1.435.319-2.153.319a8.906 8.906 0 01-3.509-.718c-1.037-.478-1.914-1.196-2.632-1.993zm15.153 2.233V58.856h9.57v2.791h-6.3v3.828h5.343v2.871h-5.343v4.068h6.3v2.871h-9.57z"/> + <path d="M25.68 19.938l.718-.718c.398-.479.957-1.037 1.435-1.436l.479-.398c.079-.08.079-.08.079-.16l-.558.319s-.08 0 0-.08l.399-.319h-.08c-.558 0-1.037.24-1.356.638h-.159c-.638.24-1.117.798-1.755 1.037l-.797.319a2.27 2.27 0 01-1.037 0l-1.595.319-.798.319h-.079l-.319.319c-.24.16-.479.319-.718.558h-.08l-.718.718h-.079c.079 0 .079-.08.159-.159 0-.08 0-.08.08-.16s.159-.239.159-.319l.718-.478c-.08 0-.08 0-.08-.08h-.159c-.08.159-.16.319-.319.319 0-.08 0-.08.08-.08l.319-.239.478-.319h.08l-.718.319h-.08s0 .08-.079 0l.239-.239h.08c1.355-1.037 3.269-.798 4.864-1.356l.399-.239c.16-.08.319-.319.638-.399.319-.239.559-.638.718-1.037h-.08a4.733 4.733 0 01-1.834.399c-.877.319-1.914.478-2.871.478h.239c0-.079.08-.159.16-.239h.159c0-.08 0-.08.08-.08h.159c-.159-.159-.398.16-.638 0-.239-.159.08-.159.16-.239h.159c0-.08 0-.08.08-.159.638-.399 1.276-.638 1.834-1.037.559-.399-.159.159-.319.08-.159-.08 0-.16.08-.16.479-.159.957-.319 1.356-.558-.16 0-.319.159-.479 0h.24v-.16c0-.079 0-.079.079-.079h-.079l.239-.16h-.08a.726.726 0 01.558-.239c-.079-.08-.239 0-.239-.08s.08-.08.16-.08h-.16c-.08 0-.08 0-.08-.079 0-.08 0-.08.08-.08.16-.319.319-.718.399-1.037h-.08a4.532 4.532 0 01-1.754.877h-.24c-.239.08-.478.08-.717-.079l-.399-.319-1.117-.559c-1.036-.398-2.153-.717-3.269-.797.478-.16 1.036-.319 1.515-.399.718-.319 1.435-.399 2.153-.399-.159-.079-.319 0-.399 0-.638 0-1.276.08-1.834.24l-1.276.319c-.239.079-.399.398-.638.319v-.16c.399-.558.957-.957 1.595-1.037.718-.079 1.515-.079 2.233.08l1.675.319c.159 0 .239.319.399.399.159.08.478 0 .797.159.319.16-.08-.159 0-.239.08-.08.319 0 .558-.08.24-.079-.319-.558-.478-.877.319.319.638.558 1.037.798.239.159.718.239.638 0-.239-.479-.559-.878-.957-1.276v-.16h-.16v-.399c-.159-.079-.08-.239-.239-.319-.16-.079 0-.558-.08-.797s-.159-.479-.159-.718c-.16-.718-.319-1.356-.399-2.073-.08-.798.478-1.436.877-2.154a2.811 2.811 0 011.197-1.355c.159-.479.398-.957.797-1.356a2.83 2.83 0 011.276-.877L29.348 0h8.534l.159.16.638.319c.319.159.558.398.798.638.079.159.239.398.159.558-.08.159-.159.558-.319.638-.319.159-.638.159-.957.159l-.478-.159c.638.239 1.276.638 1.674 1.196l.399.16c-.08.079-.159.159-.08.239h.08c.239-.08.16-.479.479-.319.239.08.319.319.239.478 0 .08-.08.08-.08.16l-.478.399c-.08.079-.08.239 0 .319l.239.478.239.957c.239.638.319 1.276.319 1.914 0 .319-.159.638-.08.957l.479.957c.239.16.399.399.478.638.24.399.718.877.559 1.356-.16.478-.638.239-.957.478-.319.24 0 .559.159.718.16.16-.319.638-.558.798-.239.159.239.079.239.159s.319.319.16.558c-.16.24-.718.399-.399.798.319.399 0 .638-.08.877-.159.319-.399.558-.797.638-.24.16-.559.16-.798.08h-.239c-.718-.16-1.436-.239-2.153-.319l-.638.159-.479.479h-.239l-.319.478c0 .08 0 .08-.08.08l-.319.798c-.239.957-.159 1.834.08 1.993.239.16 1.435.479 2.313.957l1.036.479H20.735a18.484 18.484 0 012.791-1.436c.798-.319 1.516-.717 2.154-1.276m-6.54-3.03c-.08 0-.239.08-.239 0s.319-.239.558-.319c.239-.08.16-.16.239-.08l.319.16c-.239.239-.558.159-.877.239m-6.539-.957c.478-.638.957-1.356 1.355-2.153.479-.319.957-.638 1.436-1.037.638-.798 1.515-1.436 2.392-1.914.399-.08.798-.08 1.117.08-.16.159-.399.159-.558.239h-.08v-.16c-.399.479-1.037.718-1.356 1.276-.319.559-.399.957-.957 1.037-.558.08 0-.08-.08-.08-1.196.878-2.312 1.835-3.269 2.951m3.509-2.791c0 .08-.08.08-.08.159 0 .08-.08.16-.16.16h-.079c0-.16.159-.399.319-.319m1.993 6.3c0 .08-.079.08-.079.16 0 .079.079 0 .079.079l-.319.16c-.079 0-.079 0-.079.08h-.16c-.08.079-.319.079-.239 0l.319-.319c.08-.08.159-.08.159-.16h.319m-.717-.319l-.559.319-.558.239h-.08l-.398.319h-.24c0 .08 0 .08-.079.08h-.08c0 .08 0 .08-.08.08h-.08c-.079.08-.159.08-.159.159l-.239.24h-.24l.16-.16h.159c0-.08.08-.159.16-.159 0-.08 0-.08.08-.08.079-.08.079-.08.079-.16.08-.079.16-.159.16-.239l-.16.16c-.079 0-.079 0-.079-.08.079 0 .079 0 .079-.08h.08l.16-.239h.159v-.16c.479-.398 1.117-.319 1.675-.638s.478.08.638 0h.399l-1.037.718m.877-2.951c-.08-.079.08 0 .16-.159h-.319l-.718.239-.877.319a21.21 21.21 0 01-1.356.718c-.08 0-.08 0-.08-.08l.319-.239a5.373 5.373 0 011.196-1.117v-.159l.479-.479a.957.957 0 01.399-.398h-.16c-.159 0-.319.079-.478-.08l.239-.16h-.08c-.08-.159.08-.239.239-.239l.479-.159c-.319-.08-.638.079-.957-.08a1.972 1.972 0 011.116-1.276h.08c0 .239-.08.399-.319.399l1.037.319c0 .079 0 .079-.08.079s-.08 0-.08-.079c.16.159.479.079.638.239.16.159-.239 0-.319 0 1.276.399 2.712.638 3.828 1.515-.957.319-1.914.399-2.95.399h-.399c-.16 0-.319 0-.399.159h-.558" fill="#fff"/> + <path d="M25.68 19.938l.718-.718c.398-.479.957-1.037 1.435-1.436l.479-.398c.079-.08.079-.08.079-.16l-.558.319s-.08 0 0-.08l.399-.319h-.08c-.558 0-1.037.24-1.356.638h-.159c-.638.24-1.117.798-1.755 1.037l-.797.319a2.27 2.27 0 01-1.037 0l-1.595.319-.798.319h-.079l-.319.319-.718.558c-.08 0-.08 0-.08.08l-.718.638h-.079c.079 0 .079-.08.159-.159 0-.08 0-.08.08-.16s.159-.239.159-.319l.718-.478c-.08 0-.08 0-.08-.08h-.159c-.08.159-.16.319-.319.319 0-.08 0-.08.08-.08l.319-.239.478-.319h.08l-.718.319h-.08s0 .08-.079 0l.239-.239h.08c1.355-1.037 3.269-.798 4.864-1.356l.399-.239c.16-.08.319-.319.638-.399.319-.239.559-.638.718-1.037h-.08a4.733 4.733 0 01-1.834.399c-.877.319-1.914.478-2.871.478h.239c0-.079.08-.159.16-.239h.159c0-.08 0-.08.08-.08h.159c-.159-.159-.398.16-.638 0-.239-.159.08-.159.16-.239h.159c0-.08 0-.08.08-.159.638-.399 1.276-.638 1.834-1.037.559-.399-.159.159-.319.08-.159-.08 0-.16.08-.16.479-.159.957-.319 1.356-.558-.16 0-.319.159-.479 0h.24v-.16c0-.079 0-.079.079-.079h-.079l.239-.16h-.08a.726.726 0 01.558-.239c-.079-.08-.239 0-.239-.08s.08-.08.16-.08h-.16c-.08 0-.08 0-.08-.079 0-.08 0-.08.08-.08.16-.319.319-.718.399-1.037h-.08a4.532 4.532 0 01-1.754.877h-.24c-.239.08-.478.08-.717-.079l-.399-.319-1.117-.559c-1.036-.398-2.153-.717-3.269-.797.478-.16 1.036-.319 1.515-.399.718-.319 1.435-.399 2.153-.399-.159-.079-.319 0-.399 0-.638 0-1.276.08-1.834.24l-1.276.319c-.239.079-.399.398-.638.319v-.16c.399-.558.957-.957 1.595-1.037.718-.079 1.515-.079 2.233.08l1.675.319c.159 0 .239.319.399.399.159.08.478 0 .797.159.319.16-.08-.159 0-.239.08-.08.319 0 .558-.08.24-.079-.319-.558-.478-.877.399.239.638.638 1.037.798.399.159.718.239.638 0-.239-.479-.559-.878-.957-1.276v-.16h-.16v-.399c-.159-.079-.08-.239-.159-.319-.08-.079-.08-.558-.16-.797s-.159-.479-.159-.718c-.16-.718-.319-1.356-.399-2.073-.08-.798.478-1.436.877-2.154a2.811 2.811 0 011.197-1.355c.159-.479.398-.957.797-1.356a2.83 2.83 0 011.276-.877L29.348 0H0v22.649h20.735a18.387 18.387 0 012.791-1.435c.798-.319 1.516-.718 2.154-1.276m-6.54-3.031c-.08 0-.239.08-.239 0s.319-.239.558-.319c.239-.08.16-.159.239-.08l.319.16c-.239.239-.558.159-.877.239m-6.539-.957c.478-.638.957-1.356 1.355-2.153.559-.319 1.037-.798 1.436-1.276.638-.798 1.515-1.436 2.392-1.914.399-.08.798-.08 1.117.08-.16.159-.399.159-.558.239h-.08v-.16c-.399.479-1.037.718-1.356 1.276-.319.559-.399.957-.957 1.037-.558.08 0-.08-.08-.08-1.196.878-2.312 1.835-3.269 2.951m3.509-2.791c0 .08-.08.08-.08.159 0 .08-.08.16-.16.16h-.079c0-.16.159-.399.319-.319m1.993 6.3c0 .08-.079.08-.079.16 0 .079.079 0 .079.079l-.319.16h-.239c-.08.08-.319.08-.239 0l.319-.319c.08-.08.159-.08.159-.16.08 0 .08 0 .08-.079h.239m-.717-.319l-.559.319-.558.239h-.08l-.398.319h-.24c0 .08 0 .08-.079.08h-.08c0 .079 0 .079-.08.079h-.08c-.079.08-.159.08-.159.16l-.239.239h-.24l.16-.159h.159c0-.08.08-.16.16-.16 0-.08 0-.08.08-.08.079-.079.079-.079.079-.159.08-.08.16-.16.16-.239l-.16.159c-.079 0-.079 0-.079-.08.079 0 .079 0 .079-.079h.08l.16-.24h.159v-.159c.479-.399 1.117-.319 1.675-.638s.478.08.638 0h.399l-1.037.718m.877-2.951c-.08-.08.08 0 .16-.16h-.319l-.718.24-.877.319c-.399.239-.878.478-1.356.717-.08 0-.08 0-.08-.079l.319-.24a5.392 5.392 0 011.196-1.116v-.16l.479-.478a.96.96 0 01.399-.399h-.16c-.159 0-.319.08-.478-.08l.239-.159h-.08c-.08-.16.08-.239.239-.239l.479-.16c-.319-.08-.638.08-.957-.08a1.975 1.975 0 011.116-1.276h.08c0 .24-.08.399-.319.399l1.037.319c0 .08 0 .08-.08.08s-.08 0-.08-.08c.16.16.479.08.638.239.16.16-.239 0-.319 0 1.276.399 2.712.638 3.828 1.516-.957.319-1.914.558-2.95.558h-.399c-.16 0-.319 0-.399.159h-.558" fill="#000091"/> + <path d="M62.126 0H37.882l.159.16.638.319c.319.159.558.398.798.638.079.159.239.398.159.558-.08.159-.159.558-.319.638-.319.159-.638.159-.957.159l-.478-.159c.638.239 1.276.638 1.674 1.196l.399.16c-.08.079-.159.159-.08.239h.08c.239-.08.16-.479.479-.319.239.08.319.319.239.478 0 .08-.08.08-.08.16l-.478.399c-.08.079-.08.239 0 .319l.239.478.239.957c.239.638.319 1.276.319 1.914 0 .319-.159.638 0 .957.08.319.239.638.399.957.239.16.399.399.478.638.319.399.718.877.559 1.356-.16.478-.638.239-.957.478-.319.24 0 .559.159.718.16.16-.319.638-.558.798-.239.159.239.079.239.159s.319.319.16.558c-.16.24-.718.399-.399.798.319.399 0 .638-.08.877-.159.319-.399.558-.797.638-.24.16-.559.16-.798.08h-.239c-.718-.16-1.436-.239-2.153-.319l-.638.159-.479.479h-.239l-.319.478c0 .08 0 .08-.08.08l-.319.798c-.239.957-.159 1.834.08 1.993.239.16 1.435.479 2.313.957l1.036.479h23.846V0z" fill="#e1000f"/> + <path d="M39.317 8.294h.399c-.08.399-.558.479-.877.798h-.08c-.16.079-.08.319-.239.319h-.399c.159.239.399.319.638.319l.159.159h.16v.239c-.16.16-.319.08-.479.16h.957c.24-.16 0-.558.16-.798.159-.239 0-.079-.08-.079s.16-.24.239-.24c.08 0 .24-.079.24-.159s-.16-.16-.08-.239c.08-.08.478-.399.399-.638-.08-.24-.399-.16-.638-.24-.24-.079-.479 0-.718.08l-.638.16-.798.398a2.13 2.13 0 01.957-.239c.24-.08.479-.08.718 0" fill="#9c9b9b"/> + </g> +</svg> diff --git a/packages/ui/src/public/img/logo-fabriquenumerique.svg b/packages/ui/src/public/img/logo-fabriquenumerique.svg new file mode 100644 index 0000000000000000000000000000000000000000..52b675d1a19791bb0be11dc39e1b911d87f6cdb0 --- /dev/null +++ b/packages/ui/src/public/img/logo-fabriquenumerique.svg @@ -0,0 +1,107 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 141.73 141.73"> + <style> + .st0{fill:#fff}.st1{fill:#556f7b}.st2{opacity:.55} + </style> + <path class="st0" d="M141.38 70.87c0 38.94-31.57 70.52-70.52 70.52S.35 109.81.35 70.87 31.92.35 70.87.35s70.51 31.57 70.51 70.52"/> + <path class="st1" d="M70.87 141.73C31.79 141.73 0 109.94 0 70.87 0 31.79 31.79 0 70.87 0s70.87 31.79 70.87 70.87c-.01 39.07-31.8 70.86-70.87 70.86M70.87.7C32.18.7.7 32.18.7 70.87s31.48 70.17 70.17 70.17 70.17-31.48 70.17-70.17C141.03 32.18 109.56.7 70.87.7"/> + <g class="st2"> + <defs> + <path id="SVGID_1_" d="M20.04 19.92H121.7v101.65H20.04z"/> + </defs> + <clipPath id="SVGID_2_"> + <use xlink:href="#SVGID_1_" overflow="visible"/> + </clipPath> + <path d="M20.12 67.84C21.73 39.82 45.74 18.4 73.77 20c28.02 1.6 49.44 25.62 47.84 53.65s-25.62 49.44-53.65 47.84c-28.02-1.61-49.44-25.62-47.84-53.65" clip-path="url(#SVGID_2_)" fill-rule="evenodd" clip-rule="evenodd" fill="#159bd8"/> + </g> + <g class="st2"> + <defs> + <path id="SVGID_3_" d="M20.04 29.22h51.03v87.68H20.04z"/> + </defs> + <clipPath id="SVGID_4_"> + <use xlink:href="#SVGID_3_" overflow="visible"/> + </clipPath> + <path d="M41.56 29.22c18.39 8.5 30.66 27.61 29.43 49.06-.92 16.09-9.23 29.99-21.43 38.62-18.4-8.5-30.66-27.6-29.44-49.06.92-16.08 9.23-29.99 21.44-38.62" clip-path="url(#SVGID_4_)" fill-rule="evenodd" clip-rule="evenodd" fill="#16428f"/> + </g> + <g class="st2"> + <defs> + <path id="SVGID_5_" d="M78.95 28.35h42.75v82.78H78.95z"/> + </defs> + <clipPath id="SVGID_6_"> + <use xlink:href="#SVGID_5_" overflow="visible"/> + </clipPath> + <path d="M79.03 65.84c.88-15.39 8.53-28.79 19.88-37.48 14.57 9.66 23.76 26.58 22.69 45.29-.88 15.4-8.53 28.79-19.89 37.48-14.55-9.66-23.75-26.58-22.68-45.29" clip-path="url(#SVGID_6_)" fill-rule="evenodd" clip-rule="evenodd" fill="#048d42"/> + </g> + <g class="st2"> + <defs> + <path id="SVGID_7_" d="M26.65 19.92h59.03v27.95H26.65z"/> + </defs> + <clipPath id="SVGID_8_"> + <use xlink:href="#SVGID_7_" overflow="visible"/> + </clipPath> + <path d="M85.68 22.12C76.43 38.4 58.51 48.93 38.56 47.79c-4.13-.24-8.12-.96-11.91-2.12C35.89 29.39 53.81 18.86 73.77 20c4.13.24 8.12.97 11.91 2.12" clip-path="url(#SVGID_8_)" fill-rule="evenodd" clip-rule="evenodd" fill="#83bc45"/> + </g> + <g class="st2"> + <defs> + <path id="SVGID_9_" d="M29.55 70.74h87.51v50.83H29.55z"/> + </defs> + <clipPath id="SVGID_10_"> + <use xlink:href="#SVGID_9_" overflow="visible"/> + </clipPath> + <path d="M29.55 100.34C38.03 81.9 57.16 69.6 78.64 70.83c15.96.91 29.77 9.1 38.42 21.15-8.48 18.43-27.61 30.74-49.1 29.51-15.96-.91-29.77-9.1-38.41-21.15" clip-path="url(#SVGID_10_)" fill-rule="evenodd" clip-rule="evenodd" fill="#0a67b1"/> + </g> + <g class="st2"> + <defs> + <path id="SVGID_11_" d="M64.89 19.92h56.52v45.77H64.89z"/> + </defs> + <clipPath id="SVGID_12_"> + <use xlink:href="#SVGID_11_" overflow="visible"/> + </clipPath> + <path d="M121.41 65.34c-2.9.34-5.87.44-8.88.26-25.21-1.44-45.07-21.02-47.64-45.34 2.9-.34 5.86-.43 8.88-.26 25.21 1.45 45.07 21.02 47.64 45.34" clip-path="url(#SVGID_12_)" fill-rule="evenodd" clip-rule="evenodd" fill="#d5da2c"/> + </g> + <g class="st2"> + <defs> + <path id="SVGID_13_" d="M26.65 19.92h82.43v43.04H26.65z"/> + </defs> + <clipPath id="SVGID_14_"> + <use xlink:href="#SVGID_13_" overflow="visible"/> + </clipPath> + <path d="M109.08 37.24c-8.69 15.89-26.78 26.54-47.12 25.67-14.18-.61-26.64-7.35-35.31-17.24C35.89 29.39 53.81 18.86 73.77 20c14.16.81 26.64 7.35 35.31 17.24z" clip-path="url(#SVGID_14_)" fill-rule="evenodd" clip-rule="evenodd" fill="#03a14f"/> + </g> + <g class="st2"> + <defs> + <path id="SVGID_15_" d="M20.04 29.22h23.39v55.25H20.04z"/> + </defs> + <clipPath id="SVGID_16_"> + <use xlink:href="#SVGID_15_" overflow="visible"/> + </clipPath> + <path d="M41.55 29.23a50.69 50.69 0 011.79 16.63c-.92 16.08-9.23 29.99-21.43 38.62a50.69 50.69 0 01-1.79-16.63c.92-16.09 9.23-30 21.43-38.62" clip-path="url(#SVGID_16_)" fill-rule="evenodd" clip-rule="evenodd" fill="#3dac48"/> + </g> + <g class="st2"> + <defs> + <path id="SVGID_17_" d="M69.15 70.39h52.54v51.18H69.15z"/> + </defs> + <clipPath id="SVGID_18_"> + <use xlink:href="#SVGID_17_" overflow="visible"/> + </clipPath> + <path d="M69.23 118.32c1.58-27.63 24.94-48.83 52.46-47.89 0 1.07-.02 2.14-.08 3.23-1.58 27.63-24.94 48.83-52.46 47.89 0-1.08.02-2.15.08-3.23" clip-path="url(#SVGID_18_)" fill-rule="evenodd" clip-rule="evenodd" fill="#1173ba"/> + </g> + <g class="st2"> + <defs> + <path id="SVGID_19_" d="M20.05 70.67h61.24v50.9H20.05z"/> + </defs> + <clipPath id="SVGID_20_"> + <use xlink:href="#SVGID_19_" overflow="visible"/> + </clipPath> + <path d="M20.05 71.74c4.28-.89 8.75-1.25 13.33-.99 26.72 1.53 47.43 23.43 47.91 49.75-4.28.89-8.75 1.25-13.32.99-26.72-1.53-47.43-23.43-47.92-49.75" clip-path="url(#SVGID_20_)" fill-rule="evenodd" clip-rule="evenodd" fill="#088ccd"/> + </g> + <g opacity=".35"> + <defs> + <path id="SVGID_21_" d="M50.67 33.57h70.47v85.77H50.67z"/> + </defs> + <clipPath id="SVGID_22_"> + <use xlink:href="#SVGID_21_" overflow="visible"/> + </clipPath> + </g> + <path class="st0" d="M70.83 121.81c15.86 0 30.02-7.26 39.34-18.64l-1.47-1.87s3.34-.51-.52-2.66c-3.86-2.15-3.86-2.25-4.73-2.86-.87-.61-3.11-.96-3.3-1.26-.19-.3 1.99-1.22-.34-1.97-2.33-.74-4.76-1.68-4.76-1.68s1.22-1.93-.23-2.65-2.92-.86-3.22-.67c-.3.19-.86-.81-1.34-1.31-.48-.5-1.75-.73-2.33-.64-.53.07-4.11-.08-4.92-.41.02.18.03.29.03.29l-.19-.4c.02.04.07.07.16.11-.11-1.13-.52-5.25-.5-6.09.02-.98.42-1.26.42-1.26s5.57.53 5.18-3.5c0 0-.55-1.48-.33-2.55 0 0 1-.56.27-1.44 0 0 .65-.5.3-1.88 0 0-.18-.59.03-1.17 0 0 2.14-.18 1.41-1.63-.48-.95-.57-.7-.75-1.29-.18-.59-1.02-2.28-1.2-3.06-.18-.79 1.03-2.23 1.05-2.91.02-.68-.83-2.27-1.01-2.96-.18-.69-1.02-2.47-1.18-3.65-.17-1.18-.7-3.35-1.08-3.75-.38-.4-.94-1.39-1.12-2.08-.18-.69-1.22-1.99-1.51-2.29-.29-.3-2.49-2.12-4.73-2.76-2.24-.64-2.82-.95-4.18-1.08-1.37-.13-2.15.04-2.05-.34.11-.39 1.38-.26 2.74-.03.39.06 1.73.66 3.34-.21 1.39-.75 2.63-3.36-1.3-6.79-3.93-3.43-8.88-1.1-9.97-.54-1.09.56 0-.1-2.67 1.21s-6.58 4.93-7.45 8.53c-.87 3.6-.09 3.62-.01 4.6.07.98-.15 2.15-1.06 3.5-.92 1.35-2.41 2.29-1.27 4.08 1.13 1.79.33 2.46-.18 3.33-.51.87-1.14 2.62.1 3.72 1.25 1.11 1.04 1.49 1.22 2.28.18.79.72 2.47 1 3.16s.07.98-.05 2.15c-.13 1.17-.91 1.35-1.03 2.23-.12.88-.01.59.88.12s-.71 1.16-.73 1.94c-.02.78.78.12.78.12s.06 1.47-.53 1.75c-.59.28.97.32 1.11-1.34.14-1.66 1.04 1.69-1.06 3.21-2.09 1.52 1.38-.46 1.38-.46l-.52 1.07s1.87-.35.38.69c-1.49 1.04-2.07.73-2.07.73s-2.11 2.1.05 2.06c2.15-.05.97.51 1.44 1.21s1.92 1.71 2.69 2.02c.78.31 5.02.56 5.02.56l-.42.91s-6.3-.04-8.56.4c-2.26.43-3.66 1.67-3.69 2.55s.06 1.37-.82 1.55c-.89.17-4.01 0-5.02 1.25-1.01 1.25-1.31 1.63-2.2 1.71-.88.08-2.08.83-2.19 1.61-.12.78-.24 1.95-1.25 2.91-1 .95-3.95 1.27-4.49 3.41-.45 1.77-.3 3.83-.89 6.02 9.17 9.32 21.96 15.09 36.1 15.09"/> + <path class="st1" d="M27.8 108.32l-1.44.42-.09-.12.64-1.35-1.26 1.06-.1-.12 1.53-1.29.1.12-.73 1.53 1.62-.48.1.12-1.53 1.29-.1-.12zm-.339 2.076l1.466-1.36.102.11-1.466 1.36zm2.279-.096l-1.24 1.21-.11-.1 1.43-1.4.1.1-.42 2.04 1.23-1.21.11.11-1.43 1.4-.11-.11zm1.93 1.55l.11.11-1.38 1.44-.11-.1zm-.03 2.72c-.22-.2-.31-.38-.32-.64l.15-.01c.01.25.09.39.26.56.24.21.48.23.66.04.08-.09.12-.18.11-.28-.02-.1-.03-.14-.14-.27l-.15-.18a.712.712 0 01-.17-.35c-.02-.13.03-.26.13-.38.22-.25.54-.25.83.01.18.17.26.32.28.55l-.14.01a.601.601 0 00-.24-.46c-.22-.19-.45-.19-.62 0a.31.31 0 00-.1.26c.01.09.07.2.14.29l.14.17c.12.14.16.23.18.34.02.14-.02.29-.13.4-.23.24-.56.22-.87-.06m1.73 1.48l-.12-.1 1.2-1.43-.46-.38.09-.1 1.03.86-.09.1-.46-.38zm2.45-.59l.96.74-.08.11-.84-.65-.48.62.72.55-.08.11-.72-.55-.49.64.84.65-.08.11-.96-.74 1.21-1.59zm.56-.33l.15.11-.04.49-.13-.1.02-.5zm1.15 2.95l-.45-.32-.53.75-.12-.09 1.16-1.63.62.44c.27.19.36.49.16.77-.17.25-.43.3-.69.17l-.14 1.03-.14-.1.13-1.02zm.57-.75l-.48-.34-.47.66.48.34c.21.15.43.15.59-.07.17-.23.09-.44-.12-.59m1.43.82l1.02.66-.08.11-.89-.58-.43.66.76.5-.07.11-.76-.49-.44.67.89.58-.07.11-1.02-.66zm3.06 3.98c-.16.05-.34.02-.53-.09l-.58-.33.98-1.74.59.33c.18.1.3.24.35.4.08.28-.09.55-.22.78-.13.24-.31.57-.59.65m.66-1.38c-.04-.16-.16-.27-.3-.35l-.42-.24-.85 1.51.42.24c.14.08.29.13.45.08.22-.07.38-.38.49-.57.12-.2.27-.45.21-.67m1.33.38l1.08.56-.06.12-.94-.49-.36.71.8.41-.06.12-.8-.41-.37.72.95.48-.06.12-1.09-.55zm3.12 1.52l.14.06-.75 1.71.98.43-.06.12-1.11-.49zm2.33 2.61l-.87-.34-.34.39-.15-.06 1.42-1.59.13.05-.05 2.13-.15-.06.01-.52zm-.77-.45l.78.31.04-1.25-.82.94zm3.53 1.93l-.14-.04.57-1.78-.56-.18.04-.13 1.28.41-.04.13-.57-.18zm2.45-.22l-.53-.15-.25.89-.15-.04.54-1.92.73.21c.31.09.5.34.4.67-.08.29-.31.42-.59.39l.21 1.02-.17-.05-.19-1.02zm.29-.9l-.57-.16-.22.78.57.16c.25.07.46 0 .53-.27.08-.27-.06-.44-.31-.51m2.24 2l-.91-.22-.28.43-.16-.04 1.18-1.77.13.03.25 2.12-.16-.04-.05-.51zm-.83-.34l.81.19-.13-1.24-.68 1.05zm2.47-.59l-.34 1.71-.14-.03.38-1.97.15.03.8 1.93.33-1.71.15.03-.38 1.97-.15-.03zm2.63 2.25c-.29-.04-.47-.15-.62-.36l.12-.09c.15.2.29.28.53.32.31.05.53-.07.57-.33.02-.12 0-.22-.07-.29-.07-.07-.11-.1-.27-.15l-.22-.07a.601.601 0 01-.33-.2c-.09-.1-.12-.23-.1-.39.05-.33.31-.51.69-.45.24.04.39.13.54.3l-.11.08a.651.651 0 00-.45-.26c-.29-.04-.48.09-.52.34-.02.11 0 .2.06.27a.7.7 0 00.28.17l.21.07c.18.05.26.1.33.18.09.1.14.25.11.41-.05.34-.33.51-.75.45m1.732.208l.237-1.986.15.018-.238 1.986zm1.888.202l-.15-.01.16-1.86-.6-.05.02-.14 1.34.12-.01.13-.6-.05zm1.69-1.88l.15.01-.12 2-.15-.01zm2.35 1.91c-.14.13-.31.2-.5.19s-.37-.08-.49-.22c-.18-.19-.18-.37-.16-.82.01-.45.02-.63.21-.8.14-.13.31-.2.51-.19.19 0 .37.08.49.22.18.19.18.36.16.82-.02.44-.03.62-.22.8m-.08-1.54c-.1-.1-.23-.16-.38-.16-.14 0-.28.05-.38.14-.15.14-.16.3-.17.72-.01.43 0 .58.14.73a.556.556 0 00.76.02c.15-.14.16-.3.17-.72.01-.43 0-.58-.14-.73m1.53 0l.03 1.74h-.15l-.04-1.99.15-.01 1.19 1.71-.03-1.73h.15l.03 2h-.15zm3.7-.39l1.21-.1.01.14-1.06.08.06.79.9-.07.01.13-.9.07.06.8 1.06-.08.01.13-1.21.1-.15-1.99zm.42-.23l.24-.43.19-.01-.26.43-.17.01zm2.6 1.96a.698.698 0 01-.52-.15c-.2-.16-.23-.34-.28-.78-.05-.45-.07-.63.09-.83.12-.15.28-.24.47-.26.36-.04.64.15.74.5l-.15.02c-.09-.27-.31-.42-.58-.38-.14.02-.27.08-.36.2-.13.16-.12.32-.07.74.05.43.08.58.24.7.11.09.25.13.39.11.27-.03.45-.22.47-.51l.15-.02c-.01.37-.24.62-.59.66m2.85-.61c-.11.15-.27.25-.46.28a.714.714 0 01-.53-.12c-.21-.15-.24-.33-.31-.77-.07-.45-.1-.62.06-.83.11-.15.27-.25.46-.28.19-.03.38.01.53.12.21.15.24.33.31.77s.09.62-.06.83m-.36-1.5a.569.569 0 00-.4-.09c-.14.02-.27.1-.35.21-.12.16-.1.32-.04.74.07.42.1.58.27.69.12.08.26.12.4.09.14-.02.26-.1.35-.21.12-.16.11-.32.04-.74s-.11-.57-.27-.69m1.31-.52l.15-.02.37 1.82 1.04-.21.02.13-1.18.24zm3.52 1.08c-.1.16-.25.27-.44.32a.65.65 0 01-.53-.08c-.22-.13-.27-.31-.37-.74-.11-.44-.14-.61-.01-.83a.722.722 0 01.98-.24c.22.13.26.31.37.74.09.43.13.61 0 .83m-.48-1.47a.493.493 0 00-.41-.06c-.14.04-.26.12-.33.24-.11.17-.08.33.02.74s.15.57.32.67c.12.07.27.09.4.06.14-.03.26-.12.33-.24.11-.17.08-.33-.02-.74-.09-.41-.14-.57-.31-.67m2.83.8c-.09.18-.25.31-.44.37-.18.05-.38.03-.54-.06-.23-.13-.28-.3-.4-.73-.13-.43-.17-.6-.05-.83.09-.16.24-.28.42-.33.33-.1.66.05.82.37l-.15.04c-.13-.25-.38-.36-.64-.28-.14.04-.25.13-.32.25-.1.18-.07.33.05.74.12.41.17.56.35.66.13.07.27.08.41.04.15-.04.28-.15.35-.3.05-.13.05-.25.01-.42l-.05-.17-.52.15-.04-.13.66-.19.09.31c.07.2.07.35-.01.51m.68-2.09l.15-.04.61 1.9-.15.05zm2.85 1c-.08.14-.21.24-.36.29a.72.72 0 01-.54-.02c-.23-.11-.3-.28-.45-.7-.15-.43-.21-.59-.1-.83.08-.17.22-.3.4-.36.18-.06.37-.05.54.03.23.11.3.28.45.7.14.39.2.57.12.77l.3.14-.06.13-.3-.15zm-.6-1.48a.53.53 0 00-.71.25c-.09.18-.04.34.1.74.14.4.21.55.39.63.13.06.27.07.41.02.12-.04.21-.12.28-.23l-.36-.17.06-.13.35.17c.04-.15-.01-.32-.13-.65-.14-.4-.21-.54-.39-.63m2.55.88c-.37.15-.74 0-.89-.36l-.51-1.25.14-.06.5 1.23c.13.31.4.43.7.31.3-.12.41-.4.29-.71l-.5-1.23.14-.06.51 1.25c.15.37-.01.73-.38.88m.89-2.57l1.11-.5.05.12-.96.44.33.72.82-.38.06.12-.83.38.34.73.96-.44.06.12-1.1.51zm3.12-1.5l1.07-.57.06.12-.93.5.37.69.8-.42.06.12-.8.42.38.71.94-.5.06.12-1.07.57zm3.39.41l-.13.07-.94-1.61-.51.3-.07-.12 1.16-.68.07.12-.52.3zm2.9-1.79c-.25.16-.45.2-.7.15l.03-.15c.25.05.4.01.61-.12.26-.18.34-.41.2-.63-.07-.1-.15-.16-.25-.17-.1-.01-.15 0-.3.07l-.22.1c-.14.07-.26.09-.38.08-.14-.01-.25-.09-.34-.22-.19-.28-.11-.59.21-.8.21-.14.38-.17.6-.14l-.03.14a.635.635 0 00-.51.11c-.24.16-.3.39-.16.6.06.1.14.15.23.16.09.01.21-.02.32-.06l.2-.09c.17-.08.26-.1.37-.09.14.01.27.09.36.23.21.28.11.6-.24.83m2.22-1.8a.71.71 0 01-.81.59c-.25-.04-.36-.19-.63-.55-.27-.37-.37-.51-.32-.77a.71.71 0 01.81-.59c.26.04.36.18.63.55.26.37.37.51.32.77m-.99-1.18a.529.529 0 00-.4.1c-.12.08-.19.21-.22.35-.03.2.05.33.3.68.25.35.35.47.55.5.14.02.28-.01.4-.1.12-.08.19-.21.22-.35.03-.2-.05-.34-.3-.68-.25-.35-.35-.47-.55-.5m.92-1.04l.12-.09 1.15 1.46.84-.65.08.1-.95.75zm1.67-1.34l.12-.1 1.28 1.54-.11.09zm3.08-.26c-.01.17-.1.33-.25.47l-.5.45-1.33-1.49.5-.45c.16-.14.32-.21.49-.2.29.02.49.26.67.46.18.2.43.47.42.76m-1.1-1.07c-.17-.01-.3.06-.42.17l-.36.32 1.15 1.29.36-.32c.12-.11.21-.24.22-.4.01-.23-.23-.48-.38-.65-.16-.17-.34-.39-.57-.41m2.55-.73l-.67.65.21.47-.12.11-.86-1.95.1-.09 1.92.93-.12.11-.46-.23zm-.73.52l.6-.58-1.12-.56.52 1.14zm.54-2.47l.11-.11 1.43 1.39-.1.11zm2.17-.74l-.37.41.68.62-.1.11-1.48-1.35.51-.56c.22-.24.52-.3.78-.06.22.2.24.46.09.7l1.01.26-.12.13-1-.26zm-.67-.66l-.4.44.6.54.4-.43c.17-.19.2-.41 0-.6-.21-.19-.43-.14-.6.05m.98-1.31l.78-.93.1.09-.68.81.6.51.58-.7.11.09-.58.69.62.52.68-.81.1.08-.78.93zM9.98 73.38l-1.38-.56-.01-.15 1.35-.66-1.65.05v-.16l2-.06V72l-1.52.74 1.56.63.01.15-2 .06v-.15zm.43 1.29l.01.15-2 .13-.01-.15zm-.16 1.47l-1.73.17-.02-.15 1.99-.19.02.15-1.62 1.31 1.73-.16.01.15-1.99.19-.01-.15zm.52 2.41l.02.15-1.98.26-.02-.15zm-1.74 2.1c-.05-.29.01-.49.16-.7l.12.09c-.15.2-.18.36-.15.6.05.31.23.48.49.44.12-.02.21-.07.26-.15.05-.08.06-.13.06-.3v-.24c0-.15.03-.28.09-.38.07-.12.18-.19.34-.21.33-.05.58.15.64.53.04.24 0 .41-.12.6l-.11-.08c.09-.13.15-.28.11-.51-.05-.29-.23-.43-.48-.39-.11.02-.19.06-.24.14-.05.08-.07.2-.08.31v.22c0 .19-.02.28-.08.37-.07.12-.2.21-.36.23-.34.06-.59-.15-.65-.57m.41 2.23l-.03-.15 1.83-.35-.11-.58.13-.03.26 1.32-.14.03-.11-.59zm2.27 1.11l.27 1.18-.13.03-.24-1.04-.77.18.2.88-.13.03-.2-.88-.79.18.24 1.04-.13.03-.27-1.18 1.95-.45zm.65.11l.04.19-.34.36-.04-.16.34-.39zm-.99 3l-.14-.53-.89.24-.04-.15 1.93-.53.2.74c.09.32-.03.6-.37.7-.29.08-.52-.04-.64-.3l-.77.71-.05-.18.77-.7zm.92-.21l-.16-.57-.78.21.16.57c.07.25.24.39.51.32.26-.07.34-.28.27-.53m.58 1.52l.36 1.16-.13.04-.31-1.01-.76.24.27.86-.13.04-.27-.86-.77.24.32 1.01-.13.04-.36-1.16zm-.2 5.03c-.16-.07-.27-.21-.35-.4l-.24-.63 1.87-.71.24.63c.07.2.08.38.01.53-.12.26-.42.36-.67.46-.25.1-.59.24-.86.12m1.4-.64c.07-.15.05-.31-.01-.46l-.17-.45-1.62.61.17.45c.06.15.14.28.29.35.21.09.53-.04.74-.12.22-.08.5-.17.6-.38m.77 1.16l.48 1.11-.13.06-.41-.98-.73.31.35.83-.12.05-.35-.83-.75.31.42.98-.13.05-.47-1.11zm1.41 3.16l.07.14-1.67.82.46.95-.12.06-.53-1.09zm.11 3.51l-.44-.82-.51.08-.08-.14 2.11-.3.06.12-1.41 1.6-.08-.14.35-.4zm-.3-.85l.4.74.84-.93-1.24.19zm1.46 3.86a.708.708 0 01-.09-.53c.06-.25.21-.35.59-.58.39-.24.54-.33.79-.27.18.04.34.16.44.32.19.31.13.64-.14.89l-.08-.13c.21-.2.25-.45.11-.68a.534.534 0 00-.33-.24c-.2-.05-.34.03-.7.25-.36.22-.49.32-.54.51-.03.14-.01.28.07.4.14.23.39.31.66.22l.08.13c-.34.11-.67.01-.86-.29m1.75 2.32a.729.729 0 01-.45-.3.718.718 0 01-.11-.53c.05-.25.2-.36.57-.61.38-.25.52-.35.78-.3.18.04.34.14.45.3.11.16.14.35.11.53-.05.25-.2.35-.57.6-.38.26-.53.36-.78.31m1.21-.95a.54.54 0 00-.42-.63c-.2-.04-.34.04-.69.28-.36.24-.48.33-.52.53a.54.54 0 00.42.63c.2.04.34-.04.69-.28s.48-.34.52-.53m.86 2.56l-.62-.84-.76.55-.08-.12 1.61-1.18.09.12-.75.55.62.84.74-.54.09.12-1.61 1.18-.09-.13zm1.63.41l.75.95-.11.08-.66-.83-.62.49.56.71-.1.08-.56-.71-.63.5.66.83-.11.08-.75-.95 1.57-1.23zm.43.22l.49-.04.12.15-.51.02-.1-.13zm-.26 3.17a.85.85 0 01-.23-.68l.15.01c-.02.25.03.4.19.58.21.24.45.29.65.12.09-.08.14-.17.14-.27s-.02-.15-.11-.29l-.12-.2a.702.702 0 01-.12-.37c0-.14.06-.26.18-.36.26-.22.57-.18.82.12.16.19.21.35.21.58l-.14-.01a.641.641 0 00-.17-.49c-.19-.22-.42-.25-.62-.08-.09.08-.13.16-.13.25s.04.21.1.31l.11.19c.1.16.13.25.13.36 0 .14-.06.28-.18.38-.26.23-.59.17-.86-.15m1.167 1.313l1.479-1.346.1.11-1.478 1.347zm1.813 1.667a.66.66 0 01-.49-.22.738.738 0 01-.2-.5c.01-.26.13-.39.46-.7.33-.31.46-.43.72-.42.19 0 .36.08.49.22s.2.32.2.5c-.01.26-.13.38-.46.69-.33.31-.46.44-.72.43m1.03-1.15c0-.14-.05-.28-.15-.38a.58.58 0 00-.37-.17c-.2 0-.32.1-.63.39-.31.3-.42.41-.42.61 0 .14.05.28.15.38.1.1.23.16.37.17.2 0 .32-.1.63-.39.31-.29.41-.41.42-.61m1.08 1.08l-1.2 1.25-.11-.11 1.39-1.44.1.11-.37 2.05 1.21-1.25.11.1-1.39 1.44-.11-.1zm2.62 4.47a.688.688 0 01-.5-.19l-.51-.44 1.3-1.52.51.44c.16.14.25.29.26.46.02.29-.19.52-.36.73-.18.21-.42.5-.7.52m.91-1.23c-.01-.17-.11-.29-.23-.4l-.37-.32-1.12 1.32.37.31c.12.1.26.18.43.16.23-.02.45-.29.59-.46.15-.17.34-.38.33-.61m1.24.63l.95.75-.08.11-.84-.66-.49.62.72.56-.09.11-.71-.56-.5.63.84.66-.09.11-.95-.75zm.97 3.29a.832.832 0 01-.38-.61l.15-.02c.04.25.13.39.32.53.26.19.51.18.66-.03.07-.1.1-.19.08-.29a.54.54 0 00-.17-.26l-.17-.17c-.11-.11-.18-.21-.2-.33-.03-.13 0-.26.09-.39.2-.27.51-.3.82-.08.2.15.29.29.34.51l-.14.02a.644.644 0 00-.28-.44c-.24-.17-.47-.14-.62.06-.07.09-.09.18-.07.27.02.09.09.19.17.28l.15.15c.14.13.19.21.21.32.04.14.01.29-.09.42-.2.28-.53.3-.87.06m2.93 2l-.13-.09 1.02-1.56-.5-.32.07-.12 1.13.74-.07.11-.5-.33zm2.38-.87l1.04.63-.06.11-.92-.54-.4.67.77.47-.07.11-.77-.46-.42.69.91.55-.07.11-1.04-.62zm2 2.4l-.48-.26-.44.81-.13-.07.96-1.75.67.37c.28.16.41.44.24.75-.14.26-.39.34-.66.25l-.02 1.04-.16-.08.02-1.06zm.48-.8l-.52-.28-.39.71.52.28c.23.12.45.1.58-.14.14-.25.04-.45-.19-.57m1.66 1.92l-.49-.25-.41.82-.14-.07.9-1.79.68.34c.29.14.43.42.27.74-.13.27-.38.36-.65.28l.02 1.04-.16-.08-.02-1.03zm.46-.82l-.53-.27-.36.72.53.26c.23.12.45.08.58-.17.11-.23.01-.43-.22-.54m1.53.58l.14.06-.84 1.82-.14-.06zm.88 2.59l-.14-.06.73-1.72-.54-.23.05-.13 1.24.53-.06.13-.55-.24zm2.52.81a.72.72 0 01-.54.01.677.677 0 01-.39-.37c-.1-.24-.04-.4.12-.82.16-.42.23-.58.47-.69.17-.08.36-.08.54-.01.18.07.32.2.39.37.1.24.04.4-.12.82-.17.42-.24.58-.47.69m.44-1.48a.548.548 0 00-.3-.28.53.53 0 00-.41.01c-.19.08-.25.22-.41.62-.15.4-.2.55-.12.73.06.13.17.23.3.28.13.05.28.05.41-.01.19-.08.25-.22.41-.62.16-.4.2-.55.12-.73m1.39.22l.15.05-.67 1.88-.14-.05zm1.57 1.66l-.53-.17-.28.88-.14-.05.61-1.9.73.23c.31.1.49.35.38.68-.09.29-.32.41-.6.37l.18 1.03-.17-.05-.18-1.02zm.32-.89l-.56-.18-.25.77.56.18c.25.08.46.01.54-.25.09-.26-.04-.44-.29-.52m1.6.35l1.16.32-.03.13-1.02-.28-.21.76.87.24-.04.13-.87-.24-.21.77 1.02.29-.04.13-1.17-.33zm2.16 2.65c-.29-.07-.45-.19-.59-.41l.13-.08c.13.22.26.3.5.36.31.07.53-.03.6-.28.03-.12.02-.22-.04-.3-.06-.08-.1-.11-.26-.17l-.22-.09c-.14-.06-.25-.13-.31-.22-.08-.11-.1-.24-.07-.4.08-.33.36-.48.73-.39.24.06.38.16.51.34l-.12.07a.61.61 0 00-.43-.29c-.28-.07-.49.04-.55.29-.03.11-.01.21.04.28.06.07.16.14.26.19l.2.08c.18.07.25.12.32.21.09.11.12.26.08.42-.08.33-.37.48-.78.39m3.33-1.36l1.19.21-.02.14-1.05-.19-.13.78.89.16-.03.13-.89-.16-.14.8 1.05.18-.03.14-1.19-.21zm2.4 2.42l-.15-.02.26-1.84-.59-.09.02-.13 1.33.19-.02.13-.59-.08zm4.05.26c-.13.11-.3.16-.51.14l-.67-.06.17-1.99.67.06c.21.02.37.09.48.22.18.22.15.53.13.8-.03.28-.05.65-.27.83m.02-1.53c-.1-.13-.26-.18-.42-.19l-.48-.04-.15 1.72.48.04c.16.01.32-.01.44-.12.17-.15.19-.5.21-.72.03-.22.07-.51-.08-.69m1.4-.2l1.21.06-.01.14-1.06-.05-.04.79.91.04-.01.13-.9-.04-.04.81 1.06.05-.01.13-1.21-.06zm2.67 2.11c-.3-.01-.48-.09-.66-.27l.11-.11c.18.18.32.24.56.25.32.01.52-.14.52-.4 0-.12-.03-.22-.11-.28-.07-.06-.12-.09-.29-.11l-.23-.04a.596.596 0 01-.35-.15.468.468 0 01-.15-.37c.01-.34.25-.54.63-.54.25 0 .4.07.57.23l-.1.1a.644.644 0 00-.48-.19c-.29-.01-.47.15-.47.4 0 .11.03.2.1.26s.18.11.3.13l.22.04c.19.03.28.07.35.14.11.09.17.23.17.39-.01.32-.27.53-.69.52m3.72-1.01l-.55.03.04.92-.15.01-.09-2 .76-.04c.33-.01.58.16.6.51.01.3-.16.5-.44.56l.53.9-.18.01-.52-.9zm0-.94l-.59.03.04.81.59-.03c.26-.01.44-.15.42-.43-.02-.28-.21-.4-.46-.38m1.61-.23l1.21-.11.01.14-1.06.09.07.78.9-.07.01.13-.9.08.07.8 1.06-.09.01.14-1.21.1zm2.2-.21l.15-.02.22 1.85 1.06-.13.01.14-1.2.14zm3.33 1.06l-.92.15-.1.51-.16.03.42-2.09.13-.02 1.04 1.86-.16.03-.25-.47zm-.89.01l.83-.13-.6-1.1-.23 1.23zm2.58.18l-.15.03-.35-1.83-.58.11-.03-.13 1.32-.25.03.13-.59.11zm1.12-2.26l.15-.04.43 1.96-.15.03zm2.78 1.19c-.1.16-.25.27-.43.32s-.37.02-.54-.08c-.22-.13-.27-.31-.38-.74-.11-.44-.15-.61-.02-.83.1-.16.25-.27.43-.32.18-.05.37-.02.53.08.22.13.27.3.38.74.12.43.17.61.03.83m-.49-1.46a.581.581 0 00-.41-.06c-.14.04-.26.12-.33.24-.1.17-.08.33.03.74.1.41.15.56.33.67.12.07.27.09.41.06s.26-.12.33-.24c.1-.17.08-.33-.03-.74-.11-.42-.16-.57-.33-.67m1.48-.41l.49 1.67-.14.04-.57-1.92.15-.04 1.59 1.34-.49-1.67.15-.04.56 1.92-.14.04zm3.39.77c-.28.1-.48.08-.72-.03l.07-.14c.23.11.39.12.61.04.3-.1.44-.31.35-.56-.04-.11-.1-.19-.19-.23-.09-.03-.14-.04-.31-.01l-.23.04c-.15.03-.28.02-.38-.02a.453.453 0 01-.27-.3c-.11-.32.05-.6.41-.72.23-.08.4-.07.61.02l-.06.13c-.15-.07-.3-.1-.52-.02-.28.1-.39.3-.31.54.04.11.1.18.18.21.08.03.21.04.32.02l.22-.04c.19-.04.28-.03.38.01.13.05.24.16.29.31.12.33-.05.62-.45.75m3.61-1.89l-.87.35.02.52-.15.06-.07-2.13.13-.05 1.44 1.58-.15.06-.35-.39zm-.88.21l.78-.31-.83-.94.05 1.25zm2.49-.37l-1.41-1.56.15-.07 1.22 1.36-.2-1.82.15-.06.21 2.1zm.69-2.51l1.09-.53.06.12-.95.46.34.71.81-.4.06.12-.81.4.35.72.96-.46.06.12-1.09.53zm3.46.5a.68.68 0 01-.54.05c-.25-.07-.33-.23-.54-.63-.21-.4-.29-.56-.22-.8.05-.18.18-.33.34-.42.32-.17.64-.09.88.19l-.14.07c-.18-.22-.44-.28-.68-.15-.13.07-.22.18-.26.32-.06.19.01.34.21.71.2.38.29.51.48.57.14.04.28.03.41-.04.24-.13.33-.37.25-.65l.13-.07c.11.37-.01.69-.32.85m1.64-3.25l.13-.08.98 1.6.9-.56.07.12-1.03.63zm1.82-1.13l1.01-.67.08.11-.89.59.44.66.75-.5.08.11-.76.5.45.67.88-.58.08.11-1.02.67zm3.4.12c-.24.17-.44.21-.7.17l.02-.15c.25.04.4 0 .6-.14.26-.19.33-.42.18-.64-.07-.1-.15-.16-.25-.17-.1 0-.15 0-.3.08l-.21.11c-.14.07-.26.1-.38.09a.438.438 0 01-.34-.21c-.2-.27-.13-.58.19-.81.2-.14.37-.18.6-.16l-.02.14a.626.626 0 00-.5.13c-.24.17-.29.4-.14.61.07.09.15.15.24.15.09.01.21-.02.32-.07l.19-.1c.17-.09.26-.11.37-.1.14.01.27.08.37.21.19.29.11.61-.24.86m2.91-2.21c-.15.12-.33.18-.52.15-.26-.03-.37-.17-.65-.51-.28-.35-.39-.49-.37-.75.02-.19.11-.35.26-.47.28-.23.62-.21.9.03l-.12.1c-.22-.18-.48-.19-.69-.02-.11.09-.18.22-.2.36-.02.2.07.33.34.66s.38.45.58.47c.14.01.28-.03.39-.12.21-.17.26-.43.13-.68l.12-.09c.16.31.1.65-.17.87m2.08-2.03c-.01.19-.1.36-.24.48-.14.13-.32.19-.51.17-.26-.02-.38-.15-.67-.49-.3-.34-.41-.48-.39-.73.01-.19.1-.36.24-.48a.65.65 0 01.51-.17c.26.02.38.15.67.49.3.34.41.48.39.73m-1.1-1.08a.56.56 0 00-.39.13c-.11.09-.18.22-.19.37-.01.2.08.33.36.65.28.32.39.43.59.45.14.01.28-.04.39-.13a.47.47 0 00.18-.36c.01-.2-.08-.33-.36-.65-.26-.33-.37-.44-.58-.46m.85-1.13l.11-.1 1.27 1.36.78-.73.09.1-.89.83zm1.54-1.47l.1-.11 1.33 1.31.74-.75.1.1-.85.86zm1.49-1.53l.82-.89.1.09-.72.78.58.54.61-.67.1.09-.61.67.59.55.72-.78.1.09-.82.89zm3.4-.77c-.13.15-.3.23-.48.25-.26.02-.4-.1-.74-.39-.34-.29-.48-.41-.5-.67-.01-.19.05-.37.17-.51.23-.27.57-.32.89-.14l-.1.12c-.25-.14-.51-.1-.68.11a.56.56 0 00-.13.39c.01.2.13.31.45.59.32.28.45.37.65.36.14-.01.27-.08.36-.19.18-.21.18-.47 0-.7l.1-.11c.24.28.24.62.01.89m1.43-1.76l-.09.12-1.46-1.17-.37.47-.11-.09.85-1.05.1.09-.37.46zm-.62-2.46l.09-.12 1.6 1.2-.09.13zm2.62-.19l-2.01-.63.09-.13 1.74.55-1.08-1.46.09-.13 1.25 1.7zm-.673-2.524l.084-.125 1.66 1.116-.084.124zm2.683-.456l-.08.12-1.58-.99-.32.5-.11-.07.72-1.14.11.07-.32.51zm-.84-2.85l-.22-.44.1-.16.21.47-.09.13zm-.06.48l.61-1.05.12.07-.54.92.68.4.46-.78.12.07-.46.78.7.41.54-.92.11.07-.61 1.05-1.73-1.02zm3.12-1.4c-.14.26-.3.39-.55.46l-.04-.14c.24-.07.36-.18.48-.39.15-.28.11-.53-.12-.65a.367.367 0 00-.3-.04c-.09.04-.13.07-.23.2l-.14.19c-.09.12-.19.2-.3.24-.13.05-.26.04-.4-.04-.3-.16-.37-.47-.19-.81.12-.22.25-.32.46-.4l.04.13c-.15.05-.28.13-.39.34-.14.26-.08.48.14.6.1.06.19.07.28.03.09-.03.18-.11.25-.2l.13-.17c.11-.15.19-.21.29-.25.13-.05.28-.05.42.03.3.17.36.5.17.87m1.58-3.19l-.07.13-1.69-.79-.25.54-.12-.06.57-1.21.12.05-.25.54zm-1.19-2.24l.47-1.12.13.05-.42.98.73.31.35-.83.13.05-.36.83.75.32.41-.98.13.05-.48 1.12zm2.1-2.31l-.2.52.86.33-.05.14-1.87-.71.27-.71c.12-.31.38-.47.71-.35.28.11.4.34.34.62l1.04-.12-.06.17-1.04.11zm-.87-.37l-.21.55.76.29.21-.55c.09-.24.04-.46-.22-.56-.26-.1-.44.02-.54.27m1.68-1.9l-.18.52.87.3-.04.15-1.9-.64.24-.72c.1-.31.36-.48.69-.37.28.1.41.33.36.61l1.03-.16-.06.17-1.01.14zm-.88-.33l-.19.56.77.26.19-.56c.08-.25.02-.46-.24-.55-.27-.09-.45.04-.53.29m.363-1.607l.043-.144 1.915.577-.043.144zm2.437-1.233l-.04.15-1.8-.49-.16.58-.13-.04.36-1.3.13.04-.16.58zm.46-2.6a.708.708 0 01-.22.97c-.22.14-.4.1-.83 0-.44-.1-.61-.15-.75-.37a.708.708 0 01.22-.97c.22-.13.39-.1.83.01.44.1.61.14.75.36m-1.53-.23a.534.534 0 00-.18.73c.11.17.26.22.67.32.41.1.57.12.74.01.12-.07.21-.19.24-.33s.01-.28-.06-.4c-.11-.17-.26-.22-.67-.32-.41-.09-.56-.12-.74-.01m1.22-1.89l-.1.54.9.17-.03.15-1.96-.38.14-.75c.06-.32.29-.53.63-.46.3.06.45.27.44.55l1-.3-.03.17-.99.31zm-.92-.22l-.11.58.79.15.11-.58c.05-.25-.04-.46-.32-.51-.27-.05-.42.11-.47.36m.146-1.64l.024-.148 1.975.317-.024.149zm1.834-2.08l-.12.93.46.24-.02.16-1.89-.99.02-.14 2.08-.47-.02.16-.51.11zm-.25.86l.11-.83-1.22.26 1.11.57zm-1.11-2.26l.01-.15 1.86.17.1-1.05.13.01-.11 1.21zm.18-2.13l.07-1.21.14.01-.06 1.06.78.04.06-.9.13.01-.05.9.8.05.07-1.06.13.01-.07 1.21zm2.14-2.66c-.01.3-.09.48-.28.66l-.1-.11c.18-.18.24-.32.25-.56.01-.32-.14-.52-.4-.52-.12 0-.22.03-.28.1-.06.08-.09.12-.11.29l-.04.23c-.03.15-.08.27-.15.35-.09.1-.21.15-.37.15-.34-.01-.54-.25-.53-.63.01-.25.08-.4.23-.57l.1.1a.69.69 0 00-.2.48c-.01.29.15.47.4.47.12 0 .2-.03.26-.1s.11-.18.13-.29l.04-.22c.03-.19.07-.27.14-.35.09-.11.23-.17.39-.17.33.01.53.27.52.69M9 61.09l1.54.26.55-3.27 1.93.32-.55 3.27 3.4.57-.36 2.17-8.81-1.48 1-5.99 1.94.33zm9.71-9.78l-1.39-.03-.88 2.6 1.12.84-.74 2.17-7.42-5.94.54-1.6 9.5-.22-.73 2.18zm-5.81-.12l2 1.52.5-1.47-2.5-.05zm9.57-7.82l-1.88 3.4-7.81-4.32 1.79-3.24c.9-1.62 2.29-1.99 3.64-1.24.89.49 1.04 1.38 1.07 1.71.37-.21 1.14-.63 2.23-.03 1.49.83 1.73 2.32.96 3.72m-6.25-3.09l-.66 1.2 1.27.7.66-1.2c.29-.53.05-.87-.26-1.04-.3-.17-.72-.18-1.01.34m3.05 1.56l-.72 1.3 1.37.76.72-1.29c.29-.53.03-.9-.3-1.08-.33-.2-.78-.22-1.07.31m9.24-7.1l-3.58-.87-.47.57 2.58 2.1-1.39 1.7-6.93-5.63 2.23-2.75c1.25-1.54 3.01-1.48 4.15-.55.94.77 1.06 1.83.89 2.6l4.11.85-1.59 1.98zm-6.09-3.55l-.78.96 1.4 1.14.78-.96c.38-.47.26-1.02-.1-1.31-.36-.29-.92-.3-1.3.17m3.834-7.03l1.61-1.485 6.056 6.562-1.609 1.485zm15.206-.2l-.96-.18c-.24.5-.62.93-1.19 1.32-.9.62-1.72.76-2.62.59-1.31-.24-1.99-1.29-2.75-2.4-.76-1.1-1.51-2.11-1.27-3.42.17-.91.59-1.62 1.48-2.24.9-.62 1.72-.76 2.62-.59 1.31.24 1.99 1.29 2.75 2.4.63.92 1.26 1.78 1.31 2.8l.91.17-.28 1.55zm-5.25-4.89c-.26-.08-.61-.05-.94.18-.33.23-.49.55-.5.82-.01.33.05.65.98 1.99.93 1.34 1.19 1.51 1.51 1.61.25.08.62.06.95-.17.05-.04.09-.06.14-.11l-.78-.14.28-1.55.59.11c-.15-.26-.36-.62-.71-1.11-.93-1.35-1.21-1.53-1.52-1.63m11.66 1.18c-1.69.77-3.59.26-4.4-1.52l-2.4-5.28 2-.91 2.38 5.23c.34.75.95 1 1.61.7.66-.3.9-.93.56-1.69l-2.38-5.23 2-.91 2.4 5.28c.8 1.78-.08 3.56-1.77 4.33m6.27-2.56l-2.23-8.65 5.88-1.51.49 1.89-3.76.97.37 1.45 3.21-.83.49 1.89-3.21.83.39 1.52 3.76-.97.48 1.9zM69.41 7.41l-.13 7.77-.68-.01.16-8.93.67.01 5.02 7.83.14-7.74.68.01-.16 8.93-.68-.01zm12.96 9.07c-1.76-.37-2.74-1.83-2.39-3.54l1.24-5.91.66.14-1.22 5.82c-.3 1.45.42 2.6 1.83 2.9 1.41.3 2.53-.47 2.84-1.92l1.22-5.82.66.14-1.24 5.91c-.35 1.71-1.85 2.65-3.6 2.28m16.28-2.27l-4.9 4.53-.63-.26-.11-6.7-2.92 6.75-.62-.27 3.54-8.19.62.27.13 7.55 5.52-5.12.62.27-3.54 8.2-.62-.27zm6.55 1.9l4.48 3.05-.34.5-3.92-2.67-1.99 2.91 3.34 2.27-.34.5-3.34-2.27-2.03 2.98 3.92 2.67-.34.5-4.48-3.05 5.04-7.39zm2.11.4l2.04-.84.69.47-2.14.78-.59-.41zm5.41 11.69l-1.77-1.71-2.86 2.95-.49-.47 6.21-6.41 2.44 2.36c1.04 1.01 1.25 2.38.17 3.5-.93.96-2.1 1.02-3.15.3l-1.32 4.46-.57-.55 1.34-4.43zm3.06-2.9l-1.89-1.83-2.51 2.59 1.89 1.83c.83.8 1.81.96 2.67.07.86-.89.67-1.86-.16-2.66m-1.25 11.058l7.038-5.496.418.536-7.038 5.496zm6.03 8.042c-.66-.26-1.22-.75-1.57-1.36-.43-.74-.54-1.58-.33-2.39.3-1.11.98-1.53 2.72-2.53 1.75-1.01 2.44-1.4 3.55-1.1.81.21 1.48.73 1.91 1.47.43.74.54 1.58.33 2.39-.3 1.12-.97 1.52-2.72 2.54-1.58.92-2.33 1.34-3.27 1.16l-.38 1.44-.62-.16.38-1.46zm6.02-3.81c.16-.62.07-1.26-.25-1.81s-.83-.96-1.45-1.12c-.87-.23-1.51.08-3.16 1.03-1.65.96-2.23 1.35-2.46 2.23-.16.62-.07 1.26.25 1.81.28.49.69.85 1.22 1.05l.46-1.71.62.16-.45 1.7c.69.06 1.38-.31 2.76-1.11 1.64-.96 2.22-1.35 2.46-2.23m-3.36 11.57c-.6-1.69.13-3.3 1.77-3.88l5.68-2.03.23.64-5.6 2c-1.39.5-2 1.71-1.51 3.07.49 1.36 1.72 1.92 3.12 1.42l5.6-2 .23.64-5.68 2.03c-1.65.58-3.24-.2-3.84-1.89m10.94 5.62l.9 5.34-.59.1-.79-4.68-3.47.59.66 3.98-.59.1-.67-3.98-3.55.59.78 4.68-.59.09-.89-5.34z"/> +</svg> diff --git a/packages/ui/src/public/img/logo-rf.svg b/packages/ui/src/public/img/logo-rf.svg new file mode 100644 index 0000000000000000000000000000000000000000..18a47ef6fadf2f46b89156d27726869b0e4bd203 --- /dev/null +++ b/packages/ui/src/public/img/logo-rf.svg @@ -0,0 +1,9 @@ +<svg viewBox="0 0 128 96" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2"> + <g fill-rule="nonzero"> + <path d="M41.391 91.574c.299 0 .598.299.478.957l-1.615.359c.239-.718.718-1.316 1.137-1.316m.837 2.632h-.299c-.419.418-.837.837-1.256.837-.419 0-.658-.299-.658-.837 0-.24 0-.479.06-.718l2.572-.838c.538-1.196-.06-1.734-.778-1.734s-2.632 2.034-2.632 3.828c0 .777.419 1.256.957 1.256.539 0 1.436-.718 2.034-1.794m-.478-3.769l1.794-1.674v-.24h-.957l-1.137 1.914h.3zm-5.563 1.197h.837l-1.375 3.708c-.12.239 0 .538.239.598.06 0 .06 0 .119.06 1.077-.179 2.034-.837 2.513-1.854h-.299c-.419.478-.957.837-1.556.957l1.256-3.469h1.257l.179-.539h-1.256l.478-1.316h-.478l-.897 1.316-1.017.12v.419zm-1.196-.18c.119-.359-.12-.538-.299-.538a2.395 2.395 0 00-1.974 1.615h.239c.239-.359.598-.658 1.017-.778l-1.436 3.709c-.059.239.06.478.299.538h.06c.658 0 1.496-.718 1.854-1.615h-.239c-.239.359-.598.598-1.017.778l1.496-3.709zm.299-1.854c.359-.06.598-.299.598-.658 0-.299-.299-.598-.598-.598-.359 0-.598.239-.658.598 0 .359.299.658.658.658m-8.254 5.682c-.12.239-.06.539.179.658.06.06.179.06.239.06.299 0 .359-.06.479-.359l1.017-2.632c.478-.538 1.076-.957 1.734-1.136.299 0 .239.239.06.538l-1.495 2.931c-.12.179-.06.479.119.598.06.06.18.06.239.06.898-.12 1.675-.778 1.974-1.615h-.239c-.239.359-.598.598-1.017.778l1.316-2.632c.12-.299.239-.598.239-.897.06-.359-.239-.658-.598-.718h-.119c-.599 0-1.256.718-2.034 1.615v-.718c0-.478-.179-.897-.598-.897-.359.06-.658.299-.838.598.479 0 .718.718.359 1.495l-1.016 2.273zm0-3.23c.179-.598.059-1.136-.359-1.136-.419 0-.718.419-1.256 1.615v-.718c0-.478-.18-.897-.599-.897-.418 0-1.016.777-1.375 1.615h.239c.239-.359.478-.598.658-.598.179 0 .359.359 0 1.136l-1.017 2.213c-.12.239-.06.539.18.658.059.06.179.06.239.06.299 0 .359-.06.478-.359l1.017-2.632c.239-.359.538-.658.838-.957h.957zm-5.743-.478c.359 0 .658.299.539.957l-1.615.359c.239-.718.718-1.316 1.076-1.316m.898 2.632h-.299c-.419.418-.838.837-1.256.837-.419 0-.658-.299-.658-.837 0-.24 0-.479.059-.718l2.572-.838c.539-1.196-.059-1.734-.777-1.734S19.2 92.95 19.2 94.744c0 .777.359 1.256.957 1.256s1.436-.718 2.034-1.794m-6.041-2.572h.837l-1.376 3.708c-.119.239 0 .538.239.598.06 0 .06 0 .12.06a3.039 3.039 0 002.452-1.854h-.239c-.419.478-.957.837-1.555.957l1.256-3.469h1.256l.18-.539h-1.256l.478-1.316h-.478l-.898 1.316-1.016.12v.419zm-4.726 2.871c0-1.137 1.256-2.692 1.974-2.692h.419l-.718 1.974c-.419.538-1.077 1.196-1.376 1.196-.299 0-.299-.179-.299-.478m3.888-3.888h-.359l-.418.419h-.12c-2.153 0-3.948 2.392-3.948 4.127-.06.418.24.717.658.777h.12c.538 0 1.076-.777 1.675-1.615v.239c-.06.898.239 1.376.658 1.376.418 0 1.016-.837 1.375-1.615h-.239c-.239.359-.478.539-.658.539-.179 0-.359-.359 0-1.077l1.256-3.17zm-4.486 1.376c.18-.599.06-1.137-.419-1.137-.478 0-.657.419-1.256 1.615v-.718c0-.478-.119-.897-.598-.897-.478 0-.957.778-1.316 1.615h.24c.239-.359.478-.598.658-.598.179 0 .358.359 0 1.136l-1.017 2.213c-.18.419 0 .718.418.718.419 0 .359-.06.479-.359l.957-2.631c.239-.359.538-.658.897-.957h.957zm-7.177 3.708l.119-.239c-1.256-.24-1.375-.24-.897-1.615l.479-1.316h1.375c.598 0 .658.239.539.897h.358l.838-2.213h-.359c-.299.538-.538.897-1.256.897H3.529l.718-1.974c.179-.598.359-.717 1.196-.717h.598c.838 0 .957.239.957 1.076h.359l.239-1.495H2.452v.299c1.017.179 1.077.299.598 1.555l-1.076 3.051c-.479 1.315-.658 1.375-1.854 1.614v.24l3.529-.06zM28.89 79.97c.359 0 .658.239.478.897l-1.615.359c.299-.718.778-1.256 1.137-1.256m.897 2.572h-.359c-.239.479-.718.778-1.256.837-.419 0-.658-.239-.658-.837 0-.239.06-.478.12-.718l2.572-.837c.478-1.196-.12-1.735-.838-1.735s-2.572 2.034-2.572 3.828c0 .838.359 1.256.957 1.256s1.436-.657 2.034-1.794m-.538-3.768l1.854-1.675v-.179h-1.017l-1.136 1.854h.299zm-5.563 1.196h.837l-1.316 3.709c-.119.358 0 .657.359.657 1.077-.119 1.974-.837 2.453-1.794h-.24c-.418.419-.957.778-1.555.957l1.197-3.529h1.315l.12-.538H25.66l.478-1.316H25.6l-.837 1.316-1.077.179v.359zm-1.136-.179c.059-.359-.12-.539-.3-.539-.957.12-1.734.718-2.033 1.615h.239c.239-.418.658-.658 1.077-.777l-1.436 3.708c-.119.359.12.538.299.538.897-.119 1.615-.777 1.914-1.615h-.239c-.239.419-.658.658-1.077.778l1.556-3.708zm.239-1.855c.299.06.538-.179.598-.478v-.12c0-.359-.239-.598-.598-.598s-.598.239-.598.598c-.06.299.179.539.478.598h.12m-4.965 5.563l2.632-6.819h-.12l-1.615.18v.179l.3.24c.299.239.239.418-.06 1.136l-2.034 5.323c-.12.24 0 .539.239.598.06 0 .06 0 .12.06.897-.119 1.675-.717 1.914-1.615h-.239c-.24.419-.658.658-1.137.778m-4.904-.598c0-1.197 1.256-2.752 1.973-2.752h.419l-.718 2.034c-.418.478-1.076 1.136-1.435 1.136s-.239-.179-.239-.478m3.887-3.828h-.358l-.479.419h-.06c-2.153 0-3.947 2.392-3.947 4.127-.06.418.239.717.658.777h.059c.599 0 1.137-.777 1.735-1.615v.299c-.06.838.179 1.316.658 1.316.478 0 .957-.837 1.376-1.615h-.24c-.299.359-.538.598-.717.598-.18 0-.299-.358 0-1.136l1.315-3.17zm-9.45 6.161c0-.479.479-.778 1.136-1.077l1.017.359c.718.239.957.359.957.598s-.777.778-1.794.778-1.316-.18-1.316-.658m1.914-2.991c-.299 0-.419-.299-.419-.598s.419-2.034 1.137-2.034.418.239.418.539c0 .299-.418 2.093-1.136 2.093m2.034 2.512c0-.598-.539-.777-1.436-1.076-.897-.3-1.076-.24-1.076-.479 0-.299.179-.538.478-.598 1.136-.06 1.974-.957 2.034-2.094 0-.179-.06-.358-.12-.538h1.017l.179-.538h-1.615l-.658-.18c-1.136 0-2.093.957-2.153 2.094-.06.598.359 1.076.957 1.196-.598.299-.897.598-.897.957 0 .18.06.419.239.538-1.375.419-1.974.838-1.974 1.496s.838.957 1.855.957c1.016 0 3.17-.957 3.17-1.735m-6.52-3.948c.598 0 .598.24.538.898h.359l.778-2.213h-.359c-.299.478-.538.897-1.196.897H3.529l.718-1.854c.179-.658.359-.778 1.196-.778h.598c.838 0 .957.239.957 1.136h.359l.239-1.555H2.452v.299c1.017.18 1.077.299.598 1.556l-1.076 3.05c-.479 1.316-.658 1.436-1.854 1.615v.299h5.622l1.017-1.615H6.34c-.658.718-1.615 1.137-2.632 1.196-1.495 0-1.375-.059-.837-1.495l.538-1.436h1.376zm.718-3.947l1.854-1.196v-.24H6.221L5.204 76.86h.299zm22.789-8.553c.358 0 .658.239.478.897l-1.615.418c.299-.777.778-1.315 1.137-1.315m.897 2.572h-.359c-.299.478-.718.777-1.256.837-.419 0-.658-.239-.658-.837 0-.599.06-.479.06-.718l2.631-.838c.479-1.196-.119-1.734-.837-1.734s-2.632 2.093-2.632 3.828c0 1.734.419 1.256 1.017 1.256.598 0 1.436-.658 2.034-1.794m-.539-3.769l1.795-1.674v-.18h-.957l-1.137 1.854h.299zm-5.323 1.197h.658l-1.376 3.768c-.119.179 0 .478.18.538.06.06.119.06.239.06a3.321 3.321 0 002.452-1.794h-.239c-.419.478-1.017.777-1.615.957l1.256-3.529h1.316l.12-.479h-1.197l.419-1.376h-.478l-.898 1.376-.837.12v.359zm-.658.418c.18-.598.06-1.136-.419-1.136-.478 0-.657.418-1.256 1.675v-.718c0-.479-.119-.957-.598-.957-.478 0-1.017.837-1.375 1.615h.239c.299-.359.538-.539.718-.539.179 0 .299.299 0 1.077l-1.017 2.273c-.18.419 0 .658.418.658.24.06.419-.12.479-.299l.957-2.632.837-1.017h1.017zm-5.742-.418c.359 0 .658.239.479.897l-1.615.418c.299-.777.777-1.315 1.136-1.315m.897 2.572h-.359c-.239.478-.717.777-1.256.837-.418 0-.658-.239-.658-.837 0-.24.06-.479.12-.718l2.572-.838c.478-1.196-.12-1.734-.837-1.734-.718 0-2.572 2.093-2.572 3.828 0 1.734.359 1.256.957 1.256s1.435-.658 2.033-1.794m-6.34 1.076c-.239 0-.598-.239-.598-.478 0-.24.12-.359.239-.718l.419-1.077c.419-.538 1.136-1.136 1.495-1.136.359 0 .419.179.419.538 0 .359-.957 2.871-1.974 2.871m2.931-3.29c0-.777-.299-1.076-.778-1.076-.478 0-1.316.718-1.914 1.555l1.556-4.067v-.12l-1.675.179v.18l.359.239c.299.239.179.479-.06 1.137l-1.735 4.306c-.119.299-.239.538-.299.838 0 .418.598.837 1.137.837.538 0 3.409-2.273 3.409-4.008m-5.084-.538c.119-.179.06-.419-.12-.478-.06 0-.119-.06-.179-.06-.897.119-1.675.777-1.974 1.615h.239c.239-.359.598-.598 1.017-.778l-1.435 3.709c-.06.239.059.478.299.538h.059a2.255 2.255 0 001.855-1.615h-.24c-.239.359-.598.658-1.016.778l1.495-3.709zm.299-1.854c.359 0 .598-.239.598-.598s-.239-.598-.598-.598-.598.239-.598.598.239.598.598.598m-3.768-.598h-3.41v.299c.957.239 1.077.299.598 1.615l-1.076 3.05c-.479 1.256-.658 1.376-1.854 1.555v.299h5.024L6.28 70.52h-.418c-.598.658-1.376 1.555-2.512 1.555-1.137 0-.957-.12-.479-1.436l1.077-3.05c.478-1.316.658-1.376 1.794-1.615l.12-.299zM0 37.802V25.48h3.768c1.137-.059 2.273.24 3.23.957.778.658 1.256 1.675 1.196 2.692 0 .718-.179 1.376-.538 1.974a3.657 3.657 0 01-1.435 1.256l3.828 5.443H7.058l-3.29-4.965H2.512v4.965H0zm3.888-10.228H2.512v3.11h1.376c.478.06.897-.12 1.256-.419.299-.299.478-.717.478-1.136 0-.419-.179-.837-.478-1.136-.359-.3-.778-.419-1.256-.419zM11.604 37.802V25.48h7.237v2.094h-4.725v2.871h4.007v2.153h-4.007v3.051h4.725v2.153h-7.237zm4.725-13.398h-2.273l1.974-2.393h2.632l-2.333 2.393zM21.712 37.802V25.48h4.127a4.978 4.978 0 013.17.957c1.496 1.376 1.615 3.649.24 5.144-.06.06-.12.18-.24.24a4.695 4.695 0 01-3.17 1.016h-1.615v4.965h-2.512zm4.187-10.228h-1.675v3.11h1.675c.479.06.897-.12 1.256-.419.299-.299.479-.717.479-1.136 0-.419-.18-.837-.479-1.136-.359-.3-.777-.419-1.256-.419zM39.536 33.196V25.48h2.513v7.477c.059 1.436-.419 2.751-1.376 3.828a5.482 5.482 0 01-7.297 0c-.897-1.077-1.376-2.452-1.316-3.828V25.48h2.512v7.716c-.06.718.179 1.376.658 1.914.478.479 1.136.778 1.794.718.718.06 1.376-.239 1.855-.718.478-.538.717-1.196.657-1.914zM45.159 37.802V25.48h3.529c1.076-.059 2.153.24 2.991.898.777.598 1.196 1.495 1.136 2.452 0 .478-.12.957-.359 1.376-.239.418-.538.777-.957 1.016.598.24 1.137.718 1.495 1.257.359.478.539 1.076.539 1.674.06 1.077-.419 2.034-1.256 2.692-.957.718-2.154 1.017-3.35.957h-3.768zm3.529-10.228h-1.017v2.751h1.017c.419 0 .837-.119 1.136-.359.539-.538.539-1.495 0-2.033-.299-.24-.717-.359-1.136-.359zm.359 4.905h-1.376v3.17h1.376c.478.059 1.017-.12 1.375-.419.359-.299.539-.718.539-1.196 0-.479-.18-.898-.539-1.197-.418-.239-.897-.418-1.375-.358zM56.045 37.802V25.48h2.512v10.049h4.725v2.273h-7.237zM65.495 25.48h2.512v12.321h-2.512zM81.824 37.503c.359.359.838.658 1.316.897.419.179.838.299 1.256.299h.419l.478-.12v2.154l-.598.179h-.717c-.658 0-1.376-.179-1.974-.419-.718-.299-1.316-.717-1.914-1.256l-1.436-1.256-.837.12h-.897c-.898 0-1.795-.18-2.632-.538-.778-.359-1.495-.778-2.094-1.376a6.84 6.84 0 01-1.794-4.606 6.84 6.84 0 011.794-4.605 6.076 6.076 0 012.094-1.376 6.678 6.678 0 012.632-.538c.897 0 1.854.179 2.691.538.778.359 1.496.778 2.094 1.376a6.84 6.84 0 011.794 4.605 6.726 6.726 0 01-.658 2.871 6.074 6.074 0 01-1.794 2.273l.777.778zm-4.904-1.675c1.076 0 2.093-.478 2.871-1.196.359-.419.598-.838.837-1.316a4.621 4.621 0 000-3.35c-.179-.478-.478-.897-.837-1.316a4.837 4.837 0 00-1.256-.897c-.539-.179-1.077-.299-1.615-.299-.539 0-1.077.12-1.556.299a3.07 3.07 0 00-1.256.897 3.813 3.813 0 00-.837 1.316 4.621 4.621 0 000 3.35c.179.478.479.957.837 1.316.359.418.778.658 1.256.837a3.496 3.496 0 001.556.359zM93.189 33.196V25.48h2.512v7.477c.06 1.436-.419 2.751-1.376 3.828a5.482 5.482 0 01-7.297 0c-.957-1.077-1.435-2.392-1.376-3.828V25.48h2.512v7.716c-.059.718.24 1.436.718 1.914.479.479 1.137.778 1.795.718.717.06 1.375-.239 1.854-.718.478-.538.718-1.196.658-1.914zM98.811 37.802V25.48h7.178v2.094h-4.666v2.871h3.948v2.153h-3.948v3.051h4.666v2.153h-7.178zM0 56.464V44.142h7.178v2.094H2.512v2.871H6.52v2.153H2.512v5.204H0zM9.391 56.464V44.142h3.768c1.136-.06 2.273.239 3.23.957.777.658 1.256 1.675 1.196 2.692 0 .717-.179 1.375-.538 1.973a3.663 3.663 0 01-1.436 1.257l3.888 5.443h-2.991l-3.289-4.965h-1.316v4.965H9.391zm3.947-10.228h-1.435v3.11h1.435c.419.06.898-.12 1.197-.419.299-.299.478-.718.478-1.136 0-.419-.179-.838-.478-1.137a1.83 1.83 0 00-1.197-.418zM20.037 56.464l4.666-12.322h3.29l4.665 12.322h-2.692l-1.196-3.23h-4.905l-1.196 3.23h-2.632zm4.606-5.324h3.35l-1.675-4.665-1.675 4.665zM34.572 56.464V44.142h3.17l5.563 8.793v-8.793h2.512v12.322h-3.23l-5.563-8.853v8.853h-2.452zM54.729 54.49c.658 0 1.316-.18 1.914-.479.538-.299.957-.718 1.316-1.196l1.974 1.495a5.808 5.808 0 01-1.795 1.615 6.713 6.713 0 01-2.392.838l-1.555 2.572h-2.213l1.555-2.632c-.778-.12-1.555-.359-2.213-.778-.599-.418-1.197-.897-1.675-1.435a6.336 6.336 0 01-1.077-1.974 6.874 6.874 0 01-.359-2.213c0-1.735.658-3.35 1.795-4.606a6.086 6.086 0 012.093-1.376 6.703 6.703 0 012.632-.538c1.077 0 2.093.239 3.05.658a5.86 5.86 0 012.154 1.854l-1.974 1.496c-.359-.479-.778-.898-1.316-1.197-.598-.299-1.256-.478-1.914-.478-.538 0-1.077.12-1.555.299-.479.239-.957.538-1.316.897-.299.419-.598.838-.778 1.316a4.631 4.631 0 000 3.35c.18.478.479.897.778 1.315.359.359.837.658 1.316.838a3.492 3.492 0 001.555.359zM60.471 56.464l4.665-12.322h3.29l4.666 12.322H70.46l-1.196-3.23h-4.905l-1.196 3.23h-2.692zm4.665-5.324h3.35l-1.675-4.665-1.675 4.665zM75.006 44.142h2.512v12.321h-2.512zM79.85 54.789l1.855-1.675c.359.419.777.778 1.256 1.077.418.299.957.418 1.495.418.419 0 .837-.119 1.137-.359.299-.299.418-.657.418-1.076a1.35 1.35 0 00-.897-1.256l-1.914-.957c-.718-.299-1.376-.778-1.974-1.256-.598-.658-.897-1.496-.837-2.333 0-.479.06-.957.299-1.376.179-.478.419-.837.777-1.196a4.325 4.325 0 011.256-.718c.479-.239 1.077-.299 1.615-.299.838 0 1.675.18 2.453.538.718.419 1.316.898 1.854 1.556l-1.854 1.615a5.11 5.11 0 00-1.137-1.137c-.418-.239-.837-.419-1.316-.419-.358 0-.777.12-1.016.419-.299.239-.419.538-.419.897 0 .539.359 1.077.897 1.256l1.914.957c.718.299 1.376.778 1.974 1.316.598.598.957 1.436.897 2.333a6.532 6.532 0 01-.359 1.555 5.643 5.643 0 01-.897 1.196 4.29 4.29 0 01-1.256.718 5.022 5.022 0 01-1.615.239 6.685 6.685 0 01-2.632-.538c-.777-.359-1.435-.897-1.974-1.495zM91.215 56.464V44.142h7.178v2.094h-4.726v2.871h4.008v2.153h-4.008v3.05h4.726v2.154h-7.178z"/> + <path d="M19.26 14.953l.538-.538a9.13 9.13 0 011.077-1.077l.359-.299c.059-.06.059-.06.059-.119l-.418.239s-.06 0 0-.06l.299-.239h-.06c-.419 0-.778.179-1.017.478h-.119c-.479.18-.838.598-1.316.778l-.598.239c-.24.06-.539.06-.778 0l-1.196.239-.598.24h-.06l-.239.239c-.18.12-.359.239-.539.419h-.06l-.538.538h-.06c.06 0 .06-.06.12-.12 0-.06 0-.06.06-.119.06-.06.119-.18.119-.24l.539-.358c-.06 0-.06 0-.06-.06h-.12c-.06.119-.119.239-.239.239 0-.06 0-.06.06-.06l.239-.179.359-.24h.06l-.539.24h-.059s0 .06-.06 0l.179-.18h.06c1.017-.777 2.452-.598 3.649-1.017l.299-.179c.119-.06.239-.239.478-.299.239-.179.419-.479.539-.778h-.06c-.419.18-.898.299-1.376.299-.658.24-1.436.359-2.153.359h.179c0-.059.06-.119.12-.179h.119c0-.06 0-.06.06-.06h.12c-.12-.12-.299.12-.479 0-.179-.12.06-.12.12-.179h.12c0-.06 0-.06.059-.12.479-.299.957-.479 1.376-.778.419-.299-.12.12-.239.06-.12-.06 0-.119.06-.119.359-.12.717-.24 1.016-.419-.119 0-.239.12-.358 0h.179v-.12c0-.06 0-.06.06-.06h-.06l.179-.119h-.059a.54.54 0 01.418-.18c-.059-.059-.179 0-.179-.059 0-.06.06-.06.12-.06h-.12c-.06 0-.06 0-.06-.06s0-.06.06-.06c.12-.239.239-.538.299-.777h-.06a3.415 3.415 0 01-1.316.658h-.179a.585.585 0 01-.538-.06l-.3-.24-.837-.418c-.777-.299-1.615-.539-2.452-.598.359-.12.777-.24 1.136-.299.539-.24 1.077-.299 1.615-.299-.119-.06-.239 0-.299 0a5.09 5.09 0 00-1.376.179l-.957.239c-.179.06-.299.299-.478.239v-.119c.299-.419.718-.718 1.196-.778.538-.06 1.137-.06 1.675.06l1.256.239c.12 0 .179.24.299.299.12.06.359 0 .598.12s-.06-.12 0-.179c.06-.06.239 0 .419-.06.179-.06-.239-.419-.359-.658.239.239.478.419.778.598.179.12.538.179.478 0-.179-.359-.419-.658-.718-.957v-.12h-.119v-.299c-.12-.06-.06-.179-.18-.239-.119-.06 0-.419-.06-.598-.059-.18-.119-.359-.119-.538-.12-.539-.239-1.017-.299-1.556-.06-.598.359-1.076.658-1.615.179-.418.478-.777.897-1.016.12-.359.299-.718.598-1.017.239-.299.598-.538.957-.658L22.011 0h6.4l.12.12.478.239c.24.12.419.299.598.478.06.12.18.299.12.419s-.12.419-.239.479c-.239.119-.479.119-.718.119l-.359-.119c.479.179.957.478 1.256.897l.299.119c-.059.06-.119.12-.059.18h.059c.18-.06.12-.359.359-.239.18.059.239.239.18.358 0 .06-.06.06-.06.12l-.359.299c-.06.06-.06.18 0 .239l.179.359.18.718c.179.479.239.957.239 1.436 0 .239-.12.478-.06.717l.359.718c.18.12.299.299.359.479.179.299.538.658.419 1.016-.12.359-.479.18-.718.359-.239.18 0 .419.12.539.119.119-.24.478-.419.598-.18.119.179.06.179.119 0 .06.24.24.12.419s-.538.299-.299.598c.239.299 0 .479-.06.658-.12.239-.299.419-.598.479-.179.119-.419.119-.598.059h-.18c-.538-.119-1.076-.179-1.615-.239l-.478.12-.359.359h-.179l-.24.359c0 .059 0 .059-.059.059l-.24.599c-.179.717-.119 1.375.06 1.495.18.119 1.077.359 1.735.718l.777.358H15.551a13.888 13.888 0 012.094-1.076c.598-.239 1.136-.538 1.615-.957m-4.905-2.273c-.06 0-.179.06-.179 0s.239-.18.418-.239c.18-.06.12-.12.18-.06l.239.119c-.179.18-.419.12-.658.18m-4.905-.718c.359-.478.718-1.017 1.017-1.615.359-.239.718-.478 1.077-.777.478-.598 1.136-1.077 1.794-1.436.299-.06.598-.06.838.06-.12.12-.299.12-.419.179h-.06v-.119c-.299.359-.777.538-1.017.957-.239.418-.299.718-.717.777-.419.06 0-.059-.06-.059-.897.657-1.735 1.375-2.453 2.213m2.632-2.094c0 .06-.06.06-.06.12s-.059.119-.119.119h-.06c0-.119.12-.299.239-.239m1.496 4.725c0 .06-.06.06-.06.12s.06 0 .06.06l-.24.119c-.059 0-.059 0-.059.06h-.12c-.06.06-.239.06-.18 0l.24-.239c.06-.06.119-.06.119-.12h.24m-.539-.239l-.418.239-.419.18h-.06l-.299.239h-.179c0 .06 0 .06-.06.06h-.06c0 .06 0 .06-.06.06h-.06c-.06.06-.119.06-.119.119l-.18.18h-.179l.119-.12h.12c0-.06.06-.119.12-.119 0-.06 0-.06.059-.06.06-.06.06-.06.06-.12.06-.06.12-.12.12-.179l-.12.119c-.06 0-.06 0-.06-.06.06 0 .06 0 .06-.059h.06l.12-.18h.119v-.119c.359-.299.838-.24 1.256-.479.419-.239.359.06.479 0h.299l-.778.538m.658-2.213c-.059-.06.06 0 .12-.119h-.239l-.539.179-.658.239c-.299.18-.657.359-1.016.539-.06 0-.06 0-.06-.06l.239-.18a4.01 4.01 0 01.897-.837v-.12l.359-.358c.06-.12.18-.24.299-.3h-.119c-.12 0-.24.06-.359-.059l.179-.12h-.06c-.059-.12.06-.179.18-.179l.359-.12c-.24-.06-.479.06-.718-.06.12-.419.419-.777.837-.957h.06c0 .18-.06.299-.239.299l.777.239c0 .06 0 .06-.059.06-.06 0-.06 0-.06-.06.119.12.359.06.478.18.12.12-.179 0-.239 0 .957.299 2.034.478 2.871 1.136-.718.24-1.435.299-2.213.299h-.299c-.12 0-.239 0-.299.12h-.419" fill="#fff"/> + <path d="M19.26 14.953l.538-.538a9.13 9.13 0 011.077-1.077l.359-.299c.059-.06.059-.06.059-.119l-.418.239s-.06 0 0-.06l.299-.239h-.06c-.419 0-.778.179-1.017.478h-.119c-.479.18-.838.598-1.316.778l-.598.239c-.24.06-.539.06-.778 0l-1.196.239-.598.24h-.06l-.239.239-.539.419c-.06 0-.06 0-.06.059l-.538.479h-.06c.06 0 .06-.06.12-.12 0-.06 0-.06.06-.119.06-.06.119-.18.119-.24l.539-.358c-.06 0-.06 0-.06-.06h-.12c-.06.119-.119.239-.239.239 0-.06 0-.06.06-.06l.239-.179.359-.24h.06l-.539.24h-.059s0 .06-.06 0l.179-.18h.06c1.017-.777 2.452-.598 3.649-1.017l.299-.179c.119-.06.239-.239.478-.299.239-.179.419-.479.539-.778h-.06c-.419.18-.898.299-1.376.299-.658.24-1.436.359-2.153.359h.179c0-.059.06-.119.12-.179h.119c0-.06 0-.06.06-.06h.12c-.12-.12-.299.12-.479 0-.179-.12.06-.12.12-.179h.12c0-.06 0-.06.059-.12.479-.299.957-.479 1.376-.778.419-.299-.12.12-.239.06-.12-.06 0-.119.06-.119.359-.12.717-.24 1.016-.419-.119 0-.239.12-.358 0h.179v-.12c0-.06 0-.06.06-.06h-.06l.179-.119h-.059a.54.54 0 01.418-.18c-.059-.059-.179 0-.179-.059 0-.06.06-.06.12-.06h-.12c-.06 0-.06 0-.06-.06s0-.06.06-.06c.12-.239.239-.538.299-.777h-.06a3.415 3.415 0 01-1.316.658h-.179a.585.585 0 01-.538-.06l-.3-.24-.837-.418c-.777-.299-1.615-.539-2.452-.598.359-.12.777-.24 1.136-.299.539-.24 1.077-.299 1.615-.299-.119-.06-.239 0-.299 0a5.09 5.09 0 00-1.376.179l-.957.239c-.179.06-.299.299-.478.239v-.119c.299-.419.718-.718 1.196-.778.538-.06 1.137-.06 1.675.06l1.256.239c.12 0 .179.24.299.299.12.06.359 0 .598.12s-.06-.12 0-.179c.06-.06.239 0 .419-.06.179-.06-.239-.419-.359-.658.299.179.478.478.778.598.299.12.538.179.478 0-.179-.359-.419-.658-.718-.957v-.12h-.119v-.299c-.12-.06-.06-.179-.12-.239s-.06-.419-.12-.598c-.059-.18-.119-.359-.119-.538-.12-.539-.239-1.017-.299-1.556-.06-.598.359-1.076.658-1.615.179-.418.478-.777.897-1.016.12-.359.299-.718.598-1.017.239-.299.598-.538.957-.658L22.011 0H0v16.987h15.551a13.802 13.802 0 012.094-1.077c.598-.239 1.136-.538 1.615-.957m-4.905-2.273c-.06 0-.179.06-.179 0 0-.059.239-.179.418-.239.18-.06.12-.12.18-.06l.239.12c-.179.179-.419.12-.658.179m-4.905-.717c.359-.479.718-1.017 1.017-1.615.419-.24.778-.598 1.077-.957.478-.598 1.136-1.077 1.794-1.436.299-.06.598-.06.838.06-.12.12-.299.12-.419.179h-.06v-.119c-.299.359-.777.538-1.017.957-.239.418-.299.718-.717.777-.419.06 0-.059-.06-.059-.897.657-1.735 1.375-2.453 2.213m2.632-2.094c0 .06-.06.06-.06.12s-.059.119-.119.119h-.06c0-.119.12-.299.239-.239m1.496 4.725c0 .06-.06.06-.06.12s.06 0 .06.06l-.24.119h-.179c-.06.06-.239.06-.18 0l.24-.239c.06-.06.119-.06.119-.119.06 0 .06 0 .06-.06h.18m-.539-.239l-.418.239-.419.179h-.06l-.299.239h-.179c0 .06 0 .06-.06.06h-.06c0 .06 0 .06-.06.06h-.06c-.06.06-.119.06-.119.12l-.18.179h-.179l.119-.119h.12c0-.06.06-.12.12-.12 0-.06 0-.06.059-.06.06-.06.06-.06.06-.12.06-.059.12-.119.12-.179l-.12.12c-.06 0-.06 0-.06-.06.06 0 .06 0 .06-.06h.06l.12-.179h.119v-.12c.359-.299.838-.239 1.256-.479.419-.239.359.06.479 0h.299l-.778.539m.658-2.213c-.059-.06.06 0 .12-.12h-.239l-.539.179-.658.24c-.299.179-.657.359-1.016.538-.06 0-.06 0-.06-.06l.239-.179c.239-.299.538-.598.897-.838v-.119l.359-.359c.06-.12.18-.239.299-.299h-.119c-.12 0-.24.06-.359-.06l.179-.12h-.06c-.059-.119.06-.179.18-.179l.359-.12c-.24-.059-.479.06-.718-.059a1.48 1.48 0 01.837-.957h.06c0 .179-.06.299-.239.299l.777.239c0 .06 0 .06-.059.06-.06 0-.06 0-.06-.06.119.119.359.06.478.179.12.12-.179 0-.239 0 .957.299 2.034.479 2.871 1.137-.718.239-1.435.418-2.213.418h-.299c-.12 0-.239 0-.299.12h-.419" fill="#000091"/> + <path d="M46.594 0H28.411l.12.12.478.239c.24.12.419.299.598.478.06.12.18.299.12.419s-.12.419-.239.479c-.239.119-.479.119-.718.119l-.359-.119c.479.179.957.478 1.256.897l.299.119c-.059.06-.119.12-.059.18h.059c.18-.06.12-.359.359-.239.18.059.239.239.18.358 0 .06-.06.06-.06.12l-.359.299c-.06.06-.06.18 0 .239l.179.359.18.718c.179.479.239.957.239 1.436 0 .239-.12.478 0 .717.06.24.18.479.299.718.18.12.299.299.359.479.239.299.538.658.419 1.016-.12.359-.479.18-.718.359-.239.18 0 .419.12.539.119.119-.24.478-.419.598-.18.119.179.06.179.119 0 .06.24.24.12.419s-.538.299-.299.598c.239.299 0 .479-.06.658-.12.239-.299.419-.598.479-.179.119-.419.119-.598.059h-.18c-.538-.119-1.076-.179-1.615-.239l-.478.12-.359.359h-.179l-.24.359c0 .059 0 .059-.059.059l-.24.599c-.179.717-.119 1.375.06 1.495.18.119 1.077.359 1.735.718l.777.358h17.884V0z" fill="#e1000f"/> + <path d="M29.488 6.221h.299c-.06.299-.419.358-.658.598h-.06c-.119.06-.06.239-.179.239h-.299a.544.544 0 00.478.239l.12.12h.119v.179c-.119.12-.239.06-.358.12h.717c.18-.12 0-.419.12-.598.12-.18 0-.06-.06-.06s.12-.179.18-.179c.059 0 .179-.06.179-.12s-.12-.12-.06-.18c.06-.059.359-.299.299-.478-.06-.18-.299-.12-.478-.18-.18-.059-.359 0-.539.06l-.478.12-.598.299c.239-.12.478-.179.718-.179a.827.827 0 01.538 0" fill="#9c9b9b"/> + </g> +</svg> diff --git a/packages/ui/src/router/index.js b/packages/ui/src/router/index.js new file mode 100644 index 0000000000000000000000000000000000000000..fea6502be815f07a925122d99f6bce6f5b55e367 --- /dev/null +++ b/packages/ui/src/router/index.js @@ -0,0 +1,308 @@ +import { createRouter, createWebHistory } from 'vue-router' +import store from '../store' + +const Titre = () => import('../components/titre.vue') +const Titres = () => import('../components/titres.vue') +const Demarches = () => import('../components/demarches.vue') +const Travaux = () => import('../components/travaux.vue') +const Utilisateur = () => import('../components/utilisateur.vue') +const Utilisateurs = () => import('../components/utilisateurs.vue') +const Entreprise = () => import('../components/entreprise.vue') +const Entreprises = () => import('../components/entreprises.vue') +const Administration = () => import('../components/administration.vue') +const Administrations = () => import('../components/administrations.vue') +const Meta = () => import('../components/meta.vue') +const MetaTitre = () => import('../components/meta-titre.vue') +const MetaDemarche = () => import('../components/meta-demarche.vue') +const MetaEtape = () => import('../components/meta-etape.vue') +const MetaActivite = () => import('../components/meta-activite.vue') +const Metas = () => import('../components/metas.vue') +const Activite = () => import('../components/activite.vue') +const Activites = () => import('../components/activites.vue') +const Glossaire = () => import('../components/glossaire.vue') +const Error = () => import('../components/error.vue') +const UserPasswordInit = () => import('../components/user/password-init.vue') +const UserAdd = () => import('../components/user/add.vue') +const Definition = () => import('../components/glossaire/definition.vue') +const Contacts = () => import('../components/content/contacts.vue') +const About = () => import('../components/content/about.vue') +const Accessibilite = () => import('../components/content/accessibilite.vue') +const Contribution = () => import('../components/content/contribution.vue') +const MentionsLegalesCGU = () => + import('../components/content/mentions-legales-cgu.vue') +const Cgu1 = () => import('../components/content/cgu-1-0-0.vue') +const StatistiquesGlobales = () => + import('../components/statistiques/globales.vue') +const Statistiques = () => import('../components/statistiques.vue') +const StatistiquesGuyane = () => import('../components/statistiques/guyane.vue') +const StatistiquesGranulatsMarins = () => + import('../components/statistiques/granulats-marins.vue') +const TitreCreation = () => import('../components/titre-creation.vue') +const Etape = () => import('../components/etape.vue') +const EtapeEdition = () => import('../components/etape-edition.vue') +const ActiviteEdition = () => import('../components/activite-edition.vue') +const Journaux = () => import('../components/journaux.vue') + +const routes = [ + { + path: '/titres', + name: 'titres', + component: Titres + }, + { + path: '/titres/creation', + name: 'titre-creation', + component: TitreCreation + }, + { + path: '/titres/:id', + name: 'titre', + component: Titre + }, + { + path: '/demarches', + name: 'demarches', + component: Demarches + }, + { + path: '/travaux', + name: 'travaux', + component: Travaux + }, + { + path: '/etapes/:id', + name: 'etape', + component: Etape + }, + { + path: '/etapes/creation', + name: 'etape-creation', + component: EtapeEdition + }, + { + path: '/etapes/:id/edition', + name: 'etape-edition', + component: EtapeEdition + }, + { + path: '/utilisateurs', + name: 'utilisateurs', + component: Utilisateurs + }, + { + path: '/utilisateurs/:id', + name: 'utilisateur', + component: Utilisateur + }, + { + path: '/entreprises', + name: 'entreprises', + component: Entreprises + }, + { + path: '/entreprises/:id', + name: 'entreprise', + component: Entreprise + }, + { + path: '/administrations', + name: 'administrations', + component: Administrations + }, + { + path: '/administrations/:id', + name: 'administration', + component: Administration + }, + { + path: '/metas', + name: 'metas', + component: Metas + }, + { + path: '/metas/titre', + name: 'meta-titre', + component: MetaTitre + }, + { + path: '/metas/demarche', + name: 'meta-demarche', + component: MetaDemarche + }, + { + path: '/metas/etape', + name: 'meta-etape', + component: MetaEtape + }, + { + path: '/metas/activite', + name: 'meta-activite', + component: MetaActivite + }, + { + path: '/metas/:id', + name: 'meta', + component: Meta + }, + { + path: '/activites', + name: 'activites', + component: Activites + }, + { + path: '/activites/:id', + name: 'activite', + component: Activite + }, + { + path: '/activites/:id/edition', + name: 'activite-edition', + component: ActiviteEdition + }, + { + path: '/glossaire', + name: 'glossaire', + component: Glossaire, + children: [ + { + path: ':slug', + name: 'definition', + component: Definition + } + ] + }, + { + path: '/contacts', + name: 'contacts', + component: Contacts + }, + { + path: '/a-propos', + name: 'a-propos', + component: About + }, + { + path: '/accessibilite', + name: 'accessibilite', + component: Accessibilite + }, + { + path: '/contribution', + name: 'contribution', + component: Contribution + }, + { + path: '/mentions-legales-cgu', + component: MentionsLegalesCGU + }, + { + path: '/cgu/1-0-0', + name: 'cgu-1-0-0', + component: Cgu1 + }, + { + path: '/mot-de-passe', + name: 'mot-de-passe', + component: UserPasswordInit + }, + { + path: '/email', + beforeEnter: (to, from, next) => { + store.dispatch('utilisateur/emailUpdate', { + emailToken: to.query.token + }) + next('/') + } + }, + { + path: '/creation-de-compte', + name: 'account-creation', + component: UserAdd + }, + { + path: '/statistiques', + name: 'statistiques', + component: Statistiques, + children: [ + { + path: 'guyane', + name: 'statistiques-guyane', + component: StatistiquesGuyane + }, + { + path: 'globales', + name: 'statistiques-globales', + component: StatistiquesGlobales + }, + { + path: 'granulats-marins', + name: 'statistiques-granulats-marins', + component: StatistiquesGranulatsMarins + } + ] + }, + { path: '/journaux', name: 'journaux', component: Journaux }, + // url /stats : demande de Samuel + // pour avoir une uniformité entre toutes les start-ups + { + path: '/stats', + redirect: 'statistiques' + }, + { + name: 'homepage', + path: '/', + redirect: { name: 'titres' } + }, + { + path: '/:pathMatch(.*)*', + name: 'erreur', + component: Error, + props: { + message: { + type: 'error', + value: 'Page introuvable' + } + } + } +] + +const history = createWebHistory() + +const router = createRouter({ routes, history }) + +router.isReady().then(async () => { + const ticket = + router.currentRoute.value.query.authentification === 'cerbere' && + router.currentRoute.value.query.ticket + + if (ticket) { + const query = { ...router.currentRoute.value.query } + + delete query.ticket + delete query.authentification + delete query.TARGET + + await router.replace({ query }) + await store.dispatch('user/cerbereLogin', { ticket }) + } else { + await store.dispatch('user/identify') + } +}) + +router.beforeEach(async (to, from, next) => { + if (store.state.menu.component) { + store.commit('menuClose') + } + + next() +}) + +router.afterEach((to, from) => { + // si on enlève l’erreur dans le beforeEach, cela va enlever l’erreur et tenter d’afficher l’ancien composant qui va + // potentiellement regénérer une erreur. Il faut donc attendre que la route soit changée pour l’enlever. + if (store.state.error && to.name !== from.name) { + store.dispatch('errorRemove') + } +}) + +export default router diff --git a/packages/ui/src/shim-vue.d.ts b/packages/ui/src/shim-vue.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..14edcf0255822a79749916767cb3447ed547527f --- /dev/null +++ b/packages/ui/src/shim-vue.d.ts @@ -0,0 +1,5 @@ +declare module '*.vue' { + import { defineComponent } from 'vue' + const Component: ReturnType<typeof defineComponent> + export default Component +} diff --git a/packages/ui/src/stats/bootstrap.js b/packages/ui/src/stats/bootstrap.js new file mode 100755 index 0000000000000000000000000000000000000000..01c906398450f9e6428ca4a42acce495131c59ed --- /dev/null +++ b/packages/ui/src/stats/bootstrap.js @@ -0,0 +1,25 @@ +export default function (options) { + const { host, trackerFileName } = options + const filename = `${host}/${trackerFileName}.js` + + const scriptPromise = new Promise((resolve, reject) => { + const script = document.createElement('script') + script.async = true + script.defer = true + script.src = filename + + const head = document.head || document.getElementsByTagName('head')[0] + head.appendChild(script) + + script.onload = resolve + script.onerror = reject + }) + + scriptPromise.catch(error => { + console.info( + `Warning: ${error.target.src}. If the file exists, you may have a tracking blocker enabled.` + ) + }) + + return scriptPromise +} diff --git a/packages/ui/src/stats/custom-variables.js b/packages/ui/src/stats/custom-variables.js new file mode 100644 index 0000000000000000000000000000000000000000..1442ca4fa6dfd421b4c5e9ba8dcd42b34a165e4f --- /dev/null +++ b/packages/ui/src/stats/custom-variables.js @@ -0,0 +1,34 @@ +const visitUser = matomo => user => { + if (user) { + if (user.administrations && user.administrations.length) { + user.administrations.forEach(administration => { + matomo.setCustomVariable( + 1, + 'administrationId', + administration.id, + 'visit' + ) + }) + } + + if (user.entreprises && user.entreprises.length) { + user.entreprises.forEach(entreprise => { + matomo.setCustomVariable(1, 'entreprisesIds', entreprise.id, 'visit') + }) + } + + if (user.permission) { + matomo.setCustomVariable(5, 'permissionId', user.permission.id, 'visit') + } + } +} + +const pageTitre = matomo => titre => { + if (titre) { + matomo.setCustomVariable(1, 'domaineId', titre.domaine.id, 'page') + matomo.setCustomVariable(2, 'typeId', titre.type.type.id, 'page') + matomo.setCustomVariable(3, 'statutId', titre.statut.id, 'page') + } +} + +export { visitUser, pageTitre } diff --git a/packages/ui/src/stats/index.js b/packages/ui/src/stats/index.js new file mode 100755 index 0000000000000000000000000000000000000000..71f33280267847a7f751f572258efe938eebd848 --- /dev/null +++ b/packages/ui/src/stats/index.js @@ -0,0 +1,84 @@ +import bootstrap from './bootstrap' +import { visitUser, pageTitre } from './custom-variables' + +const defaultOptions = { + requireConsent: false, + disableCookies: true, + trackInitialView: true, + trackerFileName: 'piwik', + enableHeartBeatTimer: false, + enableLinkTracking: false, + heartBeatTimerInterval: 60 +} + +const install = (app, setupOptions = {}) => { + const options = Object.assign({}, defaultOptions, setupOptions) + + bootstrap(options) + .then(() => { + const matomo = window.Piwik.getTracker( + `${options.host}/${options.trackerFileName}.php`, + options.siteId + ) + + matomo.customVariableVisitUser = visitUser(matomo) + matomo.customVariablePageTitre = pageTitre(matomo) + + // bind matomo to Vue + app.config.globalProperties.$matomo = matomo + + if (options.requireConsent) { + matomo.requireConsent() + } + + if (options.enableHeartBeatTimer) { + matomo.enableHeartBeatTimer() + } + + if (options.disableCookies) { + matomo.disableCookies() + } + + if (options.enableLinkTracking) { + matomo.enableLinkTracking(options.enableLinkTracking) + matomo.setDownloadExtensions('csv|odt|xlsx|geojson') + } + + if (options.router) { + options.router.afterEach((to, from) => { + // Unfortunately the window location is not yet updated here + // We need to make our own ulr using the data provided by the router + const loc = window.location + + // Protocol may or may not contain a colon + let protocol = loc.protocol + if (protocol.slice(-1) !== ':') { + protocol += ':' + } + + const url = protocol + '//' + loc.host + to.path + matomo.setCustomUrl(url) + + matomo.customVariableVisitUser(options.store.state.user.element) + matomo.trackPageView(name) + + if (to.name !== from.name) { + // nombre d'affichage de la page + // titre, titres, entreprises, activites, demarches, utilisateurs + matomo.trackEvent(`page-${to.name}`, `page-${to.name}_acceder`) + + if (to.name === 'titre') { + // nombre d'affichage de la page 'titres' + let action = `page-titre-from-${from.name}` + action += from.query.vue ? `-${from.query.vue}` : '' + + matomo.trackEvent('page-titre', action, to.params.id) + } + } + }) + } + }) + .catch(e => {}) +} + +export default install diff --git a/packages/ui/src/store/__mocks__/titre-etape.js b/packages/ui/src/store/__mocks__/titre-etape.js new file mode 100644 index 0000000000000000000000000000000000000000..1929b24f45927a65feba947d98ad294dd66782ea --- /dev/null +++ b/packages/ui/src/store/__mocks__/titre-etape.js @@ -0,0 +1,208 @@ +const titreEtapeMetas = { + geoSystemes: [ + { id: 'ifr', nom: 'Ifremer' }, + { id: 'dge', nom: 'DGEC' } + ], + unites: [], + devises: [], + substances: [], + entreprises: { + elements: [ + { id: 'ent-1', nom: '1' }, + { id: 'ent-2', nom: '2' } + ] + }, + demarche: { + id: 'demarche-id', + type: { nom: 'nom de la démarche' }, + titre: { nom: 'nom du titre', domaine: { id: 'm' } } + } +} + +const titreEtapeMetasRes = { + etapesTypes: [ + { id: 'w', nom: 'granulats' }, + { id: 'c', nom: 'carrières' } + ], + geoSystemes: [ + { id: 'ifr', nom: 'Ifremer' }, + { id: 'dge', nom: 'DGEC' } + ], + unites: [], + devises: [], + substances: [], + entreprises: [ + { id: 'ent-1', nom: '1' }, + { id: 'ent-2', nom: '2' } + ], + demarche: { + id: 'demarche-id', + type: { nom: 'nom de la démarche' }, + titre: { nom: 'nom du titre', domaine: { id: 'm' } } + } +} + +const titreEtapeMetasRes2 = { + geoSystemes: [ + { id: 'ifr', nom: 'Ifremer' }, + { id: 'dge', nom: 'DGEC' } + ], + unites: [], + devises: [], + substances: [], + entreprises: [ + { id: 'ent-1', nom: '1' }, + { id: 'ent-2', nom: '2' } + ], + demarche: { + id: 'demarche-id', + type: { nom: 'nom de la démarche' }, + titre: { nom: 'nom du titre', domaine: { id: 'm' } } + }, + etapesTypes: [] +} + +const titreEtapeEtapesTypes = [ + { id: 'w', nom: 'granulats' }, + { id: 'c', nom: 'carrières' } +] + +const titreEtapeEdited = { + id: 'etape-id', + titreDemarcheId: 'demarche-id', + date: '2020-01-01', + duree: { ans: null, mois: null }, + amodiataires: [], + titulaires: [], + contenu: {}, + geoSystemeIds: [], + geoSystemeOpposableId: null, + groupes: [], + incertitudes: {}, + statutId: '', + substances: [], + documents: [], + justificatifs: [] +} + +const titreEtapeCreation = { + titreDemarcheId: 'demarche-id', + date: '2020-01-01', + duree: { ans: null, mois: null }, + amodiataires: [], + titulaires: [], + contenu: {}, + geoSystemeIds: [], + geoSystemeOpposableId: null, + groupes: [], + incertitudes: {}, + statutId: '', + substances: [], + documents: [], + justificatifs: [] +} + +const titreEtapeHeritage1 = { + id: 'etape-id', + titreDemarcheId: 'demarche-id', + date: '2020-01-02', + incertitudes: { + date: undefined + }, + statutId: '', + type: { + id: 'new-etape-type-id' + }, + dateDebut: undefined, + dateFin: undefined, + duree: { + ans: null, + mois: null + }, + surface: undefined, + amodiataires: [], + titulaires: [], + groupes: [], + substances: [], + geoSystemeIds: [], + geoSystemeOpposableId: null, + contenu: { + sectionId1: { elementId1: 'valeur', elementId2: 'valeur' }, + sectionId2: {} + }, + heritageProps: {}, + heritageContenu: { + sectionId1: { + elementId1: { etape: { id: 'etape-id' }, actif: true }, + elementId2: { etape: { id: 'etape-id' }, actif: false } + }, + sectionId2: { + elementId1: { etape: { id: 'etape-id' }, actif: true } + } + }, + documents: [] +} + +const titreEtapeHeritageRes1 = { + type: { + id: 'new-etape-type-id' + }, + heritageProps: {}, + heritageContenu: { + sectionId1: { + elementId1: { etape: { id: 'etape-id' }, actif: true }, + elementId2: { etape: { id: 'etape-id' }, actif: false } + }, + sectionId2: { + elementId1: { etape: { id: 'etape-id' }, actif: true } + }, + sectionId3: {} + }, + contenu: { + sectionId1: { elementId1: 'valeur', elementId2: 'valeur' } + } +} + +const titreEtapeHeritage2 = { + amodiataires: [], + date: '2020-01-01', + documents: [], + duree: { + ans: null, + mois: null + }, + geoSystemeIds: [], + geoSystemeOpposableId: null, + groupes: [], + heritageProps: {}, + incertitudes: {}, + statutId: '', + substances: [], + titreDemarcheId: 'demarche-id', + titulaires: [], + type: { + id: 'new-etape-type-id' + } +} + +const titreEtapeHeritageRes2 = { + type: { + id: 'new-etape-type-id' + }, + heritageProps: {}, + heritageContenu: {}, + contenu: {} +} + +export { + titreEtapeMetas, + titreEtapeEtapesTypes, + titreEtapeMetasRes, + titreEtapeMetasRes2, + titreEtapeEdited, + titreEtapeCreation, + titreEtapeHeritage1, + titreEtapeHeritageRes1, + titreEtapeHeritage2, + titreEtapeHeritageRes2 +} diff --git a/packages/ui/src/store/_liste-build.js b/packages/ui/src/store/_liste-build.js new file mode 100644 index 0000000000000000000000000000000000000000..e5aa5e2421e2635fcd5a1ac348d338071daa9908 --- /dev/null +++ b/packages/ui/src/store/_liste-build.js @@ -0,0 +1,157 @@ +import { urlQueryParamsGet } from '../utils/url' +import { paramsBuild } from '../utils' + +const listeActionsBuild = (id, name, elements, metas) => ({ + async init({ state, commit, dispatch }, additionalParams = {}) { + try { + commit('loadingAdd', `${id}Init`, { root: true }) + + commit('additionalParamsSet', { additionalParams }) + if (metas) { + const data = await metas(additionalParams) + + commit('metasSet', data) + } + + if (!state.initialized) { + await dispatch('paramsFromQueryUpdate') + + commit('init') + } + + await dispatch('get') + } catch (e) { + dispatch('apiError', e, { root: true }) + } finally { + commit('loadingRemove', `${id}Init`, { root: true }) + } + }, + + async get({ state, dispatch, commit }) { + try { + commit('loadingAdd', `${id}Get`, { root: true }) + + if (!state.initialized) return + + await dispatch('urlQueryUpdate') + + const p = paramsBuild( + state.definitions, + Object.assign({}, state.params.filtres, state.params.table) + ) + + const data = await elements({ ...p, ...state.additionalParams }) + + if (!data.elements.length && data.total) { + commit('paramsSet', { section: 'table', params: { page: 1 } }) + await dispatch('urlQueryUpdate') + await dispatch('routeUpdate') + return + } + + commit('set', data) + + dispatch( + 'messageAdd', + { + value: `mise à jour : ${name}`, + type: 'success' + }, + { root: true } + ) + } catch (e) { + dispatch('apiError', e, { root: true }) + } finally { + commit('loadingRemove', `${id}Get`, { root: true }) + } + }, + + async paramsSet({ state, commit, dispatch }, { section, params, pageReset }) { + if (section === 'table' && pageReset && state.params.table.page !== 1) { + params.page = 1 + } + + commit('paramsSet', { section, params }) + + await dispatch('get') + }, + + async routeUpdate({ dispatch }) { + const hasChanged = await dispatch('paramsFromQueryUpdate') + + if (hasChanged) { + await dispatch('get') + } + }, + + async paramsFromQueryUpdate({ rootState, state, commit }) { + let hasChanged = false + + const tableParams = urlQueryParamsGet( + state.params.table, + rootState.route.query, + state.definitions + ) + + if (Object.keys(tableParams).length) { + commit('paramsSet', { section: 'table', params: tableParams }) + hasChanged = true + } + + if (state.params.filtres) { + const filtresParams = urlQueryParamsGet( + state.params.filtres, + rootState.route.query, + state.definitions + ) + + if (Object.keys(filtresParams).length) { + commit('paramsSet', { section: 'filtres', params: filtresParams }) + hasChanged = true + } + } + + return hasChanged + }, + + async urlQueryUpdate({ state, dispatch }) { + if (state.params.filtres) { + const params = Object.assign(state.params.filtres, state.params.table) + + await dispatch( + 'urlQueryUpdate', + { params, definitions: state.definitions }, + { root: true } + ) + } + } +}) + +const listeMutations = { + reset(state) { + state.elements = [] + state.total = 0 + state.initialized = false + }, + + set(state, { elements, total }) { + state.elements = elements + state.total = total + }, + + paramsSet(state, { section, params }) { + Object.keys(params).forEach(id => { + state.params[section][id] = params[id] + }) + }, + + additionalParamsSet(state, { additionalParams }) { + state.additionalParams = additionalParams + }, + + init(state) { + state.initialized = true + } +} + +export { listeActionsBuild, listeMutations } diff --git a/packages/ui/src/store/_liste-build.test.js b/packages/ui/src/store/_liste-build.test.js new file mode 100644 index 0000000000000000000000000000000000000000..e458827f2452f11f9ddcf58d33f4fd2029b28762 --- /dev/null +++ b/packages/ui/src/store/_liste-build.test.js @@ -0,0 +1,272 @@ +import { listeActionsBuild, listeMutations } from './_liste-build.js' +import { createApp } from 'vue' +import { createStore } from 'vuex' + +console.info = jest.fn() + +const listeElementsGet = jest.fn() +const listeMetasGet = jest.fn() + +describe('listes', () => { + let store + let actions + let mutations + let route + const liste = { namespaced: true } + + liste.actions = listeActionsBuild( + 'elements', + 'élements', + listeElementsGet, + listeMetasGet + ) + + liste.mutations = Object.assign({}, listeMutations, { + metasSet(state, metas) { + state.metas.types = metas + + const definition = state.definitions.find(p => p.id === 'typesIds') + definition.elements = metas.map(e => e.id) + } + }) + + beforeEach(() => { + liste.state = { + elements: null, + metas: { + types: [] + }, + definitions: [ + { id: 'page', type: 'number', min: 0 }, + { id: 'intervalle', type: 'number', min: 10, max: 500 }, + { + id: 'colonne', + type: 'string', + elements: ['nom', 'type', 'abreviation'] + }, + { id: 'ordre', type: 'string', elements: ['asc', 'desc'] }, + { id: 'typesIds', type: 'strings', elements: [] } + ], + params: { + table: { page: 1, intervalle: 200, ordre: 'asc', colonne: null }, + filtres: { typesIds: [] } + }, + initialized: false + } + + mutations = { + loadingAdd: jest.fn(), + loadingRemove: jest.fn() + } + + actions = { + apiError: jest.fn(), + messageAdd: jest.fn(), + urlQueryUpdate: jest.fn() + } + + route = { + namespaced: true, + state: { query: {} } + } + + // eslint-disable-next-line vue/one-component-per-file + const app = createApp({}) + + store = createStore({ + modules: { liste, route }, + mutations, + actions + }) + + app.use(store) + }) + + test('initialise une liste', async () => { + const types = [ + { id: 'ope', nom: 'Opérateur' }, + { id: 'dea', nom: 'Déal' } + ] + const apiMetasMock = listeMetasGet.mockResolvedValue(types) + + const apiMock = listeElementsGet.mockResolvedValue({ + elements: [{ id: 'el-1', nom: 'élement 1' }], + total: 1 + }) + + await store.dispatch('liste/init') + + expect(apiMetasMock).toHaveBeenCalled() + expect(apiMock).toHaveBeenCalled() + expect(store.state.liste.metas).toEqual({ types }) + expect( + store.state.liste.definitions.find(d => d.id === 'typesIds') + ).toEqual({ id: 'typesIds', type: 'strings', elements: ['ope', 'dea'] }) + expect(store.state.liste.initialized).toBeTruthy() + expect(store.state.liste.elements).toEqual([ + { id: 'el-1', nom: 'élement 1' } + ]) + + await store.dispatch('liste/init') + + store.commit('liste/reset') + expect(store.state.liste.initialized).toBeFalsy() + expect(store.state.liste.elements).toEqual([]) + }) + + test("retourne une erreur si l'api renvoit une erreur", async () => { + const apiMetasMock = listeMetasGet.mockRejectedValue( + new Error("erreur de l'api") + ) + + await store.dispatch('liste/init') + + expect(apiMetasMock).toHaveBeenCalled() + expect(mutations.loadingRemove).toHaveBeenCalled() + expect(actions.apiError).toHaveBeenCalledTimes(1) + expect(store.state.liste.initialized).toBeFalsy() + + store.state.liste.initialized = true + const apiMock = listeElementsGet.mockRejectedValue( + new Error("erreur de l'api") + ) + + await store.dispatch('liste/get') + + expect(apiMock).toHaveBeenCalled() + expect(actions.apiError).toHaveBeenCalledTimes(2) + }) + + test('modifie les paramètres de filtre', async () => { + const apiMock = listeElementsGet.mockResolvedValue({ + elements: [{ id: 'el-1', nom: 'élement 1' }], + total: 1 + }) + + store.state.liste.params.table.page = 2 + + await store.dispatch('liste/paramsSet', { + section: 'filtres', + params: { typesIds: ['dea'] } + }) + + expect(apiMock).not.toHaveBeenCalled() + expect(store.state.liste.params.filtres.typesIds).toEqual(['dea']) + + store.state.liste.initialized = true + + await store.dispatch('liste/paramsSet', { + section: 'table', + params: { ordre: 'desc' }, + pageReset: true + }) + + expect(apiMock).toHaveBeenCalled() + expect(store.state.liste.params.table).toEqual({ + page: 1, + intervalle: 200, + ordre: 'desc', + colonne: null + }) + expect(store.state.liste.elements).toEqual([ + { id: 'el-1', nom: 'élement 1' } + ]) + }) + + test("met à jour la liste si les paramètres d'url changent", async () => { + const apiMock = listeElementsGet.mockResolvedValue({ + elements: [{ id: 'el-1', nom: 'élement 1' }], + total: 1 + }) + + await store.dispatch('liste/routeUpdate') + + expect(apiMock).not.toHaveBeenCalled() + expect(store.state.liste.elements).toBeNull() + + store.state.route.query.page = '4' + store.state.route.query.typesIds = 'ope' + store.state.liste.initialized = true + await store.dispatch('liste/routeUpdate') + + expect(apiMock).toHaveBeenCalled() + + expect(store.state.liste.elements).toEqual([ + { id: 'el-1', nom: 'élement 1' } + ]) + }) +}) + +describe('listes sans metas', () => { + let store + let actions + let mutations + let route + const liste = { namespaced: true } + + liste.actions = listeActionsBuild('elements', 'élements', listeElementsGet) + + liste.mutations = Object.assign({}, listeMutations) + + beforeEach(() => { + liste.state = { + element: null, + definitions: [ + { id: 'page', type: 'number', min: 0 }, + { id: 'intervalle', type: 'number', min: 10, max: 500 }, + { + id: 'colonne', + type: 'string', + elements: ['nom', 'type', 'abreviation'] + } + ], + params: { + table: { page: 1, intervalle: 200, ordre: 'asc', colonne: null } + }, + initialized: false + } + + mutations = { + loadingAdd: jest.fn(), + loadingRemove: jest.fn() + } + + actions = { + apiError: jest.fn(), + messageAdd: jest.fn(), + urlQueryUpdate: jest.fn() + } + + route = { + state: { + query: {} + } + } + + // eslint-disable-next-line vue/one-component-per-file + const app = createApp({}) + + store = createStore({ + modules: { liste, route }, + mutations, + actions + }) + + app.use(store) + }) + + test('initialise une liste sans metas', async () => { + const apiMock = listeElementsGet.mockResolvedValue({ + elements: [{ id: 'el-1', nom: 'élement 1' }], + total: 1 + }) + + await store.dispatch('liste/init') + + expect(apiMock).toHaveBeenCalled() + expect(store.state.liste.initialized).toBeTruthy() + expect(store.state.liste.elements).toEqual([ + { id: 'el-1', nom: 'élement 1' } + ]) + }) +}) diff --git a/packages/ui/src/store/administration.js b/packages/ui/src/store/administration.js new file mode 100644 index 0000000000000000000000000000000000000000..89ec40c6e9d6caf5678f245cbb52f3e1f6c94b1f --- /dev/null +++ b/packages/ui/src/store/administration.js @@ -0,0 +1,300 @@ +import { + administration, + administrationMetas, + administrationModifier, + administrationTitreTypeUpdate, + administrationTitreTypeTitreStatutUpdate, + administrationTitreTypeEtapeTypeUpdate, + administrationActiviteTypeUpdate, + administrationActiviteTypeEmailUpdate, + administrationActiviteTypeEmailDelete, + administrationPermissionsMetas +} from '../api/administrations' + +const state = { + element: null, + metas: { + domaines: [], + types: [], + regions: [], + departements: [], + titresStatuts: [], + etapesTypes: [], + activitesTypes: [] + } +} + +const actions = { + async init({ commit }) { + try { + commit('loadingAdd', 'administrationInit', { root: true }) + const data = await administrationMetas() + commit('metasSet', data) + } catch (e) { + commit('popupMessageAdd', { value: e, type: 'error' }, { root: true }) + } finally { + commit('loadingRemove', 'administrationInit', { root: true }) + } + }, + + async permissionsInit({ commit }) { + try { + commit('loadingAdd', 'administrationPermissionsInit', { + root: true + }) + + const data = await administrationPermissionsMetas() + commit('metasSet', data) + } catch (e) { + commit('messageAdd', { value: e, type: 'error' }, { root: true }) + } finally { + commit('loadingRemove', 'administrationPermissionsInit', { + root: true + }) + } + }, + + async get({ commit, dispatch }, id) { + try { + commit('loadingAdd', 'administration', { root: true }) + + const data = await administration({ id }) + + commit('set', data) + } catch (e) { + dispatch('apiError', e, { root: true }) + } finally { + commit('loadingRemove', 'administration', { root: true }) + } + }, + + async update({ commit, dispatch }, administration) { + try { + commit('popupMessagesRemove', null, { root: true }) + commit('popupLoad', null, { root: true }) + commit('loadingAdd', 'administrationUpdate', { root: true }) + const data = await administrationModifier({ administration }) + + commit('popupClose', null, { root: true }) + await dispatch( + 'reload', + { name: 'administration', id: data.id }, + { root: true } + ) + dispatch( + 'messageAdd', + { value: `l'administration a été mise à jour`, type: 'success' }, + { root: true } + ) + } catch (e) { + commit('popupMessageAdd', { value: e, type: 'error' }, { root: true }) + } finally { + commit('loadingRemove', 'administrationUpdate', { root: true }) + } + }, + + async titreTypeUpdate({ commit, dispatch }, administrationTitreType) { + try { + commit('loadingAdd', 'administrationTitreTypeUpdate', { + root: true + }) + + const data = await administrationTitreTypeUpdate({ + administrationTitreType + }) + + await dispatch( + 'reload', + { name: 'administration', id: data.id }, + { root: true } + ) + dispatch( + 'messageAdd', + { value: `l'administration a été mise à jour`, type: 'success' }, + { root: true } + ) + } catch (e) { + commit('messageAdd', { value: e, type: 'error' }, { root: true }) + } finally { + commit('loadingRemove', 'administrationTitreTypeUpdate', { + root: true + }) + } + }, + + async titreTypeTitreStatutUpdate( + { commit, dispatch }, + administrationTitreTypeTitreStatut + ) { + try { + commit('loadingAdd', 'administrationTitreTypeTitreStatutUpdate', { + root: true + }) + + const data = await administrationTitreTypeTitreStatutUpdate({ + administrationTitreTypeTitreStatut + }) + + await dispatch( + 'reload', + { name: 'administration', id: data.id }, + { root: true } + ) + dispatch( + 'messageAdd', + { value: `l'administration a été mise à jour`, type: 'success' }, + { root: true } + ) + } catch (e) { + commit('messageAdd', { value: e, type: 'error' }, { root: true }) + } finally { + commit('loadingRemove', 'administrationTitreTypeTitreStatutUpdate', { + root: true + }) + } + }, + + async titresTypeEtapeTypeUpdate( + { commit, dispatch }, + administrationTitreTypeEtapeType + ) { + try { + commit('loadingAdd', 'administrationTitreTypeEtapeTypeUpdate', { + root: true + }) + + const data = await administrationTitreTypeEtapeTypeUpdate({ + administrationTitreTypeEtapeType + }) + + await dispatch( + 'reload', + { name: 'administration', id: data.id }, + { root: true } + ) + dispatch( + 'messageAdd', + { value: `l'administration a été mise à jour`, type: 'success' }, + { root: true } + ) + } catch (e) { + commit('messageAdd', { value: e, type: 'error' }, { root: true }) + } finally { + commit('loadingRemove', 'administrationTitreTypeEtapeTypeUpdate', { + root: true + }) + } + }, + + async activiteTypeUpdate({ commit, dispatch }, administrationActiviteType) { + try { + commit('loadingAdd', 'administrationActiviteTypeUpdate', { + root: true + }) + + const data = await administrationActiviteTypeUpdate({ + administrationActiviteType + }) + + await dispatch( + 'reload', + { name: 'administration', id: data.id }, + { root: true } + ) + dispatch( + 'messageAdd', + { value: `l'administration a été mise à jour`, type: 'success' }, + { root: true } + ) + } catch (e) { + commit('messageAdd', { value: e, type: 'error' }, { root: true }) + } finally { + commit('loadingRemove', 'administrationActiviteTypeUpdate', { + root: true + }) + } + }, + + async activiteTypeEmailUpdate( + { commit, dispatch }, + administrationActiviteTypeEmail + ) { + try { + commit('loadingAdd', 'administrationActiviteTypeEmailUpdate', { + root: true + }) + + const { id } = await administrationActiviteTypeEmailUpdate({ + administrationActiviteTypeEmail + }) + await dispatch('reload', { name: 'administration', id }, { root: true }) + dispatch( + 'messageAdd', + { value: `l'email a été ajouté pour notifications`, type: 'success' }, + { root: true } + ) + } catch (e) { + commit('messageAdd', { value: e, type: 'error' }, { root: true }) + } finally { + commit('loadingRemove', 'administrationActiviteTypeEmailUpdate', { + root: true + }) + } + }, + + async activiteTypeEmailDelete( + { commit, dispatch }, + administrationActiviteTypeEmail + ) { + try { + commit('loadingAdd', 'administrationActiviteTypeEmailDelete', { + root: true + }) + + const { id } = await administrationActiviteTypeEmailDelete({ + administrationActiviteTypeEmail + }) + await dispatch('reload', { name: 'administration', id }, { root: true }) + dispatch( + 'messageAdd', + { value: `l'email a été retiré`, type: 'success' }, + { root: true } + ) + } catch (e) { + commit('messageAdd', { value: e, type: 'error' }, { root: true }) + } finally { + commit('loadingRemove', 'administrationActiviteTypeEmailDelete', { + root: true + }) + } + } +} + +const mutations = { + metasSet(state, data) { + Object.keys(data).forEach(id => { + if (id === 'administrationsTypes') { + state.metas.types = data[id] + } else if (id === 'statuts') { + state.metas.titresStatuts = data[id] + } else { + state.metas[id] = data[id] + } + }) + }, + + set(state, administration) { + state.element = administration + }, + + reset(state) { + state.element = null + } +} + +export default { + namespaced: true, + state, + actions, + mutations +} diff --git a/packages/ui/src/store/administration.test.js b/packages/ui/src/store/administration.test.js new file mode 100644 index 0000000000000000000000000000000000000000..e34274043e913e4a284352bb39b3aa4e6ae1fc70 --- /dev/null +++ b/packages/ui/src/store/administration.test.js @@ -0,0 +1,427 @@ +import administration from './administration' +import { createApp } from 'vue' +import { createStore } from 'vuex' +import * as api from '../api/administrations' + +jest.mock('../api/administrations', () => ({ + administration: jest.fn(), + administrationMetas: jest.fn(), + administrationModifier: jest.fn(), + administrationPermissionsMetas: jest.fn(), + administrationTitreTypeUpdate: jest.fn(), + administrationTitreTypeTitreStatutUpdate: jest.fn(), + administrationTitreTypeEtapeTypeUpdate: jest.fn(), + administrationActiviteTypeUpdate: jest.fn() +})) + +console.info = jest.fn() + +describe("état de l'administration consultée", () => { + let store + let actions + let mutations + + beforeEach(() => { + administration.state = { + element: null, + metas: { + domaines: [], + types: [], + regions: [], + departements: [], + titresStatuts: [], + etapesTypes: [], + activitesTypes: [] + } + } + mutations = { + loadingAdd: jest.fn(), + loadingRemove: jest.fn(), + popupLoad: jest.fn(), + popupMessagesRemove: jest.fn(), + popupClose: jest.fn(), + popupMessageAdd: jest.fn(), + messageAdd: jest.fn() + } + actions = { + pageError: jest.fn(), + apiError: jest.fn(), + reload: jest.fn(), + messageAdd: jest.fn() + } + store = createStore({ + modules: { administration }, + mutations, + actions + }) + + const app = createApp({}) + app.use(store) + }) + + test("obtient les données d'un administration", async () => { + const administration = { id: 71, nom: 'toto' } + const apiMock = api.administration.mockResolvedValue(administration) + await store.dispatch('administration/get', 71) + + expect(apiMock).toHaveBeenCalledWith({ id: 71 }) + expect(store.state.administration.element).toEqual(administration) + }) + + test("retourne une erreur de l'api dans l'obtention de l'administration", async () => { + const apiMock = api.administration.mockRejectedValue( + new Error("l'api ne répond pas") + ) + await store.dispatch('administration/get', 71) + + expect(apiMock).toHaveBeenCalledWith({ id: 71 }) + expect(actions.apiError).toHaveBeenCalled() + }) + + test("supprime les données d'administration", () => { + store.commit('administration/set', { id: 71, nom: 'toto' }) + store.commit('administration/reset') + + expect(store.state.administration.element).toBeNull() + }) + + test('récupère les métas pour éditer une administration', async () => { + const apiMock = api.administrationMetas.mockResolvedValue({ + administrationsTypes: [ + { id: 'admin-1', nom: 'Opérateur' }, + { id: 'admin-2', nom: 'Déal' } + ], + regions: [ + { id: 1, nom: 'région 1' }, + { id: 2, nom: 'région 2' } + ], + departements: [ + { id: 1, nom: 'département 1' }, + { id: 2, nom: 'département 2' } + ] + }) + + await store.dispatch('administration/init') + + expect(apiMock).toHaveBeenCalled() + expect(store.state.administration.metas).toEqual({ + types: [ + { id: 'admin-1', nom: 'Opérateur' }, + { id: 'admin-2', nom: 'Déal' } + ], + regions: [ + { id: 1, nom: 'région 1' }, + { id: 2, nom: 'région 2' } + ], + departements: [ + { id: 1, nom: 'département 1' }, + { id: 2, nom: 'département 2' } + ], + domaines: [], + titresStatuts: [], + etapesTypes: [], + activitesTypes: [] + }) + + expect(mutations.loadingRemove).toHaveBeenCalled() + }) + + test("retourne une erreur si l'API retourne une erreur lors de la récupération des métas", async () => { + const apiMock = api.administrationMetas.mockRejectedValue( + new Error('erreur api') + ) + + await store.dispatch('administration/init') + + expect(apiMock).toHaveBeenCalled() + + expect(mutations.popupMessageAdd).toHaveBeenCalled() + }) + + test('modifie une administration', async () => { + const apiMock = api.administrationModifier.mockResolvedValue({ + id: 71, + nom: 'nom admin' + }) + + await store.dispatch('administration/update', { id: 71, nom: 'nom admin' }) + + expect(apiMock).toHaveBeenCalledWith({ + administration: { nom: 'nom admin', id: 71 } + }) + expect(mutations.popupClose).toHaveBeenCalled() + }) + + test("retourne une erreur si l'API retourne une erreur lors de la modification d'une administration", async () => { + const apiMock = api.administrationModifier.mockRejectedValue( + new Error('erreur api') + ) + + await store.dispatch('administration/update', { id: 71, nom: 'nom admin' }) + + expect(apiMock).toHaveBeenCalledWith({ + administration: { nom: 'nom admin', id: 71 } + }) + + expect(mutations.popupMessageAdd).toHaveBeenCalled() + }) + + test('récupère les métas pour éditer les permissions', async () => { + const apiMock = api.administrationPermissionsMetas.mockResolvedValue({ + domaines: [{ id: 'm', nom: 'minéraux et métaux' }], + statuts: [{ id: 'val', nom: 'valide' }], + etapesTypes: [{ id: 'dex', nom: 'décision expresse' }] + }) + + await store.dispatch('administration/permissionsInit') + + expect(apiMock).toHaveBeenCalled() + expect(store.state.administration.metas).toEqual({ + types: [], + regions: [], + departements: [], + activitesTypes: [], + domaines: [{ id: 'm', nom: 'minéraux et métaux' }], + titresStatuts: [{ id: 'val', nom: 'valide' }], + etapesTypes: [{ id: 'dex', nom: 'décision expresse' }] + }) + + expect(mutations.loadingRemove).toHaveBeenCalled() + }) + + test("retourne une erreur si l'API retourne une erreur lors de la récupération des métas", async () => { + const apiMock = api.administrationPermissionsMetas.mockRejectedValue( + new Error('erreur api') + ) + + await store.dispatch('administration/permissionsInit') + + expect(apiMock).toHaveBeenCalled() + + expect(mutations.messageAdd).toHaveBeenCalled() + }) + + test('modifie les permissions (type de titres)', async () => { + const apiMock = api.administrationTitreTypeUpdate.mockResolvedValue({ + id: 71, + nom: 'nom admin' + }) + + await store.dispatch('administration/titreTypeUpdate', { + administrationId: 'dea-guyane', + titreTypeId: 'aex', + gestionnaire: true, + associee: true + }) + + expect(apiMock).toHaveBeenCalledWith({ + administrationTitreType: { + administrationId: 'dea-guyane', + titreTypeId: 'aex', + gestionnaire: true, + associee: true + } + }) + + expect(actions.reload).toHaveBeenCalled() + expect(actions.messageAdd).toHaveBeenCalled() + }) + + test("retourne une erreur si l'API retourne une erreur lors de la modification des permissions (type de titre)", async () => { + const apiMock = api.administrationTitreTypeUpdate.mockRejectedValue( + new Error('erreur api') + ) + + await store.dispatch('administration/titreTypeUpdate', { + administrationId: 'dea-guyane', + titreTypeId: 'aex', + gestionnaire: true, + associee: true + }) + + expect(apiMock).toHaveBeenCalledWith({ + administrationTitreType: { + administrationId: 'dea-guyane', + titreTypeId: 'aex', + gestionnaire: true, + associee: true + } + }) + + expect(actions.reload).not.toHaveBeenCalled() + expect(mutations.messageAdd).toHaveBeenCalled() + }) + + test('modifie les permissions (type de titres / statut de titre)', async () => { + const apiMock = + api.administrationTitreTypeTitreStatutUpdate.mockResolvedValue({ + id: 71, + nom: 'nom admin' + }) + + await store.dispatch('administration/titreTypeTitreStatutUpdate', { + administrationId: 'dea-guyane', + titreTypeId: 'aex', + titreStatutId: 'dex', + titresModificationInterdit: true, + demarchesModificationInterdit: true, + etapesModificationInterdit: true + }) + + expect(apiMock).toHaveBeenCalledWith({ + administrationTitreTypeTitreStatut: { + administrationId: 'dea-guyane', + titreTypeId: 'aex', + titreStatutId: 'dex', + titresModificationInterdit: true, + demarchesModificationInterdit: true, + etapesModificationInterdit: true + } + }) + + expect(actions.reload).toHaveBeenCalled() + expect(actions.messageAdd).toHaveBeenCalled() + }) + + test("retourne une erreur si l'API retourne une erreur lors de la modification des permissions (type de titre / statut de titre)", async () => { + const apiMock = + api.administrationTitreTypeTitreStatutUpdate.mockRejectedValue( + new Error('erreur api') + ) + + await store.dispatch('administration/titreTypeTitreStatutUpdate', { + administrationId: 'dea-guyane', + titreTypeId: 'aex', + titreStatutId: 'dex', + titresModificationInterdit: true, + demarchesModificationInterdit: true, + etapesModificationInterdit: true + }) + + expect(apiMock).toHaveBeenCalledWith({ + administrationTitreTypeTitreStatut: { + administrationId: 'dea-guyane', + titreTypeId: 'aex', + titreStatutId: 'dex', + titresModificationInterdit: true, + demarchesModificationInterdit: true, + etapesModificationInterdit: true + } + }) + + expect(actions.reload).not.toHaveBeenCalled() + expect(mutations.messageAdd).toHaveBeenCalled() + }) + + test("modifie les permissions (type de titre / type d'étape)", async () => { + const apiMock = + api.administrationTitreTypeEtapeTypeUpdate.mockResolvedValue({ + id: 71, + nom: 'nom admin' + }) + + await store.dispatch('administration/titresTypeEtapeTypeUpdate', { + administrationId: 'dea-guyane', + titreTypeId: 'aex', + etapeTypeId: 'dex', + lectureInterdit: true, + modificationInterdit: true, + creationInterdit: true + }) + + expect(apiMock).toHaveBeenCalledWith({ + administrationTitreTypeEtapeType: { + administrationId: 'dea-guyane', + titreTypeId: 'aex', + etapeTypeId: 'dex', + lectureInterdit: true, + modificationInterdit: true, + creationInterdit: true + } + }) + + expect(actions.reload).toHaveBeenCalled() + expect(actions.messageAdd).toHaveBeenCalled() + }) + + test("retourne une erreur si l'API retourne une erreur lors de la modification des permissions (type de titre / type d'étape)", async () => { + const apiMock = + api.administrationTitreTypeEtapeTypeUpdate.mockRejectedValue( + new Error('erreur api') + ) + + await store.dispatch('administration/titresTypeEtapeTypeUpdate', { + administrationId: 'dea-guyane', + titreTypeId: 'aex', + etapeTypeId: 'dex', + lectureInterdit: true, + modificationInterdit: true, + creationInterdit: true + }) + + expect(apiMock).toHaveBeenCalledWith({ + administrationTitreTypeEtapeType: { + administrationId: 'dea-guyane', + titreTypeId: 'aex', + etapeTypeId: 'dex', + lectureInterdit: true, + modificationInterdit: true, + creationInterdit: true + } + }) + + expect(actions.reload).not.toHaveBeenCalled() + expect(mutations.messageAdd).toHaveBeenCalled() + }) + + test('modifie les restrictions (type des activités)', async () => { + const apiMock = api.administrationActiviteTypeUpdate.mockResolvedValue({ + id: 71, + nom: 'nom admin' + }) + + await store.dispatch('administration/activiteTypeUpdate', { + administrationId: 'dea-guyane', + titreTypeId: 'grp', + lectureInterdit: true, + modificationInterdit: true + }) + + expect(apiMock).toHaveBeenCalledWith({ + administrationActiviteType: { + administrationId: 'dea-guyane', + titreTypeId: 'grp', + lectureInterdit: true, + modificationInterdit: true + } + }) + + expect(actions.reload).toHaveBeenCalled() + expect(actions.messageAdd).toHaveBeenCalled() + }) + + test("retourne une erreur si l'API retourne une erreur lors de la modification des permissions (type de titre)", async () => { + const apiMock = api.administrationActiviteTypeUpdate.mockRejectedValue( + new Error('erreur api') + ) + + await store.dispatch('administration/activiteTypeUpdate', { + administrationId: 'dea-guyane', + titreTypeId: 'grp', + lectureInterdit: true, + modificationInterdit: true + }) + + expect(apiMock).toHaveBeenCalledWith({ + administrationActiviteType: { + administrationId: 'dea-guyane', + titreTypeId: 'grp', + lectureInterdit: true, + modificationInterdit: true + } + }) + + expect(actions.reload).not.toHaveBeenCalled() + expect(mutations.messageAdd).toHaveBeenCalled() + }) +}) diff --git a/packages/ui/src/store/administrations.js b/packages/ui/src/store/administrations.js new file mode 100644 index 0000000000000000000000000000000000000000..450826e889f616a901a2b4f52afe357cece1d0f1 --- /dev/null +++ b/packages/ui/src/store/administrations.js @@ -0,0 +1,54 @@ +import { administrations, administrationsMetas } from '../api/administrations' +import { listeActionsBuild, listeMutations } from './_liste-build.js' + +const state = { + elements: [], + total: 0, + metas: { + types: [] + }, + definitions: [ + { id: 'page', type: 'number', min: 0 }, + { id: 'intervalle', type: 'number', min: 10, max: 500 }, + { id: 'colonne', type: 'string', values: ['nom', 'type', 'abreviation'] }, + { id: 'ordre', type: 'string', values: ['asc', 'desc'] }, + { id: 'typesIds', type: 'strings', values: [] }, + { id: 'noms', type: 'string' } + ], + params: { + table: { page: 1, intervalle: 200, ordre: 'asc', colonne: null }, + filtres: { noms: '', typesIds: [] } + }, + initialized: false +} + +const actions = listeActionsBuild( + 'administrations', + 'administrations', + administrations, + administrationsMetas +) + +const mutations = Object.assign({}, listeMutations, { + metasSet(state, data) { + const metas = { types: data } + Object.keys(metas).forEach(id => { + const paramsIds = ['typesIds'] + + state.metas[id] = metas[id] + + paramsIds.forEach(paramId => { + const definition = state.definitions.find(p => p.id === paramId) + + definition.values = metas[id].map(e => e.id) + }) + }) + } +}) + +export default { + namespaced: true, + state, + actions, + mutations +} diff --git a/packages/ui/src/store/administrations.test.js b/packages/ui/src/store/administrations.test.js new file mode 100644 index 0000000000000000000000000000000000000000..c1e57b40481ca6df07db5416a652bb5d9a2f7a5c --- /dev/null +++ b/packages/ui/src/store/administrations.test.js @@ -0,0 +1,46 @@ +import { createApp } from 'vue' +import { createStore } from 'vuex' +import administrations from './administrations' + +jest.mock('../api/administrations', () => ({ + administrations: jest.fn(), + administrationsMetas: jest.fn() +})) + +console.info = jest.fn() + +describe("liste d'administrations", () => { + let store + + beforeEach(() => { + administrations.state = { + metas: { types: [] }, + definitions: [{ id: 'typesIds', type: 'strings', values: [] }] + } + + store = createStore({ + modules: { administrations } + }) + + const app = createApp({}) + app.use(store) + }) + + test('enregistre les métas', () => { + store.commit('administrations/metasSet', [ + { id: 'ope', nom: 'opérateurs' }, + { id: 'dea', nom: 'déal' } + ]) + + expect(store.state.administrations.metas).toEqual({ + types: [ + { id: 'ope', nom: 'opérateurs' }, + { id: 'dea', nom: 'déal' } + ] + }) + + expect(store.state.administrations.definitions).toEqual([ + { id: 'typesIds', type: 'strings', values: ['ope', 'dea'] } + ]) + }) +}) diff --git a/packages/ui/src/store/definitions.js b/packages/ui/src/store/definitions.js new file mode 100644 index 0000000000000000000000000000000000000000..6713311dfcb4e6a4732a5f89a9ca8a637b892be2 --- /dev/null +++ b/packages/ui/src/store/definitions.js @@ -0,0 +1,79 @@ +import { + definitions, + domaines, + demarchesStatuts, + demarchesTypes, + etapesTypes, + etapesStatuts, + substancesLegales, + titresStatuts, + titresTypesTypes +} from '../api/metas' + +const definitionsIndex = { + domaines: domaines, + 'titre-minier': '', + 'autorisation-miniere': '', + 'demarches-statuts': demarchesStatuts, + 'demarches-types': demarchesTypes, + 'etapes-types': etapesTypes, + 'etapes-statuts': etapesStatuts, + 'substances-legales': substancesLegales, + 'titres-statuts': titresStatuts, + 'titres-types': titresTypesTypes +} + +const state = { + elements: [], + entrees: [] +} + +const actions = { + async get({ dispatch, commit }) { + commit('loadingAdd', 'definitions', { root: true }) + + try { + const data = await definitions() + + commit('set', data) + } catch (e) { + dispatch('apiError', e, { root: true }) + } finally { + commit('loadingRemove', 'definitions', { root: true }) + } + }, + + async entreesGet({ state, dispatch, commit }, slug) { + commit('loadingAdd', 'definition', { root: true }) + + try { + if (definitionsIndex[slug]) { + const data = await definitionsIndex[slug]() + commit('entreesSet', data) + } else { + commit('entreesSet', []) + } + } catch (e) { + dispatch('apiError', e, { root: true }) + } finally { + commit('loadingRemove', 'definition', { root: true }) + } + } +} + +const mutations = { + set(state, data) { + state.elements = data + }, + + entreesSet(state, data) { + state.entrees = data + } +} + +export default { + namespaced: true, + state, + actions, + mutations +} diff --git a/packages/ui/src/store/definitions.test.js b/packages/ui/src/store/definitions.test.js new file mode 100644 index 0000000000000000000000000000000000000000..8d534a4d44384a4b28fe30355499059c16eb3777 --- /dev/null +++ b/packages/ui/src/store/definitions.test.js @@ -0,0 +1,152 @@ +import definitions from './definitions' +import * as api from '../api/metas' +import { createApp } from 'vue' +import { createStore } from 'vuex' + +jest.mock('../api/metas', () => ({ + definitions: jest.fn(), + domaines: jest.fn(), + demarchesStatuts: jest.fn(), + demarchesTypes: jest.fn(), + etapesTypes: jest.fn(), + etapesStatuts: jest.fn(), + substancesLegales: jest.fn(), + titresStatuts: jest.fn(), + titresTypesTypes: jest.fn() +})) + +console.info = jest.fn() + +describe('définitions du glossaire', () => { + let store + let actions + let mutations + + beforeEach(() => { + definitions.state = { + elements: [], + entrees: [] + } + + actions = { + pageError: jest.fn(), + apiError: jest.fn(), + messageAdd: jest.fn() + } + mutations = { + loadingAdd: jest.fn(), + loadingRemove: jest.fn(), + popupMessagesRemove: jest.fn(), + popupMessageAdd: jest.fn(), + popupClose: jest.fn() + } + + store = createStore({ + modules: { definitions }, + mutations, + actions + }) + + const app = createApp({}) + app.use(store) + }) + + test('récupère les définitions', async () => { + const response = [ + { + id: 'aum', + nom: 'Autorisation minière', + table: null, + description: 'description aum', + elements: null, + couleur: null + }, + { + id: 'dom', + nom: 'Domaines miniers', + table: 'domaines', + description: 'description dom', + + elements: [ + { + id: 'm', + nom: 'minéraux et métaux', + table: null, + description: 'description m', + elements: null, + couleur: null + } + ], + couleur: null + } + ] + + const apiMock = api.definitions.mockResolvedValue(response) + + await store.dispatch('definitions/get') + + expect(apiMock).toHaveBeenCalled() + expect(store.state.definitions.elements).toEqual(response) + }) + + test("retourne une erreur si l'api ne répond pas", async () => { + const apiMock = api.definitions.mockRejectedValue( + new Error("erreur de l'api") + ) + + await store.dispatch('definitions/get') + + expect(apiMock).toHaveBeenCalled() + expect(mutations.loadingRemove).toHaveBeenCalled() + }) + + test("retourne une erreur 404 si l'api retourne null", async () => { + const apiMock = api.definitions.mockResolvedValue(null) + await store.dispatch('definitions/get') + + expect(apiMock).toHaveBeenCalled() + expect(store.state.definitions.elements).toEqual(null) + }) + + test('récupère les descriptions des domaines', async () => { + const response = [ + { + id: 'm', + nom: 'minéraux et métaux', + table: null, + description: 'description m', + elements: null, + couleur: null + } + ] + + const apiMock = api.domaines.mockResolvedValue(response) + + await store.dispatch('definitions/entreesGet', 'domaines') + + expect(apiMock).toHaveBeenCalled() + expect(store.state.definitions.entrees).toEqual(response) + }) + + test('ne récupère pas de description sur la page principale ', async () => { + await store.dispatch('definitions/entreesGet', '') + expect(store.state.definitions.entrees).toEqual([]) + }) + + test('ne récupère pas de description pour "titre-minier"', async () => { + await store.dispatch('definitions/entreesGet', 'titre-minier') + expect(store.state.definitions.entrees).toEqual([]) + }) + + test("retourne une erreur de l'api lors de la récupération des domaines", async () => { + const apiMock = api.domaines.mockRejectedValue( + new Error("l'api ne répond pas") + ) + + await store.dispatch('definitions/entreesGet', 'domaines') + + expect(apiMock).toHaveBeenCalled() + + expect(actions.apiError).toHaveBeenCalled() + }) +}) diff --git a/packages/ui/src/store/document.js b/packages/ui/src/store/document.js new file mode 100644 index 0000000000000000000000000000000000000000..61111996a19173a8b3513005723cbf7e92643167 --- /dev/null +++ b/packages/ui/src/store/document.js @@ -0,0 +1,173 @@ +import { + documentMetas, + documentCreer, + documentModifier, + documentSupprimer +} from '../api/documents' +import { uploadCall } from '../api/_upload' + +const state = { + metas: { + documentsTypes: [], + documentsVisibilites: [] + } +} + +const actions = { + async init({ commit }, options) { + try { + commit('loadingAdd', 'documentInit', { root: true }) + + const data = await documentMetas(options) + + commit('metasSet', data) + } catch (e) { + commit('popupMessageAdd', { value: e, type: 'error' }, { root: true }) + } finally { + commit('loadingRemove', 'documentInit', { root: true }) + } + }, + + async upsert({ commit, dispatch }, { document, route, action }) { + try { + commit('popupMessagesRemove', null, { root: true }) + commit('popupLoad', null, { root: true }) + + const isTemporary = document.id === document.typeId + if (isTemporary) { + delete document.id + } + + document.fichier = true + + // Il faut envoyer les données de "document" sans sa propriété "fichierNouveau" + // pour ne pas téléverser le fichier via GQL. Mais transformer "document" ici altère + // le rendu de la UI. Elle pointe vers la référence de "document.fichierNouveau" + // pour afficher le nom du fichier. On en crée donc une copie. + const documentToSend = Object.assign({}, document) + delete documentToSend.fichierNouveau + + let uploadURL + let documentReturned + + if (document.fichierNouveau) { + uploadURL = await uploadCall(document.fichierNouveau, progress => { + commit('fileLoad', { loaded: progress, total: 100 }, { root: true }) + }) + } + + const nomTemporaire = uploadURL + ? uploadURL.substring(uploadURL.lastIndexOf('/') + 1) + : null + + const idOld = document.id + try { + if (!document.id) { + documentReturned = await documentCreer({ + document: { ...documentToSend, nomTemporaire } + }) + } else { + delete documentToSend.typeId + documentReturned = await documentModifier({ + document: { ...documentToSend, nomTemporaire } + }) + } + + dispatch( + 'messageAdd', + { value: `le document a été mis à jour`, type: 'success' }, + { root: true } + ) + + dispatch('refreshAfterUpsert', { + route, + idOld, + titreEtapeId: document.titreEtapeId, + document: documentReturned, + action + }) + + // Ne ferme la popup automatiquement que si tout s'est passé sans erreur + commit('popupClose', null, { root: true }) + } catch (e) { + commit('popupMessageAdd', { value: e, type: 'error' }, { root: true }) + } + } catch (e) { + commit('popupMessageAdd', { value: e, type: 'error' }, { root: true }) + } finally { + commit('fileLoad', { loaded: 0, total: 0 }, { root: true }) + } + }, + + async refreshAfterUpsert( + { commit, dispatch }, + { route, idOld, titreEtapeId, document, action } + ) { + if (route) { + await dispatch('reload', route, { root: true }) + + if (route.name === 'titre') { + const section = route.section + let id + + if (section === 'etapes') id = titreEtapeId + + commit('titre/open', { section, id }, { root: true }) + } + } else if (action) { + const params = { ...action.params, document } + + if (idOld) { + params.idOld = idOld + } + + await dispatch(action.name, params, { root: true }) + } + }, + + async remove({ commit, dispatch }, { id, route }) { + try { + commit('popupMessagesRemove', null, { root: true }) + commit('loadingAdd', 'documentRemove', { root: true }) + if (route) { + commit('popupLoad', null, { root: true }) + } + + await documentSupprimer({ id }) + + if (route) { + commit('popupClose', null, { root: true }) + + dispatch( + 'messageAdd', + { value: `le document a été supprimé`, type: 'success' }, + { root: true } + ) + await dispatch('reload', route, { root: true }) + } + } catch (e) { + commit('popupMessageAdd', { value: e, type: 'error' }, { root: true }) + } finally { + commit('loadingRemove', 'documentRemove', { root: true }) + } + } +} + +const mutations = { + metasSet(state, data) { + Object.keys(data).forEach(id => { + state.metas[id] = data[id] + }) + }, + + uploadProgress(state, progress) { + state.upload.progress = progress + } +} + +export default { + namespaced: true, + state, + actions, + mutations +} diff --git a/packages/ui/src/store/document.test.js b/packages/ui/src/store/document.test.js new file mode 100644 index 0000000000000000000000000000000000000000..a789fc3674265e8f60aaaa8c04a381e7734fd0c3 --- /dev/null +++ b/packages/ui/src/store/document.test.js @@ -0,0 +1,278 @@ +import document from './document' +import * as api from '../api/documents' +import * as upload from '../api/_upload' +import { createApp } from 'vue' +import { createStore } from 'vuex' + +jest.mock('../api/documents', () => ({ + documentMetas: jest.fn(), + documentCreer: jest.fn(), + documentModifier: jest.fn(), + documentSupprimer: jest.fn() +})) + +jest.mock('../api/_upload', () => ({ + uploadCall: jest.fn() +})) + +console.info = jest.fn() + +describe('documents', () => { + let store + let actions + let mutations + + beforeEach(() => { + jest.resetAllMocks() + + document.state = { + metas: { documentsTypes: [] }, + preferences: { types: [] } + } + + actions = { + pageError: jest.fn(), + apiError: jest.fn(), + reload: jest.fn(), + messageAdd: jest.fn(), + test: jest.fn() + } + + mutations = { + loadingAdd: jest.fn(), + loadingRemove: jest.fn(), + apiError: jest.fn(), + popupLoad: jest.fn(), + popupMessagesRemove: jest.fn(), + popupClose: jest.fn(), + popupMessageAdd: jest.fn(), + fileLoad: jest.fn() + } + + store = createStore({ + actions, + mutations, + modules: { + document, + titre: { + namespaced: true, + mutations: { open: jest.fn() } + } + } + }) + + const app = createApp({}) + app.use(store) + }) + test('récupère les métas pour éditer un document', async () => { + const apiMock = api.documentMetas.mockResolvedValueOnce({ + documentsTypes: [ + { id: 'arr', nom: 'Arrêté' }, + { id: 'avi', nom: 'Avis' } + ] + }) + + await store.dispatch('document/init') + + expect(apiMock).toHaveBeenCalled() + expect(store.state.document.metas.documentsTypes).toEqual([ + { id: 'arr', nom: 'Arrêté' }, + { id: 'avi', nom: 'Avis' } + ]) + expect(mutations.loadingRemove).toHaveBeenCalled() + }) + + test("retourne une erreur si l'api ne répond pas", async () => { + const apiMock = api.documentMetas.mockRejectedValue( + new Error("erreur de l'api") + ) + + await store.dispatch('document/init') + + expect(apiMock).toHaveBeenCalled() + expect(mutations.loadingRemove).toHaveBeenCalled() + expect(mutations.popupMessageAdd).toHaveBeenCalled() + }) + + test('ajoute un document', async () => { + let document = { + nom: 'champs', + typeId: 1, + fichier: true, + fichierNouveau: new Blob(), + nomTemporaire: null + } + const apiMock = api.documentCreer.mockResolvedValue({ + nom: 'champs' + }) + + await store.dispatch('document/upsert', { + document, + route: { name: 'titre', id: 'titre-id', section: 'etapes' } + }) + expect(upload.uploadCall).toHaveBeenCalled() + const sentDocument = { ...document } + delete sentDocument.fichierNouveau + expect(apiMock).toHaveBeenCalledWith({ document: sentDocument }) + + jest.resetAllMocks() + + await store.dispatch('document/upsert', { + document, + route: 'something' + }) + expect(upload.uploadCall).toHaveBeenCalled() + expect(apiMock).toHaveBeenCalledWith({ document: sentDocument }) + + jest.resetAllMocks() + + document = { + nom: 'champs', + typeId: 1, + fichier: true, + nomTemporaire: null + } + await store.dispatch('document/upsert', { + document, + route: { name: 'titre', id: 'titre-id', section: 'travaux' } + }) + expect(upload.uploadCall).not.toHaveBeenCalled() + expect(apiMock).toHaveBeenCalledWith({ document }) + }) + + test("retourne une erreur si l'API retourne une erreur lors de l'ajout d'un document", async () => { + api.documentCreer.mockRejectedValueOnce(() => new Error('erreur api')) + await store.dispatch('document/upsert', { + document: { nom: 'champs', fichierNouveau: new Blob() } + }) + + expect(upload.uploadCall).toHaveBeenCalled() + expect(mutations.popupMessageAdd).toHaveBeenCalled() + }) + + test('met à jour un document', async () => { + let document = { + nom: 'champs', + id: 14, + typeId: 1, + fichier: true, + fichierNouveau: new Blob(), + nomTemporaire: null + } + const apiMock = api.documentModifier.mockResolvedValue({ + id: 14, + nom: 'champs' + }) + + await store.dispatch('document/upsert', { + document, + route: { name: 'titre', id: 'titre-id', section: 'etapes' } + }) + expect(upload.uploadCall).toHaveBeenCalled() + let sentDocument = { ...document } + delete sentDocument.fichierNouveau + delete sentDocument.typeId + expect(apiMock).toHaveBeenCalledWith({ document: sentDocument }) + + jest.resetAllMocks() + + await store.dispatch('document/upsert', { + document, + route: 'something' + }) + expect(upload.uploadCall).toHaveBeenCalled() + expect(apiMock).toHaveBeenCalledWith({ document: sentDocument }) + + jest.resetAllMocks() + + document = { + nom: 'champs', + id: 14, + typeId: 1, + fichier: true, + nomTemporaire: null + } + await store.dispatch('document/upsert', { + document, + route: { name: 'titre', id: 'titre-id', section: 'travaux' } + }) + expect(upload.uploadCall).not.toHaveBeenCalled() + sentDocument = { ...document } + delete sentDocument.typeId + expect(apiMock).toHaveBeenCalledWith({ document: sentDocument }) + }) + + test('ajoute un nouveau document si c’est un document temporaire', async () => { + const document = { + nom: 'champs', + typeId: 1, + fichier: true, + fichierNouveau: new Blob(), + nomTemporaire: null + } + const apiMock = api.documentCreer.mockResolvedValue({ + id: 14, + nom: 'champs' + }) + + await store.dispatch('document/upsert', { + document, + route: { name: 'titre', id: 'titre-id' } + }) + expect(upload.uploadCall).toHaveBeenCalled() + const sentDocument = { ...document } + delete sentDocument.fichierNouveau + expect(apiMock).toHaveBeenCalledWith({ document: sentDocument }) + }) + + test('applique une action au lieu d’être redirigé', async () => { + api.documentCreer.mockImplementationOnce(async () => { + await store.dispatch('document/refreshAfterUpsert', { + action: { name: 'test' } + }) + }) + + await store.dispatch('document/upsert', { + document: { id: 14, nom: 'champs', typeId: 1 }, + action: { name: 'test' } + }) + + expect(actions.test).toHaveBeenCalled() + }) + + test("retourne une erreur si l'API retourne une erreur lors de la mise à jour d'un document", async () => { + api.documentModifier.mockRejectedValue(new Error("erreur de l'api")) + await store.dispatch('document/upsert', { + document: { id: 14, nom: 'champs' } + }) + + expect(mutations.popupMessageAdd).toHaveBeenCalled() + }) + + test('supprime un document', async () => { + const apiMock = api.documentSupprimer.mockResolvedValue(true) + await store.dispatch('document/remove', { + id: 62, + route: { name: 'titre', id: 'titre-id' } + }) + + expect(apiMock).toHaveBeenCalledWith({ id: 62 }) + expect(mutations.popupClose).toHaveBeenCalled() + await store.dispatch('document/remove', { + id: 62 + }) + + expect(apiMock).toHaveBeenCalledWith({ id: 62 }) + expect(mutations.popupClose).toHaveBeenCalled() + }) + + test("retourne une erreur si l'API retourne une erreur lors de la suppression d'un document", async () => { + const apiMock = api.documentSupprimer.mockRejectedValue( + new Error("erreur de l'api") + ) + await store.dispatch('document/remove', { id: 62 }) + + expect(apiMock).toHaveBeenCalledWith({ id: 62 }) + expect(mutations.popupMessageAdd).toHaveBeenCalled() + }) +}) diff --git a/packages/ui/src/store/entreprise.js b/packages/ui/src/store/entreprise.js new file mode 100644 index 0000000000000000000000000000000000000000..bb90007c19d97ea2051063d143ab8d652748b7f7 --- /dev/null +++ b/packages/ui/src/store/entreprise.js @@ -0,0 +1,154 @@ +import { + entreprise, + entrepriseCreer, + entrepriseModifier, + entrepriseTitreTypeUpdate, + entreprisePermissionsMetas +} from '../api/entreprises' + +import router from '../router' + +const state = { + element: null, + metas: { + domaines: [] + } +} + +const actions = { + async permissionsInit({ commit }) { + commit('loadingAdd', 'entreprisePermissionsInit', { + root: true + }) + + try { + const data = await entreprisePermissionsMetas() + commit('metasSet', { domaines: data }) + } catch (e) { + commit('messageAdd', { value: e, type: 'error' }, { root: true }) + } finally { + commit('loadingRemove', 'entreprisePermissionsInit', { + root: true + }) + } + }, + + async get({ commit, dispatch }, id) { + try { + commit('loadingAdd', 'entrepriseGet', { root: true }) + + const data = await entreprise({ id }) + + if (data) { + commit('set', data) + } else { + dispatch('pageError', null, { root: true }) + } + } catch (e) { + dispatch('apiError', e, { root: true }) + } finally { + commit('loadingRemove', 'entrepriseGet', { root: true }) + } + }, + + async add({ commit, dispatch }, entreprise) { + commit('popupMessagesRemove', null, { root: true }) + commit('popupLoad', null, { root: true }) + commit('loadingAdd', 'entrepriseAdd', { root: true }) + try { + const data = await entrepriseCreer({ entreprise }) + + commit('popupClose', null, { root: true }) + + router.push({ name: 'entreprise', params: { id: data.id } }) + dispatch( + 'messageAdd', + { value: `l'entreprise a été créée`, type: 'success' }, + { root: true } + ) + } catch (e) { + commit('popupMessageAdd', { value: e, type: 'error' }, { root: true }) + } finally { + commit('loadingRemove', 'entrepriseAdd', { root: true }) + } + }, + + async update({ commit, dispatch }, entreprise) { + commit('popupMessagesRemove', null, { root: true }) + commit('popupLoad', null, { root: true }) + commit('loadingAdd', 'entrepriseUpdate', { root: true }) + try { + const data = await entrepriseModifier({ entreprise }) + + commit('popupClose', null, { root: true }) + + await dispatch( + 'reload', + { name: 'entreprise', id: data.id }, + { root: true } + ) + + dispatch( + 'messageAdd', + { value: `l'entreprise a été mise à jour`, type: 'success' }, + { root: true } + ) + } catch (e) { + commit('popupMessageAdd', { value: e, type: 'error' }, { root: true }) + } finally { + commit('loadingRemove', 'entrepriseUpdate', { root: true }) + } + }, + + async titreTypeUpdate({ commit, dispatch }, entrepriseTitreType) { + try { + commit('loadingAdd', 'entrepriseTitreTypeUpdate', { + root: true + }) + + const data = await entrepriseTitreTypeUpdate({ + entrepriseTitreType + }) + + await dispatch( + 'reload', + { name: 'entreprise', id: data.id }, + { root: true } + ) + dispatch( + 'messageAdd', + { value: `l'entreprise a été mise à jour`, type: 'success' }, + { root: true } + ) + } catch (e) { + commit('messageAdd', { value: e, type: 'error' }, { root: true }) + } finally { + commit('loadingRemove', 'entrepriseTitreTypeUpdate', { + root: true + }) + } + } +} + +const mutations = { + metasSet(state, data) { + Object.keys(data).forEach(id => { + state.metas[id] = data[id] + }) + }, + + set(state, entreprise) { + state.element = entreprise + }, + + reset(state) { + state.element = null + } +} + +export default { + namespaced: true, + state, + actions, + mutations +} diff --git a/packages/ui/src/store/entreprise.test.js b/packages/ui/src/store/entreprise.test.js new file mode 100644 index 0000000000000000000000000000000000000000..dd9cade03ec491049bac26dfc9d03f9a552aa64b --- /dev/null +++ b/packages/ui/src/store/entreprise.test.js @@ -0,0 +1,245 @@ +import { createApp } from 'vue' +import { createStore } from 'vuex' +import * as api from '../api/entreprises' +import entreprise from './entreprise' + +jest.mock('../router', () => ({ + push: () => {}, + replace: () => {} +})) + +jest.mock('../api/entreprises', () => ({ + entreprise: jest.fn(), + entrepriseCreer: jest.fn(), + entrepriseModifier: jest.fn(), + entreprisePermissionsMetas: jest.fn(), + entrepriseTitreTypeUpdate: jest.fn() +})) + +console.info = jest.fn() + +describe("état de l'entreprise sélectionnée", () => { + let store + let actions + let mutations + + beforeEach(() => { + entreprise.state = { + element: null, + metas: { + domaines: [] + } + } + actions = { + pageError: jest.fn(), + apiError: jest.fn(), + reload: jest.fn(), + messageAdd: jest.fn() + } + + mutations = { + loadingAdd: jest.fn(), + loadingRemove: jest.fn(), + popupLoad: jest.fn(), + popupMessagesRemove: jest.fn(), + popupClose: jest.fn(), + popupMessageAdd: jest.fn(), + messageAdd: jest.fn() + } + + store = createStore({ + modules: { entreprise }, + mutations, + actions + }) + + const app = createApp({}) + app.use(store) + }) + + test('obtient une entreprise', async () => { + const apiMock = api.entreprise.mockResolvedValue({ id: 71, nom: 'toto' }) + await store.dispatch('entreprise/get', 71) + + expect(apiMock).toHaveBeenCalledWith({ id: 71 }) + expect(store.state.entreprise.element).toEqual({ id: 71, nom: 'toto' }) + }) + + test("affiche une page d'erreur si l'id de l'entreprise retourne null", async () => { + const apiMock = api.entreprise.mockResolvedValue(null) + await store.dispatch('entreprise/get', 71) + + expect(apiMock).toHaveBeenCalledWith({ id: 71 }) + expect(actions.pageError).toHaveBeenCalled() + }) + + test("retourne une erreur de l'api dans l'obtention de l'entreprise", async () => { + const apiMock = api.entreprise.mockRejectedValue( + new Error("l'api ne répond pas") + ) + await store.dispatch('entreprise/get', 71) + + expect(apiMock).toHaveBeenCalledWith({ id: 71 }) + + expect(actions.apiError).toHaveBeenCalled() + }) + + test("supprime les données d'entreprise", () => { + store.commit('entreprise/set', { id: 71, nom: 'toto' }) + store.commit('entreprise/reset') + + expect(store.state.entreprise.element).toBeNull() + }) + + test('ajoute une entreprise', async () => { + const apiMock = api.entrepriseCreer.mockResolvedValue({ + id: 71, + nom: 'toto' + }) + + await store.dispatch('entreprise/add', { + legalSiren: '123456789', + paysId: 'fr' + }) + + expect(apiMock).toHaveBeenCalledWith({ + entreprise: { + legalSiren: '123456789', + paysId: 'fr' + } + }) + expect(mutations.popupClose).toHaveBeenCalled() + }) + + test("retourne une erreur si l'API retourne une erreur lors de l'ajout d'une entreprise", async () => { + const apiMock = api.entrepriseCreer.mockRejectedValue( + new Error('erreur api') + ) + await store.dispatch('entreprise/add', { + legalSiren: '123456789', + paysId: 'fr' + }) + + expect(apiMock).toHaveBeenCalledWith({ + entreprise: { + legalSiren: '123456789', + paysId: 'fr' + } + }) + + expect(mutations.popupMessageAdd).toHaveBeenCalled() + }) + + test('modifie une entreprise', async () => { + const apiMock = api.entrepriseModifier.mockResolvedValue({ + id: 71, + nom: 'toto' + }) + + await store.dispatch('entreprise/update', { + legalSiren: '123456789', + paysId: 'fr' + }) + + expect(apiMock).toHaveBeenCalledWith({ + entreprise: { + legalSiren: '123456789', + paysId: 'fr' + } + }) + expect(mutations.popupClose).toHaveBeenCalled() + }) + + test("retourne une erreur si l'API retourne une erreur lors de la modification d'une entreprise", async () => { + const apiMock = api.entrepriseModifier.mockRejectedValue( + new Error('erreur api') + ) + await store.dispatch('entreprise/update', { + legalSiren: '123456789', + paysId: 'fr' + }) + + expect(apiMock).toHaveBeenCalledWith({ + entreprise: { + legalSiren: '123456789', + paysId: 'fr' + } + }) + + expect(mutations.popupMessageAdd).toHaveBeenCalled() + }) + + test('récupère les métas pour éditer les permissions', async () => { + const apiMock = api.entreprisePermissionsMetas.mockResolvedValue([ + { id: 'm', nom: 'minéraux et métaux' } + ]) + + await store.dispatch('entreprise/permissionsInit') + + expect(apiMock).toHaveBeenCalled() + expect(store.state.entreprise.metas).toEqual({ + domaines: [{ id: 'm', nom: 'minéraux et métaux' }] + }) + + expect(mutations.loadingRemove).toHaveBeenCalled() + }) + + test("retourne une erreur si l'API retourne une erreur lors de la récupération des métas", async () => { + const apiMock = api.entreprisePermissionsMetas.mockRejectedValue( + new Error('erreur api') + ) + + await store.dispatch('entreprise/permissionsInit') + + expect(apiMock).toHaveBeenCalled() + + expect(mutations.messageAdd).toHaveBeenCalled() + }) + + test('modifie les permissions (type de titres)', async () => { + const apiMock = api.entrepriseTitreTypeUpdate.mockResolvedValue({ + id: 71, + nom: 'nom admin' + }) + + await store.dispatch('entreprise/titreTypeUpdate', { + entrepriseId: 'entreprise-id', + titreTypeId: 'aex', + titresCreation: true + }) + + expect(apiMock).toHaveBeenCalledWith({ + entrepriseTitreType: { + entrepriseId: 'entreprise-id', + titreTypeId: 'aex', + titresCreation: true + } + }) + + expect(actions.reload).toHaveBeenCalled() + expect(actions.messageAdd).toHaveBeenCalled() + }) + + test("retourne une erreur si l'API retourne une erreur lors de la modification des permissions (type de titre)", async () => { + const apiMock = api.entrepriseTitreTypeUpdate.mockRejectedValue( + new Error('erreur api') + ) + + await store.dispatch('entreprise/titreTypeUpdate', { + entrepriseId: 'entreprise-id', + titreTypeId: 'aex', + titresCreation: true + }) + + expect(apiMock).toHaveBeenCalledWith({ + entrepriseTitreType: { + entrepriseId: 'entreprise-id', + titreTypeId: 'aex', + titresCreation: true + } + }) + + expect(actions.reload).not.toHaveBeenCalled() + expect(mutations.messageAdd).toHaveBeenCalled() + }) +}) diff --git a/packages/ui/src/store/entreprises.js b/packages/ui/src/store/entreprises.js new file mode 100644 index 0000000000000000000000000000000000000000..af73bdbd12cef9125a5b461e5cc2f955acd315c1 --- /dev/null +++ b/packages/ui/src/store/entreprises.js @@ -0,0 +1,43 @@ +import { entreprises } from '../api/entreprises' +import { listeActionsBuild, listeMutations } from './_liste-build' + +const state = { + elements: [], + total: 0, + definitions: [ + { id: 'page', type: 'number', min: 0 }, + { id: 'intervalle', type: 'number', min: 10, max: 500 }, + { + id: 'colonne', + type: 'string', + values: ['nom', 'siren'] + }, + { + id: 'ordre', + type: 'string', + values: ['asc', 'desc'] + }, + { id: 'noms', type: 'string' } + ], + params: { + table: { + page: 1, + intervalle: 200, + ordre: 'asc', + colonne: null + }, + filtres: { noms: '' } + }, + initialized: false +} + +const actions = listeActionsBuild('entreprises', 'entreprises', entreprises) + +const mutations = Object.assign({}, listeMutations) + +export default { + namespaced: true, + state, + actions, + mutations +} diff --git a/packages/ui/src/store/index.js b/packages/ui/src/store/index.js new file mode 100644 index 0000000000000000000000000000000000000000..7d330deddfa4444b8d249fa5cf8930eb9cd64ced --- /dev/null +++ b/packages/ui/src/store/index.js @@ -0,0 +1,256 @@ +import { shallowRef } from '@vue/reactivity' +import { createStore } from 'vuex' +import { saveAs } from 'file-saver' + +import router from '../router' +import { urlQueryUpdate } from '../utils/url' + +import titre from './titre' +import titreDemarche from './titre-demarche' +import titreCreation from './titre-creation' +import titreEtape from './titre-etape' +import titreEtapeEdition from './titre-etape-edition' +import document from './document' +import titres from './titres' +import titresDemarches from './titres-demarches' +import utilisateur from './utilisateur' +import utilisateurs from './utilisateurs' +import entreprise from './entreprise' +import entreprises from './entreprises' +import administration from './administration' +import administrations from './administrations' +import metas from './metas' +import meta from './meta' +import user from './user' +import titreActivite from './titre-activite' +import titreActiviteEdition from './titre-activite-edition' +import titresActivites from './titres-activites' +import statistiques from './statistiques' +import definitions from './definitions' +import journaux from './journaux' + +const modules = { + titre, + titreDemarche, + titreCreation, + titreEtape, + titreEtapeEdition, + document, + titres, + titresDemarches, + utilisateur, + utilisateurs, + entreprise, + entreprises, + administration, + administrations, + meta, + metas, + user, + titreActivite, + titreActiviteEdition, + titresActivites, + statistiques, + definitions, + journaux +} + +const state = { + config: {}, + messages: [], + popup: { component: null, props: null, messages: [], loading: false }, + error: null, + menu: { component: null }, + loading: [], + fileLoading: { + loaded: 0, + total: 0 + } +} + +const actions = { + apiError({ commit }, error) { + if (error.message === 'aborted') return + + const id = Date.now() + + commit('messageAdd', { + id, + type: 'error', + value: `Erreur : ${error}` + }) + + setTimeout(() => { + commit('messageRemove', id) + }, 4500) + + console.error(error) + }, + + pageError({ commit }) { + commit('errorUpdate', { + type: 'error', + value: `Erreur: page introuvable` + }) + }, + + errorRemove({ state, commit }) { + if (state.error) { + commit('errorUpdate', null) + } + }, + + messageAdd({ commit }, message) { + const id = Date.now() + message.id = id + + commit('messageAdd', message) + + setTimeout(() => { + commit('messageRemove', id) + }, 4500) + }, + + menuToggle({ state, commit }, component) { + if (state.menu.component && state.menu.component.name === component.name) { + commit('menuClose') + } else if (state.menu.component) { + commit('menuClose') + commit('menuOpen', component) + } else { + commit('menuOpen', component) + } + }, + + async reload({ dispatch, rootState }, { name, id }) { + if (!id) { + router.push({ name }) + } else { + const idOld = rootState.route.params.id + + if (id !== idOld) { + router.replace({ name, params: { id } }) + } else { + await dispatch(`${name}/get`, id) + } + } + }, + + async downloadDocument({ dispatch }, document) { + if (document.fichierNouveau) { + saveAs(document.fichierNouveau) + dispatch('messageAdd', { + type: 'success', + value: `fichier téléchargé : ${document.fichierNouveau.name}` + }) + } else { + await dispatch('download', `/fichiers/${document.id}`) + } + }, + + async download({ dispatch, commit }, path) { + try { + saveAs(`/apiUrl${path}`) + + dispatch('messageAdd', { + type: 'success', + value: `fichier téléchargé` + }) + } catch (e) { + dispatch('apiError', `téléchargement : ${path}, ${e}`) + } finally { + commit('loadingRemove', 'fileLoading') + commit('fileLoad', { loaded: 0, total: 0 }) + } + }, + + async urlQueryUpdate({ rootState }, { params, definitions }) { + const { status, query } = urlQueryUpdate( + params, + rootState.route.query, + definitions + ) + + if (status === 'updated') { + router.push({ query }) + } else if (status === 'created') { + router.replace({ query }) + } + } +} + +const mutations = { + messageAdd(state, message) { + state.messages.push(message) + }, + + messageRemove(state, id) { + const index = state.messages.findIndex(m => m.id === id) + state.messages.splice(index, 1) + }, + + popupOpen(state, { component, props }) { + state.popup.component = shallowRef(component) + state.popup.props = props + state.popup.messages = [] + }, + + popupClose(state) { + state.popup.component = null + state.popup.props = null + state.popup.messages = [] + state.popup.loading = false + }, + + errorUpdate(state, error) { + state.error = error + }, + + menuOpen(state, component) { + state.menu.component = shallowRef(component) + }, + + menuClose(state) { + state.menu.component = null + }, + + popupLoad(state) { + state.popup.loading = true + }, + + popupMessagesRemove(state) { + state.popup.messages = [] + state.popup.loading = false + }, + + popupMessageAdd(state, message) { + state.popup.messages.push(message) + state.popup.loading = false + }, + + loadingAdd(state, name) { + state.loading.push(name) + }, + + loadingRemove(state, name) { + const index = state.loading.indexOf(name) + + if (index > -1) { + state.loading.splice(index, 1) + } + }, + + fileLoad(state, { loaded, total }) { + state.fileLoading.loaded = loaded + state.fileLoading.total = total + } +} + +export { state, actions, mutations } + +export default createStore({ + state, + actions, + mutations, + modules +}) diff --git a/packages/ui/src/store/index.test.js b/packages/ui/src/store/index.test.js new file mode 100644 index 0000000000000000000000000000000000000000..0a947b9bac4bdf3c424547508c0505d5c2fcd861 --- /dev/null +++ b/packages/ui/src/store/index.test.js @@ -0,0 +1,346 @@ +import { actions, mutations } from './index' +import { createApp } from 'vue' +import { createStore } from 'vuex' +import * as fileSaver from 'file-saver' +import * as router from '../router' + +jest.mock('file-saver', () => ({ saveAs: jest.fn() })) +jest.mock('./titre', () => ({ titre: jest.fn() })) +jest.mock('./titres', () => ({ titres: jest.fn() })) +jest.mock('./titre-demarche', () => ({ titreDemarche: jest.fn() })) +jest.mock('./titre-creation', () => ({ titreCreation: jest.fn() })) +jest.mock('./titre-etape', () => ({ titreEtape: jest.fn() })) +jest.mock('./titre-etape-edition', () => ({ titreEtape: jest.fn() })) +jest.mock('./document', () => ({ document: jest.fn() })) +jest.mock('./titres-demarches', () => ({ titresDemarches: jest.fn() })) +jest.mock('./utilisateur', () => ({ utilisateur: jest.fn() })) +jest.mock('./utilisateurs', () => ({ utilisateurs: jest.fn() })) +jest.mock('./entreprises', () => ({ entreprises: jest.fn() })) +jest.mock('./entreprise', () => ({ entreprise: jest.fn() })) +jest.mock('./administration', () => ({ administration: jest.fn() })) +jest.mock('./administrations', () => ({ administrations: jest.fn() })) +jest.mock('./user', () => ({ user: jest.fn() })) +jest.mock('./titre-activite', () => ({ titreActivite: jest.fn() })) +jest.mock('./titre-activite-edition', () => ({ + titreActiviteEdition: jest.fn() +})) +jest.mock('./titres-activites', () => ({ titresActivites: jest.fn() })) +jest.mock('./statistiques', () => ({ statistiques: jest.fn() })) +jest.mock('./definitions', () => ({ definitions: jest.fn() })) +jest.mock('./metas', () => ({ metas: jest.fn() })) +jest.mock('./meta', () => ({ meta: jest.fn() })) +jest.mock('./journaux', () => ({ journaux: jest.fn() })) + +jest.mock('../router', () => ({ + replace: jest.fn(), + push: jest.fn() +})) + +console.info = jest.fn() +console.error = jest.fn() +jest.useFakeTimers() + +describe("état général de l'application", () => { + let state + let store + let modules + + beforeEach(() => { + modules = { + titre: { + namespaced: true, + state: { element: null }, + actions: { + get: jest.fn() + } + }, + route: { + namespaced: true, + state: { + query: {} + } + } + } + + state = { + config: {}, + messages: [], + popup: { component: null, props: null, messages: [], loading: false }, + error: null, + menu: { component: null }, + loading: [], + loaded: false, + fileLoading: { + loaded: 0, + total: 0 + } + } + + store = createStore({ + modules, + state, + actions, + mutations + }) + + const app = createApp({}) + app.use(store) + + localStorage.clear() + }) + + test('ajoute un message', () => { + const message = { id: 42, message: 'message très important' } + store.commit('messageAdd', message) + + expect(state.messages).toEqual([message]) + }) + + test('met la popup en état de chargement', () => { + store.commit('popupLoad') + + expect(state.popup.loading).toBe(true) + }) + + test('supprime un message', () => { + const message = { id: 42, message: 'message très important' } + store.commit('messageAdd', message) + store.commit('messageRemove', 42) + + expect(state.messages).toEqual([]) + }) + + test('ferme la pop-up', () => { + const component = 'open' + const props = 'open' + store.commit('popupOpen', { component, props }) + store.commit('popupClose') + + expect(state.popup).toMatchObject({ + component: { _value: null }, + props: null, + messages: [], + loading: false + }) + }) + + test('ajoute un message de la pop-up', () => { + const message = 'message très important' + store.commit('popupMessageAdd', message) + + expect(state.popup.messages).toEqual([message]) + }) + + test('supprime les messages de la pop-up', () => { + const message = 'message très important' + store.commit('popupMessageAdd', message) + store.commit('popupMessagesRemove') + + expect(state.popup.messages).toEqual([]) + }) + + test("trace si un appel à l'api est en cours", () => { + store.commit('loadingAdd', 'nom1') + store.commit('loadingAdd', 'nom2') + store.commit('loadingRemove', 'nom2') + store.commit('loadingRemove', 'nom3') + + expect(state.loading).toEqual(['nom1']) + }) + + test("retourne une erreur de l'api", async () => { + Date.now = jest.fn(() => 1487076708000) + await store.dispatch('apiError', 'message') + + expect(state.messages).toEqual([ + { + id: 1487076708000, + type: 'error', + value: 'Erreur : message' + } + ]) + }) + + test('retourne une erreur 404', async () => { + await store.dispatch('pageError') + + expect(state.error).toEqual({ + type: 'error', + value: `Erreur: page introuvable` + }) + }) + + test("ne supprime pas d'erreur s'il n'y en a pas", async () => { + await store.dispatch('errorRemove') + + expect(state.error).toEqual(null) + }) + + test('supprime une erreur', async () => { + store.commit('errorUpdate', { id: 'erreur-test' }) + await store.dispatch('errorRemove') + + expect(state.error).toEqual(null) + }) + + test('ferme le menu', async () => { + store.state.menu.component = { name: 'menu' } + const component = { name: 'menu' } + + await store.dispatch('menuToggle', component) + + expect(state.menu.component).toBeNull() + }) + + test('ferme le menu et en ouvre un autre', async () => { + store.state.menu.component = { name: 'bonjour' } + const component = { name: 'hello' } + + await store.dispatch('menuToggle', component) + + expect(state.menu.component).toMatchObject({ _value: component }) + }) + + test('ouvre un nouveau menu', async () => { + const component = { name: 'hello' } + await store.dispatch('menuToggle', component) + + expect(state.menu.component).toMatchObject({ _value: component }) + }) + + test("recharge la page si l'id du titre n'a pas changé", async () => { + store.state.route.params = { id: 'titre-id' } + await store.dispatch('reload', { name: 'titre', id: 'titre-id' }) + + expect(modules.titre.actions.get).toHaveBeenCalled() + }) + + test("charge la nouvelle page si l'id du titre a changé", async () => { + store.state.route.params = { id: 'id-test' } + await store.dispatch('reload', { name: 'titre', id: 'titre-id-new' }) + + expect(router.replace).toHaveBeenCalled() + }) + + test("ne recharge pas la page si l'id n'a pas changé", async () => { + store.state.route.params = { id: 'id-test' } + await store.dispatch('reload', { name: 'titre', id: 'id-test' }) + + expect(router.replace).not.toHaveBeenCalled() + expect(modules.titre.actions.get).toHaveBeenCalled() + }) + + test("recharge la page si il n'y a pas d'id", async () => { + store.state.titre.element = { id: 'id-test', nom: 'marne' } + await store.dispatch('reload', { name: 'titres' }) + + expect(router.push).toHaveBeenCalled() + }) + + test("met à jour les paramètres d'url", async () => { + await store.dispatch('urlQueryUpdate', { + params: { typesIds: null }, + definitions: [{ id: 'typesIds', type: 'strings', elements: [] }] + }) + + expect(router.push).not.toHaveBeenCalled() + expect(router.replace).not.toHaveBeenCalled() + + await store.dispatch('urlQueryUpdate', { + params: { typesIds: ['pr', 'ar'] }, + definitions: [{ id: 'typesIds', type: 'strings', elements: [] }] + }) + + expect(router.replace).toHaveBeenCalledWith({ + query: { typesIds: 'pr,ar' } + }) + + store.state.route.query.typesIds = 'pr,ar' + + await store.dispatch('urlQueryUpdate', { + params: { typesIds: ['cx'] }, + definitions: [{ id: 'typesIds', type: 'strings', elements: [] }] + }) + + expect(router.push).toHaveBeenCalledWith({ + query: { typesIds: 'cx' } + }) + }) +}) + +describe("état général de l'application", () => { + let state + let store + + beforeEach(() => { + state = { + messages: [], + loading: [], + fileLoading: { + loaded: 0, + total: 0 + } + } + + localStorage.clear() + }) + + test('supprime un message', async () => { + const messageRemoveMock = jest.fn() + mutations.messageRemove = messageRemoveMock + store = createStore({ actions, state, mutations }) + const message = { id: 14, message: 'message important' } + await store.dispatch('messageAdd', message) + + const res = state.messages.pop() + expect(res.message).toEqual('message important') + expect(res.id).toBeLessThanOrEqual(Date.now()) + jest.advanceTimersByTime(4500) + // expect(setTimeout).toHaveBeenCalled() + // expect(setTimeout).toHaveBeenCalledWith(expect.any(Function), 4500) + expect(messageRemoveMock).toHaveBeenCalled() + }) + + test('télécharge un document du serveur', async () => { + const messageAddMock = jest.fn() + actions.messageAdd = messageAddMock + store = createStore({ state, actions, mutations }) + + await store.dispatch('downloadDocument', { id: 'toot' }) + + expect(fileSaver.saveAs).toHaveBeenCalledWith('/apiUrl/fichiers/toot') + expect(messageAddMock).toHaveBeenCalled() + expect(state.loading).toEqual([]) + }) + + test('télécharge un nouveau document depuis le navigateur', async () => { + const messageAddMock = jest.fn() + actions.messageAdd = messageAddMock + store = createStore({ state, actions, mutations }) + + await store.dispatch('downloadDocument', { + fichierNouveau: { name: 'document-titre' } + }) + + expect(fileSaver.saveAs).toHaveBeenCalled() + expect(messageAddMock).toHaveBeenCalled() + expect(state.loading).toEqual([]) + }) + + test('télécharge du contenu', async () => { + const messageAddMock = jest.fn() + actions.messageAdd = messageAddMock + store = createStore({ state, actions, mutations }) + + const section = 'titres' + const params = { typeIds: ['m', 'w'] } + + await store.dispatch('download', `/${section}?${params}`) + + expect(fileSaver.saveAs).toHaveBeenCalledWith( + `/apiUrl/${section}?${params}` + ) + expect(messageAddMock).toHaveBeenCalled() + expect(state.loading).toEqual([]) + }) +}) diff --git a/packages/ui/src/store/journaux.js b/packages/ui/src/store/journaux.js new file mode 100644 index 0000000000000000000000000000000000000000..9c9e73054a7580bbdd16dbbcaeb576a9a68839c2 --- /dev/null +++ b/packages/ui/src/store/journaux.js @@ -0,0 +1,24 @@ +import { journaux } from '../api/journaux' +import { listeActionsBuild, listeMutations } from './_liste-build' + +const state = { + elements: [], + total: 0, + definitions: [ + { id: 'page', type: 'number', min: 0 }, + { id: 'intervalle', type: 'number', min: 10, max: 500 }, + { id: 'ordre', type: 'string', values: ['asc', 'desc'] }, + { id: 'recherche', type: 'string' }, + { id: 'titreId', type: 'string' } + ], + params: { + table: { page: 1, intervalle: 50 }, + filtres: { recherche: '' } + }, + initialized: false +} + +const actions = listeActionsBuild('journaux', 'journaux', journaux) +const mutations = Object.assign({}, listeMutations) + +export default { namespaced: true, state, actions, mutations } diff --git a/packages/ui/src/store/meta.js b/packages/ui/src/store/meta.js new file mode 100644 index 0000000000000000000000000000000000000000..794a06350bf6106acbda5fc8d3527fb22e8382a7 --- /dev/null +++ b/packages/ui/src/store/meta.js @@ -0,0 +1,184 @@ +import metasIndex from './metas-definitions' +import { nextTick } from 'vue' + +const state = { + elementsIndex: {}, + elementsSelectedIndex: {} +} + +const idsFind = (element, definition) => + definition.ids + ? definition.ids.reduce((ids, id) => { + ids[id] = element[id] + + return ids + }, {}) + : { id: element.id } + +const getters = { + elements: state => id => state.elementsIndex[id], + elementSelected: state => id => state.elementsSelectedIndex[id] +} + +const actions = { + async get({ dispatch, commit, state }, id) { + try { + commit('loadingAdd', 'metaGet', { root: true }) + + if (metasIndex[id]) { + const definition = metasIndex[id] + const elements = await definition.get() + commit('set', { id, elements }) + + for (const colonne of definition.colonnes) { + if ( + colonne.type === 'entities' && + colonne.entities && + !state.elementsIndex[colonne.entities] + ) { + const entities = await metasIndex[colonne.entities].get() + + commit('set', { id: colonne.entities, elements: entities }) + } + } + } + } catch (e) { + dispatch('apiError', e, { root: true }) + } finally { + commit('loadingRemove', 'metaGet', { root: true }) + } + }, + + async update({ dispatch, commit }, { id, element, partialElement }) { + try { + commit('loadingAdd', 'metaUpdate', { root: true }) + + if (metasIndex[id]) { + const definition = metasIndex[id] + const elements = await definition.update({ + element: { + ...partialElement, + ...idsFind(element, definition) + } + }) + + commit('set', { id, elements }) + dispatch( + 'messageAdd', + { + value: "l'élément a été mis à jour", + type: 'success' + }, + { root: true } + ) + } + } catch (e) { + dispatch('apiError', e, { root: true }) + } finally { + commit('loadingRemove', 'metaUpdate', { root: true }) + } + }, + + async create( + { dispatch, commit, state }, + { id, element, joinTable, foreignKey } + ) { + try { + commit('loadingAdd', 'metaCreate', { root: true }) + + if (metasIndex[joinTable]) { + const definition = metasIndex[joinTable] + const elements = await definition.create({ element }) + + commit('set', { id: joinTable, elements }) + + const elementSelected = state.elementsIndex[id].find( + e => e.id === element[foreignKey] + ) + + dispatch('elementSelect', { + id: joinTable, + element: elementSelected + }) + + dispatch( + 'messageAdd', + { + value: "l'élément a été créée", + type: 'success' + }, + { root: true } + ) + } + } catch (e) { + dispatch('apiError', e, { root: true }) + } finally { + commit('loadingRemove', 'metaCreate', { root: true }) + } + }, + + elementSelect({ commit }, { id, element }) { + commit('elementSelectedSet', { id, element: null }) + if (element) { + nextTick(() => { + commit('elementSelectedSet', { id, element }) + }) + } + }, + + async delete({ dispatch, commit }, { id, element }) { + commit('loadingAdd', 'metaDelete', { root: true }) + + try { + if (metasIndex[id]) { + const definition = metasIndex[id] + const elements = await definition.delete({ + element: { + ...idsFind(element, definition) + } + }) + + commit('set', { id, elements }) + commit('elementSelectedSet', { id, element: null }) + dispatch( + 'messageAdd', + { + value: "l'élément a été effacé", + type: 'success' + }, + { root: true } + ) + } + } catch (e) { + dispatch('apiError', e, { root: true }) + } finally { + commit('loadingRemove', 'metaDelete', { root: true }) + } + } +} + +const mutations = { + reset(state) { + state.elementsIndex = {} + state.elementsSelectedIndex = {} + }, + + set(state, { id, elements }) { + state.elementsIndex = { ...state.elementsIndex, [id]: elements } + }, + + elementSelectedSet(state, { id, element }) { + state.elementsSelectedIndex = { + ...state.elementsSelectedIndex, + [id]: element + } + } +} + +export default { + namespaced: true, + state, + actions, + mutations, + getters +} diff --git a/packages/ui/src/store/metas-definitions.js b/packages/ui/src/store/metas-definitions.js new file mode 100644 index 0000000000000000000000000000000000000000..4e6a9415927ff02ede09bb2eb1c844c7e58ed3e5 --- /dev/null +++ b/packages/ui/src/store/metas-definitions.js @@ -0,0 +1,793 @@ +import { + definitions, + domaines, + titresTypesTypes, + titresStatuts, + demarchesTypes, + demarchesStatuts, + etapesTypes, + etapesStatuts, + phasesStatuts, + domaineModifier, + definitionModifier, + titreTypeTypeModifier, + titreStatutModifier, + demarcheTypeModifier, + demarcheStatutModifier, + phaseStatutModifier, + etapeTypeModifier, + etapeStatutModifier, + devises, + deviseModifier, + unites, + uniteModifier, + administrationsTypes, + administrationTypeModifier, + permissions, + permissionModifier, + documentsTypes, + documentTypeModifier, + referencesTypes, + referenceTypeModifier, + geoSystemes, + geoSystemeModifier, + titresTypes, + titreTypeModifier, + titreTypeCreer, + titreTypeSupprimer, + titresTypesTitresStatuts, + titreTypeTitreStatutCreer, + titreTypeTitreStatutSupprimer, + titreTypeTitreStatutModifier, + titresTypesDemarchesTypes, + titreTypeDemarcheTypeModifier, + titreTypeDemarcheTypeCreer, + titreTypeDemarcheTypeSupprimer, + titresTypesDemarchesTypesEtapesTypes, + titreTypeDemarcheTypeEtapeTypeModifier, + titreTypeDemarcheTypeEtapeTypeCreer, + titreTypeDemarcheTypeEtapeTypeSupprimer, + etapesTypesEtapesStatuts, + etapeTypeEtapeStatutModifier, + etapeTypeEtapeStatutCreer, + etapeTypeEtapeStatutSupprimer, + etapesTypesDocumentsTypes, + etapeTypeDocumentTypeModifier, + etapeTypeDocumentTypeCreer, + etapeTypeDocumentTypeSupprimer, + etapesTypesJustificatifsTypes, + etapeTypeJustificatifTypeModifier, + etapeTypeJustificatifTypeCreer, + etapeTypeJustificatifTypeSupprimer, + pays, + titresTypesDemarchesTypesEtapesTypesDocumentsTypes, + titreTypeDemarcheTypeEtapeTypeDocumentTypeCreer, + titreTypeDemarcheTypeEtapeTypeDocumentTypeModifier, + titreTypeDemarcheTypeEtapeTypeDocumentTypeSupprimer, + titresTypesDemarchesTypesEtapesTypesJustificatifsTypes, + titreTypeDemarcheTypeEtapeTypeJustificatifTypeCreer, + titreTypeDemarcheTypeEtapeTypeJustificatifTypeModifier, + titreTypeDemarcheTypeEtapeTypeJustificatifTypeSupprimer, + documentTypeCreer +} from '../api/metas' + +import { + activitesTypes, + activiteTypeModifier, + activitesStatuts, + activiteStatutModifier, + activitesTypesTitresTypes, + activiteTypeTitreTypeModifier, + activiteTypeTitreTypeCreer, + activiteTypeTitreTypeSupprimer, + activitesTypesDocumentsTypes, + activiteTypeDocumentTypeModifier, + activiteTypeDocumentTypeCreer, + activiteTypeDocumentTypeSupprimer, + activitesTypesPays, + activiteTypePaysModifier, + activiteTypePaysCreer, + activiteTypePaysSupprimer +} from '../api/metas-activites' + +const labelGet = entity => (entity ? `${entity.id} - ${entity.nom}` : '') + +const metasIndex = { + definitions: { + get: definitions, + update: definitionModifier, + nom: 'Définitions', + colonnes: [ + { id: 'id', nom: 'Id' }, + { id: 'nom', nom: 'nom', type: String }, + { id: 'slug', nom: 'slug', type: String }, + { id: 'description', nom: 'Description', type: String, optional: true }, + { id: 'ordre', nom: 'Ordre', type: Number } + ] + }, + domaines: { + get: domaines, + update: domaineModifier, + labelGet, + nom: 'Domaines', + colonnes: [ + { id: 'id', nom: 'Id' }, + { id: 'nom', nom: 'Nom', type: String }, + { id: 'description', nom: 'Description', type: String }, + { id: 'ordre', nom: 'Ordre', type: Number } + ] + }, + 'titres-types-types': { + get: titresTypesTypes, + update: titreTypeTypeModifier, + labelGet, + nom: 'Types des titres', + colonnes: [ + { id: 'id', nom: 'Id' }, + { id: 'nom', nom: 'Nom', type: String }, + { id: 'description', nom: 'Description', type: String, optional: true }, + { id: 'ordre', nom: 'Ordre', type: Number } + ] + }, + 'titres-types': { + get: titresTypes, + update: titreTypeModifier, + create: titreTypeCreer, + delete: titreTypeSupprimer, + labelGet: titreType => + `${titreType.id} - ${titreType.type.nom}- ${titreType.domaine.nom} `, + nom: 'Domaines | Types des titres', + colonnes: [ + { id: 'id', nom: 'Id' }, + { + id: 'domaineId', + nom: 'Domaine', + type: 'entities', + entities: 'domaines' + }, + { + id: 'typeId', + nom: 'Type', + type: 'entities', + entities: 'titres-types-types' + }, + { + id: 'contenuIds', + nom: "Type d'étape des propriétés", + type: 'json', + optional: true + } + ] + }, + 'titres-statuts': { + get: titresStatuts, + update: titreStatutModifier, + labelGet, + nom: 'Statuts des titres', + colonnes: [ + { id: 'id', nom: 'Id' }, + { id: 'nom', nom: 'Nom', type: String }, + { id: 'description', nom: 'Description', type: String, optional: true }, + { + id: 'couleur', + nom: 'Couleur', + type: Array, + elements: ['warning', 'neutral', 'success'] + }, + { id: 'ordre', nom: 'Ordre', type: Number } + ] + }, + 'titre-types--titres-statuts': { + get: titresTypesTitresStatuts, + update: titreTypeTitreStatutModifier, + create: titreTypeTitreStatutCreer, + delete: titreTypeTitreStatutSupprimer, + nom: 'Types des titres | Statuts des titres', + colonnes: [ + { + id: 'titreTypeId', + nom: 'Type de titre', + type: 'entities', + entities: 'titres-types' + }, + { + id: 'titreStatutId', + nom: 'Statut de titre', + type: 'entities', + entities: 'titres-statuts' + }, + { id: 'publicLecture', nom: 'Public', type: Boolean, optional: true } + ], + ids: ['titreTypeId', 'titreStatutId'] + }, + 'demarches-types': { + get: demarchesTypes, + update: demarcheTypeModifier, + labelGet, + nom: 'Types des démarches', + colonnes: [ + { id: 'id', nom: 'Id' }, + { id: 'nom', nom: 'Nom', type: String }, + { id: 'ordre', nom: 'Ordre', type: Number }, + { id: 'description', nom: 'Description', type: String, optional: true }, + { id: 'duree', nom: 'Durée', type: Boolean, optional: true }, + { id: 'points', nom: 'Points', type: Boolean, optional: true }, + { id: 'substances', nom: 'Substances', type: Boolean, optional: true }, + { id: 'titulaires', nom: 'Titulaires', type: Boolean, optional: true }, + { id: 'exception', nom: 'Exception', type: Boolean, optional: true }, + { + id: 'renouvelable', + nom: 'Renouvelable', + type: Boolean, + optional: true + }, + { id: 'travaux', nom: 'Travaux', type: Boolean, optional: true } + ] + }, + 'titres-types--demarches-types': { + get: titresTypesDemarchesTypes, + update: titreTypeDemarcheTypeModifier, + create: titreTypeDemarcheTypeCreer, + delete: titreTypeDemarcheTypeSupprimer, + nom: 'Types des titres | Types des démarches', + colonnes: [ + { + id: 'titreTypeId', + nom: 'Type de titre', + type: 'entities', + entities: 'titres-types' + }, + { + id: 'demarcheTypeId', + nom: 'Type de démarche', + type: 'entities', + entities: 'demarches-types' + }, + { id: 'dureeMax', nom: 'Durée maximale', type: Number, optional: true }, + { + id: 'delaiImplicite', + nom: 'Délai implicite', + type: Number, + optional: true + }, + { + id: 'delaiRecours', + nom: 'Délai de recours', + type: Number, + optional: true + }, + { id: 'legalRef', nom: 'Référence légale', type: String, optional: true }, + { + id: 'legalLien', + nom: 'Lien de la référence légale', + type: String, + optional: true + }, + { id: 'dateDebut', nom: 'Date de début', type: String, optional: true }, + { id: 'dateFin', nom: 'Date de fin', type: String, optional: true } + ], + ids: ['titreTypeId', 'demarcheTypeId'] + }, + 'demarches-statuts': { + get: demarchesStatuts, + update: demarcheStatutModifier, + nom: 'Statuts des démarches', + colonnes: [ + { id: 'id', nom: 'Id' }, + { id: 'nom', nom: 'Nom', type: String }, + { id: 'description', nom: 'Description', type: String, optional: true }, + { + id: 'couleur', + nom: 'Couleur', + type: Array, + elements: ['warning', 'neutral', 'success', 'error'] + }, + { id: 'ordre', nom: 'Ordre', type: Number } + ] + }, + 'phases-statuts': { + get: phasesStatuts, + update: phaseStatutModifier, + nom: 'Statuts des phases', + colonnes: [ + { id: 'id', nom: 'Id' }, + { id: 'nom', nom: 'Nom', type: String }, + { + id: 'couleur', + nom: 'Couleur', + type: Array, + elements: ['warning', 'neutral', 'success', 'error'] + } + ] + }, + 'etapes-types': { + get: etapesTypes, + update: etapeTypeModifier, + labelGet, + nom: 'Types des étapes', + colonnes: [ + { id: 'id', nom: 'Id' }, + { + id: 'parentId', + nom: 'Id du type de l’étape parent', + type: String, + optional: true + }, + { id: 'nom', nom: 'Nom', type: String }, + { id: 'description', nom: 'Description', type: String, optional: true }, + { id: 'ordre', nom: 'Ordre', type: Number }, + { id: 'sections', nom: 'Sections', type: 'json', optional: true }, + { id: 'legalLien', nom: 'Lien légal', type: String, optional: true }, + { + id: 'dateDebut', + nom: 'Date de début', + type: Date, + class: ['min-width-12'], + optional: true + }, + { + id: 'dateFin', + nom: 'Date de fin', + type: Date, + class: ['min-width-12'], + optional: true + }, + { + id: 'fondamentale', + nom: 'Fondamentale', + type: Boolean, + optional: true + }, + { id: 'unique', nom: 'Unique', type: Boolean, optional: true }, + { + id: 'acceptationAuto', + nom: 'Acceptation auto', + type: Boolean, + optional: true + }, + { + id: 'publicLecture', + nom: 'Lecture public', + type: Boolean, + optional: true + }, + { + id: 'entrepriseLecture', + nom: 'Lecture entreprises', + type: Boolean, + optional: true + } + ] + }, + 'titres-types--demarches-types--etapes-types': { + get: titresTypesDemarchesTypesEtapesTypes, + update: titreTypeDemarcheTypeEtapeTypeModifier, + create: titreTypeDemarcheTypeEtapeTypeCreer, + delete: titreTypeDemarcheTypeEtapeTypeSupprimer, + nom: 'Types des titres | Types des démarches | types des étapes', + colonnes: [ + { + id: 'titreTypeId', + nom: 'Type de titre', + type: 'entities', + entities: 'titres-types' + }, + { + id: 'demarcheTypeId', + nom: 'Type de démarche', + type: 'entities', + entities: 'demarches-types' + }, + { + id: 'etapeTypeId', + nom: "Type d'étape", + type: 'entities', + entities: 'etapes-types' + }, + { id: 'sections', nom: 'Sections', type: 'json', optional: true }, + { id: 'ordre', nom: 'Ordre', type: Number } + ], + ids: ['titreTypeId', 'demarcheTypeId', 'etapeTypeId'] + }, + 'titres-types--demarches-types--etapes-types--documents-types': { + get: titresTypesDemarchesTypesEtapesTypesDocumentsTypes, + create: titreTypeDemarcheTypeEtapeTypeDocumentTypeCreer, + update: titreTypeDemarcheTypeEtapeTypeDocumentTypeModifier, + delete: titreTypeDemarcheTypeEtapeTypeDocumentTypeSupprimer, + nom: 'Types des titres | Types des démarches | Types des étapes | Types des documents', + colonnes: [ + { + id: 'titreTypeId', + nom: 'Type de titre', + type: 'entities', + entities: 'titres-types' + }, + { + id: 'demarcheTypeId', + nom: 'Type de démarche', + type: 'entities', + entities: 'demarches-types' + }, + { + id: 'etapeTypeId', + nom: "Type d'étape", + type: 'entities', + entities: 'etapes-types' + }, + { + id: 'documentTypeId', + nom: 'Type de document', + type: 'entities', + entities: 'documents-types' + }, + { id: 'optionnel', nom: 'Optionnel', type: Boolean, optional: true }, + { id: 'description', nom: 'Description', type: String, optional: true } + ], + ids: ['titreTypeId', 'demarcheTypeId', 'etapeTypeId', 'documentTypeId'] + }, + 'titres-types--demarches-types--etapes-types--justificatifs-types': { + get: titresTypesDemarchesTypesEtapesTypesJustificatifsTypes, + create: titreTypeDemarcheTypeEtapeTypeJustificatifTypeCreer, + update: titreTypeDemarcheTypeEtapeTypeJustificatifTypeModifier, + delete: titreTypeDemarcheTypeEtapeTypeJustificatifTypeSupprimer, + nom: 'Types des titres | Types des démarches | Types des étapes | Types des justificatifs', + colonnes: [ + { + id: 'titreTypeId', + nom: 'Type de titre', + type: 'entities', + entities: 'titres-types' + }, + { + id: 'demarcheTypeId', + nom: 'Type de démarche', + type: 'entities', + entities: 'demarches-types' + }, + { + id: 'etapeTypeId', + nom: "Type d'étape", + type: 'entities', + entities: 'etapes-types' + }, + { + id: 'documentTypeId', + nom: 'Type de justificatif', + type: 'entities', + entities: 'documents-types' + }, + { id: 'optionnel', nom: 'Optionnel', type: Boolean, optional: true }, + { id: 'description', nom: 'Description', type: String, optional: true } + ], + ids: ['titreTypeId', 'demarcheTypeId', 'etapeTypeId', 'documentTypeId'] + }, + 'etapes-statuts': { + get: etapesStatuts, + update: etapeStatutModifier, + labelGet, + nom: 'Statuts des étapes', + colonnes: [ + { id: 'id', nom: 'Id' }, + { id: 'nom', nom: 'Nom', type: String }, + { id: 'description', nom: 'Description', type: String, optional: true }, + { + id: 'couleur', + nom: 'Couleur', + type: Array, + elements: ['warning', 'neutral', 'success', 'error'] + } + ] + }, + 'etapes-types--etapes-statuts': { + get: etapesTypesEtapesStatuts, + update: etapeTypeEtapeStatutModifier, + create: etapeTypeEtapeStatutCreer, + delete: etapeTypeEtapeStatutSupprimer, + nom: 'Types des étapes | Statuts des étapes', + colonnes: [ + { + id: 'etapeTypeId', + nom: "Type d'étape", + type: 'entities', + entities: 'etapes-types' + }, + { + id: 'etapeStatutId', + nom: "Statut d'étape", + type: 'entities', + entities: 'etapes-statuts' + }, + { id: 'ordre', nom: 'Ordre', type: Number } + ], + ids: ['etapeTypeId', 'etapeStatutId'] + }, + 'etapes-types--documents-types': { + get: etapesTypesDocumentsTypes, + update: etapeTypeDocumentTypeModifier, + create: etapeTypeDocumentTypeCreer, + delete: etapeTypeDocumentTypeSupprimer, + nom: 'Types des étapes | Types des documents', + colonnes: [ + { + id: 'etapeTypeId', + nom: "Type d'étape", + type: 'entities', + entities: 'etapes-types' + }, + { + id: 'documentTypeId', + nom: 'Type de documents', + type: 'entities', + entities: 'documents-types' + }, + { id: 'optionnel', nom: 'Optionnel', type: Boolean, optional: true }, + { id: 'description', nom: 'Description', type: String, optional: true } + ], + ids: ['etapeTypeId', 'documentTypeId'] + }, + 'etapes-types--justificatifs-types': { + get: etapesTypesJustificatifsTypes, + update: etapeTypeJustificatifTypeModifier, + create: etapeTypeJustificatifTypeCreer, + delete: etapeTypeJustificatifTypeSupprimer, + nom: 'Types des étapes | Types des justificatifs', + colonnes: [ + { + id: 'etapeTypeId', + nom: "Type d'étape", + type: 'entities', + entities: 'etapes-types' + }, + { + id: 'documentTypeId', + nom: 'Type de justificatifs', + type: 'entities', + entities: 'documents-types' + }, + { id: 'optionnel', nom: 'Optionnel', type: Boolean, optional: true }, + { id: 'description', nom: 'Description', type: String, optional: true } + ], + ids: ['etapeTypeId', 'documentTypeId'] + }, + devises: { + get: devises, + update: deviseModifier, + nom: 'Devises', + colonnes: [ + { id: 'id', nom: 'Id' }, + { id: 'nom', nom: 'Nom', type: String } + ] + }, + unites: { + get: unites, + update: uniteModifier, + nom: 'Unités', + colonnes: [ + { id: 'id', nom: 'Id' }, + { id: 'symbole', nom: 'Symbole', type: String }, + { id: 'nom', nom: 'Nom', type: String }, + { + id: 'referenceUniteId', + nom: "Id de l'unité de référence", + type: String + }, + { + id: 'referenceUniteRatio', + nom: "Ratio de l'unité de référence", + type: Number + } + ] + }, + 'administrations-types': { + get: administrationsTypes, + update: administrationTypeModifier, + nom: 'Types des administrations', + colonnes: [ + { id: 'id', nom: 'Id' }, + { id: 'nom', nom: 'Nom', type: String }, + { id: 'ordre', nom: 'Ordre', type: Number } + ] + }, + permissions: { + get: permissions, + update: permissionModifier, + nom: 'Permissions', + colonnes: [ + { id: 'id', nom: 'Id' }, + { id: 'nom', nom: 'Nom', type: String }, + { id: 'ordre', nom: 'Ordre', type: Number } + ] + }, + 'documents-types': { + get: documentsTypes, + create: documentTypeCreer, + update: documentTypeModifier, + labelGet, + nom: 'Types des documents', + colonnes: [ + { id: 'id', nom: 'Id' }, + { id: 'nom', nom: 'Nom', type: String }, + { id: 'description', nom: 'Description', type: String, optional: true } + ] + }, + 'references-types': { + get: referencesTypes, + update: referenceTypeModifier, + nom: 'Types des références', + colonnes: [ + { id: 'id', nom: 'Id' }, + { id: 'nom', nom: 'Nom', type: String } + ] + }, + 'geo-systemes': { + get: geoSystemes, + update: geoSystemeModifier, + nom: 'Systèmes géographiques', + colonnes: [ + { id: 'id', nom: 'Id' }, + { id: 'nom', nom: 'Nom', type: String }, + { id: 'ordre', nom: 'Ordre', type: Number }, + { + id: 'uniteId', + nom: "Id de l'unité", + type: Array, + elements: ['met', 'deg', 'gon'] + }, + { id: 'definitionProj4', nom: 'Définition proj 4', type: String } + ] + }, + pays: { + get: pays, + nom: 'Pays', + labelGet, + colonnes: [ + { id: 'id', nom: 'Id' }, + { id: 'nom', nom: 'Nom', type: String } + ] + }, + 'activites-types': { + get: activitesTypes, + update: activiteTypeModifier, + labelGet, + nom: 'Types des activités', + colonnes: [ + { id: 'id', nom: 'Id' }, + { id: 'nom', nom: 'Nom', type: String }, + { + id: 'frequenceId', + nom: 'Id la fréquence', + type: Array, + elements: ['tri', 'ann', 'men'] + }, + { id: 'ordre', nom: 'Ordre', type: Number }, + { + id: 'description', + nom: 'Description', + type: String, + optional: true, + class: ['min-width-12'] + }, + { id: 'sections', nom: 'Sections', type: 'json', optional: true }, + { + id: 'dateDebut', + nom: 'Date de début', + type: Date, + class: ['min-width-12'] + }, + { id: 'delaiMois', nom: 'Délai', type: Number }, + { + id: 'satisfactionUrl', + nom: 'Url voxusagers', + type: String, + optional: true + } + ] + }, + 'activites-statuts': { + get: activitesStatuts, + update: activiteStatutModifier, + nom: 'Statuts des activités', + colonnes: [ + { id: 'id', nom: 'Id' }, + { id: 'nom', nom: 'Nom', type: String }, + { + id: 'couleur', + nom: 'Couleur', + type: Array, + elements: ['warning', 'neutral', 'success', 'error'] + } + ] + }, + + 'activites-types--titres-types': { + get: activitesTypesTitresTypes, + update: activiteTypeTitreTypeModifier, + create: activiteTypeTitreTypeCreer, + delete: activiteTypeTitreTypeSupprimer, + nom: 'Types des activités | Types des titres', + colonnes: [ + { + id: 'activiteTypeId', + nom: "Type d'activité", + type: 'entities', + entities: 'activites-types' + }, + { + id: 'titreTypeId', + nom: 'Type de titre', + type: 'entities', + entities: 'titres-types' + } + ], + ids: ['activiteTypeId', 'titreTypeId'] + }, + + 'activites-types--documents-types': { + get: activitesTypesDocumentsTypes, + update: activiteTypeDocumentTypeModifier, + create: activiteTypeDocumentTypeCreer, + delete: activiteTypeDocumentTypeSupprimer, + nom: 'Types des activités | Types des documents', + colonnes: [ + { + id: 'activiteTypeId', + nom: "Type d'activité", + type: 'entities', + entities: 'activites-types' + }, + { + id: 'documentTypeId', + nom: 'Type de document', + type: 'entities', + entities: 'documents-types' + }, + { id: 'optionnel', nom: 'Optionnel', type: Boolean, optional: true } + ], + ids: ['activiteTypeId', 'documentTypeId'] + }, + + 'activites-types--pays': { + get: activitesTypesPays, + update: activiteTypePaysModifier, + create: activiteTypePaysCreer, + delete: activiteTypePaysSupprimer, + nom: 'Types des activités | Pays', + colonnes: [ + { + id: 'activiteTypeId', + nom: "Type d'activité", + type: 'entities', + entities: 'activites-types' + }, + { + id: 'paysId', + nom: 'Pays', + type: 'entities', + entities: 'pays' + } + ], + ids: ['activiteTypeId', 'paysId'] + }, + + titre: { + nom: 'Titre', + linkName: 'meta-titre' + }, + + demarche: { + nom: 'Démarche', + linkName: 'meta-demarche' + }, + + etape: { + nom: 'Étape', + linkName: 'meta-etape' + }, + + activite: { + nom: 'Activité', + linkName: 'meta-activite' + } +} + +export default metasIndex diff --git a/packages/ui/src/store/metas.js b/packages/ui/src/store/metas.js new file mode 100644 index 0000000000000000000000000000000000000000..bb379130c3e15b99e449d0b00b5ff41c037a2370 --- /dev/null +++ b/packages/ui/src/store/metas.js @@ -0,0 +1,56 @@ +import metasIndex from './metas-definitions' + +const state = { + total: 0, + definitions: [ + { id: 'colonne', type: 'string', elements: ['id', 'nom'] }, + { id: 'ordre', type: 'string', elements: ['asc', 'desc'] } + ], + params: { + table: { ordre: 'asc', colonne: null } + } +} + +const actions = { + async paramsSet({ commit }, { section, params }) { + commit('paramsSet', { section, params }) + } +} + +const getters = { + elements(state) { + const elements = Object.keys(metasIndex).map(id => ({ + id, + nom: metasIndex[id].nom, + linkName: metasIndex[id].linkName + })) + + return state.params.table.ordre === 'desc' ? elements.reverse() : elements + } +} + +const mutations = { + reset(state) { + state.elements = [] + state.total = 0 + }, + + set(state, data) { + state.elements = data.elements + state.total = data.total + }, + + paramsSet(state, { section, params }) { + Object.keys(params).forEach(id => { + state.params[section][id] = params[id] + }) + } +} + +export default { + namespaced: true, + state, + getters, + actions, + mutations +} diff --git a/packages/ui/src/store/statistiques.js b/packages/ui/src/store/statistiques.js new file mode 100644 index 0000000000000000000000000000000000000000..3e5fd27cd2ae0521213a04bacce88441debe38d8 --- /dev/null +++ b/packages/ui/src/store/statistiques.js @@ -0,0 +1,42 @@ +import { + statistiquesGlobales, + statistiquesGuyane, + statistiquesGranulatsMarins +} from '../api/statistiques' + +const state = { + globales: {}, + guyane: {}, + granulatsMarins: {} +} + +const actions = { + async get({ commit, dispatch }, section) { + try { + commit('loadingAdd', 'statistiquesGet', { root: true }) + + let data + if (section === 'globales') { + data = await statistiquesGlobales() + } else if (section === 'guyane') { + data = await statistiquesGuyane() + } else if (section === 'granulatsMarins') { + data = await statistiquesGranulatsMarins() + } + + commit('set', { section: section, data }) + } catch (e) { + dispatch('apiError', e, { root: true }) + } finally { + commit('loadingRemove', 'statistiquesGet', { root: true }) + } + } +} + +const mutations = { + set(state, { section, data }) { + state[section] = data + } +} + +export default { namespaced: true, state, actions, mutations } diff --git a/packages/ui/src/store/statistiques.test.js b/packages/ui/src/store/statistiques.test.js new file mode 100644 index 0000000000000000000000000000000000000000..638cea6f38fb9ca25b48f13a6bbc5a3e0d8d0aee --- /dev/null +++ b/packages/ui/src/store/statistiques.test.js @@ -0,0 +1,127 @@ +import statistiques from './statistiques' +import * as api from '../api/statistiques' +import { createApp } from 'vue' +import { createStore } from 'vuex' + +jest.mock('../api/statistiques', () => ({ + statistiquesGlobales: jest.fn(), + statistiquesGuyane: jest.fn(), + statistiquesGranulatsMarins: jest.fn() +})) + +console.info = jest.fn() + +describe('page de statistiques', () => { + let actions + let mutations + let store + let statistiquesGlobales + let statistiquesGuyane + let statistiquesGranulatsMarins + + beforeEach(() => { + statistiquesGlobales = { + titresActivitesBeneficesEntreprise: 4800, + titresActivitesBeneficesAdministration: 2400, + nbSearchArray: [], + nbMajTitresArray: [], + nbAction: 60, + timeSession: '14min', + nbDonwload: 110, + nbDemarche: 400, + nbErreur: 210, + loaded: true + } + + statistiquesGuyane = { + exemple: 'truc' + } + + statistiquesGranulatsMarins = { + annees: [ + { + StatistiquesGranulatsMarinsAnnee: + 'StatistiquesGranulatsMarinsAnnee2006' + } + ], + surfaceExploration: 86383, + surfaceExploitation: 20454, + titresInstructionExploration: 0, + titresValPrw: 2, + titresInstructionExploitation: 2, + titresValCxw: 21 + } + + statistiques.state = { + globales: {}, + guyane: {}, + granulatsMarins: {} + } + + mutations = { + loadingAdd: jest.fn(), + loadingRemove: jest.fn() + } + actions = { + apiError: jest.fn() + } + store = createStore({ + modules: { statistiques }, + mutations, + actions + }) + + const app = createApp({}) + app.use(store) + }) + + test('récupère les statistiques globales', async () => { + const apiMock = + api.statistiquesGlobales.mockResolvedValue(statistiquesGlobales) + await store.dispatch('statistiques/get', 'globales') + + expect(mutations.loadingAdd).toHaveBeenCalled() + expect(apiMock).toHaveBeenCalled() + expect(mutations.loadingRemove).toHaveBeenCalled() + expect(store.state.statistiques.globales).toEqual(statistiquesGlobales) + }) + + test('récupère les statistiques de guyane', async () => { + const apiMock = api.statistiquesGuyane.mockResolvedValue(statistiquesGuyane) + await store.dispatch('statistiques/get', 'guyane') + + expect(mutations.loadingAdd).toHaveBeenCalled() + expect(apiMock).toHaveBeenCalled() + expect(mutations.loadingRemove).toHaveBeenCalled() + expect(store.state.statistiques.guyane).toEqual(statistiquesGuyane) + + await store.dispatch('statistiques/get', 'pour avoir 100% de coverage') + }) + + test('récupère les statistiques sur les granulats marins', async () => { + const apiMock = api.statistiquesGranulatsMarins.mockResolvedValue( + statistiquesGranulatsMarins + ) + await store.dispatch('statistiques/get', 'granulatsMarins') + + expect(mutations.loadingAdd).toHaveBeenCalled() + expect(apiMock).toHaveBeenCalled() + expect(mutations.loadingRemove).toHaveBeenCalled() + expect(store.state.statistiques.granulatsMarins).toEqual( + statistiquesGranulatsMarins + ) + + await store.dispatch('statistiques/get', 'pour avoir 100% de coverage') + }) + + test("retourne une erreur si l'api ne répond pas", async () => { + const apiMock = api.statistiquesGlobales.mockRejectedValue( + new Error('erreur api') + ) + await store.dispatch('statistiques/get', 'globales') + + expect(apiMock).toHaveBeenCalled() + expect(actions.apiError).toHaveBeenCalled() + expect(store.state.statistiques.loaded).toBeFalsy() + }) +}) diff --git a/packages/ui/src/store/titre-activite-edition.js b/packages/ui/src/store/titre-activite-edition.js new file mode 100644 index 0000000000000000000000000000000000000000..388c41cbd7ccccadea921ec014d7553c74805aa7 --- /dev/null +++ b/packages/ui/src/store/titre-activite-edition.js @@ -0,0 +1,125 @@ +import { activite, activiteModifier } from '../api/titres-activites' +import { documentsRequiredAdd } from '../utils/documents' +import router from '../router' + +const state = { + element: null +} + +const actions = { + async init({ commit, dispatch }, id) { + commit('loadingAdd', 'activiteEditionInit', { root: true }) + + try { + const data = await activite({ id }) + + if (data) { + commit('set', data) + await dispatch('documentInit', state.element.documents) + } else { + dispatch('pageError', null, { root: true }) + } + } catch (e) { + dispatch('apiError', e, { root: true }) + } finally { + commit('loadingRemove', 'activiteEditionInit', { root: true }) + } + }, + + async update({ commit, dispatch, rootState }, activite) { + try { + commit('loadingAdd', 'activiteUpdate', { root: true }) + await activiteModifier({ + activite: { + id: activite.id, + contenu: activite.contenu, + documentIds: activite.documents + ?.filter(d => d.id !== d.type.id) + .map(({ id }) => id) + } + }) + + await router.back() + + await dispatch( + 'messageAdd', + { + value: `l'activité a été enregistrée`, + type: 'success' + }, + { root: true } + ) + } catch (e) { + dispatch('apiError', e, { root: true }) + } finally { + commit('loadingRemove', 'activiteUpdate', { root: true }) + } + }, + + async documentInit({ state, commit, rootGetters }, documents) { + const documentsTypes = state.element.type.documentsTypes + + const newDocuments = documentsRequiredAdd( + documents, + documentsTypes, + rootGetters['user/userIsAdmin'] + ) + + commit('documentsSet', newDocuments) + }, + + async documentAdd({ state, dispatch }, { document, idOld }) { + const documents = state.element.documents || [] + if (idOld) { + const index = documents.findIndex(({ id }) => id === idOld) + documents[index] = document + } else { + documents.push(document) + } + + await dispatch('documentInit', documents) + }, + + async documentRemove({ state, dispatch }, { id }) { + await dispatch( + 'documentInit', + state.element.documents.filter(d => d.id !== id) + ) + } +} + +const mutations = { + set(state, activite) { + activite.contenu = activite.sections?.reduce((sections, s) => { + sections[s.id] = s.elements.reduce((elements, e) => { + const value = + activite.contenu && + activite.contenu[s.id] && + activite.contenu[s.id][e.id] + + elements[e.id] = value || e.type !== 'checkboxes' ? value : [] + + return elements + }, {}) + + return sections + }, {}) + + state.element = activite + }, + + documentsSet(state, documents) { + state.element.documents = documents + }, + + reset(state) { + state.element = null + } +} + +export default { + namespaced: true, + actions, + mutations, + state +} diff --git a/packages/ui/src/store/titre-activite-edition.test.js b/packages/ui/src/store/titre-activite-edition.test.js new file mode 100644 index 0000000000000000000000000000000000000000..9c9ce842459a08307e19043f1d33e57e146ff90c --- /dev/null +++ b/packages/ui/src/store/titre-activite-edition.test.js @@ -0,0 +1,193 @@ +import titreActiviteEdition from './titre-activite-edition' +import * as api from '../api/titres-activites' +import { createApp } from 'vue' +import { createStore } from 'vuex' + +import router from '../router' + +jest.mock('../router', () => ({ + back: jest.fn() +})) + +jest.mock('../api/titres-activites', () => ({ + activiteModifier: jest.fn(), + activite: jest.fn() +})) +console.info = jest.fn() + +describe("état d'une activité", () => { + let store + let mutations + let actions + + beforeEach(() => { + titreActiviteEdition.state = { element: null } + + actions = { + reload: jest.fn(), + messageAdd: jest.fn(), + pageError: jest.fn(), + apiError: jest.fn() + } + + mutations = { + loadingAdd: jest.fn(), + loadingRemove: jest.fn() + } + + store = createStore({ + modules: { + titreActiviteEdition, + titre: { + namespaced: true, + state: { element: { id: 5 } }, + mutations: {} + } + }, + mutations, + actions + }) + + const app = createApp({}) + app.use(store) + }) + + test('enregistre une activité sur un titre', async () => { + const apiMock = api.activiteModifier.mockResolvedValue({ + statut: { id: 'enc' } + }) + + await store.dispatch('titreActiviteEdition/update', { + id: 27, + contenu: [], + statut: { id: 'enc' }, + documents: [ + { id: 'toto', desc: 'desc', type: { id: 'aaa' } }, + { id: 'titi', type: { id: 'titi' } } + ] + }) + + expect(mutations.loadingRemove).toHaveBeenCalled() + expect(actions.messageAdd).toHaveBeenCalled() + expect(apiMock).toHaveBeenCalledWith({ + activite: { + id: 27, + contenu: [], + documentIds: ['toto'] + } + }) + + expect(router.back).toHaveBeenCalled() + }) + + test("erreur dans l'api lors de l'enregistrement d'une activité", async () => { + const apiMock = api.activiteModifier.mockRejectedValue( + new Error("l'api ne répond pas") + ) + await store.dispatch('titreActiviteEdition/update', { + id: 27, + contenu: [], + statut: { id: 'dep' } + }) + + expect(apiMock).toHaveBeenCalled() + expect(apiMock).toHaveBeenCalledWith({ + activite: { id: 27, contenu: [], documents: undefined } + }) + expect(actions.apiError).toHaveBeenCalled() + expect(actions.messageAdd).not.toHaveBeenCalled() + }) + + test('retourne une activité', async () => { + api.activite.mockResolvedValue({ + id: 27, + contenu: [], + statut: { id: 'dep' }, + sections: [] + }) + + await store.dispatch('titreActiviteEdition/init', 27) + + expect(store.state.titreActiviteEdition.element).toEqual({ + id: 27, + contenu: {}, + sections: [], + statut: { id: 'dep' } + }) + + expect(mutations.loadingRemove).toHaveBeenCalled() + }) + + test("affiche une page d'erreur si l'id de l'activité retourne null", async () => { + const apiMock = api.activite.mockResolvedValue(null) + await store.dispatch('titreActiviteEdition/init', 27) + + expect(apiMock).toHaveBeenCalledWith({ id: 27 }) + expect(actions.pageError).toHaveBeenCalled() + }) + + test("retourne une erreur de l'api dans l'obtention de l'activité", async () => { + const apiMock = api.activite.mockRejectedValue( + new Error("l'api ne répond pas") + ) + await store.dispatch('titreActiviteEdition/init', 'activite-id') + + expect(apiMock).toHaveBeenCalledWith({ id: 'activite-id' }) + expect(actions.apiError).toHaveBeenCalled() + }) + + test("supprime les données d'activité", () => { + store.commit('titreActiviteEdition/set', { id: 71, nom: 'toto' }) + store.commit('titreActiviteEdition/reset') + + expect(store.state.titreActiviteEdition.element).toBeNull() + }) + + test('ajoute un nouveau document', async () => { + const type = { id: 'type-id', optionnel: false } + store.state.titreActiviteEdition.element = { + type: { id: 'gpr', documentsTypes: [type] } + } + + await store.dispatch('titreActiviteEdition/documentAdd', { + document: { id: 'document-id', type } + }) + + expect(store.state.titreActiviteEdition.element.documents).toHaveLength(1) + expect(store.state.titreActiviteEdition.element.documents[0].id).toEqual( + 'document-id' + ) + }) + + test('remplace un document existant par un nouveau', async () => { + const type = { id: 'type-id', optionnel: false } + store.state.titreActiviteEdition.element = { + documents: [{ id: 'document-id1' }], + type: { id: 'gpr', documentsTypes: [type] } + } + + await store.dispatch('titreActiviteEdition/documentAdd', { + document: { id: 'document-id2', type }, + idOld: 'document-id1' + }) + + expect(store.state.titreActiviteEdition.element.documents).toHaveLength(1) + expect(store.state.titreActiviteEdition.element.documents[0].id).toEqual( + 'document-id2' + ) + }) + + test('supprime un document', async () => { + const type = { id: 'type-id', optionnel: true } + store.state.titreActiviteEdition.element = { + documents: [{ id: 'document-id' }], + type: { id: 'gpr', documentsTypes: [type] } + } + + await store.dispatch('titreActiviteEdition/documentRemove', { + id: 'document-id' + }) + + expect(store.state.titreActiviteEdition.element.documents).toHaveLength(0) + }) +}) diff --git a/packages/ui/src/store/titre-activite.js b/packages/ui/src/store/titre-activite.js new file mode 100644 index 0000000000000000000000000000000000000000..8749251adf89b918cc724a8ac33ab7a132ec28d0 --- /dev/null +++ b/packages/ui/src/store/titre-activite.js @@ -0,0 +1,101 @@ +import { + activite, + activiteDeposer, + activiteSupprimer +} from '../api/titres-activites' + +const state = { + element: null +} + +const actions = { + async get({ commit, dispatch }, id) { + commit('loadingAdd', 'activiteGet', { root: true }) + + try { + const data = await activite({ id }) + + if (data) { + commit('set', data) + history.replaceState({}, null, data.slug) + } else { + dispatch('pageError', null, { root: true }) + } + } catch (e) { + dispatch('apiError', e, { root: true }) + } finally { + commit('loadingRemove', 'activiteGet', { root: true }) + } + }, + + async remove({ commit, dispatch }, { id, route }) { + try { + commit('popupMessagesRemove', null, { root: true }) + commit('popupLoad', null, { root: true }) + commit('loadingAdd', 'activiteRemove', { root: true }) + await activiteSupprimer({ id }) + + commit('popupClose', null, { root: true }) + + await dispatch('reloadRoute', route) + + dispatch( + 'messageAdd', + { value: `l'activité à été supprimée`, type: 'success' }, + { root: true } + ) + } catch (e) { + commit('popupMessageAdd', { value: e, type: 'error' }, { root: true }) + } finally { + commit('loadingRemove', 'activiteRemove', { root: true }) + } + }, + + async reloadRoute({ dispatch }, route) { + if (route?.id) { + await dispatch('reload', route, { root: true }) + } else { + await dispatch('reload', { name: 'activites' }, { root: true }) + } + }, + + async depose({ commit, dispatch }, { id, route }) { + try { + commit('popupMessagesRemove', null, { root: true }) + commit('popupLoad', null, { root: true }) + commit('loadingAdd', 'titreActiviteDepose', { root: id }) + + await activiteDeposer({ id }) + + commit('popupClose', null, { root: true }) + + await dispatch('reloadRoute', route) + dispatch( + 'messageAdd', + { value: `la demande a été déposée`, type: 'success' }, + { root: true } + ) + } catch (e) { + commit('popupMessageAdd', { value: e, type: 'error' }, { root: true }) + } finally { + commit('loadingRemove', 'titreActiviteDepose', { root: true }) + } + } +} + +const mutations = { + set(state, entreprise) { + state.element = entreprise + }, + + reset(state) { + state.element = null + } +} + +export default { + namespaced: true, + actions, + mutations, + state +} diff --git a/packages/ui/src/store/titre-activite.test.js b/packages/ui/src/store/titre-activite.test.js new file mode 100644 index 0000000000000000000000000000000000000000..7d261071cf23e7e74e660824ad908ebee626e293 --- /dev/null +++ b/packages/ui/src/store/titre-activite.test.js @@ -0,0 +1,159 @@ +import titreActivite from './titre-activite' +import * as api from '../api/titres-activites' +import { createApp } from 'vue' +import { createStore } from 'vuex' + +jest.mock('../api/titres-activites', () => ({ + activiteSupprimer: jest.fn(), + activiteDeposer: jest.fn(), + activite: jest.fn() +})) +console.info = jest.fn() + +describe("état d'une activité", () => { + let store + let mutations + let actions + + beforeEach(() => { + titreActivite.state = { element: null } + + actions = { + reload: jest.fn(), + messageAdd: jest.fn(), + pageError: jest.fn(), + apiError: jest.fn() + } + + mutations = { + popupMessagesRemove: jest.fn(), + loadingAdd: jest.fn(), + loadingRemove: jest.fn(), + popupClose: jest.fn(), + popupMessageAdd: jest.fn(), + popupLoad: jest.fn() + } + + store = createStore({ + modules: { + titreActivite, + titre: { + namespaced: true, + state: { element: { id: 5 } }, + mutations: { open: jest.fn() } + } + }, + mutations, + actions + }) + + const app = createApp({}) + app.use(store) + }) + + test('retourne une activité', async () => { + api.activite.mockResolvedValue({ + id: 27, + contenu: [], + statut: { id: 'dep' } + }) + + await store.dispatch('titreActivite/get', 27) + + expect(store.state.titreActivite.element).toEqual({ + id: 27, + contenu: [], + statut: { id: 'dep' } + }) + + expect(mutations.loadingRemove).toHaveBeenCalled() + }) + + test("affiche une page d'erreur si l'id de l'activité retourne null", async () => { + const apiMock = api.activite.mockResolvedValue(null) + await store.dispatch('titreActivite/get', 27) + + expect(apiMock).toHaveBeenCalledWith({ id: 27 }) + expect(actions.pageError).toHaveBeenCalled() + }) + + test("retourne une erreur de l'api dans l'obtention de l'activité", async () => { + const apiMock = api.activite.mockRejectedValue( + new Error("l'api ne répond pas") + ) + await store.dispatch('titreActivite/get', 'activite-id') + + expect(apiMock).toHaveBeenCalledWith({ id: 'activite-id' }) + expect(actions.apiError).toHaveBeenCalled() + }) + + test("supprime les données d'activité", () => { + store.commit('titreActivite/set', { id: 71, nom: 'toto' }) + store.commit('titreActivite/reset') + + expect(store.state.titreActivite.element).toBeNull() + }) + + test('supprime une activité et redirige sur le titre', async () => { + api.activiteSupprimer.mockResolvedValue({ id: 71 }) + await store.dispatch('titreActivite/remove', { + id: 71, + route: { name: 'titre', id: 'titre-id' } + }) + + expect(actions.reload).toHaveBeenCalledWith(expect.anything(), { + name: 'titre', + id: 'titre-id' + }) + expect(api.activiteSupprimer).toHaveBeenCalled() + }) + + test('supprime une activité et redirige sur la liste des activités', async () => { + api.activiteSupprimer.mockResolvedValue({ id: 71 }) + + await store.dispatch('titreActivite/remove', { + id: 71 + }) + + expect(actions.reload).toHaveBeenCalledWith(expect.anything(), { + name: 'activites' + }) + + expect(api.activiteSupprimer).toHaveBeenCalled() + }) + + test("retourne une erreur si l'api ne répond pas lors de la suppression d'une activité", async () => { + api.activiteSupprimer.mockRejectedValue(new Error("l'api ne répond pas")) + await store.dispatch('titreActivite/remove', { + id: 71 + }) + + expect(api.activiteSupprimer).toHaveBeenCalled() + expect(mutations.popupMessageAdd).toHaveBeenCalled() + }) + + test('dépose une activité', async () => { + api.activiteDeposer.mockResolvedValue({ id: 12 }) + + await store.dispatch('titreActivite/depose', { + id: 12, + route: null + }) + + expect(mutations.loadingRemove).toHaveBeenCalled() + expect(actions.messageAdd).toHaveBeenCalled() + }) + + test('dépose une activité retourne une erreur', async () => { + api.activiteDeposer.mockRejectedValue(new Error("l'api ne répond pas")) + + await store.dispatch('titreActivite/depose', { + id: 12, + route: null + }) + + expect(mutations.loadingRemove).toHaveBeenCalled() + expect(mutations.popupMessageAdd).toHaveBeenCalled() + expect(actions.messageAdd).not.toHaveBeenCalled() + }) +}) diff --git a/packages/ui/src/store/titre-creation.js b/packages/ui/src/store/titre-creation.js new file mode 100644 index 0000000000000000000000000000000000000000..229b8f8db7e0bfcd7be268def1e998d0b665b6e8 --- /dev/null +++ b/packages/ui/src/store/titre-creation.js @@ -0,0 +1,72 @@ +import { titreDemandeCreer } from '../api/titre-demande' +import router from '../router' +import { titreCreationMetas } from '../api/titres' + +const state = { + metas: { + referencesTypes: [] + } +} + +const actions = { + async init({ commit, dispatch }) { + commit('loadingAdd', 'titreCreationInit', { root: true }) + + try { + const data = await titreCreationMetas() + + commit('metasSet', { referencesTypes: data }) + } catch (e) { + dispatch('apiError', e, { root: true }) + } finally { + commit('loadingRemove', 'titreCreationInit', { root: true }) + } + }, + + async save({ commit, dispatch }, titreDemande) { + try { + commit('loadingAdd', 'titreCreationAdd', { root: true }) + + if (titreDemande.references) { + titreDemande.references = titreDemande.references.filter( + reference => reference.nom + ) + } + + const data = await titreDemandeCreer({ titreDemande }) + + await router.push({ + name: 'etape-edition', + params: { id: data.titreEtapeId } + }) + + dispatch( + 'messageAdd', + { + value: 'la demande de titre a été créée', + type: 'success' + }, + { root: true } + ) + } catch (e) { + dispatch('apiError', e, { root: true }) + } finally { + commit('loadingRemove', 'titreCreationAdd', { root: true }) + } + } +} + +const mutations = { + metasSet(state, data) { + Object.keys(data).forEach(id => { + state.metas[id] = data[id] + }) + } +} + +export default { + namespaced: true, + state, + actions, + mutations +} diff --git a/packages/ui/src/store/titre-demarche.js b/packages/ui/src/store/titre-demarche.js new file mode 100644 index 0000000000000000000000000000000000000000..541bf089edbae80129261d2aaf3e2091960f59b2 --- /dev/null +++ b/packages/ui/src/store/titre-demarche.js @@ -0,0 +1,105 @@ +import { + demarcheMetas, + demarcheCreer, + demarcheModifier, + demarcheSupprimer +} from '../api/titres-demarches' + +const state = { + metas: { + types: [] + } +} + +const actions = { + async init({ commit }, demarche) { + try { + commit('loadingAdd', 'titreDemarcheInit', { root: true }) + const data = await demarcheMetas(demarche) + + commit('metasSet', { types: data }) + } catch (e) { + commit('popupMessageAdd', { value: e, type: 'error' }, { root: true }) + } finally { + commit('loadingRemove', 'titreDemarcheInit', { root: true }) + } + }, + + async add({ commit, dispatch }, demarche) { + try { + commit('popupMessagesRemove', null, { root: true }) + commit('popupLoad', null, { root: true }) + commit('loadingAdd', 'titreDemarcheAdd', { root: true }) + const data = await demarcheCreer({ demarche }) + + commit('popupClose', null, { root: true }) + await dispatch('reload', { name: 'titre', id: data.slug }, { root: true }) + dispatch( + 'messageAdd', + { value: `le titre a été mis à jour`, type: 'success' }, + { root: true } + ) + } catch (e) { + commit('popupMessageAdd', { value: e, type: 'error' }, { root: true }) + } finally { + commit('loadingRemove', 'titreDemarcheAdd', { root: true }) + } + }, + + async update({ commit, dispatch }, demarche) { + try { + commit('popupMessagesRemove', null, { root: true }) + commit('popupLoad', null, { root: true }) + commit('loadingAdd', 'titreDemarcheUpdate', { root: true }) + const data = await demarcheModifier({ demarche }) + + commit('popupClose', null, { root: true }) + await dispatch('reload', { name: 'titre', id: data.slug }, { root: true }) + dispatch( + 'messageAdd', + { value: `le titre a été mis à jour`, type: 'success' }, + { root: true } + ) + } catch (e) { + commit('popupMessageAdd', { value: e, type: 'error' }, { root: true }) + } finally { + commit('loadingRemove', 'titreDemarcheUpdate', { root: true }) + } + }, + + async remove({ commit, dispatch }, id) { + try { + commit('popupMessagesRemove', null, { root: true }) + commit('popupLoad', null, { root: true }) + commit('loadingAdd', 'titreDemarcheRemove', { root: true }) + const data = await demarcheSupprimer({ id }) + + commit('popupClose', null, { root: true }) + await dispatch('reload', { name: 'titre', id: data.slug }, { root: true }) + dispatch( + 'messageAdd', + { value: `le titre a été mis à jour`, type: 'success' }, + { root: true } + ) + } catch (e) { + commit('popupMessageAdd', { value: e, type: 'error' }, { root: true }) + } finally { + commit('loadingRemove', 'titreDemarcheRemove', { root: true }) + } + } +} + +const mutations = { + metasSet(state, data) { + Object.keys(data).forEach(id => { + state.metas[id] = data[id] + }) + } +} + +export default { + namespaced: true, + state, + actions, + mutations +} diff --git a/packages/ui/src/store/titre-demarche.test.js b/packages/ui/src/store/titre-demarche.test.js new file mode 100644 index 0000000000000000000000000000000000000000..71facc8863a10447ebdb55032ef65e42d9b49c08 --- /dev/null +++ b/packages/ui/src/store/titre-demarche.test.js @@ -0,0 +1,119 @@ +import titreDemarche from './titre-demarche' +import * as api from '../api/titres-demarches' +import { createApp } from 'vue' +import { createStore } from 'vuex' + +jest.mock('../api/titres-demarches', () => ({ + demarcheMetas: jest.fn(), + demarcheCreer: jest.fn(), + demarcheModifier: jest.fn(), + demarcheSupprimer: jest.fn() +})) + +console.info = jest.fn() + +describe('démarche', () => { + let store + let actions + let mutations + + beforeEach(() => { + titreDemarche.state = { + metas: { + types: [] + } + } + + actions = { + pageError: jest.fn(), + apiError: jest.fn(), + reload: jest.fn(), + messageAdd: jest.fn() + } + + mutations = { + loadingAdd: jest.fn(), + loadingRemove: jest.fn(), + apiError: jest.fn(), + popupLoad: jest.fn(), + popupMessagesRemove: jest.fn(), + popupClose: jest.fn(), + popupMessageAdd: jest.fn() + } + + store = createStore({ actions, mutations, modules: { titreDemarche } }) + + const app = createApp({}) + app.use(store) + }) + + test('récupère les métas pour éditer une démarche', async () => { + const apiMock = api.demarcheMetas.mockReturnValueOnce([ + { id: 'w', nom: 'granulats' }, + { id: 'c', nom: 'carrières' } + ]) + + await store.dispatch('titreDemarche/init', { etape: {} }) + + expect(apiMock).toHaveBeenCalled() + expect(store.state.titreDemarche.metas.types).toEqual([ + { id: 'w', nom: 'granulats' }, + { id: 'c', nom: 'carrières' } + ]) + expect(mutations.loadingRemove).toHaveBeenCalled() + }) + + test("retourne une erreur si l'api ne répond pas", async () => { + const apiMock = api.demarcheMetas.mockRejectedValue( + new Error("erreur de l'api") + ) + + await store.dispatch('titreDemarche/init', { etape: {} }) + + expect(apiMock).toHaveBeenCalled() + expect(mutations.loadingRemove).toHaveBeenCalled() + expect(mutations.popupMessageAdd).toHaveBeenCalled() + }) + + test('crée une démarche', async () => { + api.demarcheCreer.mockResolvedValue({ id: 52, nom: 'val' }) + await store.dispatch('titreDemarche/add', { id: 52, nom: 'val' }) + + expect(mutations.popupClose).toHaveBeenCalled() + }) + + test("retourne une erreur si l'API retourne une erreur lors de la création d'une démarche", async () => { + api.demarcheCreer.mockRejectedValue(new Error('erreur api')) + await store.dispatch('titreDemarche/add', { id: 52, nom: 'val' }) + + expect(mutations.popupMessageAdd).toHaveBeenCalled() + }) + + test('met à jour une démarche', async () => { + api.demarcheModifier.mockResolvedValue({ id: 52, nom: 'val' }) + await store.dispatch('titreDemarche/update', { id: 52, nom: 'val' }) + + expect(mutations.popupClose).toHaveBeenCalled() + }) + + test("retourne une erreur si l'API retourne une erreur lors de la mise à jour d'une démarche", async () => { + api.demarcheModifier.mockRejectedValue(new Error("erreur de l'api")) + await store.dispatch('titreDemarche/update', { id: 52, nom: 'val' }) + + expect(mutations.popupMessageAdd).toHaveBeenCalled() + }) + + test('supprime une démarche', async () => { + api.demarcheSupprimer.mockResolvedValue(52) + await store.dispatch('titreDemarche/remove', 52) + + expect(mutations.popupClose).toHaveBeenCalled() + }) + + test("retourne une erreur si l'API retourne une erreur lors de la suppression d'une démarche", async () => { + api.demarcheSupprimer.mockRejectedValue(new Error("erreur de l'api")) + await store.dispatch('titreDemarche/remove', 52) + + expect(mutations.popupMessageAdd).toHaveBeenCalled() + }) +}) diff --git a/packages/ui/src/store/titre-etape-edition.js b/packages/ui/src/store/titre-etape-edition.js new file mode 100644 index 0000000000000000000000000000000000000000..557c3a37d77f646c01809daba5b0dbb5f27c9694 --- /dev/null +++ b/packages/ui/src/store/titre-etape-edition.js @@ -0,0 +1,434 @@ +import { + documentEtapeFormat, + etapeEditFormat, + etapePointsFormat +} from '../utils/titre-etape-edit' +import { etapeSaveFormat, pointsBuild } from '../utils/titre-etape-save' +import { etapeHeritageBuild } from '../utils/titre-etape-heritage-build' + +import router from '../router' + +import { + etape, + etapeCreer, + etapeHeritage, + etapeModifier, + titreEtapeEtapesTypes, + titreEtapeMetas +} from '../api/titres-etapes' +import { documentsRequiredAdd } from '../utils/documents' +import { + pointsImporter, + perimetreInformations, + titreEtapePerimetreInformations +} from '../api/geojson' + +const state = { + element: null, + metas: { + demarche: null, + etapesTypes: [], + devises: [], + unites: [], + geoSystemes: [], + substances: [], + entreprises: [], + documentsTypes: [], + sdomZonesDocumentTypeIds: [], + alertes: [] + }, + heritageLoaded: false, + loaded: false +} + +const getters = { + etapeType(state) { + if (state.element?.type) { + return state.metas.etapesTypes.find(et => et.id === state.element.type.id) + } + return null + }, + + documentsTypes(state) { + if (!state.element.type || !state.element.type.documentsTypes) { + return [] + } + + const documentsTypes = JSON.parse( + JSON.stringify(state.element.type.documentsTypes) + ) + + // si la démarche est mécanisée il faut ajouter des documents obligatoires + if (state.element.contenu && state.element.contenu.arm) { + documentsTypes + .filter(dt => ['doe', 'dep'].includes(dt.id)) + .forEach(dt => (dt.optionnel = !state.element.contenu.arm.mecanise)) + } + + if (state.metas.sdomZonesDocumentTypeIds?.length) { + documentsTypes + .filter(dt => state.metas.sdomZonesDocumentTypeIds.includes(dt.id)) + .forEach(dt => (dt.optionnel = false)) + } + + return documentsTypes + } +} + +const actions = { + async init({ commit, state, dispatch }, { titreDemarcheId, id }) { + try { + commit('loadingAdd', 'titreEtapeInit', { root: true }) + + if (id) { + const newEtape = await etape({ id }) + + if (!newEtape?.modification) { + throw new Error() + } + + commit('set', etapeEditFormat(newEtape)) + + commit('heritageLoaded', true) + + titreDemarcheId = state.element.titreDemarcheId + } else { + commit('set', etapeEditFormat({})) + } + + await dispatch('metasGet', { titreDemarcheId, id }) + + if (id) { + await dispatch('dateUpdate', { date: state.element.date }) + + const { documentTypeIds, alertes } = + await titreEtapePerimetreInformations({ + titreEtapeId: id + }) + + commit('metasSet', { + sdomZonesDocumentTypeIds: documentTypeIds, + alertes + }) + + await dispatch('documentInit', state.element.documents) + } + + commit('load') + } catch (e) { + dispatch('pageError', null, { root: true }) + } finally { + commit('loadingRemove', 'titreEtapeInit', { root: true }) + } + }, + + async metasGet({ commit, dispatch }, { titreDemarcheId, id }) { + try { + commit('loadingAdd', 'titreEtapeMetasGet', { root: true }) + + const metas = await titreEtapeMetas({ + titreDemarcheId, + id + }) + + commit('metasSet', metas) + } catch (e) { + dispatch('pageError', null, { root: true }) + } finally { + commit('loadingRemove', 'titreEtapeMetasGet', { root: true }) + } + }, + + async dateUpdate({ state, commit, dispatch }, { date }) { + try { + commit('loadingAdd', 'titreEtapeEtapesTypesGet', { root: true }) + const metas = await titreEtapeEtapesTypes({ + id: state.element?.id, + date, + titreDemarcheId: state.metas.demarche.id + }) + + commit('metasSet', { etapesTypes: metas }) + commit('dateSet', date) + } catch (e) { + dispatch('pageError', null, { root: true }) + } finally { + commit('loadingRemove', 'titreEtapeEtapesTypesGet', { root: true }) + } + }, + + async heritageGet({ commit, state, dispatch }, { typeId }) { + try { + commit('loadingAdd', 'titreEtapeHeritageGet', { root: true }) + commit('heritageLoaded', false) + + const data = await etapeHeritage({ + titreDemarcheId: state.metas.demarche.id, + date: state.element.date, + typeId + }) + + const apiEtape = etapeEditFormat(data) + const newEtape = etapeHeritageBuild(state.element, apiEtape) + + commit('heritageSet', { etape: newEtape }) + await dispatch('documentInit', state.element.documents) + + const { alertes } = await perimetreInformations({ + points: [], + titreId: state.metas.demarche.titre.id, + etapeTypeId: typeId + }) + commit('metasSet', { + alertes + }) + + commit('heritageLoaded', true) + } catch (e) { + dispatch('apiError', e, { root: true }) + } finally { + commit('loadingRemove', 'titreEtapeHeritageGet', { + root: true + }) + } + }, + + async documentInit({ state, getters, commit, rootGetters }, documents) { + if (!state.element.type) { + commit('documentsSet', []) + } else { + documents = documentsRequiredAdd( + documents, + getters.documentsTypes, + rootGetters['user/userIsAdmin'] + ) + + commit('documentsSet', documents) + } + }, + + async documentAdd({ state, dispatch }, { document, idOld }) { + document = documentEtapeFormat(document) + const documents = state.element.documents || [] + if (idOld) { + const index = documents.findIndex(({ id }) => id === idOld) + documents[index] = document + } else { + documents.push(document) + } + + await dispatch('documentInit', documents) + }, + + async documentRemove({ state, dispatch }, { id }) { + await dispatch( + 'documentInit', + state.element.documents.filter(d => d.id !== id) + ) + }, + + async upsert({ state, commit, dispatch }, { etape }) { + try { + commit('loadingAdd', 'titreEtapeUpdate', { root: true }) + + const etapeEditFormatted = etapeSaveFormat(etape) + etapeEditFormatted.titreDemarcheId = state.metas.demarche.id + + let data + if (etapeEditFormatted.id) { + data = await etapeModifier({ etape: etapeEditFormatted }) + } else { + data = await etapeCreer({ etape: etapeEditFormatted }) + } + + const tabId = + state.metas.demarche?.type?.travaux === true ? 'travaux' : 'demarches' + + const routerOptions = { + name: 'titre', + params: { id: data.slug } + } + + if (etape.id) { + routerOptions.hash = `#${etape.id}` + } + + await router.push(routerOptions) + + commit('titre/open', { section: 'etapes', id: etape.id }, { root: true }) + commit('titre/openTab', tabId, { root: true }) + } catch (e) { + dispatch('apiError', e, { root: true }) + } finally { + commit('loadingRemove', 'titreEtapeUpdate', { root: true }) + } + }, + + async pointsImport({ state, commit, dispatch }, { file, geoSystemeId }) { + try { + commit('loadingAdd', 'pointsImport', { root: true }) + + const { points, surface, documentTypeIds, alertes } = + await pointsImporter({ + file, + geoSystemeId, + titreId: state.metas.demarche.titre.id, + etapeTypeId: state.element.type.id + }) + const etape = etapePointsFormat(state.element, points) + // pour modifier la surface, on doit désactiver l’héritage + etape.heritageProps.surface.actif = false + etape.surface = surface + commit('set', etape) + + commit('metasSet', { + sdomZonesDocumentTypeIds: documentTypeIds, + alertes + }) + await dispatch('documentInit', state.element.documents) + commit('popupClose', null, { root: true }) + dispatch( + 'messageAdd', + { + value: `${points.length} points ont été importés avec succès`, + type: 'success' + }, + { root: true } + ) + } catch (e) { + commit('popupMessageAdd', { value: e, type: 'error' }, { root: true }) + } finally { + commit('loadingRemove', 'pointsImport', { root: true }) + } + }, + + async surfaceRefresh({ state, commit, dispatch }, etape) { + try { + commit('loadingAdd', 'surfaceRefresh', { root: true }) + + if ( + etape.geoSystemeIds && + etape.geoSystemeIds.length && + etape.groupes.length + ) { + const points = pointsBuild( + etape.groupes, + etape.geoSystemeIds, + etape.geoSystemeOpposableId || etape.geoSystemeIds[0] + ) + const { surface, documentTypeIds, alertes } = + await perimetreInformations({ + points, + titreId: state.metas.demarche.titre.id, + etapeTypeId: etape.type.id + }) + state.element.surface = surface + commit('set', state.element) + + commit('metasSet', { + sdomZonesDocumentTypeIds: documentTypeIds, + alertes + }) + await dispatch('documentInit', state.element.documents) + + commit('popupClose', null, { root: true }) + dispatch( + 'messageAdd', + { + value: `la surface a été recalculée à partir du périmètre`, + type: 'success' + }, + { root: true } + ) + } else { + dispatch( + 'messageAdd', + { + value: `la surface ne peut-être calculée car le périmètre est invalide`, + type: 'warning' + }, + { root: true } + ) + } + } catch (e) { + commit('popupMessageAdd', { value: e, type: 'error' }, { root: true }) + } finally { + commit('loadingRemove', 'surfaceRefresh', { root: true }) + } + }, + + entrepriseDocumentAdd({ commit }, { entrepriseId, document }) { + commit('entrepriseDocumentAdd', { entrepriseId, document }) + } +} + +const mutations = { + load(state) { + state.loaded = true + }, + + set(state, etape) { + state.element = etape + }, + + dateSet(state, date) { + state.element.date = date + }, + + reset(state) { + state.element = null + state.metas = { + demarche: null, + etapesTypes: [], + devises: [], + unites: [], + geoSystemes: [], + substances: [], + entreprises: [], + documentsTypes: [], + sdomZonesDocumentTypeIds: [], + alertes: [] + } + state.heritageLoaded = false + state.loaded = false + }, + + heritageSet(state, { etape }) { + state.element = etape + }, + + heritageLoaded(state, loaded) { + state.heritageLoaded = loaded + }, + + metasSet(state, data) { + Object.keys(data).forEach(id => { + if (id === 'entreprises') { + state.metas[id] = data[id].elements + } else { + state.metas[id] = data[id] + } + }) + }, + + entrepriseDocumentAdd(state, { entrepriseId, document }) { + const entreprise = state.metas.entreprises.find( + ({ id }) => id === entrepriseId + ) + + entreprise.documents.push(document) + state.element.justificatifs.push({ id: document.id }) + }, + + documentsSet(state, documents) { + state.element.documents = documents + } +} + +export default { + namespaced: true, + state, + getters, + actions, + mutations +} diff --git a/packages/ui/src/store/titre-etape-edition.test.js b/packages/ui/src/store/titre-etape-edition.test.js new file mode 100644 index 0000000000000000000000000000000000000000..53e66bb85ad8136ef965d30acfdf1cb75d46f23e --- /dev/null +++ b/packages/ui/src/store/titre-etape-edition.test.js @@ -0,0 +1,358 @@ +import titreEtapeEdition from './titre-etape-edition' +import * as api from '../api/titres-etapes' +import { createApp } from 'vue' +import { createStore } from 'vuex' + +import { + titreEtapeMetas, + titreEtapeMetasRes, + titreEtapeMetasRes2, + titreEtapeEdited, + titreEtapeHeritage1, + titreEtapeHeritageRes1, + titreEtapeHeritageRes2, + titreEtapeHeritage2, + titreEtapeEtapesTypes +} from './__mocks__/titre-etape' +import router from '../router' + +jest.mock('../router', () => ({ + push: jest.fn() +})) + +jest.mock('../api/titres-etapes', () => ({ + etape: jest.fn(), + etapeHeritage: jest.fn(), + titreEtapeMetas: jest.fn(), + titreEtapeEtapesTypes: jest.fn(), + etapeCreer: jest.fn(), + etapeModifier: jest.fn(), + etapeSupprimer: jest.fn() +})) + +console.info = jest.fn() + +describe('étapes', () => { + let store + let actions + let mutations + + beforeEach(() => { + titreEtapeEdition.state = { + element: null, + metas: { + demarche: {}, + etapesTypes: [], + devises: [], + unites: [], + geoSystemes: [], + substances: [], + entreprises: [] + }, + heritageLoaded: false, + loaded: false + } + + actions = { + pageError: jest.fn(), + apiError: jest.fn(), + reload: jest.fn(), + messageAdd: jest.fn(), + dateUpdate: jest.fn() + } + + mutations = { + loadingAdd: jest.fn(), + loadingRemove: jest.fn(), + apiError: jest.fn(), + popupLoad: jest.fn(), + popupMessagesRemove: jest.fn(), + popupClose: jest.fn(), + popupMessageAdd: jest.fn() + } + + store = createStore({ + actions, + mutations, + modules: { + titreEtapeEdition, + titre: { namespaced: true, mutations: { open: jest.fn() } } + } + }) + + const app = createApp({}) + app.use(store) + }) + + test('récupère les métas pour éditer une étape', async () => { + const apiMockMetas = api.titreEtapeMetas.mockResolvedValue(titreEtapeMetas) + const apiMockEtapesTypes = api.titreEtapeEtapesTypes.mockResolvedValue( + titreEtapeEtapesTypes + ) + const apiMockEtape = api.etape.mockResolvedValue({ + id: 'etape-id', + titreDemarcheId: 'demarche-id', + date: '2020-01-01', + modification: true + }) + + await store.dispatch('titreEtapeEdition/init', { + id: 'etape-id', + titreDemarcheId: 'demarche-id' + }) + + expect(apiMockMetas).toHaveBeenCalled() + expect(apiMockEtape).toHaveBeenCalled() + expect(apiMockEtapesTypes).toHaveBeenCalled() + expect(store.state.titreEtapeEdition.metas).toEqual(titreEtapeMetasRes) + expect(store.state.titreEtapeEdition.element).toEqual(titreEtapeEdited) + expect(mutations.loadingRemove).toHaveBeenCalled() + }) + + test("retourne une erreur si on n'a pas les droits", async () => { + const apiMockEtape = api.etape.mockResolvedValue({ + id: 'etape-id', + titreDemarcheId: 'demarche-id', + date: '2020-01-01' + }) + + await store.dispatch('titreEtapeEdition/init', { + id: 'etape-id', + titreDemarcheId: 'demarche-id' + }) + + expect(apiMockEtape).toHaveBeenCalled() + expect(actions.pageError).toHaveBeenCalled() + }) + + test('récupère les métas pour créer une étape', async () => { + const apiMockMetas = api.titreEtapeMetas.mockResolvedValue(titreEtapeMetas) + + await store.dispatch('titreEtapeEdition/init', { + titreDemarcheId: 'demarche-id' + }) + + expect(apiMockMetas).toHaveBeenCalled() + expect(store.state.titreEtapeEdition.metas).toEqual(titreEtapeMetasRes2) + expect(mutations.loadingRemove).toHaveBeenCalled() + }) + + test("retourne une erreur si l'api ne répond pas", async () => { + const apiMock = api.titreEtapeMetas.mockRejectedValue( + new Error("erreur de l'api") + ) + + await store.dispatch('titreEtapeEdition/init', { etape: {} }) + + expect(apiMock).toHaveBeenCalled() + expect(mutations.loadingRemove).toHaveBeenCalled() + expect(actions.pageError).toHaveBeenCalled() + }) + + test("récupère l'héritage d'une étape", async () => { + store.state.titreEtapeEdition.element = { + id: 'etape-id', + typeId: 'etape-type-id', + incertitudes: {}, + date: '2020-01-02', + titreDemarcheId: 'demarche-id' + } + + store.state.titreEtapeEdition.metas.demarche = { id: 'demarche-id' } + store.state.titreEtapeEdition.metas.etapesTypes = [ + { id: 'etape-type-id', documentsTypes: [], justificatifsTypes: [] } + ] + + const apiMock1 = api.etapeHeritage.mockResolvedValue(titreEtapeHeritageRes1) + await store.dispatch('titreEtapeEdition/heritageGet', { + typeId: 'etape-type-id' + }) + + expect(apiMock1).toHaveBeenCalled() + expect(store.state.titreEtapeEdition.element).toEqual(titreEtapeHeritage1) + + const apiMock2 = api.etapeHeritage.mockResolvedValue(titreEtapeHeritageRes1) + await store.dispatch('titreEtapeEdition/heritageGet', { + typeId: 'etape-type-id' + }) + + expect(apiMock2).toHaveBeenCalled() + expect(store.state.titreEtapeEdition.element).toEqual(titreEtapeHeritage1) + + store.state.titreEtapeEdition.element = { + date: '2020-01-01', + typeId: 'etape-type-id', + incertitudes: {}, + titreDemarcheId: 'demarche-id', + heritageProps: {} + } + + const apiMock3 = api.etapeHeritage.mockResolvedValue({ + type: { id: 'new-etape-type-id' } + }) + await store.dispatch('titreEtapeEdition/heritageGet', { + typeId: 'etape-type-id', + titreDemarcheId: 'demarche-id', + date: '2020-01-02' + }) + + expect(apiMock3).toHaveBeenCalled() + expect(store.state.titreEtapeEdition.element).toEqual({ + date: '2020-01-01', + incertitudes: { date: undefined }, + statutId: '', + titreDemarcheId: 'demarche-id', + type: { + id: 'new-etape-type-id' + }, + documents: [] + }) + + const apiMock4 = api.etapeHeritage.mockResolvedValue(titreEtapeHeritageRes2) + await store.dispatch('titreEtapeEdition/heritageGet', { + typeId: 'etape-type-id', + titreDemarcheId: 'demarche-id', + date: '2020-01-02' + }) + + expect(apiMock4).toHaveBeenCalled() + expect(store.state.titreEtapeEdition.element).toEqual(titreEtapeHeritage2) + }) + + test("retourne une erreur si l'API retourne une erreur lors de la récupération de l'héritage", async () => { + api.etapeHeritage.mockRejectedValue(new Error('erreur api')) + await store.dispatch('titreEtapeEdition/heritageGet', { + typeId: 'etape-type-id', + titreDemarcheId: 'demarche-id', + date: '2020-01-02' + }) + + expect(actions.apiError).toHaveBeenCalled() + }) + + test("retourne une erreur si l'API retourne une erreur lors de la récupération des etapesTypes", async () => { + api.titreEtapeEtapesTypes.mockRejectedValue(new Error('erreur api')) + await store.dispatch('titreEtapeEdition/dateUpdate', { + date: '2020-01-02' + }) + + expect(actions.pageError).toHaveBeenCalled() + }) + + test('créé une étape', async () => { + store.state.titreEtapeEdition.metas.demarche = { id: 'demarche-id' } + api.etapeCreer.mockResolvedValue({ id: 14, nom: 'champs', type: {} }) + await store.dispatch('titreEtapeEdition/upsert', { + etape: { + nom: 'champs', + incertitudes: {}, + type: {} + } + }) + + expect(router.push).toHaveBeenCalled() + + store.commit('titreEtapeEdition/reset') + + expect(store.state.titreEtapeEdition.element).toBeNull() + }) + + test("retourne une erreur si l'API retourne une erreur lors de la création d'une étape", async () => { + api.etapeCreer.mockRejectedValue(new Error('erreur api')) + await store.dispatch('titreEtapeEdition/upsert', { + nom: 'champs', + incertitudes: {} + }) + + expect(actions.apiError).toHaveBeenCalled() + }) + + test('met à jour une étape', async () => { + store.state.titreEtapeEdition.metas.demarche = { id: 'demarche-id' } + api.etapeModifier.mockResolvedValue({ id: 14, nom: 'champs', type: {} }) + await store.dispatch('titreEtapeEdition/upsert', { + etape: { + id: 14, + nom: 'champs', + incertitudes: {}, + type: {} + } + }) + + expect(router.push).toHaveBeenCalled() + }) + + test("retourne une erreur si l'API retourne une erreur lors de la mise à jour d'une étape", async () => { + api.etapeModifier.mockRejectedValue(new Error("erreur de l'api")) + await store.dispatch('titreEtapeEdition/upsert', { + etape: { + id: 14, + nom: 'champs', + incertitudes: {} + } + }) + + expect(actions.apiError).toHaveBeenCalled() + }) + + test('ajoute un nouveau document', async () => { + const type = { id: 'type-id', optionnel: false } + store.state.titreEtapeEdition.element = { + documents: [], + type: { id: 'mfr', documentsTypes: [type] } + } + + store.state.titreEtapeEdition.metas = { + etapesTypes: [{ id: 'mfr' }] + } + await store.dispatch('titreEtapeEdition/documentAdd', { + document: { id: 'document-id', type } + }) + + expect(store.state.titreEtapeEdition.element.documents).toHaveLength(1) + }) + + test('remplace un document existant par un nouveau', async () => { + const type = { id: 'type-id', optionnel: false } + store.state.titreEtapeEdition.element = { + documents: [{ id: 'document-id1' }], + type: { id: 'mfr', documentsTypes: [type] } + } + + store.state.titreEtapeEdition.metas = { + etapesTypes: [{ id: 'mfr' }] + } + await store.dispatch('titreEtapeEdition/documentAdd', { + document: { id: 'document-id2', type }, + idOld: 'document-id1' + }) + + expect(store.state.titreEtapeEdition.element.documents).toHaveLength(1) + expect(store.state.titreEtapeEdition.element.documents[0].id).toEqual( + 'document-id2' + ) + }) + + test('supprime un document', async () => { + const type = { id: 'type-id', optionnel: false } + store.state.titreEtapeEdition.element = { + documents: [ + { id: 'document-id1', type, typeId: type.id }, + { id: 'document-id2', type, typeId: type.id } + ], + type: { id: 'mfr', documentsTypes: [type] } + } + + store.state.titreEtapeEdition.metas = { + etapesTypes: [{ id: 'mfr' }] + } + await store.dispatch('titreEtapeEdition/documentRemove', { + id: 'document-id2' + }) + + expect(store.state.titreEtapeEdition.element.documents).toHaveLength(1) + expect(store.state.titreEtapeEdition.element.documents[0].id).toEqual( + 'document-id1' + ) + }) +}) diff --git a/packages/ui/src/store/titre-etape.js b/packages/ui/src/store/titre-etape.js new file mode 100644 index 0000000000000000000000000000000000000000..2456a84fdd9af68cce86e3c72bfdf36a6dc63c38 --- /dev/null +++ b/packages/ui/src/store/titre-etape.js @@ -0,0 +1,84 @@ +import { etape, etapeDeposer, etapeSupprimer } from '../api/titres-etapes' + +const stateInitial = { + element: null +} + +const state = JSON.parse(JSON.stringify(stateInitial)) + +const actions = { + async get({ commit, dispatch }, id) { + try { + commit('loadingAdd', 'titreEtapeGet', { root: true }) + + const newEtape = await etape({ id }) + + if (!newEtape) { + dispatch('pageError', null, { root: true }) + } + + commit('set', { etape: newEtape }) + history.replaceState({}, null, newEtape.slug) + } catch (e) { + dispatch('apiError', e, { root: true }) + } finally { + commit('loadingRemove', 'titreEtapeGet', { root: true }) + } + }, + + async depose({ commit, dispatch }, etapeId) { + try { + commit('popupMessagesRemove', null, { root: true }) + commit('popupLoad', null, { root: true }) + commit('loadingAdd', 'titreEtapeDepose', { root: true }) + + const data = await etapeDeposer({ id: etapeId }) + + commit('popupClose', null, { root: true }) + await dispatch('reload', { name: 'titre', id: data.slug }, { root: true }) + dispatch( + 'messageAdd', + { value: `la demande a été déposée`, type: 'success' }, + { root: true } + ) + } catch (e) { + commit('popupMessageAdd', { value: e, type: 'error' }, { root: true }) + } finally { + commit('loadingRemove', 'titreEtapeDepose', { root: true }) + } + }, + + async remove({ commit, dispatch }, id) { + try { + commit('popupMessagesRemove', null, { root: true }) + commit('popupLoad', null, { root: true }) + commit('loadingAdd', 'titreEtapeRemove', { root: true }) + const data = await etapeSupprimer({ id }) + + commit('popupClose', null, { root: true }) + await dispatch('reload', { name: 'titre', id: data.slug }, { root: true }) + dispatch( + 'messageAdd', + { value: `le titre a été mis à jour`, type: 'success' }, + { root: true } + ) + } catch (e) { + commit('popupMessageAdd', { value: e, type: 'error' }, { root: true }) + } finally { + commit('loadingRemove', 'titreEtapeRemove', { root: true }) + } + } +} + +const mutations = { + set(state, { etape }) { + state.element = etape + } +} + +export default { + namespaced: true, + state, + actions, + mutations +} diff --git a/packages/ui/src/store/titre-etape.test.js b/packages/ui/src/store/titre-etape.test.js new file mode 100644 index 0000000000000000000000000000000000000000..529edd0722e22c8446e670b891905392c9ce0dee --- /dev/null +++ b/packages/ui/src/store/titre-etape.test.js @@ -0,0 +1,114 @@ +import titreEtape from './titre-etape' +import * as api from '../api/titres-etapes' +import { createApp } from 'vue' +import { createStore } from 'vuex' + +jest.mock('../api/titres-etapes', () => ({ + etape: jest.fn(), + etapeDeposer: jest.fn(), + etapeSupprimer: jest.fn() +})) + +console.info = jest.fn() + +describe('étapes', () => { + let store + let actions + let mutations + + beforeEach(() => { + titreEtape.state = { + element: null + } + + actions = { + pageError: jest.fn(), + apiError: jest.fn(), + reload: jest.fn(), + messageAdd: jest.fn() + } + + mutations = { + loadingAdd: jest.fn(), + loadingRemove: jest.fn(), + apiError: jest.fn(), + popupLoad: jest.fn(), + fileLoad: jest.fn(), + popupMessagesRemove: jest.fn(), + popupClose: jest.fn(), + popupMessageAdd: jest.fn() + } + + store = createStore({ + actions, + mutations, + modules: { + titreEtape, + titre: { namespaced: true, mutations: { open: jest.fn() } } + } + }) + + const app = createApp({}) + app.use(store) + }) + + test('retourne une étape', async () => { + const apiMock = api.etape.mockResolvedValue({ id: 83, nom: 'marne' }) + await store.dispatch('titreEtape/get', 83) + + expect(apiMock).toHaveBeenCalledWith({ id: 83 }) + expect(store.state.titreEtape.element).toEqual({ id: 83, nom: 'marne' }) + }) + + test("affiche une page d'erreur si l'id de l’étape retourne null", async () => { + const apiMock = api.etape.mockResolvedValue(null) + await store.dispatch('titreEtape/get', 27) + + expect(apiMock).toHaveBeenCalledWith({ id: 27 }) + expect(actions.pageError).toHaveBeenCalled() + }) + + test("retourne une erreur si de l'api ne répond pas lors d'une requête sur une étape", async () => { + api.etape.mockRejectedValue(new Error("erreur de l'api")) + await store.dispatch('titreEtape/get', 83) + + expect(store.state.titreEtape.element).toEqual(null) + expect(actions.apiError).toHaveBeenCalled() + }) + + test('dépose une étape', async () => { + const apiMock = api.etapeDeposer.mockResolvedValue(14) + await store.dispatch('titreEtape/depose', 14) + + expect(apiMock).toHaveBeenCalledWith({ id: 14 }) + expect(mutations.popupClose).toHaveBeenCalled() + }) + + test("retourne une erreur si l'API retourne une erreur lors du dépot d'une étape", async () => { + const apiMock = api.etapeDeposer.mockRejectedValue( + new Error("erreur de l'api") + ) + await store.dispatch('titreEtape/depose', 14) + + expect(apiMock).toHaveBeenCalledWith({ id: 14 }) + expect(mutations.popupMessageAdd).toHaveBeenCalled() + }) + + test('supprime une étape', async () => { + const apiMock = api.etapeSupprimer.mockResolvedValue(14) + await store.dispatch('titreEtape/remove', 14) + + expect(apiMock).toHaveBeenCalledWith({ id: 14 }) + expect(mutations.popupClose).toHaveBeenCalled() + }) + + test("retourne une erreur si l'API retourne une erreur lors de la suppression d'une étape", async () => { + const apiMock = api.etapeSupprimer.mockRejectedValue( + new Error("erreur de l'api") + ) + await store.dispatch('titreEtape/remove', 14) + + expect(apiMock).toHaveBeenCalledWith({ id: 14 }) + expect(mutations.popupMessageAdd).toHaveBeenCalled() + }) +}) diff --git a/packages/ui/src/store/titre.js b/packages/ui/src/store/titre.js new file mode 100644 index 0000000000000000000000000000000000000000..4b93c5ac18cebbcc8715418a64d2ddd7e38f3c26 --- /dev/null +++ b/packages/ui/src/store/titre.js @@ -0,0 +1,242 @@ +import { + titreMetas, + titre, + titreCreer, + titreModifier, + titreSupprimer +} from '../api/titres' + +import router from '../router' +import { utilisateurTitreAbonner } from '../api/utilisateurs-titres' + +const state = { + element: null, + metas: { + referencesTypes: [], + domaines: [], + administrations: [] + }, + opened: { + etapes: {}, + activites: {}, + travaux: {} + }, + tabId: 'demarches' +} + +const getters = { + tabId(state, getters) { + const tabIds = getters.tabs.map(({ id }) => id) + + if (!tabIds.includes(state.tabId)) { + return tabIds[0] + } + + return state.tabId + }, + + tabs(state, getters, rootState, rootGetters) { + const tabs = [{ id: 'demarches', nom: 'Droits miniers' }] + + if (state.element?.activites?.length) { + tabs.push({ id: 'activites', nom: 'Activités' }) + } + + if (getters.travaux.length || state.element?.travauxCreation) { + tabs.push({ id: 'travaux', nom: 'Travaux' }) + } + + if (rootGetters['user/userIsSuper']) { + tabs.push({ id: 'journaux', nom: 'Journaux' }) + } + + return tabs + }, + + demarches(state) { + return state.element?.demarches?.filter(d => !d.type.travaux) || [] + }, + + travaux(state) { + return state.element?.demarches?.filter(d => d.type.travaux) || [] + } +} + +const actions = { + async init({ commit }) { + try { + commit('loadingAdd', 'titreInit', { root: true }) + + const data = await titreMetas() + + commit('metasSet', { referencesTypes: data.referencesTypes }) + commit('metasSet', { administrations: data.administrations.elements }) + } catch (e) { + commit('popupMessageAdd', { value: e, type: 'error' }, { root: true }) + } finally { + commit('loadingRemove', 'titreInit', { root: true }) + } + }, + + async get({ commit, dispatch }, id) { + try { + commit('loadingAdd', 'titre', { root: true }) + + const data = await titre({ id }) + + if (data) { + commit('set', data) + // remplace l’id de l’url par le slug + history.replaceState({}, null, data.slug) + } else { + dispatch('pageError', null, { root: true }) + } + } catch (e) { + dispatch('apiError', e, { root: true }) + } finally { + commit('loadingRemove', 'titre', { root: true }) + } + }, + + async add({ commit, dispatch }, titre) { + try { + commit('popupMessagesRemove', null, { root: true }) + commit('popupLoad', null, { root: true }) + commit('loadingAdd', 'titreAdd', { root: true }) + + const data = await titreCreer({ titre }) + + commit('popupClose', null, { root: true }) + router.push({ name: 'titre', params: { id: data.slug } }) + dispatch( + 'messageAdd', + { + value: 'le titre a été créé', + type: 'success' + }, + { root: true } + ) + } catch (e) { + commit('popupMessageAdd', { value: e, type: 'error' }, { root: true }) + } finally { + commit('loadingRemove', 'titreAdd', { root: true }) + } + }, + + async update({ commit, dispatch }, titre) { + try { + commit('popupMessagesRemove', null, { root: true }) + commit('popupLoad', null, { root: true }) + commit('loadingAdd', 'totreUpdate', { root: true }) + + const data = await titreModifier({ titre }) + + commit('popupClose', null, { root: true }) + await dispatch('reload', { name: 'titre', id: data.slug }, { root: true }) + dispatch( + 'messageAdd', + { value: 'le titre a été mis à jour', type: 'success' }, + { root: true } + ) + } catch (e) { + commit('popupMessageAdd', { value: e, type: 'error' }, { root: true }) + } finally { + commit('loadingRemove', 'totreUpdate', { root: true }) + } + }, + + async remove({ commit, dispatch }, id) { + try { + commit('popupMessagesRemove', null, { root: true }) + commit('popupLoad', null, { root: true }) + commit('loadingAdd', 'titreRemove', { root: true }) + + await titreSupprimer({ id }) + + commit('popupClose', null, { root: true }) + dispatch( + 'messageAdd', + { + value: `le titre a été supprimé`, + type: 'success' + }, + { root: true } + ) + router.push({ name: 'titres' }) + } catch (e) { + commit('popupMessageAdd', { value: e, type: 'error' }, { root: true }) + } finally { + commit('loadingRemove', 'titreRemove', { root: true }) + } + }, + + async subscribe({ state, commit, dispatch }, { titreId, abonner }) { + try { + commit('loadingAdd', 'titreSubscribe', { root: true }) + + await utilisateurTitreAbonner({ titreId, abonner }) + + state.element.abonnement = abonner + commit('set', state.element) + + dispatch( + 'messageAdd', + { + value: `Vous êtes ${abonner ? 'abonné' : 'désabonné'} à ce titre`, + type: 'success' + }, + { root: true } + ) + } catch (e) { + dispatch('apiError', e, { root: true }) + } finally { + commit('loadingRemove', 'titreSubscribe', { root: true }) + } + } +} + +const mutations = { + set(state, titre) { + state.element = titre + }, + + reset(state) { + state.element = null + }, + + metasSet(state, data) { + Object.keys(data).forEach(id => { + state.metas[id] = data[id] + }) + }, + + open(state, { section, id }) { + if (!state.opened[section][id]) { + state.opened[section][id] = true + } + + state.tabId = section + }, + + close(state, { section, id }) { + if (state.opened[section][id]) { + state.opened[section][id] = false + } + }, + + toggle(state, { section, id }) { + state.opened[section][id] = !state.opened[section][id] + }, + + openTab(state, tabId) { + state.tabId = tabId + } +} + +export default { + namespaced: true, + state, + actions, + mutations, + getters +} diff --git a/packages/ui/src/store/titre.test.js b/packages/ui/src/store/titre.test.js new file mode 100644 index 0000000000000000000000000000000000000000..2f122f1dad4cb55907f170f99ab9dd404fd22314 --- /dev/null +++ b/packages/ui/src/store/titre.test.js @@ -0,0 +1,224 @@ +import titre from './titre' +import * as api from '../api/titres' +import { createApp } from 'vue' +import { createStore } from 'vuex' + +jest.mock('../router', () => ({ + push: () => {} +})) + +jest.mock('../api/titres', () => ({ + titreMetas: jest.fn(), + titre: jest.fn(), + titreCreer: jest.fn(), + titreModifier: jest.fn(), + titreSupprimer: jest.fn(), + utilisateurTitreAbonner: jest.fn() +})) + +console.info = jest.fn() + +describe('état du titre sélectionné', () => { + let store + let actions + let mutations + + beforeEach(() => { + titre.state = { + element: null, + metas: { + referencesTypes: [], + domaines: [] + }, + opened: { + etapes: {}, + activites: { 'activite-id': false }, + travaux: {} + } + } + + actions = { + pageError: jest.fn(), + apiError: jest.fn(), + reload: jest.fn(), + messageAdd: jest.fn() + } + + mutations = { + loadingAdd: jest.fn(), + loadingRemove: jest.fn(), + popupLoad: jest.fn(), + popupMessagesRemove: jest.fn(), + popupClose: jest.fn(), + popupMessageAdd: jest.fn() + } + + store = createStore({ + modules: { titre }, + actions, + mutations + }) + + const app = createApp({}) + app.use(store) + }) + + test('récupère les métas pour éditer un titre', async () => { + const apiMock = api.titreMetas.mockResolvedValueOnce({ + referencesTypes: [ + { id: 'ifr', nom: 'Ifremer' }, + { id: 'dge', nom: 'DGEC' } + ] + }) + + await store.dispatch('titre/init') + + expect(apiMock).toHaveBeenCalled() + expect(store.state.titre.metas.referencesTypes).toEqual([ + { id: 'ifr', nom: 'Ifremer' }, + { id: 'dge', nom: 'DGEC' } + ]) + expect(mutations.loadingRemove).toHaveBeenCalled() + }) + + test("retourne une erreur si l'api ne répond pas", async () => { + const apiMock = api.titreMetas.mockRejectedValue( + new Error("erreur de l'api") + ) + + await store.dispatch('titre/init') + + expect(apiMock).toHaveBeenCalled() + expect(mutations.loadingRemove).toHaveBeenCalled() + expect(mutations.popupMessageAdd).toHaveBeenCalled() + }) + + test('retourne un titre', async () => { + const apiMock = api.titre.mockResolvedValue({ id: 83, nom: 'marne' }) + await store.dispatch('titre/get', 83) + + expect(apiMock).toHaveBeenCalledWith({ id: 83 }) + expect(store.state.titre.element).toEqual({ id: 83, nom: 'marne' }) + }) + + test("affiche une page d'erreur si l'id du titre retourne null", async () => { + const apiMock = api.titre.mockResolvedValue(null) + await store.dispatch('titre/get', 27) + + expect(apiMock).toHaveBeenCalledWith({ id: 27 }) + expect(actions.pageError).toHaveBeenCalled() + }) + + test("retourne une erreur si de l'api ne répond pas lors d'une requête sur un titre", async () => { + api.titre.mockRejectedValue(new Error("erreur de l'api")) + await store.dispatch('titre/get', 83) + + expect(store.state.titre.element).toEqual(null) + expect(actions.apiError).toHaveBeenCalled() + }) + + test('crée un titre', async () => { + api.titreCreer.mockResolvedValue({ id: 83, nom: 'marne' }) + await store.dispatch('titre/add', { id: 83, nom: 'marne' }) + + expect(mutations.popupClose).toHaveBeenCalled() + }) + + test("retourne une erreur si l'API retourne une erreur lors de la création dun titre", async () => { + api.titreCreer.mockRejectedValue(new Error('erreur api')) + await store.dispatch('titre/add', { id: 83, nom: 'marne' }) + + expect(mutations.popupMessageAdd).toHaveBeenCalled() + }) + + test('met à jour un titre', async () => { + store = createStore({ modules: { titre }, actions, mutations }) + api.titreModifier.mockResolvedValue({ id: 83, nom: 'marne' }) + await store.dispatch('titre/update', { id: 83, nom: 'marne' }) + + expect(mutations.popupClose).toHaveBeenCalled() + expect(actions.reload).toHaveBeenCalled() + }) + + test("retourne une erreur si l'API retourne une erreur lors de la mise à jour d'un titre", async () => { + api.titreModifier.mockRejectedValue(new Error('erreur api')) + await store.dispatch('titre/update', { id: 83, nom: 'marne' }) + + expect(mutations.popupMessageAdd).toHaveBeenCalled() + }) + + test('supprime un titre', async () => { + const apiMock = api.titreSupprimer.mockResolvedValue(true) + await store.dispatch('titre/remove', 83) + + expect(apiMock).toHaveBeenCalledWith({ id: 83 }) + }) + + test("retourne une erreur si l'API retourne une erreur lors de la suppression d'un titre", async () => { + const apiMock = api.titreSupprimer.mockRejectedValue( + new Error("error de l'api") + ) + await store.dispatch('titre/remove', 83) + + expect(apiMock).toHaveBeenCalledWith({ id: 83 }) + expect(mutations.popupMessageAdd).toHaveBeenCalled() + }) + + test('supprime le titre courant', () => { + store.commit('titre/set', 83) + store.commit('titre/reset') + + expect(store.state.titre.element).toBeNull() + }) + + test('ouvre et ferme une section', () => { + store.commit('titre/open', { section: 'etapes', id: 'etape-id' }) + + expect(store.state.titre.opened.etapes['etape-id']).toBeTruthy() + + store.commit('titre/open', { section: 'etapes', id: 'etape-id' }) + + expect(store.state.titre.opened.etapes['etape-id']).toBeTruthy() + + store.commit('titre/close', { section: 'etapes', id: 'etape-id' }) + + expect(store.state.titre.opened.etapes['etape-id']).toBeFalsy() + + store.commit('titre/close', { section: 'etapes', id: 'etape-id' }) + + expect(store.state.titre.opened.etapes['etape-id']).toBeFalsy() + }) + + test("permute l'ouverture une section", () => { + expect(store.state.titre.opened.activites['activite-id']).toBeFalsy() + store.commit('titre/toggle', { section: 'activites', id: 'activite-id' }) + + expect(store.state.titre.opened.activites['activite-id']).toBeTruthy() + + store.commit('titre/toggle', { section: 'activites', id: 'activite-id' }) + + expect(store.state.titre.opened.activites['activite-id']).toBeFalsy() + }) + + test('une seule tab est visible par défaut', () => { + expect(store.getters['titre/tabs']).toMatchObject([{ id: 'demarches' }]) + }) + + test('la tab des activités est visible si il existe au moins une activité', () => { + store.state.titre.element = { activites: [{}], demarches: [] } + expect(store.getters['titre/tabs']).toMatchObject([ + { id: 'demarches' }, + { id: 'activites' } + ]) + }) + + test('la tab des travaux est visible si il existe au moins un travaux', () => { + store.state.titre.element = { + demarches: [{ type: { travaux: true } }] + } + expect(store.getters['titre/tabs']).toMatchObject([ + { id: 'demarches' }, + { id: 'travaux' } + ]) + }) +}) diff --git a/packages/ui/src/store/titres-activites.js b/packages/ui/src/store/titres-activites.js new file mode 100644 index 0000000000000000000000000000000000000000..8b770cab06ed7de7363c1a885586048140728234 --- /dev/null +++ b/packages/ui/src/store/titres-activites.js @@ -0,0 +1,126 @@ +import { activites } from '../api/titres-activites' +import { activitesMetas } from '../api/metas-activites' +import { listeActionsBuild, listeMutations } from './_liste-build' + +const state = { + elements: [], + total: 0, + metas: { + types: [], + annees: [], + statuts: [], + titresDomaines: [], + titresTypes: [], + titresStatuts: [] + }, + definitions: [ + { id: 'typesIds', type: 'strings', values: [] }, + { id: 'statutsIds', type: 'strings', values: [] }, + { id: 'annees', type: 'numbers', values: [] }, + { id: 'titresNoms', type: 'string' }, + { id: 'titresEntreprises', type: 'string' }, + { id: 'titresSubstances', type: 'string' }, + { id: 'titresReferences', type: 'string' }, + { id: 'titresTerritoires', type: 'string' }, + { id: 'titresTypesIds', type: 'strings', values: [] }, + { id: 'titresDomainesIds', type: 'strings', values: [] }, + { id: 'titresStatutsIds', type: 'strings', values: [] }, + { id: 'page', type: 'number', min: 0 }, + { id: 'intervalle', type: 'number', min: 10, max: 500 }, + { + id: 'colonne', + type: 'string', + values: ['titreNom', 'titulaires', 'annee', 'periode', 'statut'] + }, + { + id: 'ordre', + type: 'string', + values: ['asc', 'desc'] + } + ], + params: { + table: { + page: 1, + intervalle: 200, + ordre: 'asc', + colonne: null + }, + filtres: { + typesIds: [], + statutsIds: [], + annees: [], + titresNoms: '', + titresEntreprises: '', + titresSubstances: '', + titresReferences: '', + titresTerritoires: '', + titresTypesIds: [], + titresDomainesIds: [], + titresStatutsIds: [] + } + }, + initialized: false +} + +const actions = listeActionsBuild( + 'titresActivites', + 'activités', + activites, + activitesMetas +) + +const mutations = Object.assign({}, listeMutations, { + metasSet(state, data) { + Object.keys(data).forEach(id => { + let metaId + let paramId + + if (id === 'activitesTypes') { + metaId = 'types' + paramId = 'typesIds' + } else if (id === 'activitesStatuts') { + metaId = 'statuts' + paramId = 'statutsIds' + } else if (id === 'activitesAnnees') { + metaId = 'annees' + paramId = 'annees' + } else if (id === 'domaines') { + metaId = 'titresDomaines' + paramId = 'titresDomainesIds' + } else if (id === 'types') { + metaId = 'titresTypes' + paramId = 'titresTypesIds' + } else if (id === 'statuts') { + metaId = 'titresStatuts' + paramId = 'titresStatutsIds' + } + + if (metaId) { + const param = state.definitions.find(p => p.id === metaId) + if (param && param.type && param.type === 'numbers') { + state.metas[metaId] = data[id].map(annee => { + return { id: annee, nom: annee } + }) + } else { + state.metas[metaId] = data[id] + } + } + + if (paramId) { + const definition = state.definitions.find(p => p.id === paramId) + if (definition && definition.type && definition.type === 'numbers') { + definition.values = data[id] + } else { + definition.values = data[id].map(e => e.id) + } + } + }) + } +}) + +export default { + namespaced: true, + state, + actions, + mutations +} diff --git a/packages/ui/src/store/titres-activites.test.js b/packages/ui/src/store/titres-activites.test.js new file mode 100644 index 0000000000000000000000000000000000000000..7f6a45ed0d3a4ba95829d795026fea5885778923 --- /dev/null +++ b/packages/ui/src/store/titres-activites.test.js @@ -0,0 +1,105 @@ +import titresActivites from './titres-activites' +import { createApp } from 'vue' +import { createStore } from 'vuex' + +jest.mock('../api/titres-activites', () => ({ + activites: jest.fn() +})) + +jest.mock('../api/metas-activites', () => ({ + activitesMetas: jest.fn() +})) + +console.info = jest.fn() + +describe("état d'une activité", () => { + let store + + beforeEach(() => { + titresActivites.state = { + metas: { + types: [], + annees: [], + statuts: [], + titresDomaines: [], + titresTypes: [], + titresStatuts: [] + }, + definitions: [ + { id: 'typesIds', type: 'strings', values: [] }, + { id: 'statutsIds', type: 'strings', values: [] }, + { id: 'annees', type: 'numbers', values: [] }, + { id: 'titresTypesIds', type: 'strings', values: [] }, + { id: 'titresDomainesIds', type: 'strings', values: [] }, + { id: 'titresStatutsIds', type: 'strings', values: [] } + ] + } + + store = createStore({ + modules: { titresActivites } + }) + + const app = createApp({}) + app.use(store) + }) + + test('enregistre les métas', () => { + const activitesTypes = [ + { id: 'grp', nom: "rapport trimestriel d'activité" } + ] + const activitesAnnees = [2020, 2019] + const activitesStatuts = [ + { id: 'abs', nom: 'absent', couleur: 'error' }, + { id: 'enc', nom: 'en construction', couleur: 'warning' }, + { id: 'dep', nom: 'déposé', couleur: 'success' }, + { id: 'fer', nom: 'cloturé', couleur: 'neutral' } + ] + const domaines = [ + { id: 'm', nom: 'minéraux et métaux' }, + { id: 'w', nom: 'granulats marins' } + ] + const statuts = [ + { id: 'val', nom: 'valide', couleur: 'success' }, + { id: 'ech', nom: 'échu', couleur: 'neutral' } + ] + const types = [ + { id: 'cx', nom: 'concession', exploitation: true }, + { id: 'pr', nom: 'permis exclusif de recherches', exploitation: false } + ] + + store.commit('titresActivites/metasSet', { + activitesTypes, + activitesAnnees, + activitesStatuts, + domaines, + statuts, + types, + truc: {} + }) + + expect(store.state.titresActivites.metas).toEqual({ + types: activitesTypes, + annees: [ + { id: 2020, nom: 2020 }, + { id: 2019, nom: 2019 } + ], + statuts: activitesStatuts, + titresDomaines: domaines, + titresTypes: types, + titresStatuts: statuts + }) + + expect(store.state.titresActivites.definitions).toEqual([ + { id: 'typesIds', type: 'strings', values: ['grp'] }, + { + id: 'statutsIds', + type: 'strings', + values: ['abs', 'enc', 'dep', 'fer'] + }, + { id: 'annees', type: 'numbers', values: [2020, 2019] }, + { id: 'titresTypesIds', type: 'strings', values: ['cx', 'pr'] }, + { id: 'titresDomainesIds', type: 'strings', values: ['m', 'w'] }, + { id: 'titresStatutsIds', type: 'strings', values: ['val', 'ech'] } + ]) + }) +}) diff --git a/packages/ui/src/store/titres-demarches.js b/packages/ui/src/store/titres-demarches.js new file mode 100644 index 0000000000000000000000000000000000000000..f472dd435c153c6252543f3599e2fd900663c025 --- /dev/null +++ b/packages/ui/src/store/titres-demarches.js @@ -0,0 +1,159 @@ +import { demarchesMetas, demarches } from '../api/titres-demarches' +import { listeActionsBuild, listeMutations } from './_liste-build' + +const state = { + elements: [], + total: 0, + metas: { + types: [], + statuts: [], + etapesTypes: [], + titresTypes: [], + titresDomaines: [], + titresStatuts: [] + }, + definitions: [ + { id: 'typesIds', type: 'strings', values: [] }, + { id: 'statutsIds', type: 'strings', values: [] }, + { id: 'etapesInclues', type: 'objects', values: [] }, + { id: 'etapesExclues', type: 'objects', values: [] }, + { id: 'titresDomainesIds', type: 'strings', values: [] }, + { id: 'titresTypesIds', type: 'strings', values: [] }, + { id: 'titresStatutsIds', type: 'strings', values: [] }, + { id: 'titresNoms', type: 'string' }, + { id: 'titresEntreprises', type: 'string' }, + { id: 'titresSubstances', type: 'string' }, + { id: 'titresReferences', type: 'string' }, + { id: 'titresTerritoires', type: 'string' }, + { id: 'page', type: 'number', min: 0 }, + { id: 'intervalle', type: 'number', min: 10, max: 500 }, + { + id: 'colonne', + type: 'string', + values: [ + 'titreNom', + 'titreDomaine', + 'titreType', + 'titreStatut', + 'type', + 'statut', + 'reference' + ] + }, + { + id: 'ordre', + type: 'string', + values: ['asc', 'desc'] + } + ], + params: { + table: { + page: 1, + intervalle: 200, + ordre: 'asc', + colonne: null + }, + filtres: { + typesIds: [], + statutsIds: [], + etapesInclues: [], + etapesExclues: [], + titresDomainesIds: [], + titresTypesIds: [], + titresStatutsIds: [], + titresNoms: '', + titresEntreprises: '', + titresSubstances: '', + titresReferences: '', + titresTerritoires: '' + } + }, + initialized: false +} + +const actions = listeActionsBuild( + 'titresDemarches', + 'démarches', + demarches, + demarchesMetas +) + +const mutations = Object.assign({}, listeMutations, { + reset(state) { + listeMutations.reset(state) + state.metas = { + types: [], + statuts: [], + etapesTypes: [], + titresTypes: [], + titresDomaines: [], + titresStatuts: [] + } + state.params = { + table: { + page: 1, + intervalle: 200, + ordre: 'asc', + colonne: null + }, + filtres: { + typesIds: [], + statutsIds: [], + etapesInclues: [], + etapesExclues: [], + titresDomainesIds: [], + titresTypesIds: [], + titresStatutsIds: [], + titresNoms: '', + titresEntreprises: '', + titresSubstances: '', + titresReferences: '', + titresTerritoires: '' + } + } + }, + metasSet(state, data) { + Object.keys(data).forEach(id => { + let metaId + let paramsIds + + if (id === 'demarchesTypes') { + metaId = 'types' + paramsIds = ['typesIds'] + } else if (id === 'demarchesStatuts') { + metaId = 'statuts' + paramsIds = ['statutsIds'] + } else if (id === 'etapesTypes') { + metaId = 'etapesTypes' + paramsIds = ['etapesInclues', 'etapesExclues'] + } else if (id === 'statuts') { + metaId = 'titresStatuts' + paramsIds = ['titresStatutsIds'] + } else if (id === 'types') { + metaId = 'titresTypes' + paramsIds = ['titresTypesIds'] + } else if (id === 'domaines') { + metaId = 'titresDomaines' + paramsIds = ['titresDomainesIds'] + } + + if (metaId) { + state.metas[metaId] = data[id] + } + + if (paramsIds) { + paramsIds.forEach(paramId => { + const definition = state.definitions.find(p => p.id === paramId) + definition.values = data[id].map(e => e.id) + }) + } + }) + } +}) + +export default { + namespaced: true, + state, + actions, + mutations +} diff --git a/packages/ui/src/store/titres-demarches.test.js b/packages/ui/src/store/titres-demarches.test.js new file mode 100644 index 0000000000000000000000000000000000000000..47357ee5034d2d75bc5d4aa5681f526664cf88d0 --- /dev/null +++ b/packages/ui/src/store/titres-demarches.test.js @@ -0,0 +1,99 @@ +import titresDemarches from './titres-demarches' +import { createApp } from 'vue' +import { createStore } from 'vuex' + +jest.mock('../api/titres-demarches', () => ({ + demarchesMetas: jest.fn(), + demarches: jest.fn() +})) + +console.info = jest.fn() + +describe('liste des demarches', () => { + let store + + beforeEach(() => { + titresDemarches.state = { + metas: { + types: [], + statuts: [], + etapesTypes: [], + titresTypes: [], + titresDomaines: [], + titresStatuts: [] + }, + definitions: [ + { id: 'typesIds', type: 'strings', values: [] }, + { id: 'statutsIds', type: 'strings', values: [] }, + { id: 'etapesInclues', type: 'objects', values: [] }, + { id: 'etapesExclues', type: 'objects', values: [] }, + { id: 'titresDomainesIds', type: 'strings', values: [] }, + { id: 'titresTypesIds', type: 'strings', values: [] }, + { id: 'titresStatutsIds', type: 'strings', values: [] } + ] + } + + store = createStore({ + modules: { titresDemarches } + }) + + const app = createApp({}) + app.use(store) + }) + + test('enregistre les métas', () => { + const demarchesTypes = [{ id: 'oct', nom: 'octroi' }] + const demarchesStatuts = [ + { id: 'abs', nom: 'absent', couleur: 'error' }, + { id: 'enc', nom: 'en construction', couleur: 'warning' }, + { id: 'dep', nom: 'déposé', couleur: 'success' }, + { id: 'fer', nom: 'cloturé', couleur: 'neutral' } + ] + const domaines = [ + { id: 'm', nom: 'minéraux et métaux' }, + { id: 'w', nom: 'granulats marins' } + ] + const statuts = [ + { id: 'val', nom: 'valide', couleur: 'success' }, + { id: 'ech', nom: 'échu', couleur: 'neutral' } + ] + const types = [ + { id: 'cx', nom: 'concession', exploitation: true }, + { id: 'pr', nom: 'permis exclusif de recherches', exploitation: false } + ] + const etapesTypes = [{ id: 'dpu', nom: 'publication au Jorf' }] + + store.commit('titresDemarches/metasSet', { + demarchesTypes, + demarchesStatuts, + domaines, + statuts, + types, + etapesTypes, + truc: {} + }) + + expect(store.state.titresDemarches.metas).toEqual({ + types: demarchesTypes, + statuts: demarchesStatuts, + titresDomaines: domaines, + titresTypes: types, + titresStatuts: statuts, + etapesTypes + }) + + expect(store.state.titresDemarches.definitions).toEqual([ + { values: ['oct'], id: 'typesIds', type: 'strings' }, + { + values: ['abs', 'enc', 'dep', 'fer'], + id: 'statutsIds', + type: 'strings' + }, + { values: ['dpu'], id: 'etapesInclues', type: 'objects' }, + { values: ['dpu'], id: 'etapesExclues', type: 'objects' }, + { values: ['m', 'w'], id: 'titresDomainesIds', type: 'strings' }, + { values: ['cx', 'pr'], id: 'titresTypesIds', type: 'strings' }, + { values: ['val', 'ech'], id: 'titresStatutsIds', type: 'strings' } + ]) + }) +}) diff --git a/packages/ui/src/store/titres.js b/packages/ui/src/store/titres.js new file mode 100644 index 0000000000000000000000000000000000000000..83b1d357244bec47ffccf9f37875009f31769246 --- /dev/null +++ b/packages/ui/src/store/titres.js @@ -0,0 +1,298 @@ +import { urlQueryParamsGet } from '../utils/url' +import { titresMetas, titresGeo, titres, titresGeoPolygon } from '../api/titres' +import { paramsBuild } from '../utils/' +import { listeMutations } from './_liste-build' + +const state = { + elements: [], + total: 0, + vueId: 'carte', + metas: { + domaines: [], + types: [], + statuts: [], + substancesLegales: [] + }, + definitions: [ + { id: 'typesIds', type: 'strings', values: [] }, + { id: 'domainesIds', type: 'strings', values: [] }, + { id: 'statutsIds', type: 'strings', values: [] }, + { id: 'substancesLegalesIds', type: 'strings', values: [] }, + { id: 'titresIds', type: 'strings', values: [] }, + { id: 'entreprisesIds', type: 'strings', values: [] }, + { id: 'references', type: 'string' }, + { id: 'territoires', type: 'string' }, + { id: 'page', type: 'number', value: 1, min: 0 }, + { id: 'intervalle', type: 'number', min: 10, max: 500 }, + { + id: 'colonne', + type: 'string', + values: [ + 'nom', + 'domaine', + 'type', + 'statut', + 'activitesTotal', + 'substances', + 'titulaires', + 'references' + ] + }, + { + id: 'ordre', + type: 'string', + values: ['asc', 'desc'] + }, + { id: 'perimetre', type: 'numbers' } + ], + urlDefinitions: [ + { id: 'zoom', type: 'number', min: 1, max: 18 }, + { id: 'centre', type: 'tuple' }, + { id: 'vueId', type: 'string', values: ['carte', 'table'] } + ], + params: { + table: { page: 1, intervalle: 200, ordre: 'asc', colonne: 'nom' }, + carte: { perimetre: [0, 0, 0, 0], zoom: null, centre: [] }, + filtres: { + typesIds: [], + domainesIds: [], + statutsIds: [], + substancesLegalesIds: [], + titresIds: [], + entreprisesIds: '', + references: '', + territoires: '' + } + }, + initialized: false +} + +const actions = { + async init({ state, commit, dispatch }) { + try { + commit('loadingAdd', 'titresInit', { root: true }) + + const data = await titresMetas() + + commit('metasSet', data) + + if (!state.initialized) { + await dispatch('paramsFromQueryUpdate') + + commit('init') + } + + if (state.vueId === 'table') { + await dispatch('get') + } + } catch (e) { + dispatch('apiError', e, { root: true }) + } finally { + commit('loadingRemove', 'titresInit', { root: true }) + } + }, + + async get({ state, dispatch, commit }) { + try { + commit('loadingAdd', 'titres', { root: true }) + + if (!state.initialized) return + + await dispatch('urlQueryUpdate') + + let data + + if (state.vueId === 'carte') { + const definitions = paramsBuild( + state.definitions, + Object.assign({}, state.params.filtres, state.params.carte) + ) + + if (state.params.carte.zoom > 7) { + data = await titresGeoPolygon(definitions) + } else { + data = await titresGeo(definitions) + } + } else { + const definitions = paramsBuild( + state.definitions, + Object.assign({}, state.params.filtres, state.params.table) + ) + data = await titres(definitions) + if (!data.elements.length && data.total) { + commit('paramsSet', { section: 'table', params: { page: 1 } }) + await dispatch('urlQueryUpdate') + await dispatch('routeUpdate') + return + } + } + + commit('set', Object.freeze(data)) + } catch (e) { + dispatch('apiError', e, { root: true }) + } finally { + commit('loadingRemove', 'titres', { root: true }) + } + }, + + async paramsSet({ state, commit, dispatch }, { section, params }) { + const newParams = Object.keys(params).reduce((acc, id) => { + if (state.params[section][id] !== params[id]) { + acc[id] = params[id] + } + + return acc + }, {}) + + if (Object.keys(newParams).length) { + commit('paramsSet', { section, params: newParams }) + + if ( + section === 'carte' && + !Object.keys(newParams).includes('perimetre') + ) { + return + } + + await dispatch('get') + } + }, + + async vueSet({ state, commit, dispatch }, vueId) { + if (vueId === state.vueId) return + + commit('set', { elements: [], total: 0 }) + commit('vueSet', vueId) + // vueId est 'carte' + // le composant `map.vue` émet un event `perimetre` + // qui met à jour les préférences utilisateurs + // et déclenche déjà un rechargement des titres + if (vueId === 'carte') return + + await dispatch('get') + }, + + async routeUpdate({ dispatch }) { + const hasChanged = await dispatch('paramsFromQueryUpdate') + + if (hasChanged) { + await dispatch('get') + } + }, + + async paramsFromQueryUpdate({ rootState, state, commit }) { + let hasChanged = false + + const vueParams = urlQueryParamsGet( + { vueId: state.vueId }, + rootState.route.query, + state.urlDefinitions.filter(p => p.id === 'vueId') + ) + + if (vueParams.vueId) { + commit('set', { elements: [], total: 0 }) + commit('vueSet', vueParams.vueId) + hasChanged = true + } + + if (state.vueId === 'carte') { + const carteParams = urlQueryParamsGet( + { + zoom: state.params.carte.zoom, + centre: state.params.carte.centre + }, + rootState.route.query, + state.urlDefinitions + ) + + if (Object.keys(carteParams).length) { + commit('paramsSet', { section: 'carte', params: carteParams }) + hasChanged = true + } + } + + if (state.vueId === 'table') { + const tableParams = urlQueryParamsGet( + state.params.table, + rootState.route.query, + state.definitions + ) + + if (Object.keys(tableParams).length) { + commit('paramsSet', { section: 'table', params: tableParams }) + hasChanged = true + } + } + + const filtresParams = urlQueryParamsGet( + state.params.filtres, + rootState.route.query, + state.definitions + ) + + if (Object.keys(filtresParams).length) { + commit('paramsSet', { section: 'filtres', params: filtresParams }) + hasChanged = true + } + + return hasChanged + }, + + async urlQueryUpdate({ state, dispatch }) { + const paramsVue = + state.vueId === 'carte' + ? { + zoom: state.params.carte.zoom, + centre: state.params.carte.centre + } + : state.params.table + + const params = Object.assign( + { vueId: state.vueId }, + state.params.filtres, + paramsVue + ) + + const definitions = [...state.definitions, ...state.urlDefinitions] + + await dispatch('urlQueryUpdate', { params, definitions }, { root: true }) + } +} + +const mutations = Object.assign({}, listeMutations, { + metasSet(state, data) { + Object.keys(data).forEach(id => { + let paramId + if (id === 'types') { + paramId = 'typesIds' + } else if (id === 'domaines') { + paramId = 'domainesIds' + } else if (id === 'statuts') { + paramId = 'statutsIds' + } else if (id === 'substancesLegales') { + paramId = 'substancesLegalesIds' + } else if (id === 'entreprises') { + paramId = 'entreprisesIds' + data[id] = data[id].elements + } + + if (paramId) { + state.metas[id] = data[id] + const definition = state.definitions.find(p => p.id === paramId) + + definition.values = data[id].map(e => e.id) + } + }) + }, + + vueSet(state, vueId) { + state.vueId = vueId + } +}) + +export default { + namespaced: true, + state, + actions, + mutations +} diff --git a/packages/ui/src/store/titres.test.js b/packages/ui/src/store/titres.test.js new file mode 100644 index 0000000000000000000000000000000000000000..ee66236c57b4fad1134576e05b53232fa7366d9d --- /dev/null +++ b/packages/ui/src/store/titres.test.js @@ -0,0 +1,358 @@ +import titres from './titres' +import * as api from '../api/titres' +import { createApp } from 'vue' +import { createStore } from 'vuex' + +jest.mock('../api/titres', () => ({ + titres: jest.fn(), + titresGeo: jest.fn(), + titresGeoPolygon: jest.fn(), + titresMetas: jest.fn() +})) + +console.info = jest.fn() + +describe('liste des titres', () => { + let actions + let mutations + let store + let titresCarte + let titresListe + let route + + beforeEach(() => { + titresCarte = ['pointe-a-pitre', 'marseille-sud', 'matignon', 'crique'] + titresListe = ['pointe-a-pitre', 'marseille-sud', 'matignon'] + + titres.state = { + elements: [], + total: 0, + vueId: 'carte', + metas: { + domaines: [], + types: [], + statuts: [] + }, + params: { + table: { + page: 1, + intervalle: 200, + ordre: 'asc', + colonne: 'nom' + }, + carte: { zoom: null, centre: [], perimetre: [] }, + filtres: { + typesIds: null, + entreprises: 'fr-', + substances: null, + references: null, + territoires: null, + noms: 's', + domainesIds: ['c', 'w'], + statutsIds: ['val'] + } + }, + definitions: [ + { id: 'typesIds', type: 'strings', values: [] }, + { id: 'domainesIds', type: 'strings', values: [] }, + { id: 'statutsIds', type: 'strings', values: [] }, + { id: 'substances', type: 'string' }, + { id: 'noms', type: 'string' }, + { id: 'entreprises', type: 'string' }, + { id: 'references', type: 'string' }, + { id: 'territoires', type: 'string' }, + { id: 'page', type: 'number', value: 1, min: 0 }, + { id: 'intervalle', type: 'number', min: 10, max: 500 }, + { + id: 'colonne', + type: 'string', + values: ['nom', 'domaine', 'type', 'statut', 'activitesTotal'] + }, + { + id: 'ordre', + type: 'string', + values: ['asc', 'desc'] + } + ], + urlDefinitions: [ + { id: 'zoom', type: 'number', min: 1, max: 18 }, + { id: 'centre', type: 'tuple' }, + { id: 'vueId', type: 'string', values: ['carte', 'table'] } + ], + initialized: false + } + + mutations = { + loadingAdd: jest.fn(), + loadingRemove: jest.fn() + } + + actions = { + apiError: jest.fn(), + messageAdd: jest.fn(), + urlQueryUpdate: jest.fn() + } + + route = { + namespaced: true, + state: { + query: {} + } + } + + store = createStore({ + modules: { titres, route }, + mutations, + actions + }) + + const app = createApp({}) + app.use(store) + }) + + test('initialise le composant', async () => { + const apiMetasMock = api.titresMetas.mockResolvedValue({ + domaines: [ + { id: 'w', nom: 'granulats' }, + { id: 'c', nom: 'carrières' } + ], + types: [ + { id: 'ifr', nom: 'Ifremer' }, + { id: 'dge', nom: 'DGEC' } + ], + statuts: [ + { id: 'fait', nom: 'fait' }, + { id: 'afa', nom: '` faire`' } + ], + truc: [{ id: 'id-truc' }] + }) + + const apiMock = api.titres.mockResolvedValue({ + elements: [{ id: 'titre-id', nom: 'Nom du titre' }], + total: 1 + }) + + await store.dispatch('titres/init') + + expect(apiMetasMock).toHaveBeenCalled() + expect(apiMock).not.toHaveBeenCalled() + expect(store.state.titres.metas).toEqual({ + domaines: [ + { id: 'w', nom: 'granulats' }, + { id: 'c', nom: 'carrières' } + ], + types: [ + { id: 'ifr', nom: 'Ifremer' }, + { id: 'dge', nom: 'DGEC' } + ], + statuts: [ + { id: 'fait', nom: 'fait' }, + { id: 'afa', nom: '` faire`' } + ] + }) + + expect(mutations.loadingRemove).toHaveBeenCalled() + expect(store.state.titres.initialized).toBeTruthy() + + store.state.titres.vueId = 'table' + + await store.dispatch('titres/init') + + expect(apiMock).toHaveBeenCalled() + + expect(store.state.titres.elements).toEqual([ + { id: 'titre-id', nom: 'Nom du titre' } + ]) + }) + + test("retourne une erreur si l'api ne répond pas", async () => { + const apiMock = api.titresMetas.mockRejectedValue( + new Error("erreur de l'api") + ) + + await store.dispatch('titres/init') + + expect(apiMock).toHaveBeenCalled() + expect(mutations.loadingRemove).toHaveBeenCalled() + expect(actions.apiError).toHaveBeenCalled() + expect(store.state.titres.initialized).toBeFalsy() + }) + + test('obtient la liste des titres dans la vue "carte"', async () => { + const apiMock = api.titresGeoPolygon.mockResolvedValue({ + elements: titresCarte, + total: 4 + }) + + store.state.titres.initialized = true + store.state.titres.params.carte.zoom = 8 + + await store.dispatch('titres/get') + + expect(apiMock).toHaveBeenCalledWith({ + noms: 's', + domainesIds: ['c', 'w'], + statutsIds: ['val'], + entreprises: 'fr-' + }) + expect(store.state.titres.elements).toEqual(titresCarte) + }) + + test('obtient la liste des titres dans la vue "carte" sans les périmètres', async () => { + const apiMock = api.titresGeo.mockResolvedValue({ + elements: titresCarte, + total: 4 + }) + + store.state.titres.initialized = true + store.state.titres.params.carte.zoom = 7 + + await store.dispatch('titres/get') + + expect(apiMock).toHaveBeenCalledWith({ + noms: 's', + domainesIds: ['c', 'w'], + statutsIds: ['val'], + entreprises: 'fr-' + }) + expect(store.state.titres.elements).toEqual(titresCarte) + }) + + test('obtient la liste des titres dans la vue "table"', async () => { + const apiMock = api.titres.mockResolvedValue({ + elements: titresListe, + total: 3 + }) + store.state.titres.initialized = true + store.state.titres.vueId = 'table' + + await store.dispatch('titres/get') + + expect(apiMock).toHaveBeenCalledWith({ + noms: 's', + domainesIds: ['c', 'w'], + statutsIds: ['val'], + entreprises: 'fr-', + page: 1, + intervalle: 200, + ordre: 'asc', + colonne: 'nom' + }) + expect(store.state.titres.elements).toEqual(titresListe) + + store.commit('titres/reset') + expect(store.state.titres.elements).toEqual([]) + expect(store.state.titres.initialized).toBeFalsy() + }) + + test("retourne une erreur si l'api ne repond pas", async () => { + const apiMock = api.titresGeo.mockRejectedValue( + new Error("l'api ne répond pas") + ) + store.state.titres.initialized = true + + await store.dispatch('titres/get') + + expect(apiMock).toHaveBeenCalledWith({ + noms: 's', + domainesIds: ['c', 'w'], + statutsIds: ['val'], + entreprises: 'fr-' + }) + + expect(actions.apiError).toHaveBeenCalled() + }) + + test('change la vue et recharges les titres', async () => { + const apiTableMock = api.titres.mockResolvedValue({ + elements: [{ id: 'titre-id', nom: 'Nom du titre' }], + total: 1 + }) + const apiGeoMock = api.titresGeo.mockResolvedValue({ + elements: [{ id: 'titre-id-geo', nom: 'Nom du titre' }], + total: 1 + }) + + store.state.titres.elements = [{ id: 'titre-id-init', nom: 'Nom du titre' }] + + await store.dispatch('titres/vueSet', 'carte') + + expect(store.state.titres.elements).toEqual([ + { id: 'titre-id-init', nom: 'Nom du titre' } + ]) + + store.state.titres.initialized = true + + await store.dispatch('titres/vueSet', 'table') + + expect(apiTableMock).toHaveBeenCalled() + expect(store.state.titres.vueId).toEqual('table') + + expect(store.state.titres.elements).toEqual([ + { id: 'titre-id', nom: 'Nom du titre' } + ]) + + await store.dispatch('titres/vueSet', 'carte') + + expect(apiGeoMock).not.toHaveBeenCalled() + expect(store.state.titres.vueId).toEqual('carte') + expect(store.state.titres.elements).toEqual([]) + }) + + test("met à jour la liste si les paramètres d'url changent", async () => { + const apiTableMock = api.titres.mockResolvedValue({ + elements: [{ id: 'titre-id-table', nom: 'Nom du titre' }], + total: 1 + }) + const apiGeoMock = api.titresGeo.mockResolvedValue({ + elements: [{ id: 'titre-id-geo', nom: 'Nom du titre' }], + total: 1 + }) + + await store.dispatch('titres/routeUpdate') + + expect(apiTableMock).not.toHaveBeenCalled() + expect(store.state.titres.elements).toEqual([]) + + store.state.titres.initialized = true + route.state.query.vueId = 'table' + route.state.query.page = '4' + route.state.query.typesIds = 'cx' + await store.dispatch('titres/routeUpdate') + + expect(apiTableMock).toHaveBeenCalled() + + expect(store.state.titres.elements).toEqual([ + { id: 'titre-id-table', nom: 'Nom du titre' } + ]) + + expect(store.state.titres.params.table.page).toEqual(4) + + await store.dispatch('titres/routeUpdate') + + route.state.query.vueId = 'carte' + route.state.query.zoom = 2 + await store.dispatch('titres/routeUpdate') + + expect(apiGeoMock).toHaveBeenCalled() + + expect(store.state.titres.elements).toEqual([ + { id: 'titre-id-geo', nom: 'Nom du titre' } + ]) + }) + + test('initialise les paramètres de filtre', async () => { + const section = 'filtres' + const params = { domainesIds: 'h' } + await store.dispatch('titres/paramsSet', { section, params }) + + expect(store.state.titres.params.filtres.domainesIds).toEqual('h') + + await store.dispatch('titres/paramsSet', { section, params }) + + await store.dispatch('titres/paramsSet', { + section: 'carte', + params: { zoom: 5 } + }) + }) +}) diff --git a/packages/ui/src/store/user.js b/packages/ui/src/store/user.js new file mode 100644 index 0000000000000000000000000000000000000000..d1091eef406ecf5c1476b2fccdd1fbbd1a6c8798 --- /dev/null +++ b/packages/ui/src/store/user.js @@ -0,0 +1,368 @@ +import { + moi, + utilisateurConnecter, + utilisateurCerbereTokenCreer, + utilisateurCerbereUrlObtenir, + utilisateurCreationMessageEnvoyer, + utilisateurCreer, + utilisateurMotDePasseMessageEnvoyer, + utilisateurMotDePasseInitialiser, + userMetas, + newsletterInscrire, + utilisateurDeconnecter +} from '../api/utilisateurs' + +import { permissionsCheck } from '../utils' +import tiles from '../utils/map-tiles' + +import router from '../router' + +const state = { + element: null, + metas: { + domaines: [], + version: null, + /* global npmVersion */ + // @ts-ignore + versionUi: `${npmVersion}`, + tiles, + entreprisesTitresCreation: [] + }, + preferences: { + carte: { tilesId: 'osm-fr', markerLayersId: 'clusters' } + }, + loaded: false +} + +const actions = { + async init({ commit, dispatch }) { + try { + commit('loadingAdd', 'userInit', { root: true }) + + const data = await userMetas({ titresCreation: true }) + + commit('metasSet', data) + } catch (e) { + dispatch('apiError', e, { root: true }) + } finally { + commit('loadingRemove', 'userInit', { root: true }) + } + }, + + async identify({ commit, dispatch }) { + try { + commit('loadingAdd', 'userMoi', { root: true }) + const data = await moi() + + commit('set', data) + + await dispatch('init') + } catch (e) { + commit('reset') + } finally { + commit('loadingRemove', 'userMoi', { root: true }) + commit('load') + } + }, + + async login({ commit, dispatch }, { email, motDePasse }) { + try { + commit('loadingAdd', 'userLogin', { root: true }) + + commit('popupMessagesRemove', null, { root: true }) + + const utilisateur = await utilisateurConnecter({ email, motDePasse }) + + commit('set', utilisateur) + commit('popupClose', null, { root: true }) + dispatch( + 'messageAdd', + { + value: `bienvenue ${utilisateur.prenom} ${utilisateur.nom}`, + type: 'success' + }, + { root: true } + ) + + await dispatch('init') + dispatch('errorRemove', null, { root: true }) + } catch (e) { + commit('reset') + commit('popupMessageAdd', { value: e, type: 'error' }, { root: true }) + } finally { + commit('loadingRemove', 'userLogin', { root: true }) + } + }, + async cerbereUrlGet({ commit }, url) { + try { + commit('popupMessagesRemove', null, { root: true }) + commit('loadingAdd', 'cerbereUrlGet', { root: true }) + + const data = await utilisateurCerbereUrlObtenir({ url }) + + return data + } catch (e) { + commit('popupMessageAdd', { value: e, type: 'error' }, { root: true }) + } finally { + commit('loadingRemove', 'cerbereUrlGet', { root: true }) + } + }, + + async cerbereLogin({ commit, dispatch }, { ticket }) { + try { + commit('loadingAdd', 'userCerbereLogin', { root: true }) + + const utilisateur = await utilisateurCerbereTokenCreer({ ticket }) + + commit('set', utilisateur) + dispatch( + 'messageAdd', + { + value: `bienvenue ${utilisateur.prenom} ${utilisateur.nom}`, + type: 'success' + }, + { root: true } + ) + + await dispatch('init') + dispatch('errorRemove', null, { root: true }) + } catch (e) { + commit('reset') + } finally { + commit('loadingRemove', 'userCerbereLogin', { root: true }) + commit('load') + } + }, + + async logout({ commit, dispatch }) { + try { + commit('loadingAdd', 'userLogout', { root: true }) + + commit('popupMessagesRemove', null, { root: true }) + + await router.push({ name: 'homepage' }) + + await utilisateurDeconnecter() + + dispatch( + 'messageAdd', + { value: `vous êtes déconnecté`, type: 'success' }, + { root: true } + ) + + commit('menuClose', null, { root: true }) + commit('reset') + dispatch('errorRemove', null, { root: true }) + } catch (e) { + dispatch('messageAdd', { value: e, type: 'error' }, { root: true }) + } finally { + commit('loadingRemove', 'userLogout', { root: true }) + } + }, + + async addEmail({ commit, dispatch }, email) { + try { + commit('popupMessagesRemove', null, { root: true }) + commit('loadingAdd', 'userAddEmail', { root: true }) + + await utilisateurCreationMessageEnvoyer({ email }) + + commit('popupClose', null, { root: true }) + dispatch( + 'messageAdd', + { + value: 'un email pour créer votre compte a été envoyé', + type: 'success' + }, + { root: true } + ) + } catch (e) { + commit('popupMessageAdd', { value: e, type: 'error' }, { root: true }) + } finally { + commit('loadingRemove', 'userAddEmail', { root: true }) + } + }, + + async add({ commit, dispatch }, { utilisateur, token }) { + try { + commit('loadingAdd', 'userAdd', { root: true }) + + const data = await utilisateurCreer({ utilisateur, token }) + + if (data) { + dispatch( + 'messageAdd', + { + value: `utilisateur ${data.prenom} ${data.nom} ajouté`, + type: 'success' + }, + { root: true } + ) + + await dispatch('login', { + email: data.email, + motDePasse: utilisateur.motDePasse + }) + + router.push({ name: 'titres' }) + } + } catch (e) { + dispatch('messageAdd', { value: e, type: 'error' }, { root: true }) + } finally { + commit('loadingRemove', 'userAdd', { root: true }) + } + }, + + async passwordInitEmail({ commit, dispatch }, email) { + try { + commit('popupMessagesRemove', null, { root: true }) + commit('loadingAdd', 'utilisateurPasswordInitEmail', { root: true }) + + const data = await utilisateurMotDePasseMessageEnvoyer({ + email + }) + commit('popupClose', null, { root: true }) + dispatch('messageAdd', { value: data, type: 'success' }, { root: true }) + } catch (e) { + commit('popupMessageAdd', { value: e, type: 'error' }, { root: true }) + } finally { + commit('loadingRemove', 'utilisateurPasswordInitEmail', { + root: true + }) + } + }, + + async passwordInit( + { commit, dispatch }, + { motDePasse1, motDePasse2, token } + ) { + try { + commit('loadingAdd', 'utilisateurPasswordInit', { root: true }) + + const utilisateur = await utilisateurMotDePasseInitialiser({ + motDePasse1, + motDePasse2, + token + }) + + dispatch( + 'messageAdd', + { + value: 'mot de passe mis à jour', + type: 'success' + }, + { root: true } + ) + + router.push({ name: 'titres' }) + + commit('set', utilisateur) + dispatch( + 'messageAdd', + { + value: `bienvenue ${utilisateur.prenom} ${utilisateur.nom}`, + type: 'success' + }, + { root: true } + ) + } catch (e) { + dispatch('messageAdd', { value: e, type: 'error' }, { root: true }) + } finally { + commit('loadingRemove', 'utilisateurPasswordInit', { root: true }) + } + }, + + preferencesSet({ commit }, { section, params }) { + if (section === 'conditions') { + localStorage.setItem('conditions', params.value) + } else { + commit('preferencesSet', { section, params }) + } + }, + + async newsletterSubscribe({ commit, dispatch }, email) { + try { + commit('loadingAdd', 'newsletterSubscribe', { root: true }) + + const message = await newsletterInscrire({ + email + }) + + dispatch('messageAdd', { value: message, type: 'info' }, { root: true }) + } catch (e) { + dispatch('messageAdd', { value: e, type: 'error' }, { root: true }) + } finally { + commit('loadingRemove', 'newsletterSubscribe', { root: true }) + } + } +} + +const getters = { + tilesActive(state) { + return state.metas.tiles.find( + ({ id }) => id === state.preferences.carte.tilesId + ) + }, + + preferencesConditions(state) { + if (state.element) { + return true + } + + const threedays = 1000 * 60 * 60 + + if ( + localStorage.getItem('conditions') && + Number(localStorage.getItem('conditions')) + threedays > + new Date().getTime() + ) { + return true + } + + return false + }, + + userIsAdmin(state) { + return permissionsCheck(state.element, ['super', 'admin', 'editeur']) + }, + + userIsSuper(state) { + return permissionsCheck(state.element, ['super']) + } +} + +const mutations = { + load(state) { + state.loaded = true + }, + + preferencesSet(state, { section, params }) { + Object.keys(params).forEach(id => { + state.preferences[section][id] = params[id] + }) + }, + + set(state, user) { + state.element = user + }, + + reset(state) { + state.element = null + state.metas.entreprisesTitresCreation = [] + state.metas.domaines = [] + }, + + metasSet(state, data) { + Object.keys(data).forEach(id => { + state.metas[id] = data[id] + }) + } +} + +export default { + namespaced: true, + state, + actions, + getters, + mutations +} diff --git a/packages/ui/src/store/user.test.js b/packages/ui/src/store/user.test.js new file mode 100644 index 0000000000000000000000000000000000000000..bd7bd2cca32d16d45576c33cc9b61d4b53d23ea9 --- /dev/null +++ b/packages/ui/src/store/user.test.js @@ -0,0 +1,461 @@ +import { createStore } from 'vuex' +import { createApp } from 'vue' +import * as api from '../api/utilisateurs' + +import user from './user' +import tiles from '../utils/map-tiles' + +jest.mock('../api/utilisateurs', () => ({ + utilisateurConnecter: jest.fn(), + utilisateurDeconnecter: jest.fn(), + utilisateurCerbereUrlObtenir: jest.fn(), + utilisateurCerbereTokenCreer: jest.fn(), + moi: jest.fn(), + utilisateurMotDePasseInitialiser: jest.fn(), + utilisateurMotDePasseMessageEnvoyer: jest.fn(), + utilisateurCreationMessageEnvoyer: jest.fn(), + utilisateurCreer: jest.fn(), + userMetas: jest.fn(), + newsletterInscrire: jest.fn() +})) + +console.info = jest.fn() + +jest.mock('../router', () => []) + +describe("état de l'utilisateur connecté", () => { + let store + let actions + let mutations + let userInfo + let map + let email + let motDePasse + let ticket + + beforeEach(() => { + email = 'rene@la.taupe' + motDePasse = 'mignon' + ticket = 'ti-cket' + + userInfo = { + id: 66, + prenom: 'rene', + nom: 'lataupe', + permission: 'admin', + entreprise: 'macdo', + email: 'rene@la.taupe' + } + + user.state = { + element: null, + metas: { + domaines: [], + version: null, + versionUi: null, + tiles + }, + preferences: { + carte: { tilesId: 'osm-fr' } + } + } + + actions = { + messageAdd: jest.fn(), + errorRemove: jest.fn(), + apiError: jest.fn() + } + + mutations = { + popupMessagesRemove: jest.fn(), + loadingAdd: jest.fn(), + popupClose: jest.fn(), + popupMessageAdd: jest.fn(), + loadingRemove: jest.fn(), + menuClose: jest.fn() + } + + map = { state: { tiles: [{ id: 'osm-fr' }, { id: 'geoportail' }] } } + + store = createStore({ + modules: { user, map }, + actions, + mutations + }) + + const app = createApp({}) + app.use(store) + }) + + test("initialise les métas de l'utilisateur connecté", async () => { + const apiMock = api.userMetas.mockResolvedValue({ + version: '1.1.1' + }) + + await store.dispatch('user/init') + + expect(apiMock).toHaveBeenCalled() + expect(store.state.user.metas).toEqual({ + domaines: [], + version: '1.1.1', + versionUi: null, + tiles + }) + expect(mutations.loadingRemove).toHaveBeenCalled() + }) + + test("retourne une erreur si l'api ne répond pas", async () => { + const apiMock = api.userMetas.mockRejectedValue( + new Error("erreur de l'api") + ) + + await store.dispatch('user/init') + + expect(apiMock).toHaveBeenCalled() + expect(mutations.loadingRemove).toHaveBeenCalled() + expect(actions.apiError).toHaveBeenCalled() + expect(store.state.user.metas.version).toBeNull() + }) + + test("identifie l'utilisateur si un token valide est présent", async () => { + const apiMock = api.moi.mockResolvedValue(userInfo) + + store = createStore({ modules: { user, map }, actions, mutations }) + + await store.dispatch('user/identify') + + expect(store.state.user.element).toEqual({ + id: 66, + prenom: 'rene', + nom: 'lataupe', + email: 'rene@la.taupe', + permission: 'admin', + entreprise: 'macdo' + }) + expect(apiMock).toHaveBeenCalled() + }) + + test("retourne une erreur de l'api lors de l'obtention de l'utilisateur", async () => { + const apiMock = api.moi.mockRejectedValue(new Error("erreur dans l'api")) + store.commit('user/set', userInfo) + await store.dispatch('user/identify', { email, motDePasse }) + + expect(apiMock).toHaveBeenCalled() + expect(store.state.user.element).toBeNull() + }) + + test('connecte un utilisateur', async () => { + const apiMock = api.utilisateurConnecter.mockResolvedValue(userInfo) + + await store.dispatch('user/login', { email, motDePasse }) + + expect(apiMock).toHaveBeenCalledWith({ email, motDePasse }) + expect(mutations.popupClose).toHaveBeenCalled() + expect(actions.messageAdd).toHaveBeenCalled() + expect(store.state.user.element).toEqual({ + id: 66, + prenom: 'rene', + nom: 'lataupe', + email: 'rene@la.taupe', + permission: 'admin', + entreprise: 'macdo' + }) + }) + + test("retourne une erreur de l'api lors de la connection d'un utilisateur", async () => { + store.commit('user/set', userInfo) + const apiMock = api.utilisateurConnecter.mockRejectedValue( + new Error("erreur dans l'api") + ) + await store.dispatch('user/login', { email, motDePasse }) + + expect(apiMock).toHaveBeenCalledWith({ email, motDePasse }) + expect(store.state.user.element).toBeNull() + expect(mutations.popupMessageAdd).toHaveBeenCalled() + }) + + test("obtient l'url de login Cerbère", async () => { + const url = encodeURIComponent('http://camino.test') + const returnUrl = `https://url-cerbere.tld/login?TARGET=${url}` + + const apiMock = + api.utilisateurCerbereUrlObtenir.mockResolvedValue(returnUrl) + + const cerbereUrl = await store.dispatch('user/cerbereUrlGet', url) + + expect(apiMock).toHaveBeenCalledWith({ url }) + + expect(cerbereUrl).toBe(returnUrl) + }) + + test("retourne une erreur de l'api lors de l'obtention de l'url Cerbère", async () => { + const url = 'http://camino.test' + const apiMock = api.utilisateurCerbereUrlObtenir.mockRejectedValue( + new Error("erreur dans l'api") + ) + + await store.dispatch('user/cerbereUrlGet', url) + + expect(apiMock).toHaveBeenCalledWith({ url }) + expect(mutations.popupMessageAdd).toHaveBeenCalled() + }) + + test('connecte un utilisateur avec Cerbère', async () => { + const apiMock = api.utilisateurCerbereTokenCreer.mockResolvedValue(userInfo) + + await store.dispatch('user/cerbereLogin', { ticket }) + + expect(apiMock).toHaveBeenCalledWith({ ticket }) + expect(actions.messageAdd).toHaveBeenCalled() + expect(store.state.user.element).toEqual({ + id: 66, + prenom: 'rene', + nom: 'lataupe', + email: 'rene@la.taupe', + permission: 'admin', + entreprise: 'macdo' + }) + }) + + test("retourne une erreur de l'api lors de la connection d'un utilisateur avec Cerbère", async () => { + store.commit('user/set', userInfo) + const apiMock = api.utilisateurCerbereTokenCreer.mockRejectedValue( + new Error("erreur dans l'api") + ) + + await store.dispatch('user/cerbereLogin', { ticket }) + + expect(apiMock).toHaveBeenCalledWith({ ticket }) + expect(store.state.user.element).toBeNull() + }) + + test('déconnecte un utilisateur', async () => { + const apiMock = api.utilisateurDeconnecter.mockResolvedValue() + + store.commit('user/set', userInfo) + await store.dispatch('user/logout') + + expect(apiMock).toHaveBeenCalled() + expect(mutations.menuClose).toHaveBeenCalled() + expect(actions.messageAdd).toHaveBeenCalled() + expect(store.state.user.element).toBeNull() + }) + + test('ajoute un email', async () => { + const apiMock = + api.utilisateurCreationMessageEnvoyer.mockResolvedValue(email) + await store.dispatch('user/addEmail', email) + + expect(apiMock).toHaveBeenCalledWith({ email }) + expect(mutations.popupClose).toHaveBeenCalled() + expect(actions.messageAdd).toHaveBeenCalled() + }) + + test("retourne une erreur de l'api lors de l'ajout d'un email", async () => { + const apiMock = api.utilisateurCreationMessageEnvoyer.mockRejectedValue( + new Error("erreur dans l'api") + ) + await store.dispatch('user/addEmail', email) + + expect(apiMock).toHaveBeenCalledWith({ email }) + expect(mutations.popupClose).not.toHaveBeenCalled() + expect(mutations.popupMessageAdd).toHaveBeenCalled() + }) + + test('ajoute un utilisateur', async () => { + const loginMock = jest.fn() + user.actions.login = loginMock + store = createStore({ modules: { user, map }, actions, mutations }) + const apiMock = api.utilisateurCreer.mockResolvedValue(userInfo) + await store.dispatch('user/add', { utilisateur: userInfo, token: 'token' }) + + expect(apiMock).toHaveBeenCalledWith({ + utilisateur: userInfo, + token: 'token' + }) + expect(actions.messageAdd).toHaveBeenCalled() + expect(loginMock).toHaveBeenCalled() + }) + + test("n'ajoute pas d'utilisateur", async () => { + const apiMock = api.utilisateurCreer.mockResolvedValue(null) + await store.dispatch('user/add', { utilisateur: userInfo, token: 'token' }) + + expect(apiMock).toHaveBeenCalledWith({ + utilisateur: userInfo, + token: 'token' + }) + expect(actions.messageAdd).not.toHaveBeenCalled() + }) + + test("retourne une erreur api lors de l'ajout d'un utilisateur", async () => { + const loginMock = jest.fn() + user.actions.login = loginMock + store = createStore({ modules: { user, map }, actions, mutations }) + const apiMock = api.utilisateurCreer.mockRejectedValue( + new Error("erreur dans l'api") + ) + await store.dispatch('user/add', { utilisateur: userInfo, token: 'token' }) + + expect(apiMock).toHaveBeenCalledWith({ + utilisateur: userInfo, + token: 'token' + }) + expect(actions.messageAdd).toHaveBeenCalled() + expect(loginMock).not.toHaveBeenCalled() + }) + + test("crée l'email d'un utilisateur", async () => { + const apiMock = + api.utilisateurMotDePasseMessageEnvoyer.mockResolvedValue(userInfo) + await store.dispatch('user/passwordInitEmail', email) + + expect(apiMock).toHaveBeenCalledWith({ email }) + expect(mutations.popupClose).toHaveBeenCalled() + expect(actions.messageAdd).toHaveBeenCalled() + }) + + test("retourne une erreur api dans la création de l'email de l'utilisateur", async () => { + const apiMock = api.utilisateurMotDePasseMessageEnvoyer.mockRejectedValue( + new Error("erreur dans l'api") + ) + await store.dispatch('user/passwordInitEmail', email) + + expect(apiMock).toHaveBeenCalledWith({ email }) + expect(mutations.popupMessageAdd).toHaveBeenCalled() + expect(actions.messageAdd).not.toHaveBeenCalled() + }) + + test("initialise le mot de passe d'un utilisateur", async () => { + store = createStore({ modules: { user, map }, actions, mutations }) + const apiMock = + api.utilisateurMotDePasseInitialiser.mockResolvedValue(userInfo) + await store.dispatch('user/passwordInit', { + motDePasse1: motDePasse, + motDePasse2: motDePasse + }) + + expect(apiMock).toHaveBeenCalledWith({ + motDePasse1: motDePasse, + motDePasse2: motDePasse + }) + expect(actions.messageAdd).toHaveBeenCalledTimes(2) + }) + + test("retourne une erreur api dans la création du mot de passe de l'utilisateur", async () => { + const motDePasse1 = 'mignon' + const motDePasse2 = 'mignon' + const loginMock = jest.fn() + user.actions.login = loginMock + store = createStore({ modules: { user, map }, actions, mutations }) + const apiMock = api.utilisateurMotDePasseInitialiser.mockRejectedValue( + new Error("erreur dans l'api") + ) + const res = await store.dispatch('user/passwordInit', { + motDePasse1, + motDePasse2, + email + }) + + expect(apiMock).toHaveBeenCalledWith({ motDePasse1, motDePasse2 }) + expect(actions.messageAdd).toHaveBeenCalled() + expect(loginMock).not.toHaveBeenCalled() + expect(res).toBeUndefined() + }) + + test("initialise les preferences de l'utilisateur", async () => { + const section = 'conditions' + const value = 'conditionValue' + const params = { value } + await store.dispatch('user/preferencesSet', { section, params }) + + expect(localStorage.getItem('conditions')).toEqual(value) + }) + + test('initialise les preferences de filtre', async () => { + const section = 'carte' + const params = { tilesId: 'ign' } + await store.dispatch('user/preferencesSet', { section, params }) + + expect(store.state.user.preferences.carte.tilesId).toEqual('ign') + }) + + test('retourne le fond de carte actif', () => { + expect(store.getters['user/tilesActive']).toEqual({ + id: 'osm-fr', + name: 'OSM / fr', + type: 'tiles', + url: 'https://{s}.tile.openstreetmap.fr/osmfr/{z}/{x}/{y}.png', + attribution: + '© Openstreetmap France | © <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>' + }) + }) + + test("retourne true si l'utilisateur est connecté", () => { + user.state.element = {} + store = createStore({ modules: { user } }) + + expect(store.getters['user/preferencesConditions']).toBeTruthy() + }) + + test('ne recupere pas les preferences sauvegardées: vieilles de plus de 3 jours', () => { + localStorage.setItem('conditions', '3') + expect(store.getters['user/preferencesConditions']).toBeFalsy() + }) + + test('recupere les preferences sauvegardées', () => { + localStorage.setItem('conditions', new Date().getTime().toString()) + expect(store.getters['user/preferencesConditions']).toBeTruthy() + }) + + test("initialise le statut de l'user sans entreprises", () => { + store.commit('user/set', { + id: 66, + prenom: 'rene', + nom: 'lataupe', + permission: 'admin' + }) + + expect(store.state.user.element).toEqual({ + id: 66, + prenom: 'rene', + nom: 'lataupe', + permission: 'admin' + }) + expect(store.state.user.element.entreprise).toBeUndefined() + }) + + test('inscrit un email à la newsletter', async () => { + const apiMock = api.newsletterInscrire.mockResolvedValue('succès') + + await store.dispatch('user/newsletterSubscribe', 'email@domain.tld') + + expect(apiMock).toHaveBeenCalled() + }) + + test("retourne une erreur de l'api lors de l'inscription d'un email à la newsletter", async () => { + const apiMock = api.newsletterInscrire.mockRejectedValue( + new Error("erreur dans l'api") + ) + + await store.dispatch('user/newsletterSubscribe', 'shitty email') + expect(apiMock).toHaveBeenCalled() + }) + + test.each` + permissionId | isAdmin + ${'super'} | ${true} + ${'admin'} | ${true} + ${'editeur'} | ${true} + ${'entreprise'} | ${false} + ${undefined} | ${false} + `('ajoute des jours à une date', ({ permissionId, isAdmin }) => { + store.commit('user/set', { + id: 66, + prenom: 'rene', + nom: 'lataupe', + permission: { id: permissionId } + }) + expect(store.getters['user/userIsAdmin']).toEqual(isAdmin) + }) +}) diff --git a/packages/ui/src/store/utilisateur.js b/packages/ui/src/store/utilisateur.js new file mode 100644 index 0000000000000000000000000000000000000000..9908ae3f446bbcf8bcacd4b99d6b01cb31f36c92 --- /dev/null +++ b/packages/ui/src/store/utilisateur.js @@ -0,0 +1,266 @@ +import { + utilisateurMetas, + utilisateur, + utilisateurCreer, + utilisateurModifier, + utilisateurSupprimer, + utilisateurMotDePasseModifier, + utilisateurEmailMessageEnvoyer, + utilisateurEmailModifier +} from '../api/utilisateurs' + +import router from '../router' + +const state = { + element: null, + metas: { + permissions: [], + entreprises: [], + administrations: [] + }, + metasLoaded: false +} + +const actions = { + async init({ commit }) { + commit('loadingAdd', 'utilisateurInit', { root: true }) + + try { + const data = await utilisateurMetas() + + commit('metasSet', data) + } catch (e) { + commit('popupMessageAdd', { value: e, type: 'error' }, { root: true }) + } finally { + commit('loadingRemove', 'utilisateurInit', { root: true }) + } + }, + + async get({ commit, dispatch }, id) { + commit('loadingAdd', 'utilisateur', { root: true }) + + try { + const data = await utilisateur({ id }) + + if (data) { + commit('set', data) + } else { + dispatch('pageError', null, { root: true }) + } + } catch (e) { + dispatch('apiError', e, { root: true }) + } finally { + commit('loadingRemove', 'utilisateur', { root: true }) + } + }, + + async add({ commit, dispatch }, utilisateur) { + commit('popupMessagesRemove', null, { root: true }) + commit('popupLoad', null, { root: true }) + commit('loadingAdd', 'utilisateurAdd', { root: true }) + try { + const data = await utilisateurCreer({ utilisateur }) + + commit('popupClose', null, { root: true }) + + router.push({ name: 'utilisateur', params: { id: data.id } }) + dispatch( + 'messageAdd', + { + value: `l'utilisateur ${data.prenom} ${data.nom} a été ajouté`, + type: 'success' + }, + { root: true } + ) + } catch (e) { + commit('popupMessageAdd', { value: e, type: 'error' }, { root: true }) + } finally { + commit('loadingRemove', 'utilisateurAdd', { root: true }) + } + }, + + async update({ commit, dispatch, rootState }, utilisateur) { + commit('popupMessagesRemove', null, { root: true }) + commit('popupLoad', null, { root: true }) + commit('loadingAdd', 'utilisateurUpdate', { root: true }) + + try { + const data = await utilisateurModifier({ utilisateur }) + + commit('popupClose', null, { root: true }) + + if (utilisateur.id === rootState.user.element.id) { + commit('user/set', data, { root: true }) + } + + await dispatch( + 'reload', + { name: 'utilisateur', id: data.id }, + { root: true } + ) + dispatch( + 'messageAdd', + { value: `l'utilisateur a été mis à jour`, type: 'success' }, + { root: true } + ) + } catch (e) { + commit('popupMessageAdd', { value: e, type: 'error' }, { root: true }) + } finally { + commit('loadingRemove', 'utilisateurUpdate', { root: true }) + } + }, + + async passwordUpdate( + { commit, dispatch }, + { id, motDePasse, motDePasseNouveau1, motDePasseNouveau2 } + ) { + commit('popupMessagesRemove', null, { root: true }) + commit('popupLoad', null, { root: true }) + commit('loadingAdd', 'utilisateurPasswordUpdate', { root: true }) + + try { + await utilisateurMotDePasseModifier({ + id, + motDePasse, + motDePasseNouveau1, + motDePasseNouveau2 + }) + + commit('popupClose', null, { root: true }) + dispatch( + 'messageAdd', + { + value: `le mot de passe a été modifié`, + type: 'success' + }, + { root: true } + ) + } catch (e) { + commit('popupMessageAdd', { value: e, type: 'error' }, { root: true }) + } finally { + commit('loadingRemove', 'utilisateurPasswordUpdate', { + root: true + }) + } + }, + + async emailVerification({ commit, dispatch }, { email }) { + commit('popupMessagesRemove', null, { root: true }) + commit('popupLoad', null, { root: true }) + commit('loadingAdd', 'utilisateurEmailVerification', { root: true }) + + try { + await utilisateurEmailMessageEnvoyer({ + email + }) + + commit('popupClose', null, { root: true }) + dispatch( + 'messageAdd', + { + value: `un email de vérification vient de vous être envoyé`, + type: 'success' + }, + { root: true } + ) + } catch (e) { + commit('popupMessageAdd', { value: e, type: 'error' }, { root: true }) + } finally { + commit('loadingRemove', 'utilisateurEmailVerification', { + root: true + }) + } + }, + + async emailUpdate({ commit, dispatch }, { emailToken }) { + commit('loadingAdd', 'utilisateurEmailModifier', { root: true }) + + try { + await utilisateurEmailModifier({ + emailToken + }) + + dispatch( + 'messageAdd', + { + value: `votre email a été modifié avec succés`, + type: 'success' + }, + { root: true } + ) + } catch (e) { + dispatch('messageAdd', { value: e, type: 'error' }, { root: true }) + } finally { + commit('loadingRemove', 'utilisateurEmailModifier', { + root: true + }) + } + }, + + async remove({ commit, dispatch, rootState }, id) { + commit('popupMessagesRemove', null, { root: true }) + commit('popupLoad', null, { root: true }) + commit('loadingAdd', 'utilisateurRemove', { root: true }) + + try { + const data = await utilisateurSupprimer({ id }) + + if (rootState.user.element.id === data.id) { + await dispatch('user/logout', null, { root: true }) + } + commit('popupClose', null, { root: true }) + dispatch( + 'messageAdd', + { + value: `l'utilisateur ${data.prenom} ${data.nom} a été supprimé`, + type: 'success' + }, + { root: true } + ) + + router.push({ name: 'utilisateurs' }) + } catch (e) { + commit('popupMessageAdd', { value: e, type: 'error' }, { root: true }) + } finally { + commit('loadingRemove', 'utilisateurRemove', { root: true }) + } + } +} + +const mutations = { + set(state, utilisateur) { + state.element = utilisateur + }, + + reset(state) { + state.element = null + }, + + metasReset(state) { + state.metas = { + permissions: [], + entreprises: [], + administrations: [] + } + state.metasLoaded = false + }, + + metasSet(state, data) { + Object.keys(data).forEach(id => { + if (id === 'entreprises' || id === 'administrations') { + state.metas[id] = data[id].elements + } else { + state.metas[id] = data[id] + } + }) + + state.metasLoaded = true + } +} + +export default { + namespaced: true, + state, + actions, + mutations +} diff --git a/packages/ui/src/store/utilisateur.test.js b/packages/ui/src/store/utilisateur.test.js new file mode 100644 index 0000000000000000000000000000000000000000..83d8ab3e6a34f325396bbd30b5470e1125216ee8 --- /dev/null +++ b/packages/ui/src/store/utilisateur.test.js @@ -0,0 +1,428 @@ +import { createStore } from 'vuex' +import { createApp } from 'vue' +import * as router from '../router' +import * as api from '../api/utilisateurs' + +import utilisateur from './utilisateur' + +jest.mock('../api/utilisateurs', () => ({ + utilisateurMetas: jest.fn(), + utilisateur: jest.fn(), + utilisateurCreer: jest.fn(), + utilisateurModifier: jest.fn(), + utilisateurSupprimer: jest.fn(), + utilisateurMotDePasseModifier: jest.fn(), + utilisateurEmailMessageEnvoyer: jest.fn(), + utilisateurEmailModifier: jest.fn() +})) + +jest.mock('../router', () => ({ + push: jest.fn() +})) + +console.info = jest.fn() + +describe("état de l'utilisateur consulté", () => { + let store + let actions + let mutations + let user + + beforeEach(() => { + utilisateur.state = { + element: null, + metas: { + permissions: [], + entreprises: [], + administrations: [] + }, + metasLoaded: false + } + user = { + namespaced: true, + state: { + element: {} + }, + actions: { + logout: jest.fn() + }, + mutations: { + set: jest.fn() + } + } + + mutations = { + loadingAdd: jest.fn(), + loadingRemove: jest.fn(), + popupMessageAdd: jest.fn(), + popupClose: jest.fn(), + popupMessagesRemove: jest.fn(), + popupLoad: jest.fn() + } + + actions = { + pageError: jest.fn(), + apiError: jest.fn(), + reload: jest.fn(), + messageAdd: jest.fn() + } + + store = createStore({ + modules: { utilisateur, user }, + mutations, + actions + }) + + const app = createApp({}) + app.use(store) + }) + + test('récupère les métas pour éditer un utilisateur', async () => { + const apiMock = api.utilisateurMetas.mockResolvedValue({ + permissions: [ + { id: 'w', nom: 'granulats' }, + { id: 'c', nom: 'carrières' } + ], + entreprises: { elements: ['ent-1'] }, + administrations: { elements: ['adm-1'] } + }) + + await store.dispatch('utilisateur/init') + + expect(apiMock).toHaveBeenCalled() + expect(store.state.utilisateur.metas).toEqual({ + permissions: [ + { id: 'w', nom: 'granulats' }, + { id: 'c', nom: 'carrières' } + ], + entreprises: ['ent-1'], + administrations: ['adm-1'] + }) + expect(mutations.loadingRemove).toHaveBeenCalled() + + store.commit('utilisateur/metasReset') + + expect(store.state.utilisateur.metasLoaded).toBeFalsy() + }) + + test("retourne une erreur si l'api ne répond pas", async () => { + const apiMock = api.utilisateurMetas.mockRejectedValue( + new Error("erreur de l'api") + ) + + await store.dispatch('utilisateur/init') + + expect(apiMock).toHaveBeenCalled() + expect(mutations.loadingRemove).toHaveBeenCalled() + expect(mutations.popupMessageAdd).toHaveBeenCalled() + }) + + test("retourne une erreur si l'api répond null", async () => { + const apiMock = api.utilisateurMetas.mockResolvedValue(null) + + await store.dispatch('utilisateur/init') + + expect(apiMock).toHaveBeenCalled() + }) + + test('retourne un utilisateur', async () => { + const utilisateur = { id: 71, nom: 'toto', prenom: 'asticot' } + const apiMock = api.utilisateur.mockResolvedValue(utilisateur) + await store.dispatch('utilisateur/get', 71) + + expect(apiMock).toHaveBeenCalled() + expect(apiMock).toHaveBeenCalledWith({ id: 71 }) + expect(store.state.utilisateur.element).toEqual(utilisateur) + }) + + test("affiche une page d'erreur si l'id de l'utilisateur retourne null", async () => { + const apiMock = api.utilisateur.mockResolvedValue(null) + await store.dispatch('utilisateur/get', 27) + + expect(apiMock).toHaveBeenCalledWith({ id: 27 }) + expect(actions.pageError).toHaveBeenCalled() + }) + + test("retourne une erreur de l'api dans l'obtention de l'utilisateur", async () => { + const apiMock = api.utilisateur.mockRejectedValue( + new Error("l'api ne répond pas") + ) + await store.dispatch('utilisateur/get', 71) + + expect(apiMock).toHaveBeenCalled() + expect(apiMock).toHaveBeenCalledWith({ id: 71 }) + + expect(actions.apiError).toHaveBeenCalled() + }) + + test("supprime les données d'utilisateur", () => { + store.commit('utilisateur/set', { id: 71, nom: 'toto', prenom: 'asticot' }) + store.commit('utilisateur/reset') + + expect(store.state.utilisateur.element).toBeNull() + }) + + test('ajoute un utilisateur', async () => { + const apiMock = api.utilisateurCreer.mockResolvedValue({ + id: 71, + nom: 'toto', + prenom: 'asticot' + }) + await store.dispatch('utilisateur/add', { + id: 71, + nom: 'toto', + prenom: 'asticot' + }) + + expect(apiMock).toHaveBeenCalled() + expect(apiMock).toHaveBeenCalledWith({ + utilisateur: { id: 71, nom: 'toto', prenom: 'asticot' } + }) + expect(mutations.popupClose).toHaveBeenCalled() + expect(actions.messageAdd).toHaveBeenCalled() + }) + + test('ajoute un utilisateur (erreur API)', async () => { + const apiMock = api.utilisateurCreer.mockRejectedValue( + new Error('erreur API') + ) + await store.dispatch('utilisateur/add', { + id: 71, + nom: 'toto', + prenom: 'asticot' + }) + + expect(apiMock).toHaveBeenCalled() + expect(apiMock).toHaveBeenCalledWith({ + utilisateur: { id: 71, nom: 'toto', prenom: 'asticot' } + }) + }) + + test('modifie un utilisateur', async () => { + user.state.element = { id: 72 } + const apiMock = api.utilisateurModifier.mockResolvedValue({ + id: 71, + nom: 'Asticot', + prenom: 'Julien' + }) + await store.dispatch('utilisateur/update', { + id: 71, + nom: 'Asticot', + prenom: 'Julien' + }) + + expect(apiMock).toHaveBeenCalled() + expect(apiMock).toHaveBeenCalledWith({ + utilisateur: { id: 71, nom: 'Asticot', prenom: 'Julien' } + }) + expect(actions.reload).toHaveBeenCalled() + expect(user.mutations.set).not.toHaveBeenCalled() + expect(actions.messageAdd).toHaveBeenCalled() + }) + + test("modifie l'utilisateur actif", async () => { + user.state.element = { id: 71, nom: 'Ouistiti', prenom: 'Marcel' } + const apiMock = api.utilisateurModifier.mockResolvedValue({ + id: 71, + nom: 'Asticot', + prenom: 'Julien' + }) + await store.dispatch('utilisateur/update', { + id: 71, + nom: 'Asticot', + prenom: 'Julien' + }) + + expect(apiMock).toHaveBeenCalled() + expect(apiMock).toHaveBeenCalledWith({ + utilisateur: { id: 71, nom: 'Asticot', prenom: 'Julien' } + }) + expect(actions.reload).toHaveBeenCalled() + expect(user.mutations.set).toHaveBeenCalled() + expect(actions.messageAdd).toHaveBeenCalled() + }) + + test('modifie un utilisateur (erreur API)', async () => { + const apiMock = api.utilisateurModifier.mockRejectedValue( + new Error('erreur API') + ) + await store.dispatch('utilisateur/update', { + id: 71, + nom: 'toto', + prenom: 'asticot' + }) + + expect(apiMock).toHaveBeenCalled() + expect(apiMock).toHaveBeenCalledWith({ + utilisateur: { id: 71, nom: 'toto', prenom: 'asticot' } + }) + expect(actions.reload).not.toHaveBeenCalled() + expect(mutations.popupMessageAdd).toHaveBeenCalled() + }) + + test('supprime un utilisateur', async () => { + const apiMock = api.utilisateurSupprimer.mockResolvedValue({ + id: 71, + nom: 'toto', + prenom: 'asticot' + }) + await store.dispatch('utilisateur/remove', 46) + + expect(apiMock).toHaveBeenCalled() + expect(apiMock).toHaveBeenCalledWith({ id: 46 }) + expect(user.actions.logout).not.toHaveBeenCalled() + expect(actions.messageAdd).toHaveBeenCalled() + expect(router.push).toHaveBeenCalled() + }) + + test('supprime un utilisateur et le déconnecte', async () => { + const apiMock = api.utilisateurSupprimer.mockResolvedValue({ + id: 71, + nom: 'toto', + prenom: 'asticot' + }) + + user.state.element = { id: 71 } + await store.dispatch('utilisateur/remove', 71) + + expect(apiMock).toHaveBeenCalled() + expect(apiMock).toHaveBeenCalledWith({ id: 71 }) + expect(user.actions.logout).toHaveBeenCalled() + expect(actions.messageAdd).toHaveBeenCalled() + }) + + test("retourne une erreur de l'api dans la suppression de l'utilisateur", async () => { + const apiMock = api.utilisateurSupprimer.mockRejectedValue( + new Error("erreur dans l'api") + ) + await store.dispatch('utilisateur/remove', 46) + + expect(apiMock).toHaveBeenCalled() + expect(apiMock).toHaveBeenCalledWith({ id: 46 }) + expect(mutations.popupMessageAdd).toHaveBeenCalled() + }) + + test("modifie le mot de passe d'un utilisateur", async () => { + const apiMock = api.utilisateurMotDePasseModifier.mockResolvedValue({ + id: 46, + mdp: 'jour', + nom: 'jean', + prenom: 'peuplut' + }) + await store.dispatch('utilisateur/passwordUpdate', { + id: 46, + motDePasse: 'bon', + motDePasseNouveau1: 'jour', + motDePasseNouveau2: 'jour' + }) + + expect(apiMock).toHaveBeenCalledWith({ + id: 46, + motDePasse: 'bon', + motDePasseNouveau1: 'jour', + motDePasseNouveau2: 'jour' + }) + expect(mutations.popupClose).toHaveBeenCalled() + expect(actions.messageAdd).toHaveBeenCalled() + expect(mutations.loadingRemove).toHaveBeenCalled() + }) + + test("retourne une erreur de l'api lors de la modification du mot de passe", async () => { + const apiMock = api.utilisateurMotDePasseModifier.mockRejectedValue( + new Error("erreur dans l'api") + ) + await store.dispatch('utilisateur/passwordUpdate', { + id: 46, + motDePasse: 'bon', + motDePasseNouveau1: 'jour', + motDePasseNouveau2: 'jour' + }) + + expect(apiMock).toHaveBeenCalled() + expect(apiMock).toHaveBeenCalledWith({ + id: 46, + motDePasse: 'bon', + motDePasseNouveau1: 'jour', + motDePasseNouveau2: 'jour' + }) + expect(mutations.popupMessageAdd).toHaveBeenCalled() + expect(mutations.loadingRemove).toHaveBeenCalled() + }) + + test('vérifie le nouvel email', async () => { + const apiMock = api.utilisateurEmailMessageEnvoyer.mockResolvedValue({}) + await store.dispatch('utilisateur/emailVerification', { + email: 'fakeEmail' + }) + + expect(mutations.loadingAdd).toHaveBeenCalled() + expect(apiMock).toHaveBeenCalledWith({ + email: 'fakeEmail' + }) + expect(mutations.popupClose).toHaveBeenCalled() + expect(actions.messageAdd).toHaveBeenCalledWith(expect.any(Object), { + type: 'success', + value: 'un email de vérification vient de vous être envoyé' + }) + expect(mutations.loadingRemove).toHaveBeenCalled() + }) + + test("retourne une erreur de l'api lors de la vérification de son nouvel email", async () => { + const apiMock = api.utilisateurEmailMessageEnvoyer.mockRejectedValue( + new Error("erreur dans l'api") + ) + await store.dispatch('utilisateur/emailVerification', { + email: 'fakeEmail' + }) + + expect(apiMock).toHaveBeenCalledWith({ + email: 'fakeEmail' + }) + + expect(mutations.loadingAdd).toHaveBeenCalled() + expect(mutations.popupMessageAdd).toHaveBeenCalledWith(expect.any(Object), { + type: 'error', + value: new Error("erreur dans l'api") + }) + expect(mutations.popupClose).not.toHaveBeenCalled() + expect(mutations.loadingRemove).toHaveBeenCalled() + }) + + test('modifie son propre email', async () => { + const apiMock = api.utilisateurEmailModifier.mockResolvedValue({}) + await store.dispatch('utilisateur/emailUpdate', { + emailToken: 'fakeToken' + }) + + expect(apiMock).toHaveBeenCalledWith({ + emailToken: 'fakeToken' + }) + expect(mutations.loadingAdd).toHaveBeenCalled() + expect(actions.messageAdd).toHaveBeenCalledWith(expect.any(Object), { + type: 'success', + value: 'votre email a été modifié avec succés' + }) + + expect(mutations.loadingRemove).toHaveBeenCalled() + }) + + test("retourne une erreur de l'api lors de la modification de son email", async () => { + const apiMock = api.utilisateurEmailModifier.mockRejectedValue( + new Error("erreur dans l'api") + ) + await store.dispatch('utilisateur/emailUpdate', { + emailToken: 'fakeToken' + }) + + expect(apiMock).toHaveBeenCalledWith({ + emailToken: 'fakeToken' + }) + + expect(mutations.loadingAdd).toHaveBeenCalled() + expect(actions.messageAdd).toHaveBeenCalledWith(expect.any(Object), { + type: 'error', + value: new Error("erreur dans l'api") + }) + expect(mutations.loadingRemove).toHaveBeenCalled() + }) +}) diff --git a/packages/ui/src/store/utilisateurs.js b/packages/ui/src/store/utilisateurs.js new file mode 100644 index 0000000000000000000000000000000000000000..bef5a40419a26c30f8c591e8a0f226a199454de4 --- /dev/null +++ b/packages/ui/src/store/utilisateurs.js @@ -0,0 +1,95 @@ +import { utilisateurs, utilisateurMetas } from '../api/utilisateurs' +import { listeActionsBuild, listeMutations } from './_liste-build' + +const state = { + elements: [], + total: 0, + metas: { + permission: [], + administration: [], + entreprise: [] + }, + definitions: [ + { id: 'noms', type: 'string' }, + { id: 'emails', type: 'string' }, + { id: 'permissionIds', type: 'strings', values: [] }, + { id: 'administrationIds', type: 'strings', values: [] }, + { id: 'entrepriseIds', type: 'strings', values: [] }, + { id: 'page', type: 'number', min: 0 }, + { id: 'intervalle', type: 'number', min: 10, max: 500 }, + { + id: 'colonne', + type: 'string', + values: ['nom', 'prenom', 'email', 'permission', 'lien'] + }, + { + id: 'ordre', + type: 'string', + values: ['asc', 'desc'] + } + ], + params: { + filtres: { + noms: '', + emails: '', + permissionIds: [], + administrationIds: [], + entrepriseIds: [] + }, + table: { + page: 1, + intervalle: 200, + ordre: 'asc', + colonne: null + } + }, + initialized: false +} + +const actions = listeActionsBuild( + 'utilisateurs', + 'utilisateurs', + utilisateurs, + utilisateurMetas +) + +const mutations = Object.assign({}, listeMutations, { + metasSet(state, data) { + Object.keys(data).forEach(id => { + let metaId + let paramId + if (id === 'permissions') { + metaId = 'permission' + paramId = 'permissionIds' + } else if (id === 'entreprises') { + metaId = 'entreprise' + paramId = 'entrepriseIds' + + // l'API renvoie les entreprises dans une propriété 'elements' + data[id] = data[id].elements + } else if (id === 'administrations') { + metaId = 'administration' + paramId = 'administrationIds' + + data[id] = data[id].elements + } + + if (metaId) { + state.metas[metaId] = data[id] + } + + if (paramId) { + const definition = state.definitions.find(p => p.id === paramId) + + definition.values = data[id].map(e => e.id) + } + }) + } +}) + +export default { + namespaced: true, + state, + actions, + mutations +} diff --git a/packages/ui/src/store/utilisateurs.test.js b/packages/ui/src/store/utilisateurs.test.js new file mode 100644 index 0000000000000000000000000000000000000000..ee78a94d83835954211a33eb99b472e934aa3969 --- /dev/null +++ b/packages/ui/src/store/utilisateurs.test.js @@ -0,0 +1,99 @@ +import utilisateurs from './utilisateurs' +import { createApp } from 'vue' +import { createStore } from 'vuex' + +jest.mock('../api/utilisateurs', () => ({ + utilisateurs: jest.fn(), + utilisateurMetas: jest.fn() +})) + +console.info = jest.fn() + +describe('liste des utilisateurs', () => { + let store + + beforeEach(() => { + utilisateurs.state = { + metas: { + permission: [], + administration: [], + entreprise: [] + }, + definitions: [ + { id: 'permissionIds', type: 'strings', values: [] }, + { id: 'administrationIds', type: 'strings', values: [] }, + { id: 'entrepriseIds', type: 'strings', values: [] } + ] + } + + store = createStore({ + modules: { + utilisateurs, + titre: { + namespaced: true, + actions: { + openTab: jest.fn() + } + } + } + }) + + const app = createApp({}) + app.use(store) + }) + + test('enregistre les métas', () => { + const permissions = [ + { id: 'admin', nom: 'Admin' }, + { id: 'editeur', nom: 'Éditeur' } + ] + + const entreprisesElements = [ + { + id: 'fr-513863217', + nom: "SOCIETE GUYANAISE DES MINES D'OR (SOGUMINOR)" + }, + { id: 'fr-821136710', nom: 'SASU SOFERRO (SOFERRO)' } + ] + const entreprises = { + elements: entreprisesElements, + total: 4 + } + + const administrations = { + elements: [ + { + id: 'dre-nouvelle-aquitaine-01', + nom: "Direction régionale de l'environnement, de l'aménagement et du logement (DREAL) - Nouvelle-Aquitaine - Siège de Poitiers" + }, + { id: 'ope-onf-973-01', nom: 'Office national des forêts' } + ] + } + store.commit('utilisateurs/metasSet', { + permissions, + entreprises, + administrations, + truc: {} + }) + + expect(store.state.utilisateurs.metas).toEqual({ + permission: permissions, + entreprise: entreprises.elements, + administration: administrations.elements + }) + + expect(store.state.utilisateurs.definitions).toEqual([ + { id: 'permissionIds', type: 'strings', values: ['admin', 'editeur'] }, + { + id: 'administrationIds', + type: 'strings', + values: ['dre-nouvelle-aquitaine-01', 'ope-onf-973-01'] + }, + { + id: 'entrepriseIds', + type: 'strings', + values: ['fr-513863217', 'fr-821136710'] + } + ]) + }) +}) diff --git a/packages/ui/src/storybook.test.ts b/packages/ui/src/storybook.test.ts new file mode 100644 index 0000000000000000000000000000000000000000..e52d0ec59635fdfe33fe1495087df852c5129e17 --- /dev/null +++ b/packages/ui/src/storybook.test.ts @@ -0,0 +1,23 @@ +import initStoryshots, { + Stories2SnapsConverter +} from '@storybook/addon-storyshots' +import { mount } from '@vue/test-utils' +import { resolve } from 'path' + +initStoryshots({ + suite: 'Automated Storybook Snapshots', + configPath: '.storybook', + stories2snapsConverter: new Stories2SnapsConverter({ + snapshotExtension: '.storyshot', + storiesExtensions: ['.js', '.ts', '.mdx'] + }), + test: ({ story, context, stories2snapsConverter }) => { + const snapshotFileName = resolve( + stories2snapsConverter.getSnapshotFileName(context) + ) + + const storyElement = story.render() + const wrapper = mount(storyElement) + expect(wrapper.element).toMatchSpecificSnapshot(snapshotFileName) + } +}) diff --git a/packages/ui/src/styles/buttons.css b/packages/ui/src/styles/buttons.css new file mode 100644 index 0000000000000000000000000000000000000000..baf2e83631cdabf43744840f93217b5157488146 --- /dev/null +++ b/packages/ui/src/styles/buttons.css @@ -0,0 +1,95 @@ +/* + Buttons +------------------------------- +*/ + +:root { + --transition: opacity 0.25s, background-color 0.25s, border 0.25s, + box-shadow 0.25s, fill 0.25s; +} + +@button default { + button-border-width: 0; + button-color: var(--color-text) var(--color-bg) var(--color-bg); + button-background: var(--color-alt) var(--color-neutral) var(--color-neutral); + button-class: active disabled true; +} + +.btn { + button: default; +} + +.btn-primary { + button-border: var(--unit-px) var(--dsfr-bf500) var(--color-neutral) + var(--dsfr-color-hover); + button-color: var(--color-bg) var(--color-bg) var(--color-bg); + button-background: var(--dsfr-bf500) var(--color-neutral) + var(--dsfr-color-hover); + button-class: active disabled true; + border-radius: var(--unit-xs); + padding: var(--unit-s); + width: 100%; +} + +.btn-secondary { + button-border: var(--unit-px) var(--dsfr-bf500) var(--color-neutral) + var(--dsfr-color-hover); + button-color: var(--dsfr-bf500) var(--dsfr-bf500) var(--dsfr-bf500); + button-background: var(--color-bg) var(--color-neutral) var(--color-alt); + button-class: active disabled true; + border-radius: var(--unit-xs); + padding: var(--unit-s); + width: 100%; +} + +.btn-border { + button-border: var(--unit-px) var(--color-alt) var(--color-neutral) + var(--color-neutral); + button-color: var(--color-text) var(--color-bg) var(--color-bg); + button-background: var(--color-bg) var(--color-neutral) var(--color-neutral); + button-class: active disabled true; +} + +.btn-tab { + button-border: var(--unit-px) var(--color-alt) var(--color-neutral) + var(--color-neutral); + button-color: var(--color-text) var(--color-bg) var(--color-bg); + button-background: var(--color-transparent) var(--color-neutral) + var(--color-neutral); + button-class: active disabled; +} + +.btn-alt { + button-color: var(--color-text) var(--color-bg) var(--color-bg); + button-background: var(--color-transparent) var(--color-neutral) + var(--color-neutral); + button-class: active disabled false; +} + +.btn-flash { + button-color: var(--color-bg) var(--color-bg) var(--color-bg); + button-background: var(--color-neutral) var(--color-inverse) + var(--color-neutral); + button-class: active disabled false; +} + +.btn-menu { + button-color: var(--color-text) var(--color-neutral) var(--color-inverse); + button-background: var(--color-transparent) var(--color-transparent) + var(--color-transparent); + button-class: active disabled true; +} + +.btn, +.btn-alt, +.btn-border, +.btn-menu, +.btn-flash, +.btn-tab { + transition: var(--transition); + font-weight: 700; +} + +.btn-icon { + line-height: 1rem; +} diff --git a/packages/ui/src/styles/camino.css b/packages/ui/src/styles/camino.css new file mode 100644 index 0000000000000000000000000000000000000000..65e445a5b45e8f4bb043a54b523cb97297ffca27 --- /dev/null +++ b/packages/ui/src/styles/camino.css @@ -0,0 +1,393 @@ +:root { + --color-domaine-c: #b88847; + --color-domaine-f: #4a515d; + --color-domaine-g: #c94f17; + --color-domaine-h: #c2266a; + --color-domaine-i: #aaaaaa; + --color-domaine-m: #376faa; + --color-domaine-r: #a0aa31; + --color-domaine-s: #7657b5; + --color-domaine-w: #1ea88c; +} + +.leaflet-marker-camino::before { + display: block; + position: absolute; + top: 29px; + left: 16px; + content: ''; + width: 0; + height: 0; + border-left: 5.5px solid transparent; + border-right: 5.5px solid transparent; + border-top: 8px solid var(--color-bg); + margin-left: -5.5px; +} + +.leaflet-marker-cluster-xs { + box-shadow: 0 0 0 var(--unit-xxs) color-mod(var(--color-bg) alpha(100%)); +} + +.leaflet-marker-cluster-s { + box-shadow: 0 0 0 var(--unit-xs) color-mod(var(--color-bg) alpha(95%)); +} + +.leaflet-marker-cluster-m { + box-shadow: 0 0 0 var(--unit-s) color-mod(var(--color-bg) alpha(85%)); +} + +.leaflet-marker-cluster-l { + box-shadow: 0 0 0 var(--unit-m) color-mod(var(--color-bg) alpha(70%)); +} + +.bg-domaine-c { + background: var(--color-domaine-c); +} + +.bg-domaine-f { + background: var(--color-domaine-f); +} + +.bg-domaine-g { + background: var(--color-domaine-g); +} + +.bg-domaine-h { + background: var(--color-domaine-h); +} + +.bg-domaine-i { + background: var(--color-domaine-i); +} + +.bg-domaine-m { + background: var(--color-domaine-m); +} + +.bg-domaine-r { + background: var(--color-domaine-r); +} + +.bg-domaine-s { + background: var(--color-domaine-s); +} + +.bg-domaine-w { + background: var(--color-domaine-w); +} + +.svg-fill-domaine-c { + fill: var(--color-domaine-c); +} +.svg-fill-domaine-f { + fill: var(--color-domaine-f); +} +.svg-fill-domaine-g { + fill: var(--color-domaine-g); +} +.svg-fill-domaine-h { + fill: var(--color-domaine-h); +} +.svg-fill-domaine-i { + fill: var(--color-domaine-i); +} +.svg-fill-domaine-m { + fill: var(--color-domaine-m); +} +.svg-fill-domaine-r { + fill: var(--color-domaine-r); +} +.svg-fill-domaine-s { + fill: var(--color-domaine-s); +} +.svg-fill-domaine-w { + fill: var(--color-domaine-w); +} + +.svg-stroke { + stroke: var(--color-neutral); +} +.svg-stroke-domaine-c { + stroke: var(--color-domaine-c); +} +.svg-stroke-domaine-f { + stroke: var(--color-domaine-f); +} +.svg-stroke-domaine-g { + stroke: var(--color-domaine-g); +} +.svg-stroke-domaine-h { + stroke: var(--color-domaine-h); +} +.svg-stroke-domaine-m { + stroke: var(--color-domaine-m); +} +.svg-stroke-domaine-r { + stroke: var(--color-domaine-r); +} +.svg-stroke-domaine-s { + stroke: var(--color-domaine-s); +} +.svg-stroke-domaine-w { + stroke: var(--color-domaine-w); +} + +/* types */ +.svg-fill-pattern-ax { + fill: url(#pattern-ax); +} +.svg-fill-pattern-cx { + fill: url(#pattern-cx); +} +.svg-fill-pattern-pc { + fill: url(#pattern-pc); +} +.svg-fill-pattern-px { + fill: url(#pattern-px); +} +.svg-fill-pattern-ap { + fill: url(#pattern-ap); +} +.svg-fill-pattern-ar { + fill: url(#pattern-ar); +} +.svg-fill-pattern-pr { + fill: url(#pattern-pr); +} +.svg-fill-pattern-in { + fill: url(#pattern-in); +} + +/* c */ +.svg-fill-pattern-ax-c { + fill: url(#pattern-ax-c); +} +.svg-fill-pattern-cx-c { + fill: url(#pattern-cx-c); +} +.svg-fill-pattern-pc-c { + fill: url(#pattern-pc-c); +} +.svg-fill-pattern-px-c { + fill: url(#pattern-px-c); +} +.svg-fill-pattern-ap-c { + fill: url(#pattern-ap-c); +} +.svg-fill-pattern-ar-c { + fill: url(#pattern-ar-c); +} +.svg-fill-pattern-pr-c { + fill: url(#pattern-pr-c); +} +.svg-fill-pattern-in-c { + fill: url(#pattern-in-c); +} + +/* f */ +.svg-fill-pattern-ax-f { + fill: url(#pattern-ax-f); +} +.svg-fill-pattern-cx-f { + fill: url(#pattern-cx-f); +} +.svg-fill-pattern-pc-f { + fill: url(#pattern-pc-f); +} +.svg-fill-pattern-px-f { + fill: url(#pattern-px-f); +} +.svg-fill-pattern-ap-f { + fill: url(#pattern-ap-f); +} +.svg-fill-pattern-ar-f { + fill: url(#pattern-ar-f); +} +.svg-fill-pattern-pr-f { + fill: url(#pattern-pr-f); +} +.svg-fill-pattern-in-f { + fill: url(#pattern-in-f); +} + +/* g */ +.svg-fill-pattern-ax-g { + fill: url(#pattern-ax-g); +} +.svg-fill-pattern-cx-g { + fill: url(#pattern-cx-g); +} +.svg-fill-pattern-pc-g { + fill: url(#pattern-pc-g); +} +.svg-fill-pattern-px-g { + fill: url(#pattern-px-g); +} +.svg-fill-pattern-ap-g { + fill: url(#pattern-ap-g); +} +.svg-fill-pattern-ar-g { + fill: url(#pattern-ar-g); +} +.svg-fill-pattern-pr-g { + fill: url(#pattern-pr-g); +} +.svg-fill-pattern-in-g { + fill: url(#pattern-in-g); +} + +/* h */ +.svg-fill-pattern-ax-h { + fill: url(#pattern-ax-h); +} +.svg-fill-pattern-cx-h { + fill: url(#pattern-cx-h); +} +.svg-fill-pattern-pc-h { + fill: url(#pattern-pc-h); +} +.svg-fill-pattern-px-h { + fill: url(#pattern-px-h); +} +.svg-fill-pattern-ap-h { + fill: url(#pattern-ap-h); +} +.svg-fill-pattern-ar-h { + fill: url(#pattern-ar-h); +} +.svg-fill-pattern-pr-h { + fill: url(#pattern-pr-h); +} +.svg-fill-pattern-in-h { + fill: url(#pattern-in-h); +} + +/* i */ +.svg-fill-pattern-ax-i { + fill: url(#pattern-ax-i); +} +.svg-fill-pattern-cx-i { + fill: url(#pattern-cx-i); +} +.svg-fill-pattern-pc-i { + fill: url(#pattern-pc-i); +} +.svg-fill-pattern-px-i { + fill: url(#pattern-px-i); +} +.svg-fill-pattern-ap-i { + fill: url(#pattern-ap-i); +} +.svg-fill-pattern-ar-i { + fill: url(#pattern-ar-i); +} +.svg-fill-pattern-pr-i { + fill: url(#pattern-pr-i); +} +.svg-fill-pattern-in-i { + fill: url(#pattern-in-i); +} + +/* m */ +.svg-fill-pattern-ax-m { + fill: url(#pattern-ax-m); +} +.svg-fill-pattern-cx-m { + fill: url(#pattern-cx-m); +} +.svg-fill-pattern-pc-m { + fill: url(#pattern-pc-m); +} +.svg-fill-pattern-px-m { + fill: url(#pattern-px-m); +} +.svg-fill-pattern-ap-m { + fill: url(#pattern-ap-m); +} +.svg-fill-pattern-ar-m { + fill: url(#pattern-ar-m); +} +.svg-fill-pattern-pr-m { + fill: url(#pattern-pr-m); +} +.svg-fill-pattern-in-m { + fill: url(#pattern-in-m); +} + +/* r */ +.svg-fill-pattern-ax-r { + fill: url(#pattern-ax-r); +} +.svg-fill-pattern-cx-r { + fill: url(#pattern-cx-r); +} +.svg-fill-pattern-pc-r { + fill: url(#pattern-pc-r); +} +.svg-fill-pattern-px-r { + fill: url(#pattern-px-r); +} +.svg-fill-pattern-ap-r { + fill: url(#pattern-ap-r); +} +.svg-fill-pattern-ar-r { + fill: url(#pattern-ar-r); +} +.svg-fill-pattern-pr-r { + fill: url(#pattern-pr-r); +} +.svg-fill-pattern-in-r { + fill: url(#pattern-in-r); +} + +/* s */ +.svg-fill-pattern-ax-s { + fill: url(#pattern-ax-s); +} +.svg-fill-pattern-cx-s { + fill: url(#pattern-cx-s); +} +.svg-fill-pattern-pc-s { + fill: url(#pattern-pc-s); +} +.svg-fill-pattern-px-s { + fill: url(#pattern-px-s); +} +.svg-fill-pattern-ap-s { + fill: url(#pattern-ap-s); +} +.svg-fill-pattern-ar-s { + fill: url(#pattern-ar-s); +} +.svg-fill-pattern-pr-s { + fill: url(#pattern-pr-m); +} +.svg-fill-pattern-in-s { + fill: url(#pattern-in-s); +} + +/* w */ +.svg-fill-pattern-ax-w { + fill: url(#pattern-ax-w); +} +.svg-fill-pattern-cx-w { + fill: url(#pattern-cx-w); +} +.svg-fill-pattern-pc-w { + fill: url(#pattern-pc-w); +} +.svg-fill-pattern-px-w { + fill: url(#pattern-px-w); +} +.svg-fill-pattern-ap-w { + fill: url(#pattern-ap-w); +} +.svg-fill-pattern-ar-w { + fill: url(#pattern-ar-w); +} +.svg-fill-pattern-pr-w { + fill: url(#pattern-pr-w); +} +.svg-fill-pattern-in-w { + fill: url(#pattern-in-w); +} diff --git a/packages/ui/src/styles/grids/grid-fluid.css b/packages/ui/src/styles/grids/grid-fluid.css new file mode 100644 index 0000000000000000000000000000000000000000..868ff1c73f6faf147a6bb70d6d130e60afa2b39f --- /dev/null +++ b/packages/ui/src/styles/grids/grid-fluid.css @@ -0,0 +1,219 @@ +/* + postcss-grid-fluid +------------------------------- + +https://github.com/francoisromain/postcss-grid-fluid +*/ + +@gf { + gutter: var(--gutter); + display: flex; +} + +.blobs { + gf: row; +} + +.blob-1 { + gf: blob 1; +} + +.blob-1-2 { + gf: blob 1/2; +} + +.blob-1-3 { + gf: blob 1/3; +} + +.blob-2-3 { + gf: blob 2/3; +} + +.blob-1-4 { + gf: blob 1/4; +} + +.blob-3-4 { + gf: blob 3/4; +} + +.blob-1-6 { + gf: blob 1/6; +} + +.blob-5-6 { + gf: blob 5/6; +} + +.blobs-mini { + gf: row var(--unit-s); +} + +.blob-mini-1-3 { + gf: blob 1/3 var(--unit-s); +} + +.blob-mini-2-3 { + gf: blob 2/3 var(--unit-s); +} + +.blob-mini-1-2 { + gf: blob 1/2 var(--unit-s); +} + +@media (--viewport-mobile) { + .mobile-blobs { + gf: row; + } + + .mobile-blob-1 { + gf: blob 1; + } + + .mobile-blob-1-2 { + gf: blob 1/2; + } + + .mobile-blob-1-3 { + gf: blob 1/3; + } + + .mobile-blob-2-3 { + gf: blob 2/3; + } + + .mobile-blob-1-4 { + gf: blob 1/4; + } + + .mobile-blob-3-4 { + gf: blob 3/4; + } + + .mobile-blob-1-6 { + gf: blob 1/6; + } + + .mobile-blob-5-6 { + gf: blob 5/6; + } +} + +@media (--viewport-tablet) { + .tablet-blobs { + gf: row; + } + + .tablet-blob-1 { + gf: blob 1; + } + + .tablet-blob-1-2 { + gf: blob 1/2; + } + + .tablet-blob-1-3 { + gf: blob 1/3; + } + + .tablet-blob-2-3 { + gf: blob 2/3; + } + + .tablet-blob-1-4 { + gf: blob 1/4; + } + + .tablet-blob-3-4 { + gf: blob 3/4; + } + + .tablet-blob-1-6 { + gf: blob 1/6; + } + + .tablet-blob-5-6 { + gf: blob 5/6; + } + + .tablet-blob-3-8 { + gf: blob 3/8; + } +} + +@media (--viewport-desktop) { + .desktop-blobs { + gf: row; + } + + .desktop-blob-1 { + gf: blob 1; + } + + .desktop-blob-1-2 { + gf: blob 1/2; + } + + .desktop-blob-1-3 { + gf: blob 1/3; + } + + .desktop-blob-2-3 { + gf: blob 2/3; + } + + .desktop-blob-1-4 { + gf: blob 1/4; + } + + .desktop-blob-3-4 { + gf: blob 3/4; + } + + .desktop-blob-1-6 { + gf: blob 1/6; + } + + .desktop-blob-5-6 { + gf: blob 5/6; + } +} + +@media (--viewport-large) { + .large-blobs { + gf: row; + } + + .large-blob-1 { + gf: blob 1; + } + + .large-blob-1-2 { + gf: blob 1/2; + } + + .large-blob-1-3 { + gf: blob 1/3; + } + + .large-blob-2-3 { + gf: blob 2/3; + } + + .large-blob-1-4 { + gf: blob 1/4; + } + + .large-blob-3-4 { + gf: blob 3/4; + } + + .large-blob-1-6 { + gf: blob 1/6; + } + + .large-blob-5-6 { + gf: blob 5/6; + } +} diff --git a/packages/ui/src/styles/grids/grid-system.css b/packages/ui/src/styles/grids/grid-system.css new file mode 100644 index 0000000000000000000000000000000000000000..78f80e0e3040425fd02185eaf135a97751b53a5f --- /dev/null +++ b/packages/ui/src/styles/grids/grid-system.css @@ -0,0 +1,187 @@ +/* + postcss-grid-system +------------------------------- + +https://github.com/francoisromain/postcss-grid-system + +*/ + +@gs { + width: var(--col-width); + gutter: var(--gutter); + padding: var(--container-padding); + max: 8; + min: 2; + display: flex; + align: center; +} + +.container { + gs: container; +} + +.row { + gs: row; +} + +.bloc-one-half { + gs: fraction 1/2; +} + +.bloc-three-half { + gs: fraction 3/2; +} + +.bloc-one-third { + gs: fraction 1/3; +} + +.bloc-two-third { + gs: fraction 2/3; +} + +.bloc-one-fourth { + gs: fraction 1/4; +} + +.bloc-three-fourth { + gs: fraction 3/4; +} + +.bloc-five-fourth { + gs: fraction 5/4; +} + +@gs-media 2 { + .bloc-2-1 { + gs: bloc 1; + } + + .bloc-2-2 { + gs: bloc 2; + } + + .bloc-2-3 { + gs: bloc 3; + } + + .bloc-2-4 { + gs: bloc 4; + } + + .bloc-2-5 { + gs: bloc 5; + } + + .bloc-2-6 { + gs: bloc 6; + } + + .bloc-2-7 { + gs: bloc 7; + } + + .bloc-2-8 { + gs: bloc 8; + } +} + +@gs-media 1 { + .show-1 { + display: flex; + visibility: visible; + } + + .hide-1 { + display: none; + visibility: hidden; + } +} + +@gs-media 2 { + .show-2 { + display: flex; + visibility: visible; + } + + .right-2 { + margin-left: auto; + } + + .hide-2 { + display: none; + visibility: hidden; + } +} + +@gs-media 3 { + .show-3 { + display: flex; + visibility: visible; + } + + .hide-3 { + display: none; + visibility: hidden; + } +} + +@gs-media 4 { + .show-4 { + display: flex; + visibility: visible; + } + + .hide-4 { + display: none; + visibility: hidden; + } +} + +@gs-media 5 { + .show-5 { + display: flex; + visibility: visible; + } + + .hide-5 { + display: none; + visibility: hidden; + } +} + +@gs-media 6 { + .show-6 { + display: flex; + visibility: visible; + } + + .hide-6 { + display: none; + visibility: hidden; + } +} + +@gs-media 7 { + .show-7 { + display: flex; + visibility: visible; + } + + .hide-7 { + display: none; + visibility: hidden; + } +} + +@gs-media 8 { + .show-8 { + display: flex; + visibility: visible; + } + + .hide-8 { + display: none; + visibility: hidden; + } +} diff --git a/packages/ui/src/styles/grids/grid-utils.css b/packages/ui/src/styles/grids/grid-utils.css new file mode 100644 index 0000000000000000000000000000000000000000..870ec4d11c50067469fe30433e1eeb9fe840c89c --- /dev/null +++ b/packages/ui/src/styles/grids/grid-utils.css @@ -0,0 +1,127 @@ +:root { + --container-width: 100%; + --margin-width-full-p: 0; + --margin-width-full: calc(-1 * var(--container-padding)); +} + +.container { + padding-left: var(--container-padding); + padding-right: var(--container-padding); + margin-left: auto; + margin-right: auto; + width: var(--container-width); +} + +.width-full-p { + margin-left: var(--margin-width-full-p); + margin-right: var(--margin-width-full-p); +} + +.width-full { + margin-left: var(--margin-width-full); + margin-right: var(--margin-width-full); +} + +.blobs-packed { + clear: both; + display: flex; + flex-flow: row wrap; + align-items: flex-start; + align-content: flex-start; +} + +.blob-packed-1-2 { + flex: 0 1 50%; +} + +.blob { + margin-right: var(--gutter); + flex: 0 1 0; +} + +.blob-auto { + margin-right: var(--gutter); + flex: 0 1 auto; +} + +@media (--viewport-mobile) { + .mobile-blob { + margin-right: var(--gutter); + flex: 0 1 0; + } + + .mobile-blob-auto { + margin-right: var(--gutter); + flex: 0 1 auto; + } +} + +@media (--viewport-tablet) { + .tablet-flex { + display: flex; + } + + .tablet-flex-right { + margin-left: auto; + } + + .tablet-flex-direction-reverse { + flex-direction: row-reverse; + } + + .tablet-blob { + margin-right: var(--gutter); + flex: 0 1 0; + } + + .tablet-blob-auto { + margin-right: var(--gutter); + flex: 0 1 auto; + } + + .tablet-float-blobs { + clear: both; + margin-right: calc(-1 * var(--gutter)); + } + + .tablet-float-blob-1-3 { + margin-right: var(--gutter); + width: calc(33.33333% - var(--gutter)); + float: left; + } + + .tablet-float-blob-2-3 { + margin-right: var(--gutter); + width: calc(66.66667% - var(--gutter)); + float: left; + } +} + +@media (--viewport-desktop) { + :root { + --container-width: calc(3 * var(--col-width) + var(--gutter)); + + --margin-width-full-p: calc( + -1 * (100vw - (var(--container-width) + (2 * var(--container-padding)))) / + 2 + ); + + --margin-width-full: calc( + var(--margin-width-full-p) - (2 * var(--container-padding)) + ); + } + + .desktop-flex { + display: flex; + } + + .desktop-flex-right { + margin-left: auto; + } +} + +@media (--viewport-large) { + :root { + --container-width: calc(4 * var(--col-width) + var(--gutter)); + } +} diff --git a/packages/ui/src/styles/icons/icons.css b/packages/ui/src/styles/icons/icons.css new file mode 100644 index 0000000000000000000000000000000000000000..d0a37b2aa8dd04fd2e17026652004aee01a074a5 --- /dev/null +++ b/packages/ui/src/styles/icons/icons.css @@ -0,0 +1,771 @@ +.icon { + width: 100%; + height: 100%; + display: block; + background-size: cover; +} + +.icon-8 { + width: calc(var(--base-font-size) / 2); + height: calc(var(--base-font-size) / 2); + display: block; +} + +.icon-12 { + width: calc(var(--unit) / 2); + height: calc(var(--unit) / 2); + display: block; + background-repeat: no-repeat; +} + +.icon-16 { + width: calc(var(--unit) * 2 / 3); + height: calc(var(--unit) * 2 / 3); + display: block; +} + +.icon-24 { + width: var(--unit); + height: var(--unit); + display: block; + background-repeat: no-repeat; + background-position: top center; +} + +.icon-48 { + width: var(--unit-xl); + height: var(--unit-xl); + display: block; + background-repeat: no-repeat; +} + +.icon-128 { + width: calc(var(--unit) * 5); + height: calc(var(--unit) * 5); + display: inline-block; + vertical-align: middle; + background-repeat: no-repeat; +} + +.icon-close { + background-image: svg-load('./svgs/24-close.svg', + fill=none, + stroke= '#666', + stroke-linecap=round, + stroke-linejoin=round, + stroke-width=1.25px + ); +} + +.btn-flash .icon-close, +.btn-flash:hover .icon-close, +.btn-alt:hover .icon-close { + background-image: svg-load('./svgs/24-close.svg', + fill=none, + stroke= 'white', + stroke-linecap=round, + stroke-linejoin=round, + stroke-width=1.25px + ); +} + +.icon-x { + background-image: svg-load('./svgs/16-x.svg', fill= 'white'); +} + +.icon-plus { + background-image: svg-load('./svgs/24-plus.svg', + fill='#666' + ); +} + +.btn-alt .icon-plus, +.btn-primary .icon-plus, +.btn:hover .icon-plus, +.btn-alt:hover .icon-plus, +.btn-border:hover .icon-plus { + background-image: svg-load('./svgs/24-plus.svg', + fill='white' + ); +} + +.icon-check { + background-image: svg-load('./svgs/24-check.svg', + fill=none, + stroke= '#666', + stroke-linecap=round, + stroke-linejoin=round, + stroke-width=1.25px + ); +} + +.btn:hover .icon-check { + background-image: svg-load('./svgs/24-check.svg', + fill=none, + stroke= 'white', + stroke-linecap=round, + stroke-linejoin=round, + stroke-width=1.25px + ); +} + +.icon-refresh { + background-image: svg-load('./svgs/24-refresh.svg', + fill=none, + stroke= '#666', + stroke-linecap=round, + stroke-linejoin=round, + stroke-width=1.25px + ); +} + +.btn:hover .icon-refresh { + background-image: svg-load('./svgs/24-refresh.svg', + fill=none, + stroke= 'white', + stroke-linecap=round, + stroke-linejoin=round, + stroke-width=1.25px + ); +} + +.icon-cross { + background-image: svg-load('./svgs/24-cross.svg', + fill=none, + stroke= '#666', + stroke-linecap=round, + stroke-linejoin=round, + stroke-width=1.25px + ); +} + +.btn:hover .icon-cross { + background-image: svg-load('./svgs/24-cross.svg', + fill=none, + stroke= 'white', + stroke-linecap=round, + stroke-linejoin=round, + stroke-width=1.25px + ); +} + +.icon-square { + background-image: svg-load('./svgs/24-square.svg', + fill=none, + stroke= '#666', + stroke-linecap=round, + stroke-linejoin=round, + stroke-width=1.25px + ); +} + +.btn:hover .icon-square { + background-image: svg-load('./svgs/24-square.svg', + fill=none, + stroke= 'white', + stroke-linecap=round, + stroke-linejoin=round, + stroke-width=1.25px + ); +} + +.icon-minus { + background-image: svg-load('./svgs/24-minus.svg', + fill='#666' + ); +} + +.btn:hover .icon-minus, +.btn-border:hover .icon-minus { + background-image: svg-load('./svgs/24-minus.svg', + fill='white' + ); +} + +.icon-chevron-b { + background-image: svg-load('./svgs/24-chevron-b.svg', + fill='#666' + ); +} + +.btn-border:hover .icon-chevron-b, +.btn:hover .icon-chevron-b, +.btn-alt:hover .icon-chevron-b { + background-image: svg-load('./svgs/24-chevron-b.svg', + fill='white' + ); +} + +.icon-chevron-t { + background-image: svg-load('./svgs/24-chevron-t.svg', + fill='#666' + ); +} + +.btn-border:hover .icon-chevron-t, +.btn:hover .icon-chevron-t, +.btn-alt:hover .icon-chevron-t { + background-image: svg-load('./svgs/24-chevron-t.svg', + fill='white' + ); +} + +.icon-file { + background-image: svg-load('./svgs/16-file.svg', + fill=none, + stroke= '#666', + stroke-linecap=round, + stroke-linejoin=round, + stroke-width=1.25px + ); +} + +.icon-file-plus { + background-image: svg-load('./svgs/24-file-plus.svg', + fill=none, + stroke= '#666', + stroke-linecap=round, + stroke-linejoin=round, + stroke-width=1.25px + ); +} + +.btn:hover .icon-file-plus { + background-image: svg-load('./svgs/24-file-plus.svg', + fill=none, + stroke= 'white', + stroke-linecap=round, + stroke-linejoin=round, + stroke-width=1.25px + ); +} + +.icon-file-link { + background-image: svg-load('./svgs/24-file-link.svg', + fill=none, + stroke= '#666', + stroke-linecap=round, + stroke-linejoin=round, + stroke-width=1.25px + ); +} + +.btn:hover .icon-file-link { + background-image: svg-load('./svgs/24-file-link.svg', + fill=none, + stroke= 'white', + stroke-linecap=round, + stroke-linejoin=round, + stroke-width=1.25px + ); +} + +.icon-unlink { + background-image: svg-load('./svgs/24-unlink.svg', + fill=none, + stroke= '#666', + stroke-linecap=round, + stroke-linejoin=round, + stroke-width=1.25px + ); +} + +.btn:hover .icon-unlink { + background-image: svg-load('./svgs/24-unlink.svg', + fill=none, + stroke= 'white', + stroke-linecap=round, + stroke-linejoin=round, + stroke-width=1.25px + ); +} + +.icon-file-chevron-b { + background-image: svg-load('./svgs/24-file-chevron-b.svg', + fill=none, + stroke= '#666', + stroke-linecap=round, + stroke-linejoin=round, + stroke-width=1.25px + ); +} + +.btn-border:hover .icon-file-chevron-b, +.btn-alt:hover .icon-file-chevron-b { + background-image: svg-load('./svgs/24-file-chevron-b.svg', + fill=none, + stroke= 'white', + stroke-linecap=round, + stroke-linejoin=round, + stroke-width=1.25px + ); +} + +.icon-file-chevron-t { + background-image: svg-load('./svgs/24-file-chevron-t.svg', + fill=none, + stroke= '#666', + stroke-linecap=round, + stroke-linejoin=round, + stroke-width=1.25px + ); +} + +.btn-border:hover .icon-file-chevron-t, +.btn-alt:hover .icon-file-chevron-t { + background-image: svg-load('./svgs/24-file-chevron-t.svg', + fill=none, + stroke= 'white', + stroke-linecap=round, + stroke-linejoin=round, + stroke-width=1.25px + ); +} + +.icon-download { + background-image: svg-load('./svgs/24-download.svg', + fill='#666' + ); +} + +.btn-border:hover .icon-download, +.btn-alt:hover .icon-download { + background-image: svg-load('./svgs/24-download.svg', + fill='white' + ); +} + +.icon-view { + background-image: svg-load('./svgs/24-view.svg', + fill=none, + stroke= '#666', + stroke-linecap=round, + stroke-linejoin=round, + stroke-width=1.25px + ); +} + +.icon-link { + background-image: svg-load('./svgs/24-link.svg', + fill=none, + stroke= '#666', + stroke-linecap=round, + stroke-linejoin=round, + stroke-width=1.25px + ); +} + +.btn-border:hover .icon-link { + background-image: svg-load('./svgs/24-link.svg', + fill=none, + stroke= 'white', + stroke-linecap=round, + stroke-linejoin=round, + stroke-width=1.25px + ); +} + +.icon-login { + background-image: svg-load('./svgs/24-login.svg', + fill=none, + stroke= '#666', + stroke-linecap=round, + stroke-linejoin=round, + stroke-width=1.25px + ); +} + +.btn-alt:hover .icon-login { + background-image: svg-load('./svgs/24-login.svg', + fill=none, + stroke= 'white', + stroke-linecap=round, + stroke-linejoin=round, + stroke-width=1.25px + ); +} + +.icon-user { + background-image: svg-load('./svgs/24-user.svg', + fill='#666', + stroke-linecap=round, + stroke-linejoin=round + ); +} + +.btn-border:hover .icon-user, +.active .btn-border .icon-user { + background-image: svg-load('./svgs/24-user.svg', + fill=white, + stroke-linecap=round, + stroke-linejoin=round + ); +} + +.icon-menu { + background-image: svg-load('./svgs/24-menu.svg', + fill='#666' + ); +} + +.btn-border:hover .icon-menu, +.active .btn-border .icon-menu { + background-image: svg-load('./svgs/24-menu.svg', + fill='white' + ); +} + +.icon-pencil { + background-image: svg-load('./svgs/24-pencil.svg', + fill=none, + stroke= '#666', + stroke-linecap=round, + stroke-linejoin=round, + stroke-width=1.25px + ); +} + +.btn-primary .icon-pencil, +.btn:hover .icon-pencil, +.btn-alt:hover .icon-pencil, +.btn-border:hover .icon-pencil { + background-image: svg-load('./svgs/24-pencil.svg', + fill=none, + stroke= 'white', + stroke-linecap=round, + stroke-linejoin=round, + stroke-width=1.25px + ); +} + +.icon-at { + background-image: svg-load('./svgs/24-at.svg', + fill=none, + stroke= '#666', + stroke-linecap=round, + stroke-linejoin=round, + stroke-width=1.25px + ); +} + +.btn-alt:hover .icon-at { + background-image: svg-load('./svgs/24-at.svg', + fill=none, + stroke= 'white', + stroke-linecap=round, + stroke-linejoin=round, + stroke-width=1.25px + ); +} + +.icon-key { + background-image: svg-load('./svgs/24-key.svg', + fill=none, + stroke= '#666', + stroke-linecap=round, + stroke-linejoin=round, + stroke-width=1.25px + ); +} + +.btn-alt:hover .icon-key { + background-image: svg-load('./svgs/24-key.svg', + fill=none, + stroke= 'white', + stroke-linecap=round, + stroke-linejoin=round, + stroke-width=1.25px + ); +} + +.icon-trash { + background-image: svg-load('./svgs/24-trash.svg', + fill=none, + stroke= '#666', + stroke-linecap=round, + stroke-linejoin=round, + stroke-width=1.25px + ); +} + +.btn:hover .icon-trash, +.btn-alt:hover .icon-trash, +.btn-border:hover .icon-trash { + background-image: svg-load('./svgs/24-trash.svg', + fill=none, + stroke= 'white', + stroke-linecap=round, + stroke-linejoin=round, + stroke-width=1.25px + ); +} + +.icon-24-dot.blink { + animation: blinker 0.2s ease infinite; +} + +@keyframes blinker { + 50% { + background-image: svg-load('./svgs/24-dot.svg', fill= 'white'); + } +} + +.icon-globe { + background-image: svg-load('./svgs/globe-3.svg', + fill='#666' + ); +} + +.span-tab .icon-globe, +.btn-tab:hover .icon-globe { + background-image: svg-load('./svgs/globe-3.svg', + fill='white' + ); +} + +.icon-list { + background-image: svg-load('./svgs/list-bullets.svg', + fill='#666' + ); +} + +.span-tab .icon-list, +.btn-tab:hover .icon-list { + background-image: svg-load('./svgs/list-bullets.svg', + fill='white' + ); +} + +.icon-map { + background-image: svg-load('./svgs/map-pin-2.svg', + fill=none, + stroke= '#76b6bd', + stroke-linecap=round, + stroke-linejoin=round, + stroke-width=1px + ); +} + +.icon-dashboard { + background-image: svg-load('./svgs/window-speedtest.svg', + fill=none, + stroke= '#76b6bd', + stroke-linecap=round, + stroke-linejoin=round, + stroke-width=1px + ); +} + +.icon-api { + background-image: svg-load('./svgs/cloud-setting.svg', + fill=none, + stroke= '#76b6bd', + stroke-linecap=round, + stroke-linejoin=round, + stroke-width=1px + ); +} + +.icon-user-check { + background-image: svg-load('./svgs/business-check.svg', + fill=none, + stroke= '#76b6bd', + stroke-linecap=round, + stroke-linejoin=round, + stroke-width=1px + ); +} + +.icon-ngo { + background-image: svg-load('./svgs/group-global.svg', + fill=none, + stroke= '#76b6bd', + stroke-linecap=round, + stroke-linejoin=round, + stroke-width=1px + ); +} + +.icon-business { + background-image: svg-load('./svgs/building-2.svg', + fill=none, + stroke= '#76b6bd', + stroke-linecap=round, + stroke-linejoin=round, + stroke-width=1px + ); +} + +.icon-markers-clusters { + background-image: svg-load('./svgs/24-markers-grouped.svg', + fill='#666' + ); +} + +.icon-markers-markers { + background-image: svg-load('./svgs/24-markers-ungrouped.svg', + fill='#666' + ); +} + +.icon-markers-none { + background-image: svg-load('./svgs/24-markers-none.svg', + fill='#666' + ); +} + +.active .icon-markers-clusters, +.btn-border:hover .icon-markers-clusters{ + background-image: svg-load('./svgs/24-markers-grouped.svg', + fill='white' + ); +} + +.active .icon-markers-markers, +.btn-border:hover .icon-markers-markers{ + background-image: svg-load('./svgs/24-markers-ungrouped.svg', + fill='white' + ); +} + +.active .icon-markers-none, +.btn-border:hover .icon-markers-none{ + background-image: svg-load('./svgs/24-markers-none.svg', + fill='white' + ); +} + +.icon-pattern { + background-image: svg-load('./svgs/24-pattern.svg', + fill= '#666', + stroke=none, + stroke-linecap=round, + stroke-linejoin=round, + stroke-width=1.25px + ); +} + +.active .icon-pattern, +.btn-border:hover .icon-pattern{ + background-image: svg-load('./svgs/24-pattern.svg', + fill= 'white', + stroke=none, + stroke-linecap=round, + stroke-linejoin=round, + stroke-width=1.25px + ); +} + +.icon-window-link { + background-image: svg-load('./svgs/24-window-link.svg', + fill=none, + stroke= '#666', + stroke-linecap=round, + stroke-linejoin=round, + stroke-width=1.25px + ); +} + +.btn-alt:hover .icon-window-link { + background-image: svg-load('./svgs/24-window-link.svg', + fill=none, + stroke= 'white', + stroke-linecap=round, + stroke-linejoin=round, + stroke-width=1.25px + ); +} + +.icon-move-down { + background-image: svg-load('./svgs/24-move-down.svg', + fill=none, + stroke= '#666', + stroke-linecap=round, + stroke-linejoin=round, + stroke-width=1.25px + ); +} + +.btn-border:hover .icon-move-down { + background-image: svg-load('./svgs/24-move-down.svg', + fill=none, + stroke= 'white', + stroke-linecap=round, + stroke-linejoin=round, + stroke-width=1.25px + ); +} + +.icon-move-up { + background-image: svg-load('./svgs/24-move-up.svg', + fill=none, + stroke= '#666', + stroke-linecap=round, + stroke-linejoin=round, + stroke-width=1.25px + ); +} + +.btn-border:hover .icon-move-up { + background-image: svg-load('./svgs/24-move-up.svg', + fill=none, + stroke= 'white', + stroke-linecap=round, + stroke-linejoin=round, + stroke-width=1.25px + ); +} + +.icon-announcement { + background-image: svg-load('./svgs/48-announcement.svg', + fill=none, + stroke= '#666', + stroke-linecap=round, + stroke-linejoin=round, + stroke-width=2px + ); +} + +.icon-help { + background-image: svg-load('./svgs/info.svg', + fill= '#666', + stroke-width=1.25px + ); +} + + +.btn-alt:hover .icon-help { + background-image: svg-load('./svgs/info.svg', + stroke-width=1.25px + ); +} + +.icon-map-legend { + height: calc(var(--unit) * 1); + width: calc(var(--unit) * 2); + background-repeat: no-repeat; +} + +.icon-map-legend-sdom-zone-0 { + background-image: svg-load('./svgs/map-legend-sdom-zone.svg', + fill='#0000ff' + ); +} + +.icon-map-legend-sdom-zone-0-potentielle { + background-image: svg-load('./svgs/map-legend-sdom-zone.svg', + fill='url(#texture_diagonal)' + ); +} + +.icon-map-legend-sdom-zone-1 { + background-image: svg-load('./svgs/map-legend-sdom-zone.svg', + fill='#00ff7f' + ); +} + +.icon-map-legend-sdom-zone-2 { + background-image: svg-load('./svgs/map-legend-sdom-zone.svg', + fill='#ffaa00' + ); +} diff --git a/packages/ui/src/styles/icons/svgs/16-file.svg b/packages/ui/src/styles/icons/svgs/16-file.svg new file mode 100644 index 0000000000000000000000000000000000000000..251717eea625e6d849a6de3e3cdf0afbafe88276 --- /dev/null +++ b/packages/ui/src/styles/icons/svgs/16-file.svg @@ -0,0 +1,3 @@ +<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2"> + <path d="M13.5 5.167V14.5c0 .549-.451 1-1 1h-9c-.549 0-1-.451-1-1v-13c0-.549.451-1 1-1h5.333L13.5 5.167z" fill="none"/> +</svg> diff --git a/packages/ui/src/styles/icons/svgs/16-x.svg b/packages/ui/src/styles/icons/svgs/16-x.svg new file mode 100644 index 0000000000000000000000000000000000000000..7e60ebdf4fc3305c46a649cd647f1b5d82d7185b --- /dev/null +++ b/packages/ui/src/styles/icons/svgs/16-x.svg @@ -0,0 +1,3 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill-rule="evenodd" clip-rule="evenodd"> + <path d="M8 0c4.415 0 8 3.585 8 8s-3.585 8-8 8-8-3.585-8-8 3.585-8 8-8zm0 6.586l2.828-2.829a1.002 1.002 0 011.415 0c.39.391.39 1.024 0 1.415L9.414 8l2.829 2.828c.39.391.39 1.024 0 1.415-.391.39-1.024.39-1.415 0L8 9.414l-2.828 2.829c-.391.39-1.024.39-1.415 0a1.002 1.002 0 010-1.415L6.586 8 3.757 5.172a1.002 1.002 0 010-1.415 1.002 1.002 0 011.415 0L8 6.586z"/> +</svg> diff --git a/packages/ui/src/styles/icons/svgs/24-at.svg b/packages/ui/src/styles/icons/svgs/24-at.svg new file mode 100644 index 0000000000000000000000000000000000000000..0ddeeec06f8a027b972fb771de1997f2f8a9e64e --- /dev/null +++ b/packages/ui/src/styles/icons/svgs/24-at.svg @@ -0,0 +1,4 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"> + <path d="M7.5 12c0 2.469 2.031 4.5 4.5 4.5s4.5-2.031 4.5-4.5-2.031-4.5-4.5-4.5S7.5 9.531 7.5 12z"/> + <path d="M18.5 21.5a11.51 11.51 0 01-6.509 2.017C5.677 23.517.482 18.322.482 12.008.482 5.695 5.677.499 11.991.499 18.301.499 23.495 5.69 23.5 12v1c0 1.92-1.58 3.5-3.5 3.5s-3.5-1.58-3.5-3.5v-1"/> +</svg> diff --git a/packages/ui/src/styles/icons/svgs/24-check.svg b/packages/ui/src/styles/icons/svgs/24-check.svg new file mode 100644 index 0000000000000000000000000000000000000000..3caf03b23b9fe747c93b01ffb4560bb29dabedd0 --- /dev/null +++ b/packages/ui/src/styles/icons/svgs/24-check.svg @@ -0,0 +1,4 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"> + <path d="M18 6.999l-7 9.5-5-4"/> + <path d="M2.5 2.499h19v19h-19z"/> +</svg> diff --git a/packages/ui/src/styles/icons/svgs/24-chevron-b.svg b/packages/ui/src/styles/icons/svgs/24-chevron-b.svg new file mode 100644 index 0000000000000000000000000000000000000000..c683b0dfe7ee058cf6895c43bfbd7a35e69333a1 --- /dev/null +++ b/packages/ui/src/styles/icons/svgs/24-chevron-b.svg @@ -0,0 +1,3 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"> + <path d="M12 13.172l4.95-4.95 1.414 1.414L12 16 5.636 9.636 7.05 8.222z"/> +</svg> diff --git a/packages/ui/src/styles/icons/svgs/24-chevron-t.svg b/packages/ui/src/styles/icons/svgs/24-chevron-t.svg new file mode 100644 index 0000000000000000000000000000000000000000..9689e17bab30d0e104c04e1ab1591e1a17819862 --- /dev/null +++ b/packages/ui/src/styles/icons/svgs/24-chevron-t.svg @@ -0,0 +1,3 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"> + <path d="M12 10.828l-4.95 4.95-1.414-1.414L12 8l6.364 6.364-1.414 1.414z"/> +</svg> diff --git a/packages/ui/src/styles/icons/svgs/24-close.svg b/packages/ui/src/styles/icons/svgs/24-close.svg new file mode 100644 index 0000000000000000000000000000000000000000..0c3bd470491184ca6c98d2836c39aac0ef6b3fda --- /dev/null +++ b/packages/ui/src/styles/icons/svgs/24-close.svg @@ -0,0 +1,3 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"> + <path class="st0" d="M2 2l20 20m0-20L2 22"/> +</svg> diff --git a/packages/ui/src/styles/icons/svgs/24-cross.svg b/packages/ui/src/styles/icons/svgs/24-cross.svg new file mode 100644 index 0000000000000000000000000000000000000000..6a1934723978c7b8fe51f138663ababf63f9e60e --- /dev/null +++ b/packages/ui/src/styles/icons/svgs/24-cross.svg @@ -0,0 +1,3 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"> + <path d="M2.5 2.499h19v19h-19zm4.5 14.5l10-10m0 10l-10-10"/> +</svg> diff --git a/packages/ui/src/styles/icons/svgs/24-dot.svg b/packages/ui/src/styles/icons/svgs/24-dot.svg new file mode 100644 index 0000000000000000000000000000000000000000..d0e0081884cc0719bc1f058f203c994c35a2ac8e --- /dev/null +++ b/packages/ui/src/styles/icons/svgs/24-dot.svg @@ -0,0 +1,3 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"> + <circle cx="11.5" cy="11.5" r="6"/> +</svg> diff --git a/packages/ui/src/styles/icons/svgs/24-download.svg b/packages/ui/src/styles/icons/svgs/24-download.svg new file mode 100644 index 0000000000000000000000000000000000000000..ce76554889aeea2ef51f1d604cea764f476cea4b --- /dev/null +++ b/packages/ui/src/styles/icons/svgs/24-download.svg @@ -0,0 +1,3 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="20" height="20"> + <path d="M3 19h18v2H3v-2zm10-5.828L19.071 7.1l1.414 1.414L12 17 3.515 8.515 4.929 7.1 11 13.17V2h2v11.172z"/> +</svg> diff --git a/packages/ui/src/styles/icons/svgs/24-file-chevron-b.svg b/packages/ui/src/styles/icons/svgs/24-file-chevron-b.svg new file mode 100644 index 0000000000000000000000000000000000000000..494ab91ea98cd6b92f155a48155864d8e701a6be --- /dev/null +++ b/packages/ui/src/styles/icons/svgs/24-file-chevron-b.svg @@ -0,0 +1,3 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"> + <path d="M19.5 23L15 18.5m4.5 4.5l4.5-4.5M6.5 7.5h10m-10 5h10m-10 5h5m1 4H5A1.5 1.5 0 013.5 20V3A1.5 1.5 0 015 1.5h10.129c.398 0 .779.158 1.06.439l2.872 2.872c.281.281.439.662.439 1.06v9.379"/> +</svg> diff --git a/packages/ui/src/styles/icons/svgs/24-file-chevron-t.svg b/packages/ui/src/styles/icons/svgs/24-file-chevron-t.svg new file mode 100644 index 0000000000000000000000000000000000000000..bc9d7b871b37f723f409caccce2673c7144800e9 --- /dev/null +++ b/packages/ui/src/styles/icons/svgs/24-file-chevron-t.svg @@ -0,0 +1,3 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"> + <path d="M19.5 18.5L24 23m-4.5-4.5L15 23M6.5 7.5h10m-10 5h10m-10 5h5m1 4H5A1.5 1.5 0 013.5 20V3A1.5 1.5 0 015 1.5h10.129c.398 0 .779.158 1.06.439l2.872 2.872c.281.281.439.662.439 1.06v9.379"/> +</svg> diff --git a/packages/ui/src/styles/icons/svgs/24-file-link.svg b/packages/ui/src/styles/icons/svgs/24-file-link.svg new file mode 100644 index 0000000000000000000000000000000000000000..2dd9ee406c885f1879cf8630cb9c4b0e0bb35cc1 --- /dev/null +++ b/packages/ui/src/styles/icons/svgs/24-file-link.svg @@ -0,0 +1,4 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"> + <path d="M10 21.5H4c-.823 0-1.5-.677-1.5-1.5V2c0-.823.677-1.5 1.5-1.5h9.5l7 7V11"/> + <path d="M20.5 7.5H15c-.823 0-1.5-.677-1.5-1.5V.5m1.666 15.668l4.665 4.665m-2.329.496l1.584 1.584a2 2 0 102.827-2.828l-1.584-1.584m-2.83-2.826l-1.587-1.587a2 2 0 00-2.828 2.827l1.587 1.587"/> +</svg> diff --git a/packages/ui/src/styles/icons/svgs/24-file-plus.svg b/packages/ui/src/styles/icons/svgs/24-file-plus.svg new file mode 100644 index 0000000000000000000000000000000000000000..81ab4d5e1f89f160ba90e6a147fef31856c5cb79 --- /dev/null +++ b/packages/ui/src/styles/icons/svgs/24-file-plus.svg @@ -0,0 +1,4 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"> + <path d="M10 21.5H4c-.823 0-1.5-.677-1.5-1.5V2c0-.823.677-1.5 1.5-1.5h9.5l7 7V11"/> + <path d="M20.5 7.5H15c-.823 0-1.5-.677-1.5-1.5V.5m4 23.5V13zM12 18.5h11M17.5 24V13"/> +</svg> diff --git a/packages/ui/src/styles/icons/svgs/24-file.svg b/packages/ui/src/styles/icons/svgs/24-file.svg new file mode 100644 index 0000000000000000000000000000000000000000..49cf7663af9853472aa8a5ccd48e15c349f7fbe7 --- /dev/null +++ b/packages/ui/src/styles/icons/svgs/24-file.svg @@ -0,0 +1,3 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"> + <path d="M5.25 7.477h6m-6 4.5h7.5m-7.5 4.5h13.5M2.25 3.023a1.5 1.5 0 00-1.5 1.5v14.954a1.5 1.5 0 001.5 1.5h19.5a1.5 1.5 0 001.5-1.5v-12a1.5 1.5 0 00-.426-1.047l-2.883-2.955a1.502 1.502 0 00-1.074-.452H2.25z"/> +</svg> diff --git a/packages/ui/src/styles/icons/svgs/24-help.svg b/packages/ui/src/styles/icons/svgs/24-help.svg new file mode 100644 index 0000000000000000000000000000000000000000..35b97a511418dd6482525826a86fb85f74068923 --- /dev/null +++ b/packages/ui/src/styles/icons/svgs/24-help.svg @@ -0,0 +1 @@ + <svg width="24" height="24" viewBox="0 0 1000 1000" xmlns="http://www.w3.org/2000/svg"><path d="M 500 0C 224 0 0 224 0 500C 0 776 224 1000 500 1000C 776 1000 1000 776 1000 500C 1000 224 776 0 500 0C 500 0 500 0 500 0 M 501 191C 626 191 690 275 690 375C 690 475 639 483 595 513C 573 525 558 553 559 575C 559 591 554 602 541 601C 541 601 460 601 460 601C 446 601 436 581 436 570C 436 503 441 488 476 454C 512 421 566 408 567 373C 566 344 549 308 495 306C 463 303 445 314 411 361C 400 373 384 382 372 373C 372 373 318 333 318 333C 309 323 303 307 312 293C 362 218 401 191 501 191C 501 191 501 191 501 191M 500 625C 541 625 575 659 575 700C 576 742 540 776 500 775C 457 775 426 739 425 700C 425 659 459 625 500 625C 500 625 500 625 500 625"/></svg> diff --git a/packages/ui/src/styles/icons/svgs/24-key.svg b/packages/ui/src/styles/icons/svgs/24-key.svg new file mode 100644 index 0000000000000000000000000000000000000000..6de0e1dbfef9d8488000f1c0e03de67d51bb5ab4 --- /dev/null +++ b/packages/ui/src/styles/icons/svgs/24-key.svg @@ -0,0 +1,4 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"> + <circle cx="5.5" cy="18.5" r="1.5"/> + <path d="M20.5.5l-9.782 9.783a7 7 0 103 3L17 10h1.5V8.5L19 8h1.5V6.5L21 6h1.5V4.5l1-1v-3z"/> +</svg> diff --git a/packages/ui/src/styles/icons/svgs/24-link.svg b/packages/ui/src/styles/icons/svgs/24-link.svg new file mode 100644 index 0000000000000000000000000000000000000000..32bbe51840ca413900b1e3d8c57c9376d6db8fc4 --- /dev/null +++ b/packages/ui/src/styles/icons/svgs/24-link.svg @@ -0,0 +1,3 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"> + <path d="M6.75 17.249l10.5-10.5m-9.515 5.272a4.472 4.472 0 00-3.417 1.3l-2.25 2.25a4.5 4.5 0 006.364 6.364l2.25-2.25a4.472 4.472 0 001.3-3.417m4.283-4.292a4.473 4.473 0 003.417-1.3l2.25-2.25a4.5 4.5 0 00-6.364-6.364l-2.25 2.25a4.475 4.475 0 00-1.295 3.417"/> +</svg> diff --git a/packages/ui/src/styles/icons/svgs/24-login.svg b/packages/ui/src/styles/icons/svgs/24-login.svg new file mode 100644 index 0000000000000000000000000000000000000000..fda5a831e703f67bd0a9cb5b32c810343c22d317 --- /dev/null +++ b/packages/ui/src/styles/icons/svgs/24-login.svg @@ -0,0 +1,4 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"> + <path d="M1.417 16.5c1.801 4.236 5.98 7 10.583 7 6.309 0 11.5-5.191 11.5-11.5S18.309.5 12 .5a11.519 11.519 0 00-10.583 7"/> + <path d="M12.503 16l4-4-4-4m4 4h-16"/> +</svg> diff --git a/packages/ui/src/styles/icons/svgs/24-markers-grouped.svg b/packages/ui/src/styles/icons/svgs/24-markers-grouped.svg new file mode 100644 index 0000000000000000000000000000000000000000..20523c0ab43a11345f78e7e165258ed2998fea45 --- /dev/null +++ b/packages/ui/src/styles/icons/svgs/24-markers-grouped.svg @@ -0,0 +1,3 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"> + <path d="M12 20.9l4.95-4.95a7 7 0 1 0-9.9 0L12 20.9zm0 2.828l-6.364-6.364a9 9 0 1 1 12.728 0L12 23.728zM12 13a2 2 0 1 0 0-4 2 2 0 0 0 0 4zm0 2a4 4 0 1 1 0-8 4 4 0 0 1 0 8z"/> +</svg> diff --git a/packages/ui/src/styles/icons/svgs/24-markers-none.svg b/packages/ui/src/styles/icons/svgs/24-markers-none.svg new file mode 100644 index 0000000000000000000000000000000000000000..0098d48a208860ce18f0152df9ffb578fb8bfcac --- /dev/null +++ b/packages/ui/src/styles/icons/svgs/24-markers-none.svg @@ -0,0 +1,6 @@ +<svg width="24px" height="24px" viewBox="0 0 24 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <g id="24-markers-grouped" transform="translate(0.908117, 0.000078)"> + <path d="M9.09188309,18.8999221 L14.0418831,13.9499221 C16.7753479,11.2161783 16.7751972,6.78415329 14.0415464,4.05059549 C11.3078956,1.31703769 6.87587059,1.31703769 4.1422198,4.05059549 C1.40856902,6.78415329 1.40841827,11.2161783 4.14188309,13.9499221 L9.09188309,18.8999221 Z M9.09188309,21.7279221 L2.72788309,15.3639221 C-0.786803866,11.8491921 -0.786780603,6.15072729 2.72793505,2.63602598 C6.24265071,-0.878675327 11.9411155,-0.878675327 15.4558311,2.63602598 C18.9705468,6.15072729 18.97057,11.8491921 15.4558831,15.3639221 L9.09188309,21.7279221 L9.09188309,21.7279221 Z M9.09188309,10.9999221 C10.1964526,10.9999221 11.0918831,10.1044916 11.0918831,8.99992206 C11.0918831,7.89535256 10.1964526,6.99992206 9.09188309,6.99992206 C7.98731359,6.99992206 7.09188309,7.89535256 7.09188309,8.99992206 C7.09188309,10.1044916 7.98731359,10.9999221 9.09188309,10.9999221 Z M9.09188309,12.9999221 C6.88274409,12.9999221 5.09188309,11.2090611 5.09188309,8.99992206 C5.09188309,6.79078306 6.88274409,4.99992206 9.09188309,4.99992206 C11.3010221,4.99992206 13.0918831,6.79078306 13.0918831,8.99992206 C13.0918831,11.2090611 11.3010221,12.9999221 9.09188309,12.9999221 Z"></path> + <rect transform="translate(9.192388, 9.514641) rotate(-45.000000) translate(-9.192388, -9.514641) " x="8.19238816" y="-2.48535931" width="2" height="24"></rect> + </g> +</svg> diff --git a/packages/ui/src/styles/icons/svgs/24-markers-ungrouped.svg b/packages/ui/src/styles/icons/svgs/24-markers-ungrouped.svg new file mode 100644 index 0000000000000000000000000000000000000000..71ad4e3683290f63c14230361cbc4bb197d4b5ec --- /dev/null +++ b/packages/ui/src/styles/icons/svgs/24-markers-ungrouped.svg @@ -0,0 +1,3 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"> + <path d="M9.975 8.975a3.5 3.5 0 1 0-4.95 0L7.5 11.45l2.475-2.475zM7.5 14.278L3.61 10.39a5.5 5.5 0 1 1 7.78 0L7.5 14.28zM7.5 8a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm9 12.45l2.475-2.475a3.5 3.5 0 1 0-4.95 0L16.5 20.45zm3.89-1.06l-3.89 3.888-3.89-3.889a5.5 5.5 0 1 1 7.78 0zM16.5 17a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3z"/> +</svg> diff --git a/packages/ui/src/styles/icons/svgs/24-menu.svg b/packages/ui/src/styles/icons/svgs/24-menu.svg new file mode 100644 index 0000000000000000000000000000000000000000..16676c9becb2e9332df48e31586a20ea5bb94758 --- /dev/null +++ b/packages/ui/src/styles/icons/svgs/24-menu.svg @@ -0,0 +1,3 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"> + <path d="M3 4h18v2H3V4zm0 7h18v2H3v-2zm0 7h18v2H3v-2z"/> +</svg> diff --git a/packages/ui/src/styles/icons/svgs/24-minus.svg b/packages/ui/src/styles/icons/svgs/24-minus.svg new file mode 100644 index 0000000000000000000000000000000000000000..4f35db0d81d4b6d62fe38fa4c7e4a9334340ef58 --- /dev/null +++ b/packages/ui/src/styles/icons/svgs/24-minus.svg @@ -0,0 +1,3 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"> + <path d="M5 11h14v2H5z"/> +</svg> diff --git a/packages/ui/src/styles/icons/svgs/24-move-down.svg b/packages/ui/src/styles/icons/svgs/24-move-down.svg new file mode 100644 index 0000000000000000000000000000000000000000..2ab2b7d09aae41138d3e2731a0244c5fd0d88f51 --- /dev/null +++ b/packages/ui/src/styles/icons/svgs/24-move-down.svg @@ -0,0 +1,3 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"> + <path d="M12 18.248v-10.5m-3.75 6.75l3.75 3.75 3.75-3.75"/> +</svg> diff --git a/packages/ui/src/styles/icons/svgs/24-move-up.svg b/packages/ui/src/styles/icons/svgs/24-move-up.svg new file mode 100644 index 0000000000000000000000000000000000000000..2a98303ebfa5421da2f9a054e29cb2fcd55f137d --- /dev/null +++ b/packages/ui/src/styles/icons/svgs/24-move-up.svg @@ -0,0 +1,3 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"> + <path d="M12 6.748v10.5m-3.75-6.75L12 6.748l3.75 3.75"/> +</svg> diff --git a/packages/ui/src/styles/icons/svgs/24-pattern.svg b/packages/ui/src/styles/icons/svgs/24-pattern.svg new file mode 100644 index 0000000000000000000000000000000000000000..a8962f353bffbfcd55675b240f4acc5db3d61129 --- /dev/null +++ b/packages/ui/src/styles/icons/svgs/24-pattern.svg @@ -0,0 +1,3 @@ +<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2"> + <path d="M14.567 21h-4.242L3 13.675V9.433L14.567 21zM21 10.393v4.243L9.364 3h4.243L21 10.393zM3 17.849L6.151 21H3v-3.151zM5.053 3L21 18.947V21h-2.19L3 5.19V3h2.053zM21 6.151L17.849 3H21v3.151z"/> +</svg> diff --git a/packages/ui/src/styles/icons/svgs/24-pencil.svg b/packages/ui/src/styles/icons/svgs/24-pencil.svg new file mode 100644 index 0000000000000000000000000000000000000000..928320aaf3cc08ab9285e540115145bbf6eefbbc --- /dev/null +++ b/packages/ui/src/styles/icons/svgs/24-pencil.svg @@ -0,0 +1,4 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"> + <path class="a" d="M17.672 2.086l4.242 4.243-15.05 15.05-4.242-4.243zM2.621 17.136L.5 23.5l6.364-2.121-4.243-4.243z"/> + <path class="a" d="M21.914 6.328l-4.242-4.242.707-.707a3 3 0 014.242 4.242z"/> +</svg> diff --git a/packages/ui/src/styles/icons/svgs/24-plus.svg b/packages/ui/src/styles/icons/svgs/24-plus.svg new file mode 100644 index 0000000000000000000000000000000000000000..f4b5cec8c0fd7548d42d980b8e35772828072482 --- /dev/null +++ b/packages/ui/src/styles/icons/svgs/24-plus.svg @@ -0,0 +1,3 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"> + <path d="M11 11V5h2v6h6v2h-6v6h-2v-6H5v-2z"/> +</svg> diff --git a/packages/ui/src/styles/icons/svgs/24-refresh.svg b/packages/ui/src/styles/icons/svgs/24-refresh.svg new file mode 100644 index 0000000000000000000000000000000000000000..5dddf725c060f0c35912fa4220b9fce1551ba865 --- /dev/null +++ b/packages/ui/src/styles/icons/svgs/24-refresh.svg @@ -0,0 +1,3 @@ +<svg xmlns="http://www.w3.org/2000/svg" height="24" width="24"> + <path fill="black" d="M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z"/> +</svg> diff --git a/packages/ui/src/styles/icons/svgs/24-square.svg b/packages/ui/src/styles/icons/svgs/24-square.svg new file mode 100644 index 0000000000000000000000000000000000000000..3af42d90f1b0d50d1f0d45d1160445629acbb601 --- /dev/null +++ b/packages/ui/src/styles/icons/svgs/24-square.svg @@ -0,0 +1,3 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"> + <path d="M2.5 2.499h19v19h-19z"/> +</svg> diff --git a/packages/ui/src/styles/icons/svgs/24-trash.svg b/packages/ui/src/styles/icons/svgs/24-trash.svg new file mode 100644 index 0000000000000000000000000000000000000000..8760c3d8988b82982580718bbc893b8fc828dccd --- /dev/null +++ b/packages/ui/src/styles/icons/svgs/24-trash.svg @@ -0,0 +1,3 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"> + <path class="a" d="M21 4.5l-1.812 17.209A2 2 0 0117.2 23.5H6.8a2 2 0 01-1.989-1.791L3 4.5m-2.5 0h23m-16 0v-3a1 1 0 011-1h7a1 1 0 011 1v3M12 9v10.5M16.5 9L16 19.5M7.5 9L8 19.5"/> +</svg> diff --git a/packages/ui/src/styles/icons/svgs/24-unlink.svg b/packages/ui/src/styles/icons/svgs/24-unlink.svg new file mode 100644 index 0000000000000000000000000000000000000000..3615513e40214d76f86695395d5f43a628aea63f --- /dev/null +++ b/packages/ui/src/styles/icons/svgs/24-unlink.svg @@ -0,0 +1,3 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"> + <path d="M8.25 5.249l-3-3m1.5 6h-1.5m6-4.5v-1.5m3 4.5h4.5a4.5 4.5 0 010 9h-4.5m-9.53-4.334l-2.652 2.652a4.5 4.5 0 006.364 6.364l2.652-2.652"/> +</svg> diff --git a/packages/ui/src/styles/icons/svgs/24-user.svg b/packages/ui/src/styles/icons/svgs/24-user.svg new file mode 100644 index 0000000000000000000000000000000000000000..198a2c1b1ead8d35db9d3092d13abe127cb3bf41 --- /dev/null +++ b/packages/ui/src/styles/icons/svgs/24-user.svg @@ -0,0 +1,7 @@ +<svg width="16px" height="21px" viewBox="0 0 16 21" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <g stroke="none" stroke-width="1" fill-rule="evenodd"> + <g> + <path d="M8,13 C12.418278,13 16,16.581722 16,21 L14,21 C14,17.6862915 11.3137085,15 8,15 C4.6862915,15 2,17.6862915 2,21 L0,21 C0,16.581722 3.581722,13 8,13 Z M8,0 C11.315,0 14,2.685 14,6 C14,9.315 11.315,12 8,12 C4.685,12 2,9.315 2,6 C2,2.685 4.685,0 8,0 Z M8,2 C5.79,2 4,3.79 4,6 C4,8.21 5.79,10 8,10 C10.21,10 12,8.21 12,6 C12,3.79 10.21,2 8,2 Z"></path> + </g> + </g> +</svg> diff --git a/packages/ui/src/styles/icons/svgs/24-view.svg b/packages/ui/src/styles/icons/svgs/24-view.svg new file mode 100644 index 0000000000000000000000000000000000000000..63b131b20e787eabb8b8653cf49dadb128e66bce --- /dev/null +++ b/packages/ui/src/styles/icons/svgs/24-view.svg @@ -0,0 +1,4 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"> + <circle cx="16" cy="8" r="7"/> + <path d="M4 20l7-7"/> +</svg> diff --git a/packages/ui/src/styles/icons/svgs/24-window-link.svg b/packages/ui/src/styles/icons/svgs/24-window-link.svg new file mode 100644 index 0000000000000000000000000000000000000000..af23ae80aaf60ed3c20593b628b1dbf7c87de3bc --- /dev/null +++ b/packages/ui/src/styles/icons/svgs/24-window-link.svg @@ -0,0 +1,4 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"> + <path d="M21.76 10.5V2.253a1.5 1.5 0 00-1.5-1.5h-18a1.5 1.5 0 00-1.5 1.5v16.5a1.5 1.5 0 001.5 1.5h6.751m-8.251-15h21m-1.499 9l3 3-3 3"/> + <path d="M12.76 23.253a6 6 0 016-6h4.5"/> +</svg> diff --git a/packages/ui/src/styles/icons/svgs/48-announcement.svg b/packages/ui/src/styles/icons/svgs/48-announcement.svg new file mode 100644 index 0000000000000000000000000000000000000000..311ad179b000d54f6d6b94c28b71633b74605a92 --- /dev/null +++ b/packages/ui/src/styles/icons/svgs/48-announcement.svg @@ -0,0 +1,4 @@ +<svg xmlns="http://www.w3.org/2000/svg"> + <path d="M22.543 1.5c11.582-.016 20.984 9.358 21 20.94a20.976 20.976 0 01-3.166 11.11l6.166 12.95-12.948-6.168c-9.848 6.126-22.798 3.108-28.924-6.74-6.126-9.848-3.108-22.798 6.74-28.924A21 21 0 0122.543 1.5z"/> + <path d="M22.543 28.5a.75.75 0 110 1.5.75.75 0 010-1.5m0-6v-9"/> +</svg> diff --git a/packages/ui/src/styles/icons/svgs/building-2.svg b/packages/ui/src/styles/icons/svgs/building-2.svg new file mode 100644 index 0000000000000000000000000000000000000000..73049e6bce7615d66389f1098c608c110a00dc15 --- /dev/null +++ b/packages/ui/src/styles/icons/svgs/building-2.svg @@ -0,0 +1,5 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> + <path d="M2.5 8.5h10v15h-10z"/> + <path d="M20.5 23.5h-8v-15h-2v-8h10z"/> + <path d="M15.5 20.5h3v3h-3zm-11 0h3v3h-3zm-2-10h4m-4 2h3m5-8h4m-4-2h6m-6 4h3m-11 8h2"/> +</svg> diff --git a/packages/ui/src/styles/icons/svgs/business-check.svg b/packages/ui/src/styles/icons/svgs/business-check.svg new file mode 100644 index 0000000000000000000000000000000000000000..cd10aa7e7dbe9465bce05df042cd6a3525251a71 --- /dev/null +++ b/packages/ui/src/styles/icons/svgs/business-check.svg @@ -0,0 +1,6 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> + <circle cx="6.25" cy="4" r="3.5"/> + <path d="M11.75 9.5h-11c0 4.069 1.64 6.442 3.5 7.5v6.5h4V17c1.858-1.058 3.5-3.431 3.5-7.5z"/> + <path d="M6.75 9.5h-1l-.5 6 1 1 1-1-.5-6zm5.602-6.562a6 6 0 111.544 10.083"/> + <path d="M23.25.5l-6.888 9.175L13.7 7.013"/> +</svg> diff --git a/packages/ui/src/styles/icons/svgs/cloud-setting.svg b/packages/ui/src/styles/icons/svgs/cloud-setting.svg new file mode 100644 index 0000000000000000000000000000000000000000..b9266bfc9c2e6cf6975cbeec195b77de8f657bc5 --- /dev/null +++ b/packages/ui/src/styles/icons/svgs/cloud-setting.svg @@ -0,0 +1,5 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> + <path d="M15.897 20.117l1-1.732-1-.577a3.232 3.232 0 000-1.614l.999-.576-1-1.732-.999.576a3.496 3.496 0 00-1.397-.799V12.5h-2v1.162a3.49 3.49 0 00-1.397.799l-.999-.576-1 1.732.999.576a3.232 3.232 0 000 1.614l-1 .577 1 1.732 1-.578c.392.369.869.64 1.397.799V21.5h2v-1.162a3.485 3.485 0 001.396-.799l1.001.578z"/> + <circle cx="12.5" cy="17" r="1.5"/> + <path d="M19.196 16.391s4.304-.561 4.304-4.782a4.77 4.77 0 00-4.954-4.774A6.684 6.684 0 005.825 9.294 3.586 3.586 0 001.5 12.803c0 2.992 2.579 3.49 3.502 3.572"/> +</svg> diff --git a/packages/ui/src/styles/icons/svgs/eco-globe-1.svg b/packages/ui/src/styles/icons/svgs/eco-globe-1.svg new file mode 100644 index 0000000000000000000000000000000000000000..f051238e3b9affcc462de0714f39766f25cba438 --- /dev/null +++ b/packages/ui/src/styles/icons/svgs/eco-globe-1.svg @@ -0,0 +1,9 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"> + <g fill="none" stroke="#000" stroke-linejoin="round" stroke-miterlimit="10"> + <path d="M.5 14.5h4v8h-4z"/> + <path stroke-linecap="round" d="M4.5 21c10.729 3.577 6.771 3.613 19-2.5-1.062-1.062-1.903-1.313-3-1l-4.434 1.471"/> + <path stroke-linecap="round" d="M4.5 15.5h3c2.353 0 4 1.5 4.5 2h3c1.593 0 1.593 2 0 2H9.5m-2.649-7.404a8.001 8.001 0 1111.241 3.281"/> + <path stroke-linecap="round" d="M19.913 3.112s-.348 1.911-1.739 2.606c-1.391-.348-2.782.694-2.435.694.348 0 .695 1.392.695 1.392.349.348 1.044 0 1.044 0 .869.869-1.392 2.436-1.392 2.783s.87.521.347 1.044c-.521.521-1.042.694-1.042.694 0 1.739-1.74 1.739-2.087 1.739-.348 0-1.044-1.392-1.044-1.739s.349-.694.349-1.043c0-.348-.696-1.043-.696-1.043 0-1.392-1.043-1.044-2.087-1.044-1.043 0-1.043-1.392-1.043-1.392s0-2.434 1.739-2.781c1.738-.35 1.738.348 1.738.348.697.694 2.087 0 2.783 0 0 0 .348-2.436-.348-2.088-.695.35-1.319.079-1.39-.694C13.203 1.5 16.34.849 16.34.849"/> + </g> + <path fill="none" d="M0 0h24v24H0z"/> +</svg> diff --git a/packages/ui/src/styles/icons/svgs/file-checklist-edit.svg b/packages/ui/src/styles/icons/svgs/file-checklist-edit.svg new file mode 100644 index 0000000000000000000000000000000000000000..61cdccf9c77e43127eb87560875cc8ca526c6223 --- /dev/null +++ b/packages/ui/src/styles/icons/svgs/file-checklist-edit.svg @@ -0,0 +1,12 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"> + <g fill="none" stroke="#000" stroke-linejoin="round" stroke-miterlimit="10"> + <path stroke-linecap="round" d="M16 22.5l-3.5 1 1-3.5 7.502-7.502 2.5 2.5z"/> + <path d="M19.002 14.498l2.5 2.5"/> + <path stroke-linecap="round" d="M13.5 20l2.5 2.5m-7-12h4m-4 4h4m-5.5-6L5 11 3.5 9.5m4 3.015l-2.5 2.5-1.5-1.5"/> + <g stroke-linecap="round"> + <path d="M9 21.5H.5V.5h10.999l5.001 5V13"/> + <path d="M11.499.5l.001 5h5"/> + </g> + </g> + <path fill="none" d="M0 0h24v24H0z"/> +</svg> diff --git a/packages/ui/src/styles/icons/svgs/folder.svg b/packages/ui/src/styles/icons/svgs/folder.svg new file mode 100755 index 0000000000000000000000000000000000000000..4c4246f9446747460b7bcfff73cd2ee65f6007e1 --- /dev/null +++ b/packages/ui/src/styles/icons/svgs/folder.svg @@ -0,0 +1,3 @@ +<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> + <path d="M1.5 20.5h21v-14h-12l-3-3h-6v17zm21-10h-21"/> +</svg> diff --git a/packages/ui/src/styles/icons/svgs/globe-3.svg b/packages/ui/src/styles/icons/svgs/globe-3.svg new file mode 100644 index 0000000000000000000000000000000000000000..417ed6425af5dc218e269103b8b5659b8976744a --- /dev/null +++ b/packages/ui/src/styles/icons/svgs/globe-3.svg @@ -0,0 +1,3 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" > + <path d="M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm-2.29-2.333A17.9 17.9 0 0 1 8.027 13H4.062a8.008 8.008 0 0 0 5.648 6.667zM10.03 13c.151 2.439.848 4.73 1.97 6.752A15.905 15.905 0 0 0 13.97 13h-3.94zm9.908 0h-3.965a17.9 17.9 0 0 1-1.683 6.667A8.008 8.008 0 0 0 19.938 13zM4.062 11h3.965A17.9 17.9 0 0 1 9.71 4.333 8.008 8.008 0 0 0 4.062 11zm5.969 0h3.938A15.905 15.905 0 0 0 12 4.248 15.905 15.905 0 0 0 10.03 11zm4.259-6.667A17.9 17.9 0 0 1 15.973 11h3.965a8.008 8.008 0 0 0-5.648-6.667z"/> +</svg> diff --git a/packages/ui/src/styles/icons/svgs/group-global.svg b/packages/ui/src/styles/icons/svgs/group-global.svg new file mode 100644 index 0000000000000000000000000000000000000000..5e9244e3a0db470c6cb540263ed385d2f346bac8 --- /dev/null +++ b/packages/ui/src/styles/icons/svgs/group-global.svg @@ -0,0 +1,7 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> + <path d="M18.5 6.976c0 3.604-2.918 6.524-6.518 6.524S5.5 10.462 5.5 6.858C5.5 3.349 8.253.645 11.721.505c.093-.003.187-.005.282-.005 3.6 0 6.497 2.872 6.497 6.476zM11.721.506c-3.392 3.674-3.392 8.467 0 12.989M12.285.506c3.392 3.674 3.392 8.466 0 12.987M6.574 10.5h10.894m-11.015-7h11.043M5.5 7h13"/> + <circle cx="4.5" cy="17.015" r="2.5"/> + <circle cx="12" cy="17.015" r="2.5"/> + <circle cx="19.5" cy="17.015" r="2.5"/> + <path d="M19.5 19.507c-1.733 0-3.194 1.112-3.75 2.654-.556-1.542-2.017-2.648-3.75-2.648s-3.194 1.109-3.75 2.65c-.556-1.541-2.017-2.656-3.75-2.656-2.21 0-4 1.993-4 3.993h23c0-2-1.79-3.993-4-3.993z"/> +</svg> diff --git a/packages/ui/src/styles/icons/svgs/info.svg b/packages/ui/src/styles/icons/svgs/info.svg new file mode 100644 index 0000000000000000000000000000000000000000..13fafeecee17f91a5f56607714a6ee8ae305b887 --- /dev/null +++ b/packages/ui/src/styles/icons/svgs/info.svg @@ -0,0 +1,3 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"> + <path d="M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm0-2a8 8 0 1 0 0-16 8 8 0 0 0 0 16zM11 7h2v2h-2V7zm0 4h2v6h-2v-6z"/> +</svg> diff --git a/packages/ui/src/styles/icons/svgs/list-bullets.svg b/packages/ui/src/styles/icons/svgs/list-bullets.svg new file mode 100644 index 0000000000000000000000000000000000000000..ad973fc7733fdd2e3640fe3c017c93113ad1c0ec --- /dev/null +++ b/packages/ui/src/styles/icons/svgs/list-bullets.svg @@ -0,0 +1,3 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"> + <path d="M8 4h13v2H8V4zM4.5 6.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm0 7a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm0 6.9a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zM8 11h13v2H8v-2zm0 7h13v2H8v-2z"/> +</svg> diff --git a/packages/ui/src/styles/icons/svgs/map-legend-sdom-zone.svg b/packages/ui/src/styles/icons/svgs/map-legend-sdom-zone.svg new file mode 100644 index 0000000000000000000000000000000000000000..a90cbf33c29c3c10c1213ad6229273f6d138e3c4 --- /dev/null +++ b/packages/ui/src/styles/icons/svgs/map-legend-sdom-zone.svg @@ -0,0 +1,22 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 20" width="40px" height="20px"> + <defs> + <pattern + id="texture_diagonal" + x="0" + y="0" + width="10%" + height="10%" + patternTransform="rotate(45 0 0)" + patternUnits="userSpaceOnUse" + > + <line + x1="0" + y1="0" + x2="0" + y2="10" + style="stroke: #0000ff; stroke-width: 2" + /> + </pattern> + </defs> + <rect width="100%" height="100%" /> +</svg> diff --git a/packages/ui/src/styles/icons/svgs/map-pin-2.svg b/packages/ui/src/styles/icons/svgs/map-pin-2.svg new file mode 100644 index 0000000000000000000000000000000000000000..e342d27f90687e05266621700dd5c445aa4d0b7e --- /dev/null +++ b/packages/ui/src/styles/icons/svgs/map-pin-2.svg @@ -0,0 +1,4 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> + <circle cx="11.5" cy="3.5" r="3"/> + <path d="M11.5 6.5V17m-3-4.722l-1 .222-7-2v11l7 2 9-2 7 2v-11l-7-2-2 .445m-7 1.555v11m9-13v11m-5-19a1 1 0 011 1"/> +</svg> diff --git a/packages/ui/src/styles/icons/svgs/map-treasure.svg b/packages/ui/src/styles/icons/svgs/map-treasure.svg new file mode 100644 index 0000000000000000000000000000000000000000..650de337e212bac24a1a62bd2dcfb28e8873f0ec --- /dev/null +++ b/packages/ui/src/styles/icons/svgs/map-treasure.svg @@ -0,0 +1,4 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"> + <path d="M.5 22l6 1.5L12 22l5.5 1.5 6-1.5-1-18.5L17 5l-5-1.5L7 5 1.5 3.5zM17 8.5l2 2m-2 0l2-2m-14.5 9L5 17m2.5-2.5L8 14m10.5-2v1M14 14.5l.5.5M11 12.5h1m5.5 3.5l.5-.5" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10"/> + <path fill="none" d="M0 0h24v24H0z"/> +</svg> diff --git a/packages/ui/src/styles/icons/svgs/settings.svg b/packages/ui/src/styles/icons/svgs/settings.svg new file mode 100755 index 0000000000000000000000000000000000000000..0ad859d48567ac39078961d601d7a834ea37d5c7 --- /dev/null +++ b/packages/ui/src/styles/icons/svgs/settings.svg @@ -0,0 +1,4 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"> + <path d="M13 2v4l-2 1-3-3-4 4 3 3-1 2H2v6h4l1 2-3 3 4 4 3-3 2 1v4h6v-4l2-1 3 3 4-4-3-3 1-2h4v-6h-4l-1-2 3-3-4-4-3 3-2-1V2z"/> + <circle cx="16" cy="16" r="4"/> +</svg> diff --git a/packages/ui/src/styles/icons/svgs/window-speedtest.svg b/packages/ui/src/styles/icons/svgs/window-speedtest.svg new file mode 100644 index 0000000000000000000000000000000000000000..63d905fe9065bd63a8ebd60eeebfdb7dcf6b570e --- /dev/null +++ b/packages/ui/src/styles/icons/svgs/window-speedtest.svg @@ -0,0 +1,7 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> + <path d="M23.5 18.5a2 2 0 01-2 2h-19a2 2 0 01-2-2v-14a2 2 0 012-2h19a2 2 0 012 2v14zm-23-11h23"/> + <circle cx="4" cy="5" r=".5"/> + <circle cx="7" cy="5" r=".5"/> + <circle cx="10" cy="5" r=".5"/> + <path d="M4 17.5h2m-.928-4l1.732 1M8 10.571l1 1.732m3-2.804v1.999m6.93 2l-1.732.999m2.804 3.001h-1.999M16 10.5L10.5 16v2.5L13 18z"/> +</svg> diff --git a/packages/ui/src/styles/leaflet/fullscreen.css b/packages/ui/src/styles/leaflet/fullscreen.css new file mode 100644 index 0000000000000000000000000000000000000000..9180c3af440c60ba83e381d64f2165d9eaadd7c2 --- /dev/null +++ b/packages/ui/src/styles/leaflet/fullscreen.css @@ -0,0 +1,38 @@ +.leaflet-control-fullscreen a { + background: #fff url(/img/leaflet/fullscreen.png) no-repeat 0 0; + background-size: 26px 52px; +} +.leaflet-touch .leaflet-control-fullscreen a { + background-position: 2px 2px; +} +.leaflet-fullscreen-on .leaflet-control-fullscreen a { + background-position: 0 -26px; +} +.leaflet-touch.leaflet-fullscreen-on .leaflet-control-fullscreen a { + background-position: 2px -24px; +} + +/* Do not combine these two rules; IE will break. */ +.leaflet-container:-webkit-full-screen { + width: 100% !important; + height: 100% !important; +} +.leaflet-container.leaflet-fullscreen-on { + width: 100% !important; + height: 100% !important; +} + +.leaflet-pseudo-fullscreen { + position: fixed !important; + width: 100% !important; + height: 100% !important; + top: 0 !important; + left: 0 !important; + z-index: 99999; +} + +@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) { + .leaflet-control-fullscreen a { + background-image: url(/img/leaflet/fullscreen@2x.png); + } +} diff --git a/packages/ui/src/styles/leaflet/gesture-handling.css b/packages/ui/src/styles/leaflet/gesture-handling.css new file mode 100644 index 0000000000000000000000000000000000000000..0932d1677a80a9597ff2489abe19b5cccbe692e4 --- /dev/null +++ b/packages/ui/src/styles/leaflet/gesture-handling.css @@ -0,0 +1,54 @@ +@-webkit-keyframes leaflet-gestures-fadein { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} + +@keyframes leaflet-gestures-fadein { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} + +.leaflet-container:after { + animation: leaflet-gestures-fadein 0.8s backwards; + color: #fff; + font-size: 22px; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + padding: 15px; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: rgba(0, 0, 0, 0.5); + z-index: 461; + pointer-events: none; +} + +.leaflet-gesture-handling-touch-warning:after, +.leaflet-gesture-handling-scroll-warning:after { + animation: leaflet-gestures-fadein 0.8s forwards; +} + +.leaflet-gesture-handling-touch-warning:after { + content: attr(data-gesture-handling-touch-content); +} + +.leaflet-gesture-handling-scroll-warning:after { + content: attr(data-gesture-handling-scroll-content); +} diff --git a/packages/ui/src/styles/leaflet/marker-clusters.css b/packages/ui/src/styles/leaflet/marker-clusters.css new file mode 100644 index 0000000000000000000000000000000000000000..a2d8e0828948a666bd61e107657b00a3fe005d3a --- /dev/null +++ b/packages/ui/src/styles/leaflet/marker-clusters.css @@ -0,0 +1,9 @@ +.leaflet-cluster-anim .leaflet-marker-icon, +.leaflet-cluster-anim .leaflet-marker-shadow { + transition: transform 0.3s ease-out, opacity 0.3s ease-in; +} + +.leaflet-cluster-spider-leg { + /* stroke-dashoffset (duration and function) should match with leaflet-marker-icon transform in order to track it exactly */ + transition: stroke-dashoffset 0.3s ease-out, stroke-opacity 0.3s ease-in; +} diff --git a/packages/ui/src/styles/leaflet/overrides.css b/packages/ui/src/styles/leaflet/overrides.css new file mode 100644 index 0000000000000000000000000000000000000000..e82ad2ec41e6865bc1502d4679c053eb345c5317 --- /dev/null +++ b/packages/ui/src/styles/leaflet/overrides.css @@ -0,0 +1,705 @@ +/* required styles */ + +.leaflet-pane, +.leaflet-tile, +.leaflet-marker-icon, +.leaflet-marker-shadow, +.leaflet-tile-container, +.leaflet-pane > svg, +.leaflet-pane > canvas, +.leaflet-zoom-box, +.leaflet-image-layer, +.leaflet-layer { + position: absolute; + left: 0; + top: 0; +} + +.leaflet-container { + overflow: hidden; +} + +.leaflet-tile, +.leaflet-marker-icon, +.leaflet-marker-shadow { + user-select: none; +} + +/* Prevents IE11 from highlighting tiles in blue */ +.leaflet-tile::selection { + background: transparent; +} + +/* Safari renders non-retina tile on retina better with this, but Chrome is worse */ +.leaflet-safari .leaflet-tile { + image-rendering: -webkit-optimize-contrast; +} + +/* hack that prevents hw layers "stretching" when loading new tiles */ +.leaflet-safari .leaflet-tile-container { + width: 1600px; + height: 1600px; + transform-origin: 0 0; +} + +.leaflet-marker-icon, +.leaflet-marker-shadow { + display: block; +} + +.leaflet-marker-icon { + white-space: nowrap; +} + +/* .leaflet-container svg: reset svg max-width decleration shipped in Joomla! (joomla.org) 3.x */ +/* .leaflet-container img: map is broken in FF if you have max-width: 100% on tiles */ +.leaflet-container .leaflet-overlay-pane svg, +.leaflet-container .leaflet-marker-pane img, +.leaflet-container .leaflet-shadow-pane img, +.leaflet-container .leaflet-tile-pane img, +.leaflet-container img.leaflet-image-layer, +.leaflet-container .leaflet-tile { + max-width: none !important; + max-height: none !important; +} + +.leaflet-container.leaflet-touch-zoom { + -ms-touch-action: pan-x pan-y; + touch-action: pan-x pan-y; +} + +.leaflet-container.leaflet-touch-drag { + -ms-touch-action: pinch-zoom; + /* Fallback for FF which doesn't support pinch-zoom */ + touch-action: none; + touch-action: pinch-zoom; +} + +.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom { + -ms-touch-action: none; + touch-action: none; +} + +.leaflet-container { + -webkit-tap-hilite-color: transparent; +} + +.leaflet-container a { + -webkit-tap-hilite-color: rgba(51, 181, 229, 0.4); +} + +.leaflet-tile { + filter: inherit; + visibility: hidden; +} + +.leaflet-tile-loaded { + visibility: inherit; +} + +.leaflet-zoom-box { + width: 0; + height: 0; + box-sizing: border-box; + z-index: 800; +} + +/* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */ +.leaflet-overlay-pane svg { + -moz-user-select: none; +} + +.leaflet-pane { + z-index: 400; +} + +.leaflet-tile-pane { + z-index: 200; +} + +.leaflet-overlay-pane { + z-index: 400; +} + +.leaflet-shadow-pane { + z-index: 500; +} + +.leaflet-marker-pane { + z-index: 600; +} + +.leaflet-tooltip-pane { + z-index: 650; +} + +.leaflet-popup-pane { + z-index: 700; +} + +.leaflet-map-pane canvas { + z-index: 100; +} + +.leaflet-map-pane svg { + z-index: 200; +} + +.leaflet-vml-shape { + width: 1px; + height: 1px; +} + +.lvml { + behavior: url(#default#VML); + display: inline-block; + position: absolute; +} + +/* control positioning */ + +.leaflet-control { + position: relative; + z-index: 800; + pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */ + pointer-events: auto; +} + +.leaflet-top, +.leaflet-bottom { + position: absolute; + z-index: 1000; + pointer-events: none; +} + +.leaflet-top { + top: 0; +} + +.leaflet-right { + right: 0; +} + +.leaflet-bottom { + bottom: 0; +} + +.leaflet-left { + left: 0; +} + +.leaflet-control { + float: left; + clear: both; +} + +.leaflet-right .leaflet-control { + float: right; +} + +.leaflet-top .leaflet-control { + margin-top: 10px; +} + +.leaflet-bottom .leaflet-control { + margin-bottom: 10px; +} + +.leaflet-left .leaflet-control { + margin-left: 10px; +} + +.leaflet-right .leaflet-control { + margin-right: 10px; +} + +/* zoom and fade animations */ + +.leaflet-fade-anim .leaflet-tile { + will-change: opacity; +} + +.leaflet-fade-anim .leaflet-popup { + opacity: 0; + transition: opacity 0.2s linear; +} + +.leaflet-fade-anim .leaflet-map-pane .leaflet-popup { + opacity: 1; +} + +.leaflet-zoom-animated { + transform-origin: 0 0; +} + +.leaflet-zoom-anim .leaflet-zoom-animated { + will-change: transform; +} + +.leaflet-zoom-anim .leaflet-zoom-animated { + transition: transform 0.25s cubic-bezier(0, 0, 0.25, 1); +} + +.leaflet-zoom-anim .leaflet-tile, +.leaflet-pan-anim .leaflet-tile { + transition: none; +} + +.leaflet-zoom-anim .leaflet-zoom-hide { + visibility: hidden; +} + +/* cursors */ + +.leaflet-interactive { + cursor: pointer; +} + +.leaflet-grab { + cursor: -webkit-grab; + cursor: -moz-grab; + cursor: grab; +} + +.leaflet-crosshair, +.leaflet-crosshair .leaflet-interactive { + cursor: crosshair; +} + +.leaflet-popup-pane, +.leaflet-control { + cursor: auto; +} + +.leaflet-dragging .leaflet-grab, +.leaflet-dragging .leaflet-grab .leaflet-interactive, +.leaflet-dragging .leaflet-marker-draggable { + cursor: move; + cursor: -webkit-grabbing; + cursor: -moz-grabbing; + cursor: grabbing; +} + +/* marker & overlays interactivity */ +.leaflet-marker-icon, +.leaflet-marker-shadow, +.leaflet-image-layer, +.leaflet-pane > svg path, +.leaflet-tile-container { + pointer-events: none; +} + +.leaflet-marker-icon.leaflet-interactive, +.leaflet-image-layer.leaflet-interactive, +.leaflet-pane > svg path.leaflet-interactive, +svg.leaflet-image-layer.leaflet-interactive path { + pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */ + pointer-events: auto; +} + +/* visual tweaks */ + +.leaflet-container { + background: #ddd; + outline: 0; +} + +.leaflet-zoom-box { + border: 2px dotted #38f; + background: rgba(255, 255, 255, 0.5); +} + +/* general toolbar styles */ + +.leaflet-bar { + box-shadow: 0 1px 5px rgba(0, 0, 0, 0.65); + border-radius: 4px; +} + +.leaflet-bar a, +.leaflet-bar a:hover { + background-color: #fff; + border-bottom: 1px solid #ccc; + width: 26px; + height: 26px; + line-height: 26px; + display: block; + text-align: center; + text-decoration: none; + color: black; +} + +.leaflet-bar a, +.leaflet-control-layers-toggle { + background-position: 50% 50%; + background-repeat: no-repeat; + display: block; +} + +.leaflet-bar a:hover { + background-color: #f4f4f4; +} + +.leaflet-bar a:first-child { + border-top-left-radius: 4px; + border-top-right-radius: 4px; +} + +.leaflet-bar a:last-child { + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + border-bottom: none; +} + +.leaflet-bar a.leaflet-disabled { + cursor: default; + background-color: #f4f4f4; + color: #bbb; +} + +.leaflet-touch .leaflet-bar a { + width: 30px; + height: 30px; + line-height: 30px; +} + +.leaflet-touch .leaflet-bar a:first-child { + border-top-left-radius: 2px; + border-top-right-radius: 2px; +} + +.leaflet-touch .leaflet-bar a:last-child { + border-bottom-left-radius: 2px; + border-bottom-right-radius: 2px; +} + +/* zoom control */ + +.leaflet-control-zoom-in, +.leaflet-control-zoom-out { + font: bold 18px 'Lucida Console', Monaco, monospace; + text-indent: 1px; +} + +.leaflet-touch .leaflet-control-zoom-in, +.leaflet-touch .leaflet-control-zoom-out { + font-size: 22px; +} + +/* layers control */ + +.leaflet-control-layers { + box-shadow: 0 1px 5px rgba(0, 0, 0, 0.4); + background: #fff; + border-radius: 5px; +} + +.leaflet-control-layers-toggle { + background-image: url(/img/leaflet/layers.png); + width: 36px; + height: 36px; +} + +.leaflet-retina .leaflet-control-layers-toggle { + background-image: url(/img/leaflet/layers-2x.png); + background-size: 26px 26px; +} + +.leaflet-touch .leaflet-control-layers-toggle { + width: 44px; + height: 44px; +} + +.leaflet-control-layers .leaflet-control-layers-list, +.leaflet-control-layers-expanded .leaflet-control-layers-toggle { + display: none; +} + +.leaflet-control-layers-expanded .leaflet-control-layers-list { + display: block; + position: relative; +} + +.leaflet-control-layers-expanded { + padding: 6px 10px 6px 6px; + color: #333; + background: #fff; +} + +.leaflet-control-layers-scrollbar { + overflow-y: scroll; + overflow-x: hidden; + padding-right: 5px; +} + +.leaflet-control-layers-selector { + margin-top: 2px; + position: relative; + top: 1px; +} + +.leaflet-control-layers label { + display: block; +} + +.leaflet-control-layers-separator { + height: 0; + border-top: 1px solid #ddd; + margin: 5px -10px 5px -6px; +} + +/* Default icon URLs */ +.leaflet-default-icon-path { + background-image: url(/img/leaflet/marker-icon.png); +} + +/* attribution and scale controls */ + +.leaflet-container .leaflet-control-attribution { + background: #fff; + background: rgba(255, 255, 255, 0.7); + margin: 0; +} + +.leaflet-control-attribution, +.leaflet-control-scale-line { + padding: 0 var(--unit-l) 0 var(--unit-xs); + color: #333; +} + +.leaflet-control-attribution a { + text-decoration: none; +} + +.leaflet-control-attribution a:hover { + text-decoration: underline; +} + +.leaflet-container .leaflet-control-attribution, +.leaflet-container .leaflet-control-scale { + typescale: -1 1; +} + +.leaflet-left .leaflet-control-scale { + margin-left: 5px; +} + +.leaflet-bottom .leaflet-control-scale { + margin-bottom: 5px; +} + +.leaflet-control-scale-line { + border: 2px solid #777; + border-top: none; + line-height: 1.1; + padding: 2px 5px 1px; + white-space: nowrap; + overflow: hidden; + box-sizing: border-box; + background: #fff; + background: rgba(255, 255, 255, 0.5); +} + +.leaflet-control-scale-line:not(:first-child) { + border-top: 2px solid #777; + border-bottom: none; + margin-top: -2px; +} + +.leaflet-control-scale-line:not(:first-child):not(:last-child) { + border-bottom: 2px solid #777; +} + +.leaflet-touch .leaflet-control-attribution, +.leaflet-touch .leaflet-control-layers, +.leaflet-touch .leaflet-bar { + box-shadow: none; +} + +.leaflet-touch .leaflet-control-layers, +.leaflet-touch .leaflet-bar { + border: 2px solid rgba(0, 0, 0, 0.2); + background-clip: padding-box; +} + +/* popup */ + +.leaflet-popup { + position: absolute; + text-align: center; + margin-bottom: 20px; +} + +.leaflet-popup-content-wrapper { + padding: 1px; + text-align: left; + border-radius: var(--unit-xs); +} + +.leaflet-popup-content { + padding: var(--unit-s) var(--unit-m) 0; +} + +/* .leaflet-popup-tip-container { + width: 40px; + height: 20px; + position: absolute; + left: 50%; + margin-left: -20px; + overflow: hidden; + pointer-events: none; +} + +.leaflet-popup-tip { + width: 17px; + height: 17px; + margin: -10px auto 0; + transform: rotate(45deg); +} */ + +.leaflet-popup-content-wrapper, +.leaflet-popup-tip { + background: white; + box-shadow: 4px 4px 8px color-mod(var(--color-inverse) alpha(25%)); +} + +.leaflet-container a.leaflet-popup-close-button { + position: absolute; + top: 0; + right: 0; + padding: 4px 4px 0 0; + border: none; + text-align: center; + width: 18px; + height: 14px; + color: #c3c3c3; + text-decoration: none; + font-weight: bold; + background: transparent; +} + +.leaflet-container a.leaflet-popup-close-button:hover { + color: #999; +} + +.leaflet-popup-scrolled { + overflow: auto; + border-bottom: 1px solid #ddd; + border-top: 1px solid #ddd; +} + +/* warning bug in firefox +.leaflet-oldie .leaflet-popup-content-wrapper { + zoom: 1; +} */ + +.leaflet-oldie .leaflet-popup-tip { + width: 24px; + margin: 0 auto; + -ms-filter: 'progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)'; + filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678); +} + +.leaflet-oldie .leaflet-popup-tip-container { + margin-top: -1px; +} + +.leaflet-oldie .leaflet-control-zoom, +.leaflet-oldie .leaflet-control-layers, +.leaflet-oldie .leaflet-popup-content-wrapper, +.leaflet-oldie .leaflet-popup-tip { + border: 1px solid #999; +} + +/* div icon */ + +.leaflet-div-icon { + background: #fff; + border: 1px solid #666; +} + +/* Tooltip */ +/* Base styles for the element that has a tooltip */ +.leaflet-tooltip { + position: absolute; + padding: 6px; + background-color: #fff; + border: 1px solid #fff; + border-radius: 3px; + color: #222; + white-space: nowrap; + user-select: none; + pointer-events: none; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4); +} + +.leaflet-tooltip.leaflet-clickable { + cursor: pointer; + pointer-events: auto; +} + +.leaflet-tooltip-top:before, +.leaflet-tooltip-bottom:before, +.leaflet-tooltip-left:before, +.leaflet-tooltip-right:before { + position: absolute; + pointer-events: none; + border: 6px solid transparent; + background: transparent; + content: ''; +} + +/* Directions */ + +.leaflet-tooltip-bottom { + margin-top: 6px; +} + +.leaflet-tooltip-top { + margin-top: -6px; +} + +.leaflet-tooltip-bottom:before, +.leaflet-tooltip-top:before { + left: 50%; + margin-left: -6px; +} + +.leaflet-tooltip-top:before { + bottom: 0; + margin-bottom: -12px; + border-top-color: #fff; +} + +.leaflet-tooltip-bottom:before { + top: 0; + margin-top: -12px; + margin-left: -6px; + border-bottom-color: #fff; +} + +.leaflet-tooltip-left { + margin-left: -6px; +} + +.leaflet-tooltip-right { + margin-left: 6px; +} + +.leaflet-tooltip-left:before, +.leaflet-tooltip-right:before { + top: 50%; + margin-top: -6px; +} + +.leaflet-tooltip-left:before { + right: 0; + margin-right: -12px; + border-left-color: #fff; +} + +.leaflet-tooltip-right:before { + left: 0; + margin-left: -12px; + border-right-color: #fff; +} diff --git a/packages/ui/src/styles/loader.css b/packages/ui/src/styles/loader.css new file mode 100644 index 0000000000000000000000000000000000000000..3acdcde0c871be559ec913e31590b5334c9b2e4f --- /dev/null +++ b/packages/ui/src/styles/loader.css @@ -0,0 +1,38 @@ +.loader { + border: var(--color-bg) 6px solid; + width: calc(var(--unit) * 2); + height: calc(var(--unit) * 2); + margin: auto; + border-radius: 100%; + animation: grow 1.5s infinite; +} + +@keyframes grow { + 0% { + opacity: 1; + transform: scale(0); + } + 70% { + opacity: 1; + transform: scale(1); + } + 100% { + opacity: 0; + transform: scale(0); + } +} + +.loader-file { + position: relative; + width: 128px; + height: 24px; + border: var(--color-bg) 6px solid; +} + +.loader-file-bar { + position: absolute; + top: 0; + bottom: 0; + left: 0; + background: var(--color-bg); +} diff --git a/packages/ui/src/styles/normalize.css b/packages/ui/src/styles/normalize.css new file mode 100644 index 0000000000000000000000000000000000000000..2daa7e9e96ab9c7b0d1b7f3edd1e3e27c9b7d8c2 --- /dev/null +++ b/packages/ui/src/styles/normalize.css @@ -0,0 +1 @@ +@import-normalize; diff --git a/packages/ui/src/styles/settings.css b/packages/ui/src/styles/settings.css new file mode 100644 index 0000000000000000000000000000000000000000..bdfb146d817a8c45a649ca9d6f2becf9e329c642 --- /dev/null +++ b/packages/ui/src/styles/settings.css @@ -0,0 +1,87 @@ +/* system.css / settings +------------------------------- +http://francoisromain.github.io/postcss-structure +*/ + +:root { + /* Colors ------------------------------- */ + --color-text: #666; + --color-bg: white; + --color-transparent: rgb(248 247 243 / 0%); + --color-inverse: #3d3d35; + --color-neutral: #c6c4bc; + --color-alt: #f0efe8; + --color-hilite: #b5d1d1; + --color-error: #e82239; + --color-warning: #ff891c; + --color-info: #76b6bd; + --color-success: #6ea040; + + /* Basée sur le DSFR (https://vue-dsfr.netlify.app/) */ + --dsfr-bf500: #000091; + --dsfr-g600: #6a6a6a; + --dsfr-color-hover: rgb(0 0 221 / 100%); + + /* Base units ------------------------------- */ + + /* font-size: 1rem = 16 px */ + --base-font-size: 1rem; + + /* base: 1.5rem = 24 px */ + --unit: 1.5rem; + + /* line: 0.0625rem = 1px */ + --unit-px: calc(var(--unit) / 24); + + /* xxs: 0.1875rem = 3px */ + --unit-xxs: calc(var(--unit) / 8); + + /* xs: 0.375rem = 6px */ + --unit-xs: calc(var(--unit) / 4); + + /* s: 0.75rem = 12px */ + --unit-s: calc(var(--unit) / 2); + + /* m: 1.125rem = 18px */ + --unit-m: calc(var(--unit) * 3 / 4); + + /* l: 2.25rem = 36 px */ + --unit-l: calc(var(--unit) * 3 / 2); + + /* xl: 3rem = 48px */ + --unit-xl: calc(var(--unit) * 2); + + /* xxl: 3.75rem = 60 px */ + --unit-xxl: calc(var(--unit) * 2.5); + --unit-infinity: 9999px; + + /* Lists ------------------------------- */ + --list-postfix: ','; + --list-prefix: '―'; + + /* Grid ------------------------------- */ + + /* + postcss-grid-system configuration + https://github.com/francoisromain/postcss-grid-system#configuration + */ + + /* width of a single bloc in rem */ + --col-width: 20.5rem; + + /* width of the gutter in rem */ + --gutter: var(--unit); + + /* padding of the main container in rem */ + --container-padding: var(--unit); + + /* hr */ + --border-color: var(--color-neutral); + --border-width: var(--unit-px); +} + +/* media queries: x * col-width + gutter */ +@custom-media --viewport-mobile (min-width: 22em); +@custom-media --viewport-tablet (min-width: 42.5em); +@custom-media --viewport-desktop (min-width: 63em); +@custom-media --viewport-large (min-width: 83.5em); diff --git a/packages/ui/src/styles/styles.css b/packages/ui/src/styles/styles.css new file mode 100644 index 0000000000000000000000000000000000000000..1413761ed28f5ddf9ef1c67c40e0d280331916f5 --- /dev/null +++ b/packages/ui/src/styles/styles.css @@ -0,0 +1,49 @@ +/* Settings ------------------------------- */ + +@import 'settings.css'; + +/* Default ------------------------------- */ + +@import 'normalize.css'; +@import 'system/reset.css'; +@import 'system/print.css'; + +/* Elements ------------------------------- */ + +@import 'buttons.css'; +@import 'icons/icons.css'; + +/* Grids ------------------------------- */ + +/* @import 'grids/grid-system.css'; */ +@import 'grids/grid-fluid.css'; +@import 'grids/grid-utils.css'; + +/* Layout ------------------------------- */ + +@import 'system/typography.css'; +@import 'system/lists.css'; +@import 'system/tables.css'; +@import 'system/forms.css'; +@import 'system/utils.css'; +@import 'system/margins.css'; +@import 'system/paddings.css'; +@import 'system/colors.css'; +@import 'system/ui.css'; +@import 'system/code.css'; +@import 'system/footer.css'; +@import 'system/tools.css'; + +/* Leaflet ------------------------------- */ + +@import 'leaflet/overrides.css'; +@import 'leaflet/gesture-handling.css'; +@import 'leaflet/marker-clusters.css'; +@import 'leaflet/fullscreen.css'; + +/* Theme ------------------------------- */ + +@import 'loader.css'; +@import 'transitions.css'; +@import 'camino.css'; +@import 'theme.css'; diff --git a/packages/ui/src/styles/system/code.css b/packages/ui/src/styles/system/code.css new file mode 100644 index 0000000000000000000000000000000000000000..a1b20b6518ff659bcae3e879f18ef5648525be1a --- /dev/null +++ b/packages/ui/src/styles/system/code.css @@ -0,0 +1,89 @@ +pre code { + display: block; +} + +code { + background-color: var(--color-alt); + white-space: pre; + hyphens: none; + word-wrap: break-word; +} + +/* from https://github.com/PrismJS/prism/blob/gh-pages/themes/prism.css */ + +:not(pre) > code[class*='language-'] { + padding: 0.1em; + white-space: normal; +} + +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: var(--color-neutral); +} + +.token.punctuation { + color: var(--color-neutral); +} + +.namespace { + opacity: 0.7; +} + +.token.property, +.token.tag, +.token.boolean, +.token.number, +.token.constant, +.token.symbol, +.token.deleted { + color: rgba(212, 67, 74, 1); +} + +.token.selector, +.token.attr-name, +.token.string, +.token.char, +.token.builtin, +.token.inserted { + color: rgba(57, 119, 191, 1); +} + +.token.operator, +.token.entity, +.token.url, +.language-css .token.string, +.style .token.string { + color: #a67f59; + background: hsla(0, 0%, 100%, 0.5); +} + +.token.atrule, +.token.attr-value, +.token.keyword { + color: rgba(105, 134, 46, 1); +} + +.token.function { + color: #dd4a68; +} + +.token.regex, +.token.important, +.token.variable { + color: #e90; +} + +.token.important, +.token.bold { + font-weight: bold; +} + +.token.italic { + font-style: italic; +} + +.token.entity { + cursor: help; +} diff --git a/packages/ui/src/styles/system/colors.css b/packages/ui/src/styles/system/colors.css new file mode 100644 index 0000000000000000000000000000000000000000..9f49e050de9692226a6cb81d9e683f5a4cd88bc3 --- /dev/null +++ b/packages/ui/src/styles/system/colors.css @@ -0,0 +1,92 @@ +/* + Colors +------------------------------- +*/ + +.color-bg { + color: var(--color-bg); +} + +.color-text { + color: var(--color-text); +} + +.color-hilite { + color: var(--color-hilite); +} + +.color-alt { + color: var(--color-alt); +} + +.color-neutral { + color: var(--color-neutral); +} + +.color-info { + color: var(--color-info); +} + +.color-error { + color: var(--color-error); +} + +.color-warning { + color: var(--color-warning); +} + +.color-success { + color: var(--color-success); +} + +.color-inverse { + color: var(--color-inverse); +} + +.bg-bg { + background-color: var(--color-bg); +} + +.bg-hilite { + background-color: var(--color-hilite); +} + +.bg-alt { + background-color: var(--color-alt); +} + +.bg-neutral { + background-color: var(--color-neutral); +} + +.bg-inverse { + background-color: var(--color-inverse); +} + +.bg-info { + background: var(--color-info); +} + +.bg-error { + background: var(--color-error); +} + +.bg-warning { + background: var(--color-warning); +} + +.bg-success { + background: var(--color-success); +} + +.bg-bg-alpha { + background-color: color-mod(var(--color-bg) alpha(50%)); +} + +.bg-alt-alpha { + background-color: color-mod(var(--color-alt) alpha(50%)); +} + +.bg-inverse-alpha { + background-color: color-mod(var(--color-inverse) alpha(50%)); +} diff --git a/packages/ui/src/styles/system/footer.css b/packages/ui/src/styles/system/footer.css new file mode 100644 index 0000000000000000000000000000000000000000..a4f4370a86d1952bd721a13a6cc8ddaeddad2ecd --- /dev/null +++ b/packages/ui/src/styles/system/footer.css @@ -0,0 +1,51 @@ +/* + Sticky footer +------------------------------- +http://mystrd.at/modern-clean-css-sticky-footer/ +*/ + +:root { + --footer-height: calc(var(--unit) * 12); +} + +html { + position: relative; + height: 100%; +} + +body { + min-height: 100%; +} + +.page { + display: flex; + min-height: 100vh; + flex-direction: column; +} + +.main { + flex: 1; +} + +.footer { + background-color: var(--color-inverse); + color: var(--color-neutral); +} + +.footer input { + color: var(--color-text); +} + +.footer a { + color: var(--color-alt); + + &:hover { + color: var(--color-bg); + } +} + +@media (--viewport-desktop) { + .footer { + height: var(--footer-height); + } +} diff --git a/packages/ui/src/styles/system/forms.css b/packages/ui/src/styles/system/forms.css new file mode 100644 index 0000000000000000000000000000000000000000..cf5cf9ec2ab7b4cf9794793a2ef226a58bd5ff7d --- /dev/null +++ b/packages/ui/src/styles/system/forms.css @@ -0,0 +1,159 @@ +/* + Forms +------------------------------- +*/ + +@import 'choices.js/public/assets/styles/choices.css'; + +input[type='text'], +input[type='email'], +input[type='search'], +input[type='password'], +input[type='tel'], +input[type='number'], +input[type='date'], +input[type='url'], +select, +textarea, +.choices__inner, +.input { + width: 100%; + border: 0 none; + background-color: var(--color-alt); + height: auto; + color: inherit; + &:not(.choices__input) { + box-shadow: 0 2px 0 0 var(--dsfr-g600); + } + +} + +.choices{ + box-shadow: 0 2px 0 0 var(--dsfr-g600); +} + +select, +.choices__inner { + background-image: svg-load('../icons/svgs/24-chevron-b.svg', + fill='#666' + ); + background-position: right var(--unit-s) center; + background-repeat: no-repeat; + + /* for FF: http://stackoverflow.com/a/18317228/2112538 */ + -moz-appearance: none; + text-indent: 0.01px; + text-overflow: ellipsis; + overflow: hidden; +} + +textarea { + /* http://stackoverflow.com/a/5196591/2112538 */ + vertical-align: top; + resize: vertical; + height: auto; +} + +textarea:not(.choices__input):focus, +input:not(.choices__input):focus, +select:not(.choices__input):focus, +.choices.is-focused { + border-right: var(--unit-s) solid var(--dsfr-bf500); +} + +input[type='text'].bg-bg, +input[type='email'].bg-bg, +input[type='search'].bg-bg, +input[type='password'].bg-bg, +input[type='tel'].bg-bg, +input[type='number'].bg-bg, +input[type='date'].bg-bg, +input[type='url'].bg-bg, +select.bg-bg, +textarea.bg-bg { + background-color: var(--color-bg); +} + +input.success { + border-right: var(--unit-s) solid var(--color-success); +} + +input.error { + border-right: var(--unit-s) solid var(--color-error); +} + +input:disabled, +textarea:disabled, +select:disabled, +.input-disabled { + background-color: color-mod(var(--color-alt) alpha(50%)); +} + +input.bg-bg:disabled, +textarea.bg-bg:disabled, +select.bg-bg:disabled { + background-color: color-mod(var(--color-bg) alpha(50%)); +} + +*::placeholder { + font-style: italic; + color: var(--color-neutral); +} + +[type='file'] { + display: none; +} + +.choices[data-type*=select-multiple] .choices__button, +.choices[data-type*=text] .choices__button { + border-left: 1px solid white; +} + +.choices__list--multiple .choices__item, +.choices__list--multiple .choices__item.is-highlighted { + background-color: var(--color-inverse); + border: 1px solid var(--color-inverse); + font-weight: bold; +} + + +.choices[data-type*=select-one]::after { + display: none; +} + +.choices[data-type*=select-one] .choices__inner { + padding-bottom: 0; + padding: var(--unit-s); +} + +.choices__list--single { + padding: 0; +} + +.choices[data-type*=select-one] .choices__button { + margin-right: 40px; +} + +.choices__button { + background-image: svg-load('../icons/svgs/24-close.svg', + fill=none, + stroke= '#666', + stroke-linecap=round, + stroke-linejoin=round, + stroke-width=1.25px + ); +} + +.choices__button:hover { + background-image: svg-load('../icons/svgs/24-close.svg', + fill=none, + stroke= 'white', + stroke-linecap=round, + stroke-linejoin=round, + stroke-width=1.25px + ); +} + +.choices__list--dropdown .choices__item--selectable.is-highlighted { + background-color: var(--color-alt); +} diff --git a/packages/ui/src/styles/system/lists.css b/packages/ui/src/styles/system/lists.css new file mode 100644 index 0000000000000000000000000000000000000000..0c90c7bab7c72c4848361f8fec71015133ebdbc6 --- /dev/null +++ b/packages/ui/src/styles/system/lists.css @@ -0,0 +1,87 @@ +/* + Lists +------------------------------- + +*/ + +ul, +ol, +dd { + /* overflow: auto; */ + list-style-position: inside; +} + +ul > li > ul, +ul > li > ol, +ol > li > ul, +ol > li > ol { + margin-left: var(--unit-l); +} + +ol { + list-style-type: decimal; +} + +li { + & > ul, + & > ol { + margin-bottom: 0; + } +} + +.list-sans { + padding: 0; + list-style: none; +} + +.list-inline { + /* display: flex; + flex-wrap: wrap; */ + padding: 0; + list-style: none; + + & > li:not(.right) { + float: left; + } + + & > li.right { + float: right; + } +} + +.list-inline.flex-right { + margin-right: calc(-1 * var(--unit-xs)); +} + +.list-inline::after { + content: ''; + display: block; + clear: both; +} + +.list-prefix { + list-style-type: none; + margin-left: var(--unit); + + & > li::before { + content: var(--list-prefix); + margin-left: calc(var(--unit) * -1); + width: var(--unit); + display: inline-block; + color: grey; + } +} + +.list-postfix { + list-style: none; + + & > li { + &::after { + content: var(--list-postfix); + } + } +} + +.list-inline.list-postfix li:last-child::after { + content: none; +} diff --git a/packages/ui/src/styles/system/margins.css b/packages/ui/src/styles/system/margins.css new file mode 100644 index 0000000000000000000000000000000000000000..f5d2e87ee6d25a5e31d8a48baf981179b6fd8e8d --- /dev/null +++ b/packages/ui/src/styles/system/margins.css @@ -0,0 +1,320 @@ +/* + Margins +------------------------------- + +*/ + +.m-0 { + margin: 0; +} + +.m { + margin: var(--unit); +} + +.m-xxs { + margin: var(--unit-xxs); +} + +.m-xs { + margin: var(--unit-xs); +} + +.m-s { + margin: var(--unit-s); +} + +.m-m { + margin: var(--unit-m); +} + +.m-l { + margin: var(--unit-l); +} + +.m-xl { + margin: var(--unit-xl); +} + +.mr-0 { + margin-right: 0; +} + +.mr { + margin-right: var(--unit); +} + +.mr-px { + margin-right: var(--unit-px); +} + +.mr-xxs { + margin-right: var(--unit-xxs); +} + +.mr-xs { + margin-right: var(--unit-xs); +} + +.mr-s { + margin-right: var(--unit-s); +} + +.mr-m { + margin-right: var(--unit-m); +} + +.mr-l { + margin-right: var(--unit-l); +} + +.mr-xl { + margin-right: var(--unit-xl); +} + +.ml-0 { + margin-left: 0; +} + +.ml { + margin-left: var(--unit); +} + +.ml-xxs { + margin-left: var(--unit-xxs); +} + +.ml-xs { + margin-left: var(--unit-xs); +} + +.ml-s { + margin-left: var(--unit-s); +} + +.ml-m { + margin-left: var(--unit-m); +} + +.ml-l { + margin-left: var(--unit-l); +} + +.ml-xl { + margin-left: var(--unit-xl); +} + +.mt-0 { + margin-top: 0; +} + +.mt { + margin-top: var(--unit); +} + +.mt-px { + margin-top: var(--unit-px); +} + +.mt-xxs { + margin-top: var(--unit-xxs); +} + +.mt-xs { + margin-top: var(--unit-xs); +} + +.mt-s { + margin-top: var(--unit-s); +} + +.mt-m { + margin-top: var(--unit-m); +} + +.mt-l { + margin-top: var(--unit-l); +} + +.mt-xl { + margin-top: var(--unit-xl); +} + +.mt-xxl { + margin-top: var(--unit-xxl); +} + +.mt--s { + margin-top: calc(var(--unit-s) * -1); +} + +.mt--m { + margin-top: calc(var(--unit-m) * -1); +} + +.mb { + margin-bottom: var(--unit); +} + +.mb-px { + margin-bottom: var(--unit-px); +} + +.mb-xxs { + margin-bottom: var(--unit-xxs); +} + +.mb-xs { + margin-bottom: var(--unit-xs); +} + +.mb-s { + margin-bottom: var(--unit-s); +} + +.mb-m { + margin-bottom: var(--unit-m); +} + +.mb-l { + margin-bottom: var(--unit-l); +} + +.mb-xl { + margin-bottom: var(--unit-xl); +} + +.mb-xxl { + margin-bottom: var(--unit-xxl); +} + +.mb-0 { + margin-bottom: 0; +} + +.mb--s { + margin-bottom: calc(var(--unit-s) * -1); +} + +.mb--xs { + margin-bottom: calc(var(--unit-xs) * -1); +} + +.mx { + margin-right: var(--unit); + margin-left: var(--unit); +} + +.mx-xxs { + margin-right: var(--unit-xxs); + margin-left: var(--unit-xxs); +} + +.mx-xs { + margin-right: var(--unit-xs); + margin-left: var(--unit-xs); +} + +.mx-s { + margin-right: var(--unit-s); + margin-left: var(--unit-s); +} + +.mx-m { + margin-right: var(--unit-m); + margin-left: var(--unit-m); +} + +.mx-l { + margin-right: var(--unit-l); + margin-left: var(--unit-l); +} + +.mx-xl { + margin-right: var(--unit-xl); + margin-left: var(--unit-xl); +} + +.mx-xxl { + margin-right: var(--unit-xxl); + margin-left: var(--unit-xxl); +} + +.mx-0 { + margin-right: 0; + margin-left: 0; +} + +.mx-auto { + margin-left: auto; + margin-right: auto; +} + +.mx-- { + margin-left: calc(var(--unit) * -1); + margin-right: calc(var(--unit) * -1); +} + +.mx--m { + margin-left: calc(var(--unit-m) * -1); + margin-right: calc(var(--unit-m) * -1); +} + +.my { + margin-top: var(--unit); + margin-bottom: var(--unit); +} + +.my-xxs { + margin-top: var(--unit-xxs); + margin-bottom: var(--unit-xxs); +} + +.my-xs { + margin-top: var(--unit-xs); + margin-bottom: var(--unit-xs); +} + +.my-s { + margin-top: var(--unit-s); + margin-bottom: var(--unit-s); +} + +.my-m { + margin-top: var(--unit-m); + margin-bottom: var(--unit-m); +} + +.my-l { + margin-top: var(--unit-l); + margin-bottom: var(--unit-l); +} + +.my-xl { + margin-top: var(--unit-xl); + margin-bottom: var(--unit-xl); +} + +.my-xxl { + margin-top: var(--unit-xxl); + margin-bottom: var(--unit-xxl); +} + +.my-0 { + margin-top: 0; + margin-bottom: 0; +} + +.my--s { + margin-top: calc(var(--unit-s) * -1); + margin-bottom: calc(var(--unit-s) * -1); +} + +.my--xs { + margin-top: calc(var(--unit-xs) * -1); + margin-bottom: calc(var(--unit-xs) * -1); +} + +.mt--xs { + margin-top: calc(var(--unit-xs) * -1); +} diff --git a/packages/ui/src/styles/system/paddings.css b/packages/ui/src/styles/system/paddings.css new file mode 100644 index 0000000000000000000000000000000000000000..0ef4980bf0e47189e493f415df18da21e7814030 --- /dev/null +++ b/packages/ui/src/styles/system/paddings.css @@ -0,0 +1,248 @@ +/* + Padding +------------------------------- +*/ + +.p { + padding: var(--unit); +} + +.p-0 { + padding: 0; +} + +.p-xxs { + padding: var(--unit-xxs); +} + +.p-xs { + padding: var(--unit-xs); +} + +.p-s { + padding: var(--unit-s); +} + +.p-m { + padding: var(--unit-m); +} + +.p-l { + padding: var(--unit-l); +} + +.p-xl { + padding: var(--unit-xl); +} + +.p-xxl { + padding: var(--unit-xxl); +} + +.px { + padding-left: var(--unit); + padding-right: var(--unit); +} + +.px-xxs { + padding-left: var(--unit-xxs); + padding-right: var(--unit-xxs); +} + +.px-xs { + padding-left: var(--unit-xs); + padding-right: var(--unit-xs); +} + +.px-s { + padding-left: var(--unit-s); + padding-right: var(--unit-s); +} + +.px-m { + padding-left: var(--unit-m); + padding-right: var(--unit-m); +} + +.px-l { + padding-left: var(--unit-l); + padding-right: var(--unit-l); +} + +.px-xl { + padding-left: var(--unit-xl); + padding-right: var(--unit-xl); +} + +.px-xxl { + padding-left: var(--unit-xxl); + padding-right: var(--unit-xxl); +} + +.py { + padding-top: var(--unit); + padding-bottom: var(--unit); +} + +.py-xxs { + padding-top: var(--unit-xxs); + padding-bottom: var(--unit-xxs); +} + +.py-xs { + padding-top: var(--unit-xs); + padding-bottom: var(--unit-xs); +} + +.py-s { + padding-top: var(--unit-s); + padding-bottom: var(--unit-s); +} + +.py-m { + padding-top: var(--unit-m); + padding-bottom: var(--unit-m); +} + +.py-l { + padding-top: var(--unit-l); + padding-bottom: var(--unit-l); +} + +.py-xl { + padding-top: var(--unit-xl); + padding-bottom: var(--unit-xl); +} + +.py-xxl { + padding-top: var(--unit-xxl); + padding-bottom: var(--unit-xxl); +} + +.pt { + padding-top: var(--unit); +} + +.pt-xxs { + padding-top: var(--unit-xxs); +} + +.pt-xs { + padding-top: var(--unit-xs); +} + +.pt-s { + padding-top: var(--unit-s); +} + +.pt-m { + padding-top: var(--unit-m); +} + +.pt-l { + padding-top: var(--unit-l); +} + +.pt-xl { + padding-top: var(--unit-xl); +} + +.pt-xxl { + padding-top: var(--unit-xxl); +} + +.pb { + padding-bottom: var(--unit); +} + +.pb-xxs { + padding-bottom: var(--unit-xxs); +} + +.pb-xs { + padding-bottom: var(--unit-xs); +} + +.pb-s { + padding-bottom: var(--unit-s); +} + +.pb-m { + padding-bottom: var(--unit-m); +} + +.pb-l { + padding-bottom: var(--unit-l); +} + +.pb-xl { + padding-bottom: var(--unit-xl); +} + +.pb-xxl { + padding-bottom: var(--unit-xxl); +} + +.pr { + padding-right: var(--unit); +} + +.pr-xxs { + padding-right: var(--unit-xxs); +} + +.pr-xs { + padding-right: var(--unit-xs); +} + +.pr-s { + padding-right: var(--unit-s); +} + +.pr-m { + padding-right: var(--unit-m); +} + +.pr-l { + padding-right: var(--unit-l); +} + +.pr-xl { + padding-right: var(--unit-xl); +} + +.pr-xxl { + padding-right: var(--unit-xxl); +} + +.pl { + padding-left: var(--unit); +} + +.pl-xxs { + padding-left: var(--unit-xxs); +} + +.pl-xs { + padding-left: var(--unit-xs); +} + +.pl-s { + padding-left: var(--unit-s); +} + +.pl-m { + padding-left: var(--unit-m); +} + +.pl-l { + padding-left: var(--unit-l); +} + +.pl-xl { + padding-left: var(--unit-xl); +} + +.pl-xxl { + padding-left: var(--unit-xxl); +} diff --git a/packages/ui/src/styles/system/print.css b/packages/ui/src/styles/system/print.css new file mode 100644 index 0000000000000000000000000000000000000000..fd609d47f8864a385ee02cfbdf5cb998b186bb69 --- /dev/null +++ b/packages/ui/src/styles/system/print.css @@ -0,0 +1,44 @@ +/* + Print +------------------------------- + +From HTML5 Boilerplate +https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css + +Black prints faster: http://www.sanbeiji.com/archives/953 +*/ + +@media print { + *, + *::before, + *::after, + *::first-letter, + *::first-line { + background: transparent !important; + color: #000 !important; + box-shadow: none !important; + text-shadow: none !important; + } + + a, + a:visited { + text-decoration: underline; + } + + a[href]::after { + content: ' (' attr(href) ')'; + } + + abbr[title]::after { + content: ' (' attr(title) ')'; + } + + /* + Don't show links that are fragment identifiers, + or use the `javascript:` pseudo protocol + */ + a[href^='#']::after, + a[href^='javascript:']::after { + content: ''; + } +} diff --git a/packages/ui/src/styles/system/reset.css b/packages/ui/src/styles/system/reset.css new file mode 100644 index 0000000000000000000000000000000000000000..c7fe37fb9e8b9a1fbbc81e1bcc332e4fc5c6c4c8 --- /dev/null +++ b/packages/ui/src/styles/system/reset.css @@ -0,0 +1,140 @@ +/* + Reset +------------------------------- +*/ + +/* + css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice + paulirish.com/2012/box-sizing-border-box-ftw +*/ + +html, +* { + box-sizing: border-box; +} + +*, +*::before, +*::after { + box-sizing: inherit; +} + +html { + overflow-y: scroll; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + text-rendering: optimizeLegibility; + background-color: var(--color-bg); + color: var(--color-inverse); + font-family: system-ui; + typescale: 0 1; +} + +body, +h1, +h2, +h3, +h4, +h6, +h5, +p, +blockquote, +pre, +dl, +dd, +ol, +ul, +form, +fieldset, +legend, +figure, +table, +th, +td, +caption, +hr { + margin: 0; + padding: 0; +} + +h1, +h2, +h3, +h4, +h6, +h5 { + font-weight: normal; + font-style: normal; + text-decoration: none; +} + +abbr[title], +dfn[title] { + cursor: help; +} + +button, +input, +textarea, +select, +optgroup { + font: inherit; + typescale: 0 1; + text-align: left; +} + +fieldset { + border: 0 none transparent; +} + +*:focus, +textarea:focus, +input:focus { + outline: none; + outline: 0; +} + +label { + cursor: pointer; +} + +u, +ins { + text-decoration: none; +} + +ins { + border-bottom: 1px solid; +} + +img, +video { + max-width: 100%; + font-style: italic; + vertical-align: middle; + height: auto; + outline: 0; +} + +/* remove yellow bg on automplete in chrome */ + +input:-webkit-autofill, +select:-webkit-autofill { + -webkit-box-shadow: 0 0 0 0 white inset; +} + +/* remove round corner on iOs */ + +input:not([type='radio']):not([type='checkbox']):not([class^='.rnd']), +select { + -webkit-appearance: none; + border-radius: 0; +} + +/* https://github.com/necolas/normalize.css/pull/697/commits/c3762f068feca8e218e69f54daf397cd0f33176d */ +button, +html [type='button'], +[type='reset'], +[type='submit'] { + border-radius: 0; +} diff --git a/packages/ui/src/styles/system/tables.css b/packages/ui/src/styles/system/tables.css new file mode 100644 index 0000000000000000000000000000000000000000..7597c4bda5ee287bff8a122ecac8f8f6ceececd6 --- /dev/null +++ b/packages/ui/src/styles/system/tables.css @@ -0,0 +1,95 @@ +/* + Table +------------------------------- +*/ + +table, +.table { + width: 100%; + border-collapse: collapse; + border-spacing: 0; + border: none; +} + +.table { + display: table; +} + +tr, +.tr { + border-bottom-color: var(--border-color); + border-bottom-width: var(--unit-px); + border-bottom-style: dotted; +} + +.tr { + display: table-row; +} + +th, +.th, +.th button { + text-align: left; + font-weight: 700; + letter-spacing: -0.02rem; + typescale: -1 1; + color: var(--color-neutral); +} + +td, +th, +.td, +.th { + vertical-align: top; + overflow-wrap: break-word; + padding-bottom: var(--unit-s); + padding-top: calc(var(--unit-s) - var(--unit-px)); +} + +.th, +.td { + display: table-cell; +} + +td:not(:first-child), +th:not(:first-child), +.td:not(:first-child), +.th:not(:first-child) { + padding-left: var(--unit-s); +} + +td:not(:last-child), +th:not(:last-child), +.td:not(:last-child), +.th:not(:last-child) { + padding-right: var(--unit-s); +} + +.table-striped tr:nth-child(even) { + background-color: var(--color-alt); +} + +.table-sans tr { + border-bottom: var(--unit-px) dotted var(--border-bg); +} + +.table-xs td, +.table-xs th { + padding-top: var(--unit-xs); + padding-bottom: calc(var(--unit-xs) - var(--unit-px)); +} + +.table-xxs td, +.table-xxs th { + padding-top: var(--unit-xxs); + padding-bottom: calc(var(--unit-xxs) - var(--unit-px)); +} + +.table-fixed { + display: table; + table-layout: fixed; +} + +.tr-link:hover { + background-color: var(--color-alt); +} diff --git a/packages/ui/src/styles/system/tools.css b/packages/ui/src/styles/system/tools.css new file mode 100644 index 0000000000000000000000000000000000000000..669251e2b6b8c17d961f841da2da6b5b110dd71e --- /dev/null +++ b/packages/ui/src/styles/system/tools.css @@ -0,0 +1,46 @@ +/* Debug trick ------------------------------- +http://qr.ae/ROqymT */ + +.debug { + background-color: rgba(255, 0, 0, 0.2); +} + +.debug * { + background-color: rgba(0, 255, 0, 0.2); +} + +.debug * * { + background-color: rgba(0, 0, 255, 0.2); +} + +.debug * * * { + background-color: rgba(255, 0, 255, 0.2); +} + +.debug * * * * { + background-color: rgba(0, 255, 255, 0.2); +} + +.debug * * * * * { + background-color: rgba(255, 255, 0, 0.2); +} + +.debug * * * * * * { + background-color: rgba(255, 255, 0, 0.2); +} + +.grid { + background-size: var(--col-width) calc(var(--unit) / 2); + background-position: center top; + background-image: linear-gradient( + rgba(0, 0, 0, 0.05) 0.01rem, + transparent 0.09rem + ), + linear-gradient(90deg, rgba(255, 0, 0, 0.25) 0, transparent 0.25%), + linear-gradient( + 90deg, + transparent 50%, + rgba(255, 0, 0, 0.25) 50%, + transparent 50.25% + ); +} diff --git a/packages/ui/src/styles/system/typography.css b/packages/ui/src/styles/system/typography.css new file mode 100644 index 0000000000000000000000000000000000000000..c1db278ba83f5924951052b74a90f54c686613d1 --- /dev/null +++ b/packages/ui/src/styles/system/typography.css @@ -0,0 +1,242 @@ +/* + Typography +------------------------------- +*/ + +@typescale { + scale: 1.33; + font-size: var(--base-font-size); + line-height: var(--unit); +} + +h1, +h2, +h3, +h4, +h6, +ul, +ol, +dl, +blockquote, +p, +address, +table, +fieldset, +figure, +pre { + margin-bottom: var(--unit); +} + +.h0 { + typescale: 5 3; + color: var(--color-info); +} + +h1, +.h1 { + typescale: 3 1.5; +} + +h2, +.h2 { + typescale: 2 1.5; +} + +h3, +.h3 { + typescale: 1 1; +} + +h4, +.h4 { + typescale: 0 1; +} + +h5, +.h5 { + margin-top: var(--unit-xs); + typescale: -0.75 0.75; +} + +h6, +.h6, +small, +.small { + typescale: -0.75 0.75; +} + +h5, +.h5, +h6, +.h6 { + margin-bottom: var(--unit-s); +} + +.h0, +h1, +h2, +h3, +h4, +h6, +h5 { + font-weight: 700; + letter-spacing: -0.02rem; +} + +h5 { + color: var(--color-neutral); +} + +.btn-border:hover h5 { + color: var(--color-bg); +} + +blockquote { + typescale: 0.5 1; + font-style: italic; + padding: var(--unit-s); + quotes: '«\00A0''\00A0»'; +} + +blockquote::before, +blockquote::after { + typescale: 3 0; + color: var(--color-neutral); + vertical-align: sub; +} + +blockquote::before { + content: open-quote; +} + +blockquote::after { + content: close-quote; +} + +blockquote:last-child { + margin-bottom: 0; +} + +hr { + clear: both; + border: 0; + height: 0; + border-top-width: var(--border-width); + border-top-style: dotted; + border-top-color: var(--border-color); + margin-bottom: calc(var(--unit) - var(--border-width)); +} + +a { + color: var(--color-inverse); + + &:visited { + color: var(--color-inverse); + } + + &:hover, + &:active, + &:focus { + color: var(--color-text); + } + + &.active { + color: var(--color-neutral); + } +} + +a.color-bg { + color: var(--color-bg); + + &:visited { + color: var(--color-bg); + } + + &:hover, + &:active, + &:focus { + color: var(--color-bg); + } + + &.active { + color: var(--color-neutral); + } +} + +b, +strong, +.strong, +.bold { + font-weight: 700; + letter-spacing: -0.02rem; +} + +i, +.italic { + font-style: italic; +} + +.lower { + text-transform: lowercase; +} + +.cap-first { + display: inline-block; +} + +.cap-first::first-letter { + text-transform: uppercase; +} + +.caps { + text-transform: uppercase; + letter-spacing: 0.25em; +} + +.line-through { + color: var(--color-neutral); + text-decoration: line-through; +} + +.underline { + border-bottom: 1px solid; +} + +.text-decoration-none, +.text-decoration-none a { + text-decoration: none; +} + +.nowrap { + white-space: nowrap; +} + +.nobreak { +} + +.truncate { + max-width: 100%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.text-center { + text-align: center; +} + +.text-left { + text-align: right; +} + +.text-right { + text-align: right; +} + +.mono { + font-family: 'Lucida Sans Typewriter', monaco, 'Lucida Console', monospace; +} + +dt { + display: inline-block; +} diff --git a/packages/ui/src/styles/system/ui.css b/packages/ui/src/styles/system/ui.css new file mode 100644 index 0000000000000000000000000000000000000000..55116c6df7d9aa2b6eb8f571cac3a2471de1883b --- /dev/null +++ b/packages/ui/src/styles/system/ui.css @@ -0,0 +1,199 @@ +/* + UI elements +------------------------------- +*/ + +.box { + box-decoration-break: clone; +} + +.pill { + border-radius: var(--unit-infinity); + box-decoration-break: clone; +} + +.pill-list *:first-child .pill-item { + border-radius: var(--unit-infinity) 0 0 var(--unit-infinity); +} + +.pill-list *:last-child .pill-item { + border-radius: 0 var(--unit-infinity) var(--unit-infinity) 0; +} + +.rnd { + border-radius: var(--unit); +} + +.rnd-0 { + border-radius: 0; +} + +.rnd-s { + border-radius: var(--unit-s); +} + +.rnd-m { + border-radius: var(--unit-m); +} + +.rnd-l { + border-top-left-radius: var(--unit); + border-bottom-left-radius: var(--unit); +} + +.rnd-r { + border-top-right-radius: var(--unit); + border-bottom-right-radius: var(--unit); +} + +.rnd-t-s { + border-top-left-radius: var(--unit-s); + border-top-right-radius: var(--unit-s); +} + +.rnd-b-s { + border-bottom-left-radius: var(--unit-s); + border-bottom-right-radius: var(--unit-s); +} + +.rnd-l-s { + border-top-left-radius: var(--unit-s); + border-bottom-left-radius: var(--unit-s); +} + +.rnd-r-s { + border-top-right-radius: var(--unit-s); + border-bottom-right-radius: var(--unit-s); +} + +.rnd-br-s { + border-bottom-right-radius: var(--unit-s); +} + +.rnd-xs { + border-radius: var(--unit-xs); +} + +.rnd-t-xs { + border-top-left-radius: var(--unit-xs); + border-top-right-radius: var(--unit-xs); +} + +.rnd-l-xs { + border-top-left-radius: var(--unit-xs); + border-bottom-left-radius: var(--unit-xs); +} + +.rnd-bl-xs { + border-bottom-left-radius: var(--unit-xs); +} + +.rnd-r-xs { + border-top-right-radius: var(--unit-xs); + border-bottom-right-radius: var(--unit-xs); +} + +.border-b { + border-bottom: var(--unit-px) solid var(--color-alt); + margin-bottom: calc(var(--unit) - var(--unit-px)); +} + +.border-l { + border-left: var(--unit-px) solid var(--color-neutral); +} + +.border-t { + border-top: var(--unit-px) solid var(--color-alt); +} + +.border-b-s:not(:last-child) { + border-bottom: var(--unit-px) solid var(--color-alt); + /* margin-bottom: calc(-1 * var(--unit-px)); */ +} + +.border-t-r { + border-top: var(--unit-px) solid var(--color-alt); + border-right: var(--unit-px) solid var(--color-alt); +} + +.border { + box-shadow: 0 0 0 var(--unit-px) var(--color-alt); +} + +.border-neutral { + box-shadow: inset 0 0 0 var(--unit-px) var(--color-neutral); +} + +.border-inverse { + box-shadow: inset 0 0 0 var(--unit-px) var(--color-inverse); +} + +.border-bg { + box-shadow: inset 0 0 0 var(--unit-px) var(--color-bg); + + /* border: solid var(--unit-xxs) var(--color-bg); */ +} + +.tooltip { + position: relative; +} + +.tooltip .tooltip-content { + width: 250px; + background-color: var(--color-bg); + color: var(--color-text); + text-align: center; + border: var(--border-width) solid var(--border-color); + border-radius: var(--unit-s); + + position: absolute; + left: 150%; + z-index: 1; + padding: var(--unit-s); +} + +.tooltip .tooltip span::after, +.tooltip .tooltip-content { + visibility: hidden; +} + +.tooltip:hover .tooltip span::after, +.tooltip:hover .tooltip-content { + visibility: visible; +} + +.shadow { + box-shadow: var(--unit-xs) var(--unit-xs) var(--unit) + color-mod(var(--color-neutral) alpha(0.25)); +} + +.shadow-inset { + box-shadow: inset var(--unit-xs) var(--unit-xs) var(--unit) + color-mod(var(--color-neutral) alpha(0.25)); +} + +.ribbon { + position: absolute; + overflow: hidden; + top: 0; + right: 0; + width: 150px; + height: 150px; +} + +.ribbon-bloc { + transform: rotate(45deg); +} + +.ribbon span { + display: inline-block; + width: 100%; + color: var(--color-bg); + background-color: var(--color-warning); + text-align: center; +} + +.fixed-width { + width: calc(var(--col-width) * 1 / 4); + display: inline-block; +} diff --git a/packages/ui/src/styles/system/utils.css b/packages/ui/src/styles/system/utils.css new file mode 100644 index 0000000000000000000000000000000000000000..ac3b23c49213c141a0319138666f31855777caba --- /dev/null +++ b/packages/ui/src/styles/system/utils.css @@ -0,0 +1,219 @@ +/* + Utils +------------------------------- +*/ + +/* +http://cssmojo.com/the-very-latest-clearfix-reloaded/ +*/ + +.clearfix::after { + content: ''; + display: block; + clear: both; +} + +.dot { + display: inline-block; + width: var(--unit-m); + height: var(--unit-m); + border: 3px solid var(--color-bg); + vertical-align: text-bottom; +} + +.hide { + display: none; + visibility: hidden; +} + +.pointer { + cursor: pointer; +} + +.pointer-none { + pointer-events: none; +} + +.word-break { + word-break: break-all; +} + +.overflow-hidden { + overflow: hidden; +} + +.overflow-scroll-x { + overflow-x: auto; +} + +.overflow-scroll-y { + overflow-y: auto; +} + +.overflow-auto { + overflow: auto; +} + +.inline-block { + display: inline-block; +} + +.flex { + display: flex; +} + +.flex-grow { + flex-grow: 1; +} + +.flex-grow-0 { + flex-grow: 0; +} + +.flex-start { + align-items: flex-start; +} + +.flex-end { + align-items: flex-end; +} + +.flex-center { + align-items: center; +} + +.flex-self-start { + align-self: flex-start; +} + +.flex-self-end { + align-self: flex-end; +} + +.flex-direction-column { + flex-direction: column; +} + +.flex-align-items-stretch { + align-items: stretch; +} + +.left { + float: left; +} + +.right { + float: right; +} + +.flex-right { + margin-left: auto; +} + +.flex-bottom { + margin-top: auto; +} + +.relative { + position: relative; +} + +.fixed { + position: fixed; +} + +.absolute { + position: absolute; +} + +.sticky { + position: sticky; +} + +.center { + left: 50%; + transform: translate(-50%, 0); +} + +.full { + top: 0; + left: 0; + right: 0; + bottom: 0; +} + +.full-x { + width: 100%; +} + +/* stylelint-disable-next-line selector-class-pattern */ +.full-x- { + width: 99%; +} + +.full-y { + height: 100%; +} + +.text-ellipsis { + text-overflow: ellipsis; + overflow: hidden; +} + +.align-y-top { + vertical-align: text-top; +} + +.min-width-3 { + min-width: calc(3 * var(--unit)); +} + +.min-width-5 { + min-width: calc(5 * var(--unit)); +} + +.min-width-6 { + min-width: calc(6 * var(--unit)); +} + +.min-width-8 { + min-width: calc(8 * var(--unit)); +} + +.min-width-9 { + min-width: calc(9 * var(--unit)); +} + +.min-width-10 { + min-width: calc(10 * var(--unit)); +} + +.min-width-12 { + min-width: calc(12 * var(--unit)); +} + +.min-width-full { + min-width: 100%; +} + +.max-width-1 { + max-width: var(--unit); +} + +.h-0 { + height: 0; + overflow: hidden; +} + +.b-0 { + bottom: 0; +} + +.z-2 { + z-index: 2; +} + +/* stylelint-disable-next-line selector-class-pattern */ +.z--100 { + z-index: -100; +} diff --git a/packages/ui/src/styles/theme.css b/packages/ui/src/styles/theme.css new file mode 100644 index 0000000000000000000000000000000000000000..c9122295018b66addd0f470b55fd17de45f29ae0 --- /dev/null +++ b/packages/ui/src/styles/theme.css @@ -0,0 +1,317 @@ +/* + Theme +------------------------------- +*/ + +[v-cloak] { + display: none; +} + +html { + overflow-x: hidden; +} + +.sponsor { + max-height: calc(var(--unit) * 4); +} + +.logo { + height: calc(var(--unit) * 2.3333); +} + +.title { + typescale: 2.5 1.5; +} + +.map:not(.leaflet-pseudo-fullscreen) { + z-index: 0; +} + +.map-detail, +.map-view { + min-height: calc(var(--unit) * 21); +} + +.points { + height: calc(var(--unit) * 24); + overflow-y: scroll; +} + +.points .container { + min-height: 100%; +} + +.line { + /* margin-top: calc(var(--unit-xxs) * -1); */ + border-top: var(--unit-xxs) solid var(--color-alt); +} + +.line-neutral { + /* margin-top: calc(var(--unit-xxs) * -1); */ + border-top: var(--unit-xxs) solid var(--color-neutral); +} + +.separator { + display: block; + width: calc(var(--col-width) / 2 - var(--gutter)); + height: var(--unit-xs); + margin-top: calc(var(--unit) * 2); + margin-bottom: calc(var(--unit) * 2); + background: var(--dsfr-bf500); +} + +.sticky-header { + top: 0; + z-index: 1; + position: sticky; + background-color: var(--color-bg); +} + +.banner { + background: #f7f7da; + z-index: 1; + border-bottom: dashed 1px var(--color-text); +} + +.header-menu { + padding: 0; + list-style: none; + margin-bottom: 0; + + & > li { + margin-bottom: 0; + float: left; + } +} + +.content { + padding-top: var(--unit); +} + +.popup { + overflow: auto; + display: flex; + flex-direction: column; + z-index: 2; +} + +.popup-header { + flex: 0 0 auto; + border-bottom: var(--unit-xxs) solid var(--color-alt); + margin-bottom: calc(-1 * var(--unit-xxs)); + z-index: 1; +} + +.popup-content { + flex: 0 0 auto; + overflow-y: auto; + overscroll-behavior: contain; +} + +.popup-footer { + flex: 0 0 auto; + border-top: var(--unit-xxs) solid var(--color-alt); + margin-top: calc(-1 * var(--unit-xxs)); +} + +.loaders { + z-index: 3; + top: 50%; + transform: translate(-50%, -50%); + left: 50%; + right: auto; + border-radius: var(--unit); + background-color: color-mod(var(--color-inverse) alpha(50%)); +} + +.map-loader { + z-index: 500; + background-color: var(--color-bg); + right: calc(10 * var(--unit-px)); + top: 0; +} + +.lead { + typescale: 1 1.25; + margin: var(--unit-xl) var(--unit); + color: var(--color-info); + font-style: italic; +} + +.camino-header-baseline { + padding-left: 25%; + margin-top: -1.5rem; +} + +.messages { + position: fixed; + width: calc(100% - (2 * var(--gutter))); + transform: translate(-50%, 0); + top: auto; + right: auto; + bottom: calc(var(--unit) * 3); + left: 50%; + z-index: 2; +} + +.accordion-header { + align-items: stretch; + flex-flow: column wrap; +} + +.dropdown { + z-index: 1; +} + +.downloads { + height: calc(3 * var(--unit)); +} + +.lh-2 { + line-height: 2; +} + +.lh-1-25 { + line-height: calc(var(--unit) * 1.25); +} + +ul.li-mb-s > li { + margin-bottom: var(--unit-s); +} + +ul.li-sep > li { + &:not(:last-child)::after { + content: '—'; + color: grey; + display: block; + } +} + +.span-tab { + color: var(--color-text); + background-color: var(--color-neutral); +} + +.content-editable :last-child { + margin-bottom: 0; +} + +.geo-groupe { + padding: var(--unit-xs) var(--unit-xs) 0 var(--unit-xs); + box-shadow: inset 0 0 0 var(--unit-px) var(--color-alt); + border-radius: var(--unit); + background-color: var(--color-neutral); + display: inline-block; + width: 100%; +} + +.geo-groupe-edit { + border-radius: var(--unit) var(--unit) var(--unit-m) var(--unit-m); +} + +.geo-contour { + padding: var(--unit-xs) var(--unit-xs) 0 var(--unit-xs); + box-shadow: inset 0 0 0 var(--unit-px) var(--color-alt); + margin-bottom: var(--unit-xs); + border-radius: var(--unit-m); + background-color: var(--color-alt); + display: inline-block; + width: 100%; +} + +.geo-point { + padding: var(--unit-s) var(--unit-s) 0 var(--unit-s); + box-shadow: inset 0 0 0 var(--unit-px) var(--color-alt); + margin-bottom: calc(var(--unit-xs) - var(--unit-px)); + border-radius: var(--unit-s); + background-color: var(--color-bg); + width: 100%; + border-bottom: var(--unit-px) solid var(--color-alt); +} + +h6.color { + color: var(--color-info); +} + +@media (--viewport-tablet) { + .tablet-pt-s { + padding-top: var(--unit-s); + } + + .tablet-mb-0 { + margin-bottom: 0; + } + + .tablet-mb { + margin-bottom: var(--unit); + } + + .tablet-mb-s { + margin-bottom: var(--unit-s); + } + + .tablet-mb-m { + margin-bottom: var(--unit-m); + } + + .menubar-infos { + padding-top: var(--unit-m); + margin-top: 0; + } + + .map-view { + min-height: calc(24 * var(--unit)); + height: calc(100vh - (15 * var(--unit))); + } + + .table-view { + min-height: calc(24 * var(--unit)); + } + + .header-blobs { + flex-direction: row-reverse; + } + + .messages { + width: calc(2 * var(--col-width) - var(--gutter)); + } + + .accordion-header { + flex-direction: row; + } + + .downloads { + height: inherit; + } +} + +@media (--viewport-desktop) { + .camino-header-baseline { + padding-left: 9.2rem; + } + + .leaflet-left { + left: var(--unit-l); + } + + .popup { + width: calc(2.5 * var(--col-width) - var(--gutter)); + max-height: calc(100% - 4 * var(--unit)); + transform: translate(-50%, 0); + top: calc(var(--unit) * 2); + right: auto; + bottom: auto; + left: 50%; + border-radius: var(--unit); + overflow: hidden; + } + + .popup-content { + height: calc(100% - 8 * var(--unit)); + flex: 1 1 auto; + } + + /* stylelint-disable-next-line block-no-empty */ + .loaders { + } +} diff --git a/packages/ui/src/styles/transitions.css b/packages/ui/src/styles/transitions.css new file mode 100644 index 0000000000000000000000000000000000000000..97253997dd6837a4b398d331d6343fa305a534ef --- /dev/null +++ b/packages/ui/src/styles/transitions.css @@ -0,0 +1,97 @@ +.transition-bottom-enter-active, +.transition-bottom-leave-active, +.transition-fade-enter-active, +.transition-fade-leave-active, +.transition-top-enter-active, +.transition-top-leave-active, +.transition-top-enter-active .pophover, +.transition-top-leave-active .pophover { + transition: all 0.5s; +} + +.transition-bottom-enter-from, +.transition-bottom-leave-to { + opacity: 0; + margin-bottom: calc(var(--unit-xxl) * -1); +} + +.transition-fade-enter-from, +.transition-fade-leave-to { + opacity: 0; +} + +.transition-top-enter-from, +.transition-top-leave-to { + opacity: 0; +} + +.transition-top-enter-from .pophover, +.transition-top-leave-to .pophover { + margin-top: calc(var(--unit-xxl) * -1); +} + +/* slide */ + +.slide-enter-active { + transition: transform 0.35s ease-out 0.1s, opacity 0.25s ease-out; + will-change: transform, opacity; +} + +.slide-leave-active { + transition: transform 0.35s ease-in, opacity 0.25s ease-in 0.1s; + will-change: transform, opacity; +} + +.slide-enter-from, +.slide-leave-to { + transform: translateY(-90%); + opacity: 0; +} + +/* slide top */ + +.slide-top-enter-active { + transition: top 0.4s ease-out; + will-change: top; +} + +.slide-top-leave-active { + transition: top 0.4s ease-in; + will-change: top; +} + +.slide-top-enter-from, +.slide-top-leave-to { + top: -100%; +} + +/* slide-bottom */ + +.slide-bottom-enter-active { + transition: transform 0.35s ease-out 0.1s, opacity 0.25s ease-out; + will-change: transform, opacity; +} + +.slide-bottom-leave-active { + transition: transform 0.35s ease-in, opacity 0.25s ease-in 0.1s; + will-change: transform, opacity; +} + +.slide-bottom-enter-from, +.slide-bottom-leave-to { + transform: translateY(100%); + opacity: 0; +} + +/* fade enter */ + +.fade-enter-active, +.fade-leave-active { + transition: opacity 0.25s ease-out; + will-change: opacity; +} + +.fade-enter-from, +.fade-leave-to { + opacity: 0; +} diff --git a/packages/ui/src/typings/choices.d.ts b/packages/ui/src/typings/choices.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..0c6144e1faecdb618e50b50d8be775c7bffdda78 --- /dev/null +++ b/packages/ui/src/typings/choices.d.ts @@ -0,0 +1 @@ +declare module 'choices.js' diff --git a/packages/ui/src/typings/vuex.d.ts b/packages/ui/src/typings/vuex.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..050a2f63e12fe586f1e84913369206f9abc47d74 --- /dev/null +++ b/packages/ui/src/typings/vuex.d.ts @@ -0,0 +1,13 @@ +import { Store } from 'vuex' + +/* eslint-disable no-unused-vars */ + +declare module '@vue/runtime-core' { + interface State { + count: number + } + + interface ComponentCustomProperties { + $store: Store<any> + } +} diff --git a/packages/ui/src/utils/contenu.js b/packages/ui/src/utils/contenu.js new file mode 100644 index 0000000000000000000000000000000000000000..998e16d16b2b399b800fea846978f5d10507ac6c --- /dev/null +++ b/packages/ui/src/utils/contenu.js @@ -0,0 +1,121 @@ +import numberFormat from './number-format' +import { dateFormat } from './index' + +const contenuBuild = (sections, elementContenu) => + sections.reduce((contenu, section) => { + if (section) { + contenu[section.id] = (elementContenu && elementContenu[section.id]) || {} + } + + return contenu + }, {}) + +const elementContenuBuild = (sections, contenu) => + sections.reduce((elementContenu, section) => { + if (Object.keys(contenu[section.id]).length) { + if (!elementContenu) { + elementContenu = {} + } + elementContenu[section.id] = contenu[section.id] + } + + return elementContenu + }, null) + +const elementsCompleteCheck = (elements, sectionContenu, complete) => + elements.reduce((sectionComplete, e) => { + if ( + !sectionComplete || + !sectionContenu || + e.optionnel || + ['radio', 'checkbox'].includes(e.type) + ) + return sectionComplete + + let elementComplete = false + + if (e.type === 'checkboxes') { + if (sectionContenu[e.id].length) { + elementComplete = true + } + } else if (e.type === 'multiple') { + elementComplete = + sectionContenu[e.id] && + sectionContenu[e.id].length && + sectionContenu[e.id].reduce((acc, element) => { + return acc && elementsCompleteCheck(e.elements, element, true) + }, true) + } else { + elementComplete = + sectionContenu[e.id] !== undefined && + sectionContenu[e.id] !== null && + sectionContenu[e.id] !== '' + } + + return elementComplete + }, complete) + +const contenuCompleteCheck = (sections, contenu) => + sections.reduce((complete, s) => { + if (!complete) return false + + return elementsCompleteCheck(s.elements, contenu[s.id], complete) + }, true) + +const valeurFind = ({ id, type, valeurs }, contenu) => { + if (contenu[id] === undefined || contenu[id] === '') { + return '–' + } + + if (['number', 'integer'].includes(type)) { + return numberFormat(contenu[id]) + } + + if (type === 'checkboxes') { + return contenu[id] + .map(id => { + const valeur = valeurs.find(e => e.id === id) + return valeur ? valeur.nom : undefined + }) + .filter(valeur => !!valeur) + .join(', ') + } + + if (type === 'select') { + return valeurs.find(v => v.id === contenu[id])?.nom + } + + if (type === 'date') { + return dateFormat(contenu[id]) + } + + if (contenu[id] === true) return 'Oui' + else if (contenu[id] === false) return 'Non' + + return contenu[id] +} + +const hasValeurCheck = (elementId, contenu) => { + const valeur = contenu && contenu[elementId] + + if ( + (!Array.isArray(valeur) && (valeur || valeur === 0 || valeur === false)) || + (Array.isArray(valeur) && valeur.length) + ) + return true + + return false +} + +const elementsVisibleCheck = (elements, contenu) => + elements.some(e => hasValeurCheck(e.id, contenu) || !e.optionnel) + +export { + contenuBuild, + elementContenuBuild, + contenuCompleteCheck, + elementsCompleteCheck, + valeurFind, + hasValeurCheck, + elementsVisibleCheck +} diff --git a/packages/ui/src/utils/documents.js b/packages/ui/src/utils/documents.js new file mode 100644 index 0000000000000000000000000000000000000000..1c30668c882391bc5f2a48b60eb3a54cbfa9a438 --- /dev/null +++ b/packages/ui/src/utils/documents.js @@ -0,0 +1,47 @@ +import { TODAY } from './index' + +const documentsRequiredAdd = (documents, documentsTypes, userIsAdmin) => { + const typeGet = document => + document.type ? document.type.id : document.typeId + + // supprime tous les documents temporaires + documents = documents?.filter(d => d.id !== typeGet(d)) + + // supprime les documents dont le documentType n'existe pas + const newDocuments = + documents?.filter(d => { + const documentsTypesIds = documentsTypes.map(({ id }) => id) + return documentsTypesIds.includes(typeGet(d)) + }) || [] + + // crée les documents dont le type est obligatoires si ils n'existent pas + documentsTypes?.forEach(documentType => { + if ( + !documentType.optionnel && + !newDocuments.find(d => typeGet(d) === documentType.id) + ) { + newDocuments.push({ + id: documentType.id, + typeId: documentType.id, + type: documentType, + entreprisesLecture: userIsAdmin, + publicLecture: false, + fichier: null, + fichierNouveau: null, + fichierTypeId: null, + date: TODAY, + modification: true, + suppression: false + }) + } + }) + + // on interdit la suppression des documents obligatoires et imcomplets + documents?.forEach(d => { + d.suppression = d.id !== typeGet(d) + }) + + return newDocuments +} + +export { documentsRequiredAdd } diff --git a/packages/ui/src/utils/documents.test.js b/packages/ui/src/utils/documents.test.js new file mode 100644 index 0000000000000000000000000000000000000000..748d9edbfaa09f4527b9e6ef7c4cfb0a52a6a483 --- /dev/null +++ b/packages/ui/src/utils/documents.test.js @@ -0,0 +1,54 @@ +import { documentsRequiredAdd } from './documents' +import { TODAY } from './index' + +describe('documents', () => { + test('retourne un tableau vide si il n’y a aucun doc à ajouter', () => { + expect(documentsRequiredAdd(undefined, undefined, true)).toEqual([]) + }) + + test.each` + userIsAdmin + ${true} + ${false} + `('ajoute un document obligatoire manquant', ({ userIsAdmin }) => { + expect( + documentsRequiredAdd( + undefined, + [{ optionnel: false, id: 'aaa' }], + userIsAdmin + ) + ).toEqual([ + { + date: TODAY, + entreprisesLecture: userIsAdmin, + fichier: null, + fichierNouveau: null, + fichierTypeId: null, + id: 'aaa', + modification: true, + publicLecture: false, + suppression: false, + type: { + id: 'aaa', + optionnel: false + }, + typeId: 'aaa' + } + ]) + }) + + test('supprime le document avec un type inexistant', () => { + expect( + documentsRequiredAdd( + [{ typeId: 'aaa' }, { typeId: 'ddd' }], + [{ optionnel: false, id: 'aaa' }], + true + ) + ).toEqual([ + { + typeId: 'aaa', + suppression: true + } + ]) + }) +}) diff --git a/packages/ui/src/utils/entreprise.js b/packages/ui/src/utils/entreprise.js new file mode 100644 index 0000000000000000000000000000000000000000..c95af36d8bd8ee31f43feaaf8e8892f1cb940f77 --- /dev/null +++ b/packages/ui/src/utils/entreprise.js @@ -0,0 +1,14 @@ +const etablissementNameFind = (etablissements, date) => { + if (!etablissements || !etablissements.length) { + return null + } + + const etablissement = etablissements.find( + e => + (e.dateDebut < date && (!e.dateFin || e.dateFin > date)) || !e.dateDebut + ) + + return etablissement && etablissement.nom +} + +export { etablissementNameFind } diff --git a/packages/ui/src/utils/geojson.js b/packages/ui/src/utils/geojson.js new file mode 100644 index 0000000000000000000000000000000000000000..b78adaf2dbb25a4588f0beba189160ed8183845d --- /dev/null +++ b/packages/ui/src/utils/geojson.js @@ -0,0 +1,46 @@ +// convertit des points +// en un geojson de type 'MultiPolygon' + +const geojsonFeatureMultiPolygon = points => ({ + type: 'Feature', + properties: { etapeId: points[0].titreEtapeId }, + geometry: { + type: 'MultiPolygon', + coordinates: geojsonMultiPolygonCoordinates(points) + } +}) + +// convertit une liste de points +// en un tableau 'coordinates' geoJson +// (le premier et le dernier point d'un contour ont les mêmes coordonnées) +const geojsonMultiPolygonCoordinates = points => + multiPolygonContoursClose(multiPolygonCoordinates(points)) + +// convertit une liste de points +// [{groupe: 1, contour: 1, point: 1, coordonnees: {x: 1.111111, y: 1.111111}}] +// en un tableau de 'coordinates': [[[[1.11111, 1.111111]]]] +const multiPolygonCoordinates = points => + points.reduce((res, p) => { + res[p.groupe - 1] = res[p.groupe - 1] || [] + res[p.groupe - 1][p.contour - 1] = res[p.groupe - 1][p.contour - 1] || [] + res[p.groupe - 1][p.contour - 1][p.point - 1] = [ + p.coordonnees.x, + p.coordonnees.y + ] + + return res + }, []) + +// duplique le premier point de chaque contour +// en fin de contour pour fermer le tracé +const multiPolygonContoursClose = groupes => + groupes.map(contours => + contours.reduce((acc, points) => { + points[points.length] = points[0] + acc.push(points) + + return acc + }, []) + ) + +export { geojsonFeatureMultiPolygon } diff --git a/packages/ui/src/utils/index.js b/packages/ui/src/utils/index.js new file mode 100644 index 0000000000000000000000000000000000000000..8f0a571a26af76ba46643e48a8e9ddc8145368af --- /dev/null +++ b/packages/ui/src/utils/index.js @@ -0,0 +1,81 @@ +const TODAY = new Date().toISOString().slice(0, 10) + +const dateFormat = dateString => { + if (typeof dateString !== 'string') { + return '' + } + + const [y, m, d] = dateString.split('-') + + return `${d} / ${m} / ${y}` +} + +const textNumberFormat = (text, options) => { + let value = text + .replace(/[^\d-,.]+/, '') + .replace(/\s/, '') + .replace(/\./, ',') + + value = options.negative + ? value.replace(/^([\d-][\d,]*)(-)+/, '$1') + : value.replace(/-/g, '') + + value = options.integer + ? value.replace(/\..*$/, '').replace(/,.*$/, '') + : value.replace(/(\d+,\d*)([,.]+)/, '$1') + + return value +} + +const textToNumberFormat = text => { + const value = text.replace(/\s/g, '').replace(/,/g, '.') + + const number = parseFloat(value) + + return Number.isNaN(number) ? null : number +} + +const permissionsCheck = (user, permissions) => + !!(user && user.permission && permissions.includes(user.permission.id)) + +const typenameOmit = (key, value) => (key === '__typename' ? undefined : value) + +const cloneAndClean = json => JSON.parse(JSON.stringify(json), typenameOmit) + +const elementsFormat = (id, metas) => metas[id.replace(/Ids/g, '')] + +// récupère les paramètres depuis les préférences utilisateurs +const paramsBuild = (apiParams, preferences) => + apiParams.reduce((params, { id, type }) => { + let v = preferences[id] + + if (type === 'strings' || type === 'objects') { + v = v && v.length ? v : null + } else if (type === 'number') { + v = v ? Number(v) : null + } else if (type === 'numbers') { + v = v && v.length ? v.map(Number) : null + } else { + v = v ? v.toString() : null + } + + if (v) { + params[id] = v + } + + return params + }, {}) + +const cap = string => string[0].toUpperCase() + string.slice(1) + +export { + dateFormat, + permissionsCheck, + textNumberFormat, + textToNumberFormat, + cloneAndClean, + elementsFormat, + paramsBuild, + cap, + TODAY +} diff --git a/packages/ui/src/utils/index.test.js b/packages/ui/src/utils/index.test.js new file mode 100644 index 0000000000000000000000000000000000000000..5cd67ba382036ccfca0951eb015cddb0c5b4f4f7 --- /dev/null +++ b/packages/ui/src/utils/index.test.js @@ -0,0 +1,146 @@ +import { + dateFormat, + textNumberFormat, + textToNumberFormat, + permissionsCheck, + cloneAndClean, + elementsFormat, + paramsBuild +} from './index' + +// dateFormat +describe('dateFormat', () => { + const cases = [ + ['2020-01-01', '01 / 01 / 2020'], + ['2020-11-16', '16 / 11 / 2020'] + ] + + test.each(cases)('formate la date %s en %s', (input, output) => { + expect(dateFormat(input)).toEqual(output) + }) +}) + +// textNumberFormat et textToNumberFormat +describe('textNumberFormat et textToNumberFormat', () => { + const cases = [ + ['1.2 34', { negative: false, integer: false }, '1,234', 1.234], + ['-1.234', { negative: false, integer: false }, '1,234', 1.234], + ['-1.234', { negative: true, integer: false }, '-1,234', -1.234], + ['---1.234', { negative: true, integer: false }, '-1,234', -1.234], + ['1.2 34', { negative: false, integer: true }, '1', 1], + ['---1.2 34', { negative: false, integer: true }, '1', 1], + ['1.2abc34', { negative: false, integer: false }, '1,234', 1.234], + ['-1.2abc34', { negative: true, integer: false }, '-1,234', -1.234], + ['-1.2abc34', { negative: false, integer: true }, '1', 1], + ['-1.2abc34', { negative: true, integer: true }, '-1', -1], + ['---1.2 34', { negative: true, integer: true }, '-1', -1], + ['1.2abc.34', { negative: false, integer: false }, '1,234', 1.234], + ['1,2ab c.,34', { negative: false, integer: false }, '1,234', 1.234], + ['-1,2ab c.,34', { negative: false, integer: false }, '1,234', 1.234], + ['-1,2ab c.,34', { negative: true, integer: false }, '-1,234', -1.234], + ['-1,2ab c.,34', { negative: true, integer: true }, '-1', -1], + ['azerty', { negative: true, integer: true }, '', null] + ] + + test.each(cases)( + 'formate %s avec les options %o en texte %s', + (input, options, resText, resNumber) => { + expect(textNumberFormat(input, options)).toEqual(resText) + } + ) + + test.each(cases)( + 'formate %s avec les options %o en nombre %i', + (input, options, resText, resNumber) => { + expect(textToNumberFormat(resText)).toEqual(resNumber) + } + ) +}) + +// permissionsCheck +describe('permissionsCheck', () => { + const cases = [ + [ + { permission: { id: 'admin' } }, + ['admin', 'defaut', 'editeur', 'entreprise', 'lecteur', 'super'], + true + ], + [{ permission: { id: 'super' } }, ['admin', 'super'], true] + ] + + test.each(cases)( + 'vérifie que %o appartient à la liste des permissions %o', + (userPermissionId, permissions, res) => { + expect(permissionsCheck(userPermissionId, permissions)).toBe(res) + } + ) +}) + +describe('cloneAndClean', () => { + test(`transforme un json en occultant les propriétés __typename`, () => + expect( + cloneAndClean({ id: 'id', value: 'value', __typename: 'typename' }) + ).toEqual({ id: 'id', value: 'value', __typename: undefined })) +}) + +describe('elementsFormat', () => { + const metas = { + domaines: { + c: 'carrières', + f: 'combustibles fossiles', + g: 'géothermie', + h: 'hydrocarbures liquides ou gazeux', + i: 'inconnu', + m: 'minéraux et métaux', + r: 'éléments radioactifs', + s: 'stockages souterrains', + w: 'granulats marins' + }, + statuts: {}, + types: {} + } + + const cases = [ + ['domaines', 'domainesIds'], + ['statuts', 'statutsIds'], + ['types', 'typesIds'] + ] + + test.each(cases)('formate les %s', (nom, id) => { + expect(elementsFormat(id, metas)).toEqual(metas[nom]) + }) +}) + +describe('paramsBuild', () => { + const params = [ + { id: 'page', type: 'number', min: 0 }, + { id: 'intervalle', type: 'number', min: 10, max: 500 }, + { id: 'colonne', type: 'string', elements: ['nom', 'type', 'abreviation'] }, + { id: 'ordre', type: 'string', elements: ['asc', 'desc'] }, + { id: 'typesIds', type: 'strings', elements: ['aaa', 'bbb'] }, + { id: 'noms', type: 'string' }, + { id: 'numbers', type: 'numbers' } + ] + + const preferences = { + page: 1, + intervalle: 200, + ordre: 'asc', + colonne: 'type', + noms: 'one two', + typesIds: ['aaa'], + numbers: ['1', '2'] + } + + test('formate les paramètres', () => { + expect(paramsBuild(params, preferences)).toEqual({ + intervalle: 200, + ordre: 'asc', + page: 1, + colonne: 'type', + noms: 'one two', + typesIds: ['aaa'], + numbers: [1, 2] + }) + }) +}) diff --git a/packages/ui/src/utils/map-tiles.js b/packages/ui/src/utils/map-tiles.js new file mode 100644 index 0000000000000000000000000000000000000000..7a89890f23c5d45ad5ab396c017ae18a754379f2 --- /dev/null +++ b/packages/ui/src/utils/map-tiles.js @@ -0,0 +1,58 @@ +export default [ + { + id: 'osm-fr', + name: 'OSM / fr', + type: 'tiles', + url: 'https://{s}.tile.openstreetmap.fr/osmfr/{z}/{x}/{y}.png', + attribution: + '© Openstreetmap France | © <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>' + }, + { + id: 'osm-hot', + name: 'OSM / hot', + type: 'tiles', + url: 'https://{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png', + attribution: + '© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>, Tiles courtesy of <a href="http://hot.openstreetmap.org/">Humanitarian OpenStreetMap Team</a>' + }, + { + id: 'geoportail-ign-map', + name: 'Géoportail / Plan IGN', + type: 'tiles', + url: 'https://wxs.ign.fr/essentiels/geoportail/wmts?layer=GEOGRAPHICALGRIDSYSTEMS.PLANIGNV2&style=normal&tilematrixset=PM&Service=WMTS&Request=GetTile&Version=1.0.0&Format=image%2Fpng&TileMatrix={z}&TileCol={x}&TileRow={y}', + attribution: 'IGN-F/Geoportail' + }, + { + id: 'geoportail-photographies-aeriennes', + name: 'Géoportail / Photographies aériennes', + type: 'tiles', + url: 'https://wxs.ign.fr/essentiels/geoportail/wmts?&REQUEST=GetTile&SERVICE=WMTS&VERSION=1.0.0&STYLE=normal&TILEMATRIXSET=PM&FORMAT=image/jpeg&LAYER=ORTHOIMAGERY.ORTHOPHOTOS&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}', + attribution: 'IGN-F/Geoportail' + }, + { + id: 'geoportail-parcelles-cadastrales', + name: 'Géoportail / Parcelles cadastrales', + type: 'tiles', + url: 'https://wxs.ign.fr/parcellaire/geoportail/wmts?&REQUEST=GetTile&SERVICE=WMTS&VERSION=1.0.0&STYLE=normal&TILEMATRIXSET=PM&FORMAT=image/png&LAYER=CADASTRALPARCELS.PARCELS&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}', + attribution: 'IGN-F/Geoportail' + }, + { + id: 'brgm-geo', + name: 'BRGM / Cartes géologiques 1/50 000', + type: 'wms', + url: 'https://geoservices.brgm.fr/geologie', + layers: 'SCAN_H_GEOL50', + attribution: 'BRGM', + version: '1.3.0' + }, + { + id: 'sdom-zones', + name: 'SDOM (schéma départemental d’orientation minière)', + type: 'wms', + url: 'https://datacarto.geoguyane.fr/wms/SDOM_GUYANE', + layers: + 'ZONE2activiteminiereautoriseesouscontrainte,ZONE1activiteminiereinterditesaufexploitationsouterraineetrecherchesaeriennes,ZONE0activiteminiereinterdite,Zone0potentielle,LimitesdescommunesdeGuyane', + attribution: 'GéoGuyane', + version: '1.3.0' + } +] diff --git a/packages/ui/src/utils/matomo-tracker.js b/packages/ui/src/utils/matomo-tracker.js new file mode 100644 index 0000000000000000000000000000000000000000..f43404b8816bc8f96de37364ca837e89607259ae --- /dev/null +++ b/packages/ui/src/utils/matomo-tracker.js @@ -0,0 +1,28 @@ +const paramsEventTrack = (params, definitions, matomo, category, action) => { + if (matomo) { + if (params) { + definitions.forEach(({ type, id }) => { + let values = [] + if (type === 'string' && params[id]) { + values = params[id].split(' ').map(p => p.replace("'", ' ')) + } else if (type === 'strings' && params[id]) { + values = params[id] + } else if (type === 'objects' && params[id]) { + values = params[id].map(e => e.typeId) + } + values.forEach(value => { + matomo.trackEvent( + `${category}-${action}`, + `${category}-${action}-${id}`, + value + ) + matomo.trackSiteSearch(value, id) + }) + }) + } else { + matomo.trackEvent(category, action, `${action}-${category}`) + } + } +} + +export default paramsEventTrack diff --git a/packages/ui/src/utils/number-format.js b/packages/ui/src/utils/number-format.js new file mode 100644 index 0000000000000000000000000000000000000000..c91cec2c9d6265791be4be69a58e999911850f8f --- /dev/null +++ b/packages/ui/src/utils/number-format.js @@ -0,0 +1,6 @@ +const numberFormat = number => + Intl.NumberFormat('FR-fr', { + maximumSignificantDigits: 21 + }).format(number) + +export default numberFormat diff --git a/packages/ui/src/utils/stream.js b/packages/ui/src/utils/stream.js new file mode 100644 index 0000000000000000000000000000000000000000..9ea5ee4fb16f90fcd4a34d577bf90483b7bb055c --- /dev/null +++ b/packages/ui/src/utils/stream.js @@ -0,0 +1,35 @@ +const streamToBlob = async (response, loadEventId, commit = null) => { + let body + + if (response.body) { + const total = response.headers.get('content-length') + const reader = response.body.getReader() + let loaded = 0 + const chunks = [] + + if (commit) { + commit('loadingRemove', loadEventId, { root: true }) + } + + while (true) { + const { done, value } = await reader.read() + + if (done) break + + chunks.push(value) + loaded += value.length + + if (commit) { + commit('fileLoad', { loaded, total }, { root: true }) + } + } + + body = new Blob(chunks) + } else { + body = await response.blob() + } + + return body +} + +export { streamToBlob } diff --git a/packages/ui/src/utils/titre-etape-edit.js b/packages/ui/src/utils/titre-etape-edit.js new file mode 100644 index 0000000000000000000000000000000000000000..703b5f52996105f65bb590e41cb15671935d80ad --- /dev/null +++ b/packages/ui/src/utils/titre-etape-edit.js @@ -0,0 +1,220 @@ +import { cloneAndClean } from './index' + +const referencesBuild = references => + references.reduce( + ( + { pointGeoSystemesIndex, pointReferences }, + { geoSysteme, coordonnees, id } + ) => { + pointGeoSystemesIndex[geoSysteme.id] = geoSysteme + + pointReferences[geoSysteme.id] = { ...coordonnees } + + if (id) { + pointReferences[geoSysteme.id].id = id + } + + return { pointGeoSystemesIndex, pointReferences } + }, + { pointGeoSystemesIndex: {}, pointReferences: {} } + ) + +const geoSystemeOpposableIdFind = references => { + const referenceOpposable = references.find(r => r.opposable) + + return referenceOpposable ? referenceOpposable.geoSysteme.id : '' +} + +const groupeBuild = (points, geoSystemeOpposableId) => + points.reduce( + ( + { + groupes, + geoSystemesIndex, + lotCurrent, + pointIndex, + contourIndexPrevious, + groupeIndexPrevious + }, + { nom, description, contour, groupe, references, lot, subsidiaire, id } + ) => { + const { pointReferences, pointGeoSystemesIndex } = + referencesBuild(references) + + const lotGeoSystemeId = + geoSystemeOpposableId || Object.keys(pointGeoSystemesIndex)[0] + + if ( + lot && + lotCurrent && + lotCurrent === lot && + groupe === groupeIndexPrevious && + contour === contourIndexPrevious + ) { + groupes[groupe - 1][contour - 1][pointIndex - 1].references.push( + pointReferences[lotGeoSystemeId] + ) + } else { + if (!groupes[groupe - 1]) { + groupes[groupe - 1] = [] + } + + if (!groupes[groupe - 1][contour - 1]) { + groupes[groupe - 1][contour - 1] = [] + } + + const point = { + description, + lot, + subsidiaire, + references: lot ? [pointReferences[lotGeoSystemeId]] : pointReferences + } + + if (id) { + point.id = id + } + + if (!lot) { + point.nom = nom + } + + groupes[groupe - 1][contour - 1].push(point) + + pointIndex = lot ? groupes[groupe - 1][contour - 1].length : null + lotCurrent = lot + contourIndexPrevious = contour + groupeIndexPrevious = groupe + } + + return { + groupes, + geoSystemesIndex: Object.assign( + geoSystemesIndex, + pointGeoSystemesIndex + ), + lotCurrent, + pointIndex, + contourIndexPrevious, + groupeIndexPrevious + } + }, + { + groupes: [], + geoSystemesIndex: {}, + lotCurrent: null, + pointIndex: 0, + contourIndexPrevious: 1, + groupeIndexPrevious: 1 + } + ) + +const etapeGroupesBuild = points => { + const geoSystemeOpposableId = geoSystemeOpposableIdFind(points[0].references) + + const { groupes, geoSystemesIndex } = groupeBuild( + points, + geoSystemeOpposableId + ) + + return { + groupes, + geoSystemes: Object.keys(geoSystemesIndex).map(id => geoSystemesIndex[id]), + geoSystemeOpposableId + } +} + +const etapePointsFormat = (etape, points) => { + if (points && points.length) { + const { groupes, geoSystemes, geoSystemeOpposableId } = + etapeGroupesBuild(points) + + etape.groupes = groupes + etape.geoSystemeIds = geoSystemes.map(({ id }) => id) + etape.geoSystemeOpposableId = geoSystemeOpposableId + } else { + etape.groupes = [] + etape.geoSystemeIds = [] + etape.geoSystemeOpposableId = null + } + return etape +} + +const etapeEditFormat = etape => { + etape = cloneAndClean(etape) + + if (etape.statut) { + etape.statutId = etape.statut.id + delete etape.statut + } else { + etape.statutId = '' + } + + delete etape.administrations + + const entreprisesPropIds = ['titulaires', 'amodiataires'] + + entreprisesPropIds.forEach(propId => { + if (etape[propId]) { + etape[propId] = etape[propId].map(({ id, operateur }) => ({ + id, + operateur + })) + } else { + etape[propId] = [] + } + }) + + if (etape.substances) { + etape.substances = etape.substances.map(({ id }) => ({ + id + })) + } else { + etape.substances = [] + } + + etape.duree = { + ans: etape.duree ? Math.floor(etape.duree / 12) : null, + mois: etape.duree ? Math.floor(etape.duree % 12) : null + } + + etape = etapePointsFormat(etape, etape.points) + + if (!etape.incertitudes) { + etape.incertitudes = {} + } + + if (!etape.contenu) { + etape.contenu = {} + } + + if (!etape.documents) { + etape.documents = [] + } else { + etape.documents = etape.documents.map(documentEtapeFormat) + } + + if (!etape.justificatifs) { + etape.justificatifs = [] + } + + delete etape.pays + delete etape.modification + delete etape.points + delete etape.geojsonPoints + delete etape.geojsonMultiPolygon + + return etape +} + +const documentEtapeFormat = document => { + document.typeId = document.type.id + document.fichierNouveau = null + + return document +} +export { + etapeEditFormat, + etapeGroupesBuild, + documentEtapeFormat, + etapePointsFormat +} diff --git a/packages/ui/src/utils/titre-etape-edit.test.js b/packages/ui/src/utils/titre-etape-edit.test.js new file mode 100644 index 0000000000000000000000000000000000000000..5d937d19ad3563da6acd66bbfd5a8bdc5ec77371 --- /dev/null +++ b/packages/ui/src/utils/titre-etape-edit.test.js @@ -0,0 +1,175 @@ +import { etapeEditFormat } from './titre-etape-edit' + +// dateFormat +describe('etapeEditFormat', () => { + test("formate une étape pour l'éditer", () => { + expect( + etapeEditFormat({ + __typename: 'etape', + id: 'etape-id' + }) + ).toEqual({ + id: 'etape-id', + statutId: '', + duree: { ans: null, mois: null }, + amodiataires: [], + titulaires: [], + geoSystemeIds: [], + geoSystemeOpposableId: null, + groupes: [], + substances: [], + contenu: {}, + incertitudes: {}, + documents: [], + justificatifs: [] + }) + + expect( + etapeEditFormat({ + __typename: 'etape', + id: 'etape-id', + points: [ + { + id: 'point-id-111', + groupe: 1, + contour: 1, + point: 1, + references: [ + { + opposable: true, + geoSysteme: { id: 'geo-systeme-id' }, + coordonnees: { x: 1.5, y: 1 }, + id: 'ref' + } + ] + } + ], + justificatifs: [{ id: 'toto', nom: 'name' }] + }) + ).toEqual({ + id: 'etape-id', + statutId: '', + duree: { ans: null, mois: null }, + amodiataires: [], + titulaires: [], + geoSystemeIds: ['geo-systeme-id'], + geoSystemeOpposableId: 'geo-systeme-id', + groupes: [ + [ + [ + { + id: 'point-id-111', + description: undefined, + nom: undefined, + references: { 'geo-systeme-id': { id: 'ref', x: 1.5, y: 1 } }, + lot: undefined, + subsidiaire: undefined + } + ] + ] + ], + substances: [], + contenu: {}, + incertitudes: {}, + documents: [], + justificatifs: [{ id: 'toto', nom: 'name' }] + }) + + expect( + etapeEditFormat({ + __typename: 'etape', + id: 'etape-id', + type: { id: 'etape-type-id' }, + statut: { id: 'etape-statut-id' }, + duree: 240, + administrations: ['administration'], + titulaires: [{ id: 'titulaire-id', prop: 'titulaire-prop' }], + points: [ + { + id: 'point-id-111', + groupe: 1, + contour: 1, + point: 1, + references: [ + { + geoSysteme: { id: 'geo-systeme-id' }, + coordonnees: { x: 1.5, y: 1 }, + id: 'ref' + } + ] + }, + { + id: 'point-id-113', + groupe: 1, + contour: 1, + point: 3, + lot: 1, + references: [ + { + geoSysteme: { id: 'geo-systeme-id' }, + coordonnees: { x: 1.5, y: 3 }, + id: 'ref3' + } + ] + }, + { + id: 'point-id-114', + groupe: 1, + contour: 1, + point: 4, + lot: 1, + references: [ + { + geoSysteme: { id: 'geo-systeme-id' }, + coordonnees: { x: 1.5, y: 4 }, + id: 'ref2' + } + ] + } + ], + contenu: { 'prop-id': 'prop-value' }, + incertitudes: { amodiataires: true }, + substances: [{ id: 'auru' }], + documents: [{ type: { id: 'act' } }] + }) + ).toEqual({ + id: 'etape-id', + type: { id: 'etape-type-id' }, + statutId: 'etape-statut-id', + duree: { ans: 20, mois: 0 }, + amodiataires: [], + titulaires: [{ id: 'titulaire-id', operateur: undefined }], + geoSystemeIds: ['geo-systeme-id'], + geoSystemeOpposableId: '', + groupes: [ + [ + [ + { + id: 'point-id-111', + description: undefined, + nom: undefined, + references: { 'geo-systeme-id': { id: 'ref', x: 1.5, y: 1 } }, + lot: undefined, + subsidiaire: undefined + }, + { + id: 'point-id-113', + description: undefined, + references: [ + { id: 'ref3', x: 1.5, y: 3 }, + { id: 'ref2', x: 1.5, y: 4 } + ], + lot: 1, + subsidiaire: undefined + } + ] + ] + ], + substances: [{ id: 'auru' }], + contenu: { 'prop-id': 'prop-value' }, + incertitudes: { amodiataires: true }, + documents: [{ fichierNouveau: null, typeId: 'act', type: { id: 'act' } }], + justificatifs: [] + }) + }) +}) diff --git a/packages/ui/src/utils/titre-etape-heritage-build.js b/packages/ui/src/utils/titre-etape-heritage-build.js new file mode 100644 index 0000000000000000000000000000000000000000..05d64971b60b839d3f58e5d621dfd4700b013e28 --- /dev/null +++ b/packages/ui/src/utils/titre-etape-heritage-build.js @@ -0,0 +1,117 @@ +const etapeHeritageBuild = (stateEtape, apiEtape) => { + const newEtape = { + id: stateEtape.id, + date: stateEtape.date, + typeId: apiEtape.typeId, + type: apiEtape.type, + statutId: '', + incertitudes: { date: stateEtape.incertitudes.date }, + titreDemarcheId: stateEtape.titreDemarcheId + } + + if (stateEtape.documents) { + const documentsTypesIds = apiEtape.type.documentsTypes?.map(({ id }) => id) + newEtape.documents = stateEtape.documents.filter(document => + documentsTypesIds?.includes(document.typeId) + ) + } + + if (stateEtape.justificatifs) { + const justificatifsTypesIds = apiEtape.type.justificatifsTypes?.map( + ({ id }) => id + ) + newEtape.justificatifs = stateEtape.justificatifs.filter(justificatif => + justificatifsTypesIds?.includes(justificatif.typeId) + ) + } + + // si + // - on crée une nouvelle étape fondamentale + // - on change le type d'étape (non-fondamentale -> fondamentale) + // alors la nouvelle étape récupère les propriété de l'API + if (!stateEtape.heritageProps && apiEtape.heritageProps) { + newEtape.heritageProps = apiEtape.heritageProps + newEtape.duree = apiEtape.duree + newEtape.dateDebut = apiEtape.dateDebut + newEtape.dateFin = apiEtape.dateFin + newEtape.surface = apiEtape.surface + newEtape.titulaires = apiEtape.titulaires + newEtape.amodiataires = apiEtape.amodiataires + newEtape.substances = apiEtape.substances + newEtape.groupes = apiEtape.groupes + newEtape.geoSystemeIds = apiEtape.geoSystemeIds + newEtape.geoSystemeOpposableId = apiEtape.geoSystemeOpposableId + } + // si on change le type d'étape (fondamentale -> fondamentale) + // alors on garde les propriétés actuelles + else if (stateEtape.heritageProps && apiEtape.heritageProps) { + newEtape.heritageProps = stateEtape.heritageProps + newEtape.duree = stateEtape.duree + newEtape.dateDebut = stateEtape.dateDebut + newEtape.dateFin = stateEtape.dateFin + newEtape.surface = stateEtape.surface + newEtape.titulaires = stateEtape.titulaires + newEtape.amodiataires = stateEtape.amodiataires + newEtape.substances = stateEtape.substances + newEtape.groupes = stateEtape.groupes + newEtape.geoSystemeIds = stateEtape.geoSystemeIds + newEtape.geoSystemeOpposableId = stateEtape.geoSystemeOpposableId + } + + if ( + apiEtape.heritageContenu && + Object.keys(apiEtape.heritageContenu).length + ) { + Object.keys(apiEtape.heritageContenu).forEach(sectionId => { + if (Object.keys(apiEtape.heritageContenu[sectionId]).length) { + Object.keys(apiEtape.heritageContenu[sectionId]).forEach(elementId => { + if (!newEtape.contenu) { + newEtape.contenu = {} + } + + if (!newEtape.contenu[sectionId]) { + newEtape.contenu[sectionId] = {} + } + + if (!newEtape.heritageContenu) { + newEtape.heritageContenu = {} + } + + if (!newEtape.heritageContenu[sectionId]) { + newEtape.heritageContenu[sectionId] = {} + } + + if ( + stateEtape.heritageContenu && + stateEtape.heritageContenu[sectionId] && + stateEtape.heritageContenu[sectionId][elementId] + ) { + if ( + stateEtape.contenu && + stateEtape.contenu[sectionId] && + stateEtape.contenu[sectionId][elementId] + ) { + newEtape.contenu[sectionId][elementId] = + stateEtape.contenu[sectionId][elementId] + } + + newEtape.heritageContenu[sectionId][elementId] = + stateEtape.heritageContenu[sectionId][elementId] + } else { + if (apiEtape.contenu[sectionId]) { + newEtape.contenu[sectionId][elementId] = + apiEtape.contenu[sectionId][elementId] + } + + newEtape.heritageContenu[sectionId][elementId] = + apiEtape.heritageContenu[sectionId][elementId] + } + }) + } + }) + } + + return newEtape +} + +export { etapeHeritageBuild } diff --git a/packages/ui/src/utils/titre-etape-save.js b/packages/ui/src/utils/titre-etape-save.js new file mode 100644 index 0000000000000000000000000000000000000000..f7c1ad76116dc88034ad4d26479f7aad44dce099 --- /dev/null +++ b/packages/ui/src/utils/titre-etape-save.js @@ -0,0 +1,293 @@ +const referenceBuild = (id, x, y, geoSystemeId, opposable) => { + const reference = { + geoSystemeId, + coordonnees: { + x, + y + } + } + + if (id) { + reference.id = id + } + + if (opposable) { + reference.opposable = true + } + + return reference +} + +const pointReferencesBuild = ( + references, + geoSystemeIds, + geoSystemeOpposableId +) => + Object.keys(references).reduce((pointReferences, geoSystemeId) => { + if ( + geoSystemeIds.includes(geoSystemeId) && + references[geoSystemeId].x && + references[geoSystemeId].y && + geoSystemeId + ) { + pointReferences.push( + referenceBuild( + references[geoSystemeId].id, + references[geoSystemeId].x, + references[geoSystemeId].y, + geoSystemeId, + geoSystemeIds.length > 1 && geoSystemeId === geoSystemeOpposableId + ) + ) + } + + return pointReferences + }, []) + +const pointsLotBuild = ( + { references, description }, + pointsLength, + lot, + contour, + groupe, + opposable, + geoSystemeId +) => + references.reduce((points, { x, y, id }) => { + const isValid = x && y + + if (isValid) { + const point = { + nom: null, + lot, + subsidiaire: true, + description, + groupe, + contour, + point: pointsLength + points.length + 1, + references: [referenceBuild(id, x, y, geoSystemeId, opposable)] + } + + points.push(point) + } + + return points + }, []) + +const contourBuild = ( + contour, + contourIndex, + groupeIndex, + geoSystemeIds, + geoSystemeOpposableId +) => { + const { points } = contour.reduce( + ({ points, lotIndex }, point) => { + if (!point.lot) { + const newPoint = JSON.parse(JSON.stringify(point)) + newPoint.references = pointReferencesBuild( + newPoint.references, + geoSystemeIds, + geoSystemeOpposableId + ) + + // si il y a au moins une référence + // si il y a plusieurs géo-système, au moins une référence doit être opposable + if ( + newPoint.references.length && + (geoSystemeIds.length === 1 || + (geoSystemeIds.length > 1 && + !!newPoint.references.find(r => r.opposable))) + ) { + newPoint.groupe = groupeIndex + newPoint.contour = contourIndex + newPoint.point = points.length + 1 + points.push(newPoint) + } + } else if (point.references.length) { + points = points.concat( + pointsLotBuild( + point, + points.length, + lotIndex, + contourIndex, + groupeIndex, + geoSystemeIds.length > 1, + geoSystemeOpposableId + ) + ) + lotIndex += 1 + } + + return { points, lotIndex } + }, + { points: [], lotIndex: 1 } + ) + + return points +} + +const groupeBuild = ( + contours, + groupeIndex, + geoSystemeIds, + geoSystemeOpposableId +) => { + const { points } = contours.reduce( + ({ points, contourIndex }, contour) => { + const pointsNew = contourBuild( + contour, + contourIndex, + groupeIndex, + geoSystemeIds, + geoSystemeOpposableId + ) + + if (pointsNew.length) { + points = points.concat(pointsNew) + contourIndex++ + } + + return { points, contourIndex } + }, + { points: [], contourIndex: 1 } + ) + + return points +} + +const pointsBuild = (groupes, geoSystemeIds, geoSystemeOpposableId) => { + const { points } = groupes.reduce( + ({ points, groupeIndex }, groupe) => { + const pointsNew = groupeBuild( + groupe, + groupeIndex, + geoSystemeIds, + geoSystemeOpposableId + ) + + if (pointsNew.length) { + points = points.concat(pointsNew) + groupeIndex++ + } + + return { points, groupeIndex } + }, + { points: [], groupeIndex: 1 } + ) + + return points +} + +const dureeBuild = (ans, mois) => (ans ? ans * 12 : 0) + (mois || 0) + +const etapeSaveFormat = etape => { + const decisionsAnnexesContenu = etape.decisionsAnnexesContenu + etape = JSON.parse(JSON.stringify(etape)) + etape.decisionsAnnexesContenu = decisionsAnnexesContenu + + etape.justificatifIds = etape.justificatifs?.map(({ id }) => id) + etape.documentIds = etape.documents + ?.filter(d => d.id !== d.typeId) + .map(({ id }) => id) + + if (etape.type) { + etape.typeId = etape.type.id + } + delete etape.type + delete etape.slug + delete etape.justificatifs + delete etape.documents + + if (!etape.contenu || !Object.keys(etape.contenu).length) { + delete etape.contenu + } + + if ( + !etape.decisionsAnnexesContenu || + !Object.keys(etape.decisionsAnnexesContenu).length + ) { + delete etape.decisionsAnnexesContenu + } + + delete etape.decisionsAnnexesSections + + if (etape.duree && (etape.duree.ans || etape.duree.mois)) { + etape.duree = dureeBuild(etape.duree.ans, etape.duree.mois) + } else { + etape.duree = null + } + + const props = ['date', 'dateDebut', 'dateFin', 'surface', 'duree'] + + props.forEach(prop => { + if (etape[prop] === '') { + etape[prop] = null + } + }) + + delete etape.modification + + delete etape.demarche + + const propsIds = [ + 'substances', + 'titulaires', + 'amodiataires', + 'administrations' + ] + + // supprime les champs dont les ids sont vides + propsIds.forEach(propId => { + if (etape[propId]) { + etape[propId] = etape[propId].filter(({ id }) => id) + } + }) + + if (etape.substances && etape.substances.length) { + etape.substances.forEach((substance, index) => { + substance.ordre = index + 1 + }) + } + + if ( + etape.geoSystemeIds && + etape.geoSystemeIds.length && + etape.groupes.length + ) { + etape.points = pointsBuild( + etape.groupes, + etape.geoSystemeIds, + etape.geoSystemeOpposableId || etape.geoSystemeIds[0] + ) + } else { + etape.points = null + + if (etape.incertitudes) { + delete etape.incertitudes.points + } + } + + delete etape.groupes + delete etape.geoSystemeOpposableId + delete etape.geoSystemeIds + + if (etape.heritageProps) { + Object.keys(etape.heritageProps).forEach(id => { + delete etape.heritageProps[id].etape + }) + } + + if (etape.heritageContenu) { + Object.keys(etape.heritageContenu).forEach(sectionId => { + Object.keys(etape.heritageContenu[sectionId]).forEach(elementId => { + delete etape.heritageContenu[sectionId][elementId].etape + delete etape.heritageContenu[sectionId][elementId].etapeId + }) + }) + } + + return etape +} + +export { etapeSaveFormat, pointsBuild, dureeBuild } diff --git a/packages/ui/src/utils/titre-etape-save.test.js b/packages/ui/src/utils/titre-etape-save.test.js new file mode 100644 index 0000000000000000000000000000000000000000..42aded9f90208b9927d7063eeb1bdf3175c3c34f --- /dev/null +++ b/packages/ui/src/utils/titre-etape-save.test.js @@ -0,0 +1,221 @@ +import { etapeSaveFormat } from './titre-etape-save' + +// dateFormat +describe('etapeSaveFormat', () => { + test("formate une étape pour l'enregistrer", () => { + expect( + etapeSaveFormat({ + id: 'etape-id', + type: { id: 'mfr' }, + titreDemarcheId: 'demarche-id', + statutId: '', + dateFin: '', + duree: { ans: null, mois: null }, + amodiataires: [], + titulaires: [], + geoSystemeIds: [], + geoSystemeOpposableId: null, + groupes: [], + substances: [], + contenu: {}, + incertitudes: {} + }) + ).toEqual({ + amodiataires: [], + duree: null, + dateFin: null, + id: 'etape-id', + incertitudes: {}, + points: null, + statutId: '', + substances: [], + titreDemarcheId: 'demarche-id', + titulaires: [], + typeId: 'mfr' + }) + + expect( + etapeSaveFormat({ + id: 'etape-id', + type: { id: 'mfr' }, + titreDemarcheId: 'demarche-id', + statutId: '', + duree: { ans: 0, mois: 10 }, + amodiataires: [], + titulaires: [], + geoSystemeIds: ['geo-systeme-id', 'geo-systeme-id-2'], + geoSystemeOpposableId: 'geo-systeme-id', + groupes: [ + [ + [ + { + references: { + 'geo-systeme-id': { id: 'id1', x: 1.5, y: 1 }, + 'geo-systeme-id-2': { x: undefined, y: undefined } + } + }, + { + references: { + 'geo-systeme-id': { x: undefined, y: undefined }, + 'geo-systeme-id-2': { id: 'id3', x: 1.5, y: 1 } + } + } + ] + ] + ], + substances: [], + contenu: {}, + incertitudes: {}, + heritageProps: { 'prop-id': { etape: {}, actif: true } }, + heritageContenu: { + 'section-id': { 'element-id': { etape: {}, actif: true } } + } + }) + ).toEqual({ + amodiataires: [], + duree: 10, + id: 'etape-id', + incertitudes: {}, + points: [ + { + contour: 1, + groupe: 1, + point: 1, + references: [ + { + coordonnees: { x: 1.5, y: 1 }, + geoSystemeId: 'geo-systeme-id', + opposable: true, + id: 'id1' + } + ] + } + ], + statutId: '', + substances: [], + titreDemarcheId: 'demarche-id', + titulaires: [], + heritageProps: { 'prop-id': { actif: true } }, + heritageContenu: { + 'section-id': { 'element-id': { actif: true } } + }, + typeId: 'mfr' + }) + + expect( + etapeSaveFormat({ + id: 'etape-id', + titreDemarcheId: 'demarche-id', + type: { id: 'etape-type-id' }, + statutId: 'etape-statut-id', + duree: { ans: 20, mois: 0 }, + amodiataires: [], + titulaires: [{ id: 'titulaire-id' }, { id: '' }], + geoSystemeIds: ['geo-systeme-id'], + geoSystemeOpposableId: '', + groupes: [ + [ + [ + { + references: { + 'geo-systeme-id': { id: '1', x: 1.5, y: null } + }, + lot: undefined, + subsidiaire: undefined + }, + { + references: { 'geo-systeme-id': { id: '2', x: 1.5, y: 1 } }, + lot: undefined, + subsidiaire: undefined + }, + { + description: undefined, + references: [ + { id: '3', x: 1.5, y: 3 }, + { id: '4', x: 1.5, y: 4 } + ], + lot: 1, + subsidiaire: undefined + }, + { + description: undefined, + references: [], + lot: 2, + subsidiaire: undefined + }, + { + description: undefined, + references: ['reference invalide'], + lot: 3, + subsidiaire: undefined + } + ] + ], + [[]] + ], + substances: [{ id: 'substance-id-1' }], + contenu: { 'prop-id': 'prop-value' }, + incertitudes: { amodiataires: true }, + documents: [{ id: 'tmp', typeId: 'tmp' }, { id: 'doc-id' }] + }) + ).toEqual({ + amodiataires: [], + contenu: { 'prop-id': 'prop-value' }, + duree: 240, + id: 'etape-id', + incertitudes: { amodiataires: true }, + points: [ + { + contour: 1, + groupe: 1, + point: 1, + references: [ + { + id: '2', + coordonnees: { x: 1.5, y: 1 }, + geoSystemeId: 'geo-systeme-id' + } + ] + }, + { + contour: 1, + description: undefined, + groupe: 1, + lot: 1, + nom: null, + point: 2, + references: [ + { + coordonnees: { x: 1.5, y: 3 }, + geoSystemeId: 'geo-systeme-id', + id: '3' + } + ], + subsidiaire: true + }, + { + contour: 1, + description: undefined, + groupe: 1, + lot: 1, + nom: null, + point: 3, + references: [ + { + coordonnees: { x: 1.5, y: 4 }, + geoSystemeId: 'geo-systeme-id', + id: '4' + } + ], + subsidiaire: true + } + ], + statutId: 'etape-statut-id', + substances: [{ id: 'substance-id-1', ordre: 1 }], + titreDemarcheId: 'demarche-id', + titulaires: [{ id: 'titulaire-id' }], + typeId: 'etape-type-id', + documentIds: ['doc-id'] + }) + }) +}) diff --git a/packages/ui/src/utils/url.js b/packages/ui/src/utils/url.js new file mode 100644 index 0000000000000000000000000000000000000000..af71ccd16bed4c43f55e0ef6e080940981513911 --- /dev/null +++ b/packages/ui/src/utils/url.js @@ -0,0 +1,186 @@ +const valueClean = (value, definition) => { + if (definition.type === 'number') { + if (definition.max && value > definition.max) { + value = definition.max + } else if (definition.min && value < definition.min) { + value = definition.min + } + + return value + } + + if ( + (definition.type === 'strings' || definition.type === 'numbers') && + definition.values + ) { + value = value + .reduce((acc, v) => { + if (definition.values.includes(v)) { + acc.push(v) + } + + return acc + }, []) + .sort() + + return value + } + + if (definition.type === 'tuple') { + return !Number(value[0]) || !Number(value[1]) ? null : value.map(Number) + } + + if (definition.type === 'string') { + return definition.values && !definition.values.includes(value) + ? null + : value + } + + if (definition.type === 'objects') { + // TODO: retirer les valeurs incorrectes + + return value.length ? value : null + } + + return value +} + +const valueParse = (id, value, definitions) => { + if (!value) return null + + const definition = definitions.find(p => p.id === id) + + if (!definition || !definition.type) { + return value + } + + if (definition.type === 'number') { + value = Number(value) + + return isNaN(value) ? null : value + } + + if (definition.type === 'strings') { + if (typeof value !== 'string') return null + + return value.split(',').sort() + } + + if (definition.type === 'numbers') { + if (typeof value !== 'string') return null + + return value + .split(',') + .map(v => Number(v)) + .sort() + } + + if (definition.type === 'string') { + return value + } + + if (definition.type === 'tuple') { + if (typeof value !== 'string') return null + + return value.split(',').slice(0, 2) + } + + if (definition.type === 'objects') { + return JSON.parse(value) + } + + return valueClean(value, definition) +} + +const valueStringify = (id, value, definitions) => { + if (!value) return null + + const definition = definitions.find(p => p.id === id) + + if ( + definition.type === 'strings' || + definition.type === 'tuple' || + definition.type === 'numbers' + ) { + return value.length ? value.join(',') : null + } + + if (definition.type === 'number') { + return value.toString() + } + + if (definition.type === 'objects') { + if (!value.length) return null + + // entrée <= + // [{ b: 2, a: 2 }, { a: 2, b: 1 }, { a: 1, b: 2 }] + // sortie => + // [{ a: 1, b: 2 }, { a: 2, b: 1 }, { a: 2, b: 2 }] + + const values = value + .reduce((objects, object) => { + object = Object.keys(object) + .sort() + .reduce((o, k) => { + if (object[k] !== '') { + o[k] = object[k] + } + + return o + }, {}) + + if (Object.keys(object).length) { + objects.push(JSON.stringify(object)) + } + + return objects + }, []) + .sort() + + if (!values.length) return null + + return `[${values.join(',')}]` + } + + return value +} + +const urlQueryParamsGet = (params, sourceQuery, definitions) => + Object.keys(params).reduce((queryParams, id) => { + const queryString = sourceQuery[id] || null + + if (queryString) { + const queryValue = valueParse(id, queryString, definitions) + const preferenceString = valueStringify(id, params[id], definitions) + + if (queryString !== preferenceString) { + queryParams[id] = queryValue + } + } + + return queryParams + }, {}) + +const urlQueryUpdate = (params, sourceQuery, definitions) => + Object.keys(params).reduce( + ({ query, status }, id) => { + const queryString = sourceQuery[id] || null + const preferenceString = valueStringify(id, params[id], definitions) + + if (queryString !== preferenceString) { + status = queryString || status === 'updated' ? 'updated' : 'created' + } + + if (preferenceString) { + query[id] = preferenceString + } + + return { query, status } + }, + { + query: {}, + status: null + } + ) + +export { urlQueryParamsGet, urlQueryUpdate } diff --git a/packages/ui/src/utils/url.test.js b/packages/ui/src/utils/url.test.js new file mode 100644 index 0000000000000000000000000000000000000000..c2dc11281605da26d903326f073492cbe4939bdf --- /dev/null +++ b/packages/ui/src/utils/url.test.js @@ -0,0 +1,11 @@ +import { urlQueryParamsGet } from './url.js' + +describe('urlQueryParamsGet', () => { + test('récupère les paramètres de requête qui ont changé', () => { + expect( + urlQueryParamsGet({ typesIds: ['cx', 'pr'] }, { typeIds: 'ar' }, [ + { id: 'typeIds', type: 'strings', values: ['cx', 'pr', 'ar'] } + ]) + ).toEqual({}) + }) +}) diff --git a/packages/ui/tsconfig.json b/packages/ui/tsconfig.json new file mode 100644 index 0000000000000000000000000000000000000000..70f26cf385eb6ef9ca410d35b3d6af3d6910cfae --- /dev/null +++ b/packages/ui/tsconfig.json @@ -0,0 +1,28 @@ +{ + "compilerOptions": { + "target": "esnext", + "module": "esnext", + "moduleResolution": "node", + "strict": true, + "sourceMap": true, + "resolveJsonModule": true, + "esModuleInterop": true, + "lib": [ + "esnext", + "dom" + ], + "types": [ + "vite/client", + "jest" + ], + "baseUrl": ".", + "paths": { + "@/*": [ + "./src/*" + ] + }, + "allowJs": true + }, + "exclude": ["node_modules", "**/node_modules/*", "dist", "example/dist"], + "include": ["./src/**/*"] +} diff --git a/packages/ui/vite.config.js b/packages/ui/vite.config.js new file mode 100644 index 0000000000000000000000000000000000000000..bb3fd8360a573faef0c82db192db36a360464662 --- /dev/null +++ b/packages/ui/vite.config.js @@ -0,0 +1,48 @@ +import 'dotenv/config' +import { defineConfig } from 'vite' +import vue from '@vitejs/plugin-vue' +import path from 'path' +import npmPackage from './package.json' +import inject from '@rollup/plugin-inject' + +export default defineConfig({ + plugins: [vue()], + root: 'src', + resolve: { + alias: { + '@': path.resolve(__dirname, './src') + } + }, + + // suite à l’ajout de la lib jsondiffpatch, il faut injecter process + // => https://github.com/avkonst/hookstate/issues/118 + define: { + npmVersion: JSON.stringify(npmPackage.version), + // mode dev + 'process.env': {} + }, + build: { + outDir: '../dist', + // mode prod + rollupOptions: { + plugins: [ + inject({ + process: 'process' + }) + ] + } + }, + server: { + proxy: { + '/apiUrl': { + target: process.env.API_URL, + changeOrigin: true, + rewrite: path => path.replace(/^\/apiUrl/, '') + }, + '/televersement': { + target: process.env.API_URL, + changeOrigin: true + } + } + } +})