diff --git a/.docker/entrypoint.sh b/.docker/entrypoint.sh
new file mode 100644
index 00000000..c02b209f
--- /dev/null
+++ b/.docker/entrypoint.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+npm run start
diff --git a/.docker/entrypoint.test.sh b/.docker/entrypoint.test.sh
new file mode 100644
index 00000000..f58591c6
--- /dev/null
+++ b/.docker/entrypoint.test.sh
@@ -0,0 +1,6 @@
+#!/bin/bash
+
+echo ".................................."
+
+echo "Running unit tests"
+npm run test
diff --git a/.dockerignore b/.dockerignore
index 578a8aa8..bba8d995 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -1,3 +1,5 @@
-node_modules/
-coverage/
-db/
\ No newline at end of file
+node_modules
+.github
+.vscode
+sonar-project.properties
+parser.py
diff --git a/.editorconfig b/.editorconfig
deleted file mode 100644
index 5533f01a..00000000
--- a/.editorconfig
+++ /dev/null
@@ -1,17 +0,0 @@
-# Editor configuration, see http://editorconfig.org
-root = true
-
-[*]
-charset = utf-8
-indent_style = space
-indent_size = 2
-insert_final_newline = true
-trim_trailing_whitespace = true
-end_of_line = lf
-
-[*.md]
-max_line_length = off
-trim_trailing_whitespace = false
-
-[*.{js,jsx,ts}]
-quote_type = single
\ No newline at end of file
diff --git a/.env.development b/.env.development
index ef403181..a88d9e6b 100644
--- a/.env.development
+++ b/.env.development
@@ -1,13 +1,5 @@
-#POSTGRES
-DB_TYPE='postgres'
-DB_HOST=gerocuidado-usuario-db
-DB_USERNAME=postgres
-DB_PASS=postgres
-DB_DATABASE=gerocuidado-usuario-db
-DB_PORT=5001
-
-#JWT TOKEN
-JWT_TOKEN_SECRET=f57d8cc37a35a8051aa97b5ec8506a2ac479e81f82aed9de975a0cb90b903044
-JWT_TOKEN_EXPIRES_IN=12h
-HASH_SALT=10
-
+EXPO_PUBLIC_API_URL=http://192.168.1.10
+EXPO_PUBLIC_API_USUARIO_PORT=3001
+EXPO_PUBLIC_API_FORUM_PORT=3002
+EXPO_PUBLIC_API_SAUDE_PORT=3003
+EXPO_PUBLIC_JWT_TOKEN_SECRET=f57d8cc37a35a8051aa97b5ec8506a2ac479e81f82aed9de975a0cb90b903044
diff --git a/.env.production b/.env.production
new file mode 100644
index 00000000..10b41b19
--- /dev/null
+++ b/.env.production
@@ -0,0 +1,5 @@
+EXPO_PUBLIC_API_URL=http://18.231.115.8
+EXPO_PUBLIC_API_USUARIO_PORT=80
+EXPO_PUBLIC_API_FORUM_PORT=80
+EXPO_PUBLIC_API_SAUDE_PORT=80
+EXPO_PUBLIC_JWT_TOKEN_SECRET=f57d8cc37a35a8051aa97b5ec8506a2ac479e81f82aed9de975a0cb90b903044
diff --git a/.env.test b/.env.test
deleted file mode 100644
index 553476f5..00000000
--- a/.env.test
+++ /dev/null
@@ -1,12 +0,0 @@
-#POSTGRES
-DB_TYPE='postgres'
-DB_HOST=gerocuidado-usuario-db-test
-DB_USERNAME=postgres
-DB_PASS=postgres
-DB_DATABASE=gerocuidado-usuario-db-test
-DB_PORT=5001
-
-#JWT TOKEN
-JWT_TOKEN_SECRET=f57d8cc37a35a8051aa97b5ec8506a2ac479e81f82aed9de975a0cb90b903044
-JWT_TOKEN_EXPIRES_IN=12h
-HASH_SALT=10
diff --git a/.eslintignore b/.eslintignore
index ed8cc2aa..f4aeebb0 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -1,10 +1,3 @@
-# don't ever lint node_modules
+/.expo
+assets
node_modules
-# don't lint build output (make sure it's set to your correct build folder name)
-dist
-# don't lint nyc coverage output
-coverage
-db
-e2e
-
-**/*spec.ts
diff --git a/.eslintrc.js b/.eslintrc.js
index f6c62bee..9f9dad6f 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -1,24 +1,28 @@
module.exports = {
- parser: '@typescript-eslint/parser',
+ parser: "@typescript-eslint/parser",
parserOptions: {
- project: 'tsconfig.json',
- sourceType: 'module',
+ project: "tsconfig.json",
+ sourceType: "module",
},
- plugins: ['@typescript-eslint/eslint-plugin'],
+ plugins: ["@typescript-eslint/eslint-plugin"],
extends: [
- 'plugin:@typescript-eslint/recommended',
- 'plugin:prettier/recommended',
+ "plugin:@typescript-eslint/recommended",
+ "plugin:prettier/recommended",
],
root: true,
env: {
node: true,
jest: true,
},
- ignorePatterns: ['.eslintrc.js'],
+ ignorePatterns: [".eslintrc.js"],
rules: {
- '@typescript-eslint/interface-name-prefix': 'off',
- '@typescript-eslint/explicit-function-return-type': 'off',
- '@typescript-eslint/explicit-module-boundary-types': 'off',
- '@typescript-eslint/no-explicit-any': 'off',
+ "@typescript-eslint/interface-name-prefix": "off",
+ "@typescript-eslint/explicit-function-return-type": "off",
+ "@typescript-eslint/explicit-module-boundary-types": "off",
+ "@typescript-eslint/no-explicit-any": "off",
+ "@typescript-eslint/no-unused-vars": "off",
+ "prettier/prettier": "off",
+ "@typescript-eslint/no-var-requires": "off",
+ "@typescript-eslint/no-namespace": "off"
},
};
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
new file mode 100644
index 00000000..acee3027
--- /dev/null
+++ b/.github/pull_request_template.md
@@ -0,0 +1,26 @@
+
+
+
+
+## Descrição
+
+
+## US
+
+
+
+## Issue
+
+
+
+## Principais Implementações
+
+
+## Tipos de Mudanças
+ - [ ] Bug fix (alteração que corrige uma issue e não altera funcionalidades já existentes);
+ - [ ] Nova feature (alteração que adiciona uma funcionalidade e não altera funcionalidades já existentes);
+ - [ ] Alteração disruptiva (Breaking change) (Correção ou funcionalidade que causa alteração nas funcionalidades existentes);
+ - [ ] Documentação
+ - [ ] Experiência do usuário (UX)
+ - [ ] Melhoria de desempenho
+
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
new file mode 100644
index 00000000..64a83399
--- /dev/null
+++ b/.github/workflows/build.yml
@@ -0,0 +1,33 @@
+name: Build
+on:
+ push:
+ branches:
+ - develop
+
+ pull_request:
+ types: [opened, synchronize, reopened]
+
+jobs:
+ sonarcloud:
+ name: Test Unit & Sonar Scan
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+ with:
+ fetch-depth: 0
+
+ - name: Install dependencies
+ run: yarn
+
+ - name: Linter
+ run: yarn eslint . --format json --output-file reports/eslint-report.json
+
+ - name: Test and coverage
+ run: TZ=UTC yarn jest --coverage
+
+ - name: SonarCloud Scan
+ uses: SonarSource/sonarcloud-github-action@master
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
diff --git a/.github/workflows/metrics.yml b/.github/workflows/metrics.yml
new file mode 100644
index 00000000..f5731265
--- /dev/null
+++ b/.github/workflows/metrics.yml
@@ -0,0 +1,46 @@
+name: Export de métricas
+
+on:
+ push:
+ branches:
+ - main
+ - develop
+
+ pull_request:
+ branches:
+ - main
+ - develop
+ types: [closed]
+
+jobs:
+ release:
+ runs-on: 'ubuntu-latest'
+ steps:
+ - uses: actions/checkout@v3
+ with:
+ fetch-depth: 0
+ - name: Criar diretório
+ run: mkdir analytics-raw-data
+
+ - name: Coletar métricas no SonarCloud
+ run: python parser.py fga-eps-mds-1_2024-1-gerocuidado-front ${{ github.event.repository.name }} ${{ github.ref_name }}
+
+ - name: Envia métricas para repo de Doc
+ run: |
+ git config --global user.email "${{secrets.USER_EMAIL}}"
+ git config --global user.name "${{secrets.USER_NAME}}"
+ git clone --single-branch --branch main "https://x-access-token:${{secrets.API_TOKEN_DOC}}@github.com/fga-eps-mds/2024-1-GEROcuidado-Doc" docs
+ mkdir -p docs/analytics-raw-data
+ cp -R analytics-raw-data/*.json docs/analytics-raw-data
+ cd docs/
+ git add .
+ git commit -m "Adicionando métricas do repositório ${{ github.event.repository.name }} ${{ github.ref_name }}"
+ git push
+
+ - name: Envia métricas como assets da release
+ if: startsWith(github.ref, 'refs/tags')
+ uses: AButler/upload-release-assets@v2.0
+ with:
+ files: 'analytics-raw-data/*'
+ repo-token: ${{ secrets.GITHUB_TOKEN }}
+ release-tag: ${{ github.ref_name }}
\ No newline at end of file
diff --git a/.github/workflows/udpate.yml b/.github/workflows/udpate.yml
new file mode 100644
index 00000000..f9365291
--- /dev/null
+++ b/.github/workflows/udpate.yml
@@ -0,0 +1,31 @@
+name: update
+ on: pull_request
+
+jobs:
+ update:
+ name: EAS Update
+ runs-on: ubuntu-latest
+ steps:
+ - name: Check for EXPO_TOKEN
+ run: |
+ if [ -z "${{ secrets.EXPO_TOKEN }}" ]; then
+ echo "You must provide an EXPO_TOKEN secret linked to this project's Expo account in this repo's secrets. Learn more: https://docs.expo.dev/eas-update/github-actions"
+ exit 1
+ fi
+ - uses: actions/checkout@v2
+ - uses: actions/setup-node@v2
+ with:
+ node-version: 16.x
+ cache: npm
+ - uses: expo/expo-github-action@v7
+ with:
+ expo-version: latest
+ eas-version: latest
+ token: ${{ secrets.EXPO_TOKEN }}
+ - name: Install dependencies
+ run: npm install
+ - name: Publish update
+ run: eas update --auto
+
+ - name: Publish update
+ run: eas update --branch preview --auto
diff --git a/.gitignore b/.gitignore
index 51df9990..56471116 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,33 +1,44 @@
-.npmrc
-
-# compiled output
-/dist
-/node_modules
-
-# Logs
-logs
-*.log
-npm-debug.log*
-pnpm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-lerna-debug.log*
-
-# OS
+# Learn more https://docs.github.com/en/get-started/getting-started-with-git/ignoring-files
+
+# dependencies
+node_modules/
+
+# Expo
+.expo/
+dist/
+web-build/
+
+# Native
+*.orig.*
+*.jks
+*.p8
+*.p12
+*.key
+*.mobileprovision
+
+# Metro
+.metro-health-check*
+
+# debug
+npm-debug.*
+yarn-debug.*
+yarn-error.*
+
+# macOS
.DS_Store
+*.pem
+
+# local env files
+.env*.local
+
+# typescript
+*.tsbuildinfo
-# Tests
/coverage
-/.nyc_output
-# IDEs and editors
+ios
+
+android
+
/.idea
-.project
-.classpath
-.c9/
-*.launch
-.settings/
-*.sublime-workspace
-
-# DB
-/db
+/reports
\ No newline at end of file
diff --git a/.prettierrc b/.prettierrc
index dcb72794..66ea8e27 100644
--- a/.prettierrc
+++ b/.prettierrc
@@ -1,4 +1,4 @@
{
- "singleQuote": true,
+ "singleQuote": false,
"trailingComma": "all"
}
\ No newline at end of file
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 00000000..be57f601
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,20 @@
+FROM node:18.17.0-alpine
+
+RUN apk update && apk add curl bash make && rm -rf /var/cache/apk/*
+
+WORKDIR /app
+
+RUN npm i -g --unsafe-perm --allow-root -g expo-cli@6.3.10 @expo/ngrok@4.1.0
+
+COPY package*.json ./
+
+RUN npm ci --legacy-peer-deps
+
+COPY . .
+
+RUN chmod +x /app/.docker/entrypoint.sh
+
+USER node
+
+EXPOSE 8081
+ENTRYPOINT ["/app/.docker/entrypoint.sh"]
diff --git a/Dockerfile.prod b/Dockerfile.prod
deleted file mode 100644
index a6051936..00000000
--- a/Dockerfile.prod
+++ /dev/null
@@ -1,44 +0,0 @@
-FROM node:18.17.0-alpine AS BUILD_IMAGE
-
-RUN apk update && apk add curl bash make && rm -rf /var/cache/apk/*
-
-WORKDIR /home/node/app
-
-RUN npm i -g @nestjs/cli@9.1.2
-
-COPY package*.json ./
-
-RUN npm ci --legacy-peer-deps
-
-COPY . .
-
-RUN npm run build
-
-
-FROM node:18.17.0-alpine AS BUILD_NODE_MODULES
-
-RUN apk update && apk add curl bash make && rm -rf /var/cache/apk/*
-
-WORKDIR /home/node/app
-
-COPY package*.json ./
-
-RUN npm ci --legacy-peer-deps --omit=dev
-
-
-FROM node:18.17.0-alpine
-
-ENV NODE_ENV=production
-
-WORKDIR /app
-
-COPY --chown=node:node --from=BUILD_IMAGE /home/node/app/dist /app
-COPY --chown=node:node --from=BUILD_NODE_MODULES /home/node/app/node_modules /app/node_modules
-COPY --chown=node:node --from=BUILD_IMAGE /home/node/app/.docker/entrypoint.prod.sh /app/entrypoint.sh
-
-RUN chmod +x /app/entrypoint.sh
-
-USER node
-
-EXPOSE 3001
-ENTRYPOINT ["/app/entrypoint.sh"]
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 00000000..35894f07
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2023 EPS/MDS
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/README.md b/README.md
index 0e9df4f9..46c2e1d3 100644
--- a/README.md
+++ b/README.md
@@ -1,81 +1,67 @@
-# gerocuidado-usuario-api
-
-## Configuração
-
-Definir valores iguais para os arquivos .env e docker-compose
-
-Arquivo .env.development e .env.test:
-
- #POSTGRES
- DB_TYPE=
- DB_HOST=
- DB_USERNAME=
- DB_PASS=
- DB_DATABASE=
- DB_PORT=
- JWT_TOKEN_SECRET=
- JWT_TOKEN_EXPIRES_IN=
- HASH_SALT=
-
-Arquivo .docker-compose, na seção **_environment_**:
-
- ...
- environment:
- - POSTGRES_DB=
- - POSTGRES_USER=
- - POSTGRES_PASSWORD=
- ...
-
-Da mesma forma, alterar os valores das portas terminadas em **_x_** (i.e 300x para 3001) para a porta desejada nos arquivos de compose, bem como no arquivo launch.json da pasta .vscode.
-
-## Execução
-
- Para subir a aplicação, basta rodar o comando:
-
- ```bash
- docker compose up
- ```
-
-## Testes
-
- Para testar a aplicação, suba o container de testes:
-
- ```bash
- TEST=dev docker compose -f docker-compose.test.yml up
- ```
-
- E rode os comandos para os testes unitários e E2E respectivamente (:cov gera o arquivo de coverage na raiz do projeto):
- ```bash
- npm run test:cov
- npm run test:e2e:cov
- ```
-
- ## Migrations
-
- Sempre que houver qualquer alteração em alguma entidade na aplicação (adicionar uma entidade, remover ou edita-la), deve ser gerada uma migration para sincronizar o banco de dados.
-
- 1. Entrar no container da api:
-
- ```bash
- docker exec -it gerocuidado-usuario-api bash
- ```
-
- 2. Rodar o comando de criar uma migration (tente dar um nome descritivo, ex.: CreateTableUsuario)
-
- ```bash
- npm run typeorm:migrate src/migration/NOME_DA_MIGRATION
- ```
-
-# Dicionário variáveis de ambiente
-
-| ENV | Descrição | Valor Padrão |
-| -------------------- | ------------------------- | ---------------------- |
-| DB_TYPE | tipo do banco | postgres |
-| DB_HOST | host do PostgreSQL | localhost |
-| DB_USERNAME | usuário do PostgreSQL | postgres |
-| DB_PASS | senha do PostgreSQL | postgres |
-| DB_DATABASE | database do PostgreSQL | gerocuidado-usuario-db |
-| DB_PORT | porta do PostgreSQL | 5001 |
-| JWT_TOKEN_SECRET | secret do JWT | |
-| JWT_TOKEN_EXPIRES_IN | tempo de expiração do JWT | 12h |
-| HASH_SALT | saltRounds da senha | 10 |
+# GEROcuidado Mobile App
+
+## Badges
+[![Code Smells](https://sonarcloud.io/api/project_badges/measure?project=fga-eps-mds_2023-2-GEROcuidado-Front&metric=code_smells)](https://sonarcloud.io/summary/new_code?id=fga-eps-mds_2023-2-GEROcuidado-Front)
+[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=fga-eps-mds_2023-2-GEROcuidado-Front&metric=sqale_rating)](https://sonarcloud.io/summary/new_code?id=fga-eps-mds_2023-2-GEROcuidado-Front)
+[![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=fga-eps-mds_2023-2-GEROcuidado-Front&metric=security_rating)](https://sonarcloud.io/summary/new_code?id=fga-eps-mds_2023-2-GEROcuidado-Front)
+[![Bugs](https://sonarcloud.io/api/project_badges/measure?project=fga-eps-mds_2023-2-GEROcuidado-Front&metric=bugs)](https://sonarcloud.io/summary/new_code?id=fga-eps-mds_2023-2-GEROcuidado-Front)
+[![Vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=fga-eps-mds_2023-2-GEROcuidado-Front&metric=vulnerabilities)](https://sonarcloud.io/summary/new_code?id=fga-eps-mds_2023-2-GEROcuidado-Front)
+[![Duplicated Lines (%)](https://sonarcloud.io/api/project_badges/measure?project=fga-eps-mds_2023-2-GEROcuidado-Front&metric=duplicated_lines_density)](https://sonarcloud.io/summary/new_code?id=fga-eps-mds_2023-2-GEROcuidado-Front)
+[![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=fga-eps-mds_2023-2-GEROcuidado-Front&metric=reliability_rating)](https://sonarcloud.io/summary/new_code?id=fga-eps-mds_2023-2-GEROcuidado-Front)
+[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=fga-eps-mds_2023-2-GEROcuidado-Front&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=fga-eps-mds_2023-2-GEROcuidado-Front)
+[![Technical Debt](https://sonarcloud.io/api/project_badges/measure?project=fga-eps-mds_2023-2-GEROcuidado-Front&metric=sqale_index)](https://sonarcloud.io/summary/new_code?id=fga-eps-mds_2023-2-GEROcuidado-Front)
+[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=fga-eps-mds_2023-2-GEROcuidado-Front&metric=coverage)](https://sonarcloud.io/summary/new_code?id=fga-eps-mds_2023-2-GEROcuidado-Front)
+[![Lines of Code](https://sonarcloud.io/api/project_badges/measure?project=fga-eps-mds_2023-2-GEROcuidado-Front&metric=ncloc)](https://sonarcloud.io/summary/new_code?id=fga-eps-mds_2023-2-GEROcuidado-Front)
+
+
+## Como rodar o projeto
+
+1. Clonar o repositório:
+```bash
+git clone https://github.com/fga-eps-mds/2023-2-GEROcuidado-Front.git
+```
+
+2. Ir para a pasta do projeto:
+```bash
+cd 2023-2-GEROcuidado-Front/
+```
+
+3. Rodar o container:
+- em ambiente de dev:
+```bash
+docker compose up
+```
+
+- em ambiente de prod:
+```bash
+NODE_ENV=production docker compose up
+```
+
+### OBSERVAÇÕES IMPORTANTES
+
+1. Para testar a aplicação no celular, basta subir o container com os passos acima, ter baixado no seu dispositivo o aplicativo EXPO GO e por fim acessar o link exp://192.168.0.9:8081 no seu navegador. (A aplicação não aparecerá automaticamente no aplicativo do EXPO GO, é necessário acessar o link)
+
+2. Para testar a aplicação no celular em ambiente de desenvolvimento, é necessário também remover essa configuração do app.json:
+
+```json
+"eas": {
+ "projectId": "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx"
+}
+```
+
+## Testes Unitários
+
+Para rodar os testes unitários, basta executar o comando:
+```bash
+docker compose -f docker-compose.test.yml up
+```
+
+## QR Code para testes
+### IOS
+![IOS](https://github.com/fga-eps-mds/2023-2-GEROcuidado-Front/assets/51385738/1a9562d5-dec5-485d-999a-59f2f16e2427)
+### Android
+![Android](https://github.com/fga-eps-mds/2023-2-GEROcuidado-Front/assets/51385738/9a6d23c0-2f88-42de-ac26-719e6faa9fd3)
+### 📝 Notes
+
+- [Expo Router: Docs](https://expo.github.io/router)
+- [Expo Router: Repo](https://github.com/expo/router)
diff --git a/__mocks__/expo-image.js b/__mocks__/expo-image.js
new file mode 100644
index 00000000..ac0eec6d
--- /dev/null
+++ b/__mocks__/expo-image.js
@@ -0,0 +1,3 @@
+export const Image = ({ source }) => (
+
+);
diff --git a/__mocks__/expo-notifications.js b/__mocks__/expo-notifications.js
new file mode 100644
index 00000000..c73475b6
--- /dev/null
+++ b/__mocks__/expo-notifications.js
@@ -0,0 +1,4 @@
+export const getPermissionsAsync = jest.fn().mockResolvedValue({ status: 'granted' });
+export const requestPermissionsAsync = jest.fn().mockResolvedValue({ status: 'granted' });
+export const getExpoPushTokenAsync = jest.fn().mockResolvedValue({ data: 'mockToken' });
+export const setNotificationChannelAsync = jest.fn();
diff --git a/__mocks__/notifications.ts b/__mocks__/notifications.ts
new file mode 100644
index 00000000..434e6049
--- /dev/null
+++ b/__mocks__/notifications.ts
@@ -0,0 +1,13 @@
+// __mocks__/notifications.ts
+export type CustomPermissionStatus = {
+ status: 'granted' | 'denied' | 'default'; // Adapte conforme os valores possíveis
+ expires: string;
+ granted: boolean;
+ canAskAgain: boolean;
+};
+
+export type CustomExpoPushToken = {
+data: string;
+type: 'expo'; // Ou outro tipo que o seu código espera
+};
+
\ No newline at end of file
diff --git a/app.json b/app.json
new file mode 100644
index 00000000..ef92dbed
--- /dev/null
+++ b/app.json
@@ -0,0 +1,64 @@
+{
+ "expo": {
+ "name": "GEROcuidado",
+ "slug": "gerocuidado",
+ "scheme": "gero.cuidado",
+ "version": "1.0.0",
+ "orientation": "portrait",
+ "icon": "./assets/icon.png",
+ "userInterfaceStyle": "light",
+ "splash": {
+ "image": "./assets/splash.png",
+ "resizeMode": "contain",
+ "backgroundColor": "#ffffff"
+ },
+ "assetBundlePatterns": [
+ "**/*"
+ ],
+ "ios": {
+ "supportsTablet": true
+ },
+ "android": {
+ "permissions": [],
+ "usesCleartextTraffic": true,
+ "adaptiveIcon": {
+ "foregroundImage": "./assets/adaptive-icon.png",
+ "backgroundColor": "#ffffff"
+ },
+ "package": "com.gerocuidado.gerocuidado"
+ },
+ "web": {
+ "favicon": "./assets/favicon.png",
+ "bundler": "metro"
+ },
+ "experiments": {
+ "typeRoutes": true
+ },
+ "plugins": [
+ "expo-router",
+ [
+ "expo-build-properties",
+ {
+ "android": {
+ "usesCleartextTraffic": true
+ }
+ }
+ ]
+ ],
+ "extra": {
+ "expoEnv": "process.env.EXPO_PUBLIC_API_URL",
+ "router": {
+ "origin": false
+ },
+ "eas": {
+ "projectId": "53b640fc-f72d-4fb5-88b4-c80d4162aa8b"
+ }
+ },
+ "runtimeVersion": {
+ "policy": "appVersion"
+ },
+ "updates": {
+ "url": "https://u.expo.dev/7028a81c-adee-41de-91a7-b7e80535a448"
+ }
+ }
+}
diff --git a/assets/Idoso.png b/assets/Idoso.png
new file mode 100644
index 00000000..81faf7db
Binary files /dev/null and b/assets/Idoso.png differ
diff --git a/assets/adaptive-icon.png b/assets/adaptive-icon.png
new file mode 100644
index 00000000..a7ee9776
Binary files /dev/null and b/assets/adaptive-icon.png differ
diff --git a/assets/amelia.png b/assets/amelia.png
new file mode 100644
index 00000000..513c6eb9
Binary files /dev/null and b/assets/amelia.png differ
diff --git a/assets/favicon.png b/assets/favicon.png
new file mode 100644
index 00000000..c98aa2c2
Binary files /dev/null and b/assets/favicon.png differ
diff --git a/assets/icon.png b/assets/icon.png
new file mode 100644
index 00000000..a7ee9776
Binary files /dev/null and b/assets/icon.png differ
diff --git a/assets/idoso_botao.png b/assets/idoso_botao.png
new file mode 100644
index 00000000..1304042d
Binary files /dev/null and b/assets/idoso_botao.png differ
diff --git a/assets/img_tutor1.png b/assets/img_tutor1.png
new file mode 100644
index 00000000..7f838d10
Binary files /dev/null and b/assets/img_tutor1.png differ
diff --git a/assets/img_tutor2.png b/assets/img_tutor2.png
new file mode 100644
index 00000000..2ae42ead
Binary files /dev/null and b/assets/img_tutor2.png differ
diff --git a/assets/img_tutor3.png b/assets/img_tutor3.png
new file mode 100644
index 00000000..66b4e360
Binary files /dev/null and b/assets/img_tutor3.png differ
diff --git a/assets/logo.png b/assets/logo.png
new file mode 100644
index 00000000..7e5d4b59
Binary files /dev/null and b/assets/logo.png differ
diff --git a/assets/logo2.png b/assets/logo2.png
new file mode 100644
index 00000000..a16ba69a
Binary files /dev/null and b/assets/logo2.png differ
diff --git a/assets/splash.png b/assets/splash.png
new file mode 100644
index 00000000..0e89705a
Binary files /dev/null and b/assets/splash.png differ
diff --git a/assets/testes/Android_27-10.png b/assets/testes/Android_27-10.png
new file mode 100644
index 00000000..4c1237d2
Binary files /dev/null and b/assets/testes/Android_27-10.png differ
diff --git a/assets/testes/ios_27-10.png.jpeg b/assets/testes/ios_27-10.png.jpeg
new file mode 100644
index 00000000..a9950255
Binary files /dev/null and b/assets/testes/ios_27-10.png.jpeg differ
diff --git a/babel.config.js b/babel.config.js
new file mode 100644
index 00000000..70b10a9b
--- /dev/null
+++ b/babel.config.js
@@ -0,0 +1,7 @@
+module.exports = function (api) {
+ api.cache(true);
+ return {
+ presets: ["babel-preset-expo"],
+ plugins: [["@babel/plugin-proposal-decorators", { "legacy": true }]],
+ };
+};
diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml
deleted file mode 100644
index 1f723b0e..00000000
--- a/docker-compose.prod.yml
+++ /dev/null
@@ -1,45 +0,0 @@
-version: '3.7'
-services:
- gerocuidado-usuario-api-prod:
- image: victorjorge/gerocuidado-usuario-api:latest
- container_name: gerocuidado-usuario-api-prod
- environment:
- - DB_HOST=gerocuidado-usuario-db
- - DB_USERNAME=postgres
- - DB_PASS=postgres
- - DB_DATABASE=gerocuidado-usuario-db
- - DB_PORT=5001
- - JWT_TOKEN_SECRET=f57d8cc37a35a8051aa97b5ec8506a2ac479e81f82aed9de975a0cb90b903044
- - JWT_TOKEN_EXPIRES_IN=12h
- - HASH_SALT=10
- ports:
- - '3001:3001'
- depends_on:
- - gerocuidado-usuario-db
- networks:
- - gerocuidado-usuario-net
- - gerocuidado-apis-net
-
- gerocuidado-usuario-db:
- build:
- context: ./.docker/postgres
- dockerfile: Dockerfile
- command: postgres -c 'config_file=/etc/postgresql/postgresql.conf'
- container_name: gerocuidado-usuario-db
- volumes:
- - './.docker/postgres/config/postgresql.conf:/etc/postgresql/postgresql.conf'
- environment:
- - POSTGRES_DB=gerocuidado-usuario-db
- - POSTGRES_USER=postgres
- - POSTGRES_PASSWORD=postgres
- ports:
- - '5001:5001'
- networks:
- - gerocuidado-usuario-net
-
-networks:
- gerocuidado-usuario-net:
- driver: bridge
- gerocuidado-apis-net:
- name: gerocuidado-apis-net
- external: true
diff --git a/docker-compose.test.yml b/docker-compose.test.yml
index 1c5ee1a0..cb67ed34 100644
--- a/docker-compose.test.yml
+++ b/docker-compose.test.yml
@@ -1,40 +1,14 @@
version: '3.7'
services:
- gerocuidado-usuario-api-test:
- image: gerocuidadodev/node:18.17.0-alpine-dev
- container_name: gerocuidado-usuario-api-test
- volumes:
- - '.:/home/node/app'
- entrypoint: dockerize -wait tcp://gerocuidado-usuario-db-test:5001 -timeout 40s ./.docker/entrypoint.test.sh
- environment:
- - NODE_ENV=test
- - TEST=$TEST
- user: root
- ports:
- - '3001:3001'
- - '8001:8001'
- depends_on:
- - gerocuidado-usuario-db-test
- networks:
- - gerocuidado-usuario-net-test
-
- gerocuidado-usuario-db-test:
+ gerocuidado-front-test:
build:
- context: ./.docker/postgres
+ context: .
dockerfile: Dockerfile
- command: postgres -c 'config_file=/etc/postgresql/postgresql.conf'
- container_name: gerocuidado-usuario-db-test
- volumes:
- - './.docker/postgres/config/postgresql.conf:/etc/postgresql/postgresql.conf'
- environment:
- - POSTGRES_DB=gerocuidado-usuario-db-test
- - POSTGRES_USER=postgres
- - POSTGRES_PASSWORD=postgres
+ container_name: gerocuidado-front-test
ports:
- - '5001:5001'
- networks:
- - gerocuidado-usuario-net-test
-
-networks:
- gerocuidado-usuario-net-test:
- driver: bridge
+ - '8081:8081'
+ user: root
+ volumes:
+ - ./:/app
+ - /app/node_modules
+ entrypoint: ./.docker/entrypoint.test.sh
diff --git a/docker-compose.yml b/docker-compose.yml
index b8a8981f..1c473e82 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,44 +1,15 @@
version: '3.7'
services:
- gerocuidado-usuario-api:
- image: gerocuidadodev/node:18.17.0-alpine-dev
- container_name: gerocuidado-usuario-api
- volumes:
- - '.:/home/node/app'
- entrypoint: ./.docker/entrypoint.sh
- environment:
- - NODE_ENV=development
- ports:
- - '3001:3001'
- - '4001:4001'
- - '7001:7001'
- depends_on:
- - gerocuidado-usuario-db
- networks:
- - gerocuidado-usuario-net
- - gerocuidado-apis-net
-
- gerocuidado-usuario-db:
+ gerocuidado-front:
build:
- context: ./.docker/postgres
+ context: .
dockerfile: Dockerfile
- command: postgres -c 'config_file=/etc/postgresql/postgresql.conf'
- container_name: gerocuidado-usuario-db
+ container_name: gerocuidado-front
+ ports:
+ - '8081:8081'
volumes:
- - './db/postgres:/var/lib/postgresql/data'
- - './.docker/postgres/config/postgresql.conf:/etc/postgresql/postgresql.conf'
+ - ./:/app
+ - /app/node_modules
environment:
- - POSTGRES_DB=gerocuidado-usuario-db
- - POSTGRES_USER=postgres
- - POSTGRES_PASSWORD=postgres
- ports:
- - '5001:5001'
- networks:
- - gerocuidado-usuario-net
-
-networks:
- gerocuidado-usuario-net:
- driver: bridge
- gerocuidado-apis-net:
- name: gerocuidado-apis-net
- external: true
+ - EXPO_DEVTOOLS_LISTEN_ADDRESS=0.0.0.0
+ - NODE_ENV=${NODE_ENV}
diff --git a/eas.json b/eas.json
new file mode 100644
index 00000000..15fdb4de
--- /dev/null
+++ b/eas.json
@@ -0,0 +1,26 @@
+{
+ "cli": {
+ "version": ">= 5.5.0"
+ },
+ "build": {
+ "development": {
+ "android": {
+ "buildType": "apk",
+ "developmentClient": true
+ }
+ },
+ "preview": {
+ "android": {
+ "buildType": "apk"
+ }
+ },
+ "production": {
+ "android": {
+ "buildType": "app-bundle"
+ }
+ }
+ },
+ "submit": {
+ "production": {}
+ }
+}
diff --git a/jest-setup.js b/jest-setup.js
new file mode 100644
index 00000000..35f3ccb6
--- /dev/null
+++ b/jest-setup.js
@@ -0,0 +1,21 @@
+import "react-native-gesture-handler/jestSetup";
+
+module.exports = {
+ moduleDirectories: ["node_modules", "src"],
+ moduleNameMapper: {
+ "^expo-image$": "./__mocks__/expo-image.js",
+ },
+};
+
+jest.mock("@react-native-async-storage/async-storage", () =>
+ require("@react-native-async-storage/async-storage/jest/async-storage-mock"),
+);
+
+jest.mock(
+ '@nozbe/watermelondb/adapters/sqlite/makeDispatcher/index.native.js',
+ () => {
+ return jest.requireActual(
+ '@nozbe/watermelondb/adapters/sqlite/makeDispatcher/index.js',
+ );
+ },
+);
\ No newline at end of file
diff --git a/nest-cli.json b/nest-cli.json
deleted file mode 100644
index 56167b36..00000000
--- a/nest-cli.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "collection": "@nestjs/schematics",
- "sourceRoot": "src"
-}
diff --git a/package-lock.json b/package-lock.json
index f5a66c67..08f67133 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,89 +1,72 @@
{
- "name": "gerocuidado-usuario-api",
- "version": "0.0.1",
+ "name": "gerocuidado",
+ "version": "1.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
- "name": "gerocuidado-usuario-api",
- "version": "0.0.1",
- "license": "UNLICENSED",
- "dependencies": {
- "@grpc/grpc-js": "1.7.3",
- "@grpc/proto-loader": "0.7.3",
- "@nestjs/axios": "0.1.0",
- "@nestjs/common": "9.1.2",
- "@nestjs/config": "2.2.0",
- "@nestjs/core": "9.1.2",
- "@nestjs/jwt": "9.0.0",
- "@nestjs/mapped-types": "1.1.0",
- "@nestjs/microservices": "9.1.2",
- "@nestjs/passport": "9.0.3",
- "@nestjs/platform-express": "9.1.2",
- "@nestjs/typeorm": "9.0.1",
- "amqp-connection-manager": "4.1.3",
- "amqplib": "0.10.0",
- "bcrypt": "5.0.1",
- "cache-manager": "3.4.3",
- "cache-manager-redis-store": "2.0.0",
- "class-transformer": "0.5.1",
- "class-validator": "0.13.2",
- "compression": "1.7.4",
- "cors": "^2.8.5",
- "dotenv": "10.0.0",
- "express": "^4.21.2",
- "express-actuator": "1.8.2",
- "helmet": "6.0.0",
+ "name": "gerocuidado",
+ "version": "1.0.0",
+ "dependencies": {
+ "@expo/metro-config": "^0.18.11",
+ "@expo/vector-icons": "^14.0.2",
+ "@nozbe/watermelondb": "^0.27.1",
+ "@react-native-async-storage/async-storage": "1.23.1",
+ "@shopify/flash-list": "1.6.4",
+ "@testing-library/jest-native": "^5.4.3",
+ "axios": "^1.5.1",
+ "date-fns": "^2.30.0",
+ "expo": "^51.0.39",
+ "expo-build-properties": "~0.12.5",
+ "expo-constants": "~16.0.2",
+ "expo-dev-client": "~4.0.23",
+ "expo-device": "~6.0.2",
+ "expo-image": "~1.12.13",
+ "expo-image-picker": "~15.0.7",
+ "expo-jwt": "^1.6.5",
+ "expo-linking": "~6.3.1",
+ "expo-notifications": "~0.28.15",
+ "expo-router": "^3.5.23",
+ "expo-splash-screen": "~0.27.5",
+ "expo-status-bar": "~1.12.1",
+ "expo-updates": "~0.25.22",
+ "jest": "^29.2.1",
+ "jest-expo": "~51.0.3",
+ "jest-mock-extended": "^3.0.5",
+ "jest-sonar": "^0.2.16",
"jest-sonar-reporter": "^2.0.0",
- "nodemailer": "^4.7.0",
- "passport": "0.5.2",
- "passport-jwt": "4.0.0",
- "passport-local": "1.0.0",
- "pg": "8.7.3",
- "reflect-metadata": "0.1.13",
- "rimraf": "3.0.2",
- "rxjs": "7.5.7",
- "typeorm": "0.3.10",
- "typeorm-naming-strategies": "^4.1.0"
+ "native-notify": "^3.2.4",
+ "react": "18.2.0",
+ "react-dom": "18.2.0",
+ "react-native": "0.74.5",
+ "react-native-calendar-strip": "^2.2.6",
+ "react-native-calendars": "^1.1302.0",
+ "react-native-draggable-gridview": "^1.0.3",
+ "react-native-dropdown-select-list": "^2.0.5",
+ "react-native-gesture-handler": "~2.16.1",
+ "react-native-mask-input": "^1.2.3",
+ "react-native-paper": "^5.11.2",
+ "react-native-safe-area-context": "4.10.5",
+ "react-native-screens": "3.31.1",
+ "react-native-swiper": "^1.6.0",
+ "react-native-toast-message": "^2.1.7",
+ "react-native-vector-icons": "^10.0.0",
+ "react-native-web": "~0.19.10",
+ "ts-jest": "^29.1.1"
},
"devDependencies": {
- "@faker-js/faker": "8.0.2",
- "@nestjs/apollo": "10.1.0",
- "@nestjs/cli": "9.1.2",
- "@nestjs/graphql": "10.1.1",
- "@nestjs/schematics": "9.0.3",
- "@nestjs/testing": "9.1.2",
- "@types/bcrypt": "5.0.0",
- "@types/cache-manager": "3.4.0",
- "@types/compression": "1.7.2",
- "@types/cors": "2.8.12",
- "@types/express": "^4.17.13",
- "@types/express-actuator": "1.8.0",
+ "@babel/core": "^7.24.0",
+ "@babel/plugin-proposal-decorators": "^7.24.7",
+ "@testing-library/react-native": "^12.3.1",
"@types/jest": "^29.5.6",
- "@types/node": "^18.17.0",
- "@types/nodemailer": "^6.4.17",
- "@types/passport-jwt": "3.0.6",
- "@types/passport-local": "1.0.34",
- "@types/supertest": "2.0.11",
- "@typescript-eslint/eslint-plugin": "5.13.0",
- "@typescript-eslint/parser": "5.13.0",
- "apollo-server-express": "3.10.2",
- "eslint": "8.10.0",
- "eslint-config-prettier": "8.4.0",
- "eslint-plugin-prettier": "4.0.0",
- "graphql": "16.6.0",
- "jest": "^29.2.1",
- "jest-mock-extended": "^3.0.5",
- "jest-sonar": "^0.2.16",
- "prettier": "2.5.1",
- "sonarqube-scanner": "2.8.1",
- "source-map-support": "0.5.21",
- "supertest": "6.2.2",
- "ts-jest": "^29.1.1",
- "ts-loader": "9.2.7",
- "ts-node": "^10.9.2",
- "tsconfig-paths": "3.12.0",
- "typescript": "^4.6.2"
+ "@types/react": "~18.2.79",
+ "@types/react-native-vector-icons": "^6.4.16",
+ "better-sqlite3": "^11.2.1",
+ "eslint": "^8.52.0",
+ "eslint-config-universe": "^12.0.0",
+ "jest-sonar-reporter": "^2.0.0",
+ "prettier": "^3.0.3",
+ "typescript": "~5.3.3"
}
},
"node_modules/@aashutoshrathi/word-wrap": {
@@ -99,7 +82,6 @@
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz",
"integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
- "dev": true,
"dependencies": {
"@jridgewell/gen-mapping": "^0.3.0",
"@jridgewell/trace-mapping": "^0.3.9"
@@ -108,766 +90,607 @@
"node": ">=6.0.0"
}
},
- "node_modules/@angular-devkit/core": {
- "version": "14.2.1",
- "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.1.tgz",
- "integrity": "sha512-lW8oNGuJqr4r31FWBjfWQYkSXdiOHBGOThIEtHvUVBKfPF/oVrupLueCUgBPel+NvxENXdo93uPsqHN7bZbmsQ==",
- "dev": true,
+ "node_modules/@babel/code-frame": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz",
+ "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==",
"dependencies": {
- "ajv": "8.11.0",
- "ajv-formats": "2.1.1",
- "jsonc-parser": "3.1.0",
- "rxjs": "6.6.7",
- "source-map": "0.7.4"
+ "@babel/highlight": "^7.24.7",
+ "picocolors": "^1.0.0"
},
"engines": {
- "node": "^14.15.0 || >=16.10.0",
- "npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
- "yarn": ">= 1.13.0"
- },
- "peerDependencies": {
- "chokidar": "^3.5.2"
- },
- "peerDependenciesMeta": {
- "chokidar": {
- "optional": true
- }
+ "node": ">=6.9.0"
}
},
- "node_modules/@angular-devkit/core/node_modules/ajv": {
- "version": "8.11.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz",
- "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==",
- "dev": true,
- "license": "MIT",
+ "node_modules/@babel/compat-data": {
+ "version": "7.25.2",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.2.tgz",
+ "integrity": "sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/core": {
+ "version": "7.25.2",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz",
+ "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==",
"dependencies": {
- "fast-deep-equal": "^3.1.1",
- "json-schema-traverse": "^1.0.0",
- "require-from-string": "^2.0.2",
- "uri-js": "^4.2.2"
+ "@ampproject/remapping": "^2.2.0",
+ "@babel/code-frame": "^7.24.7",
+ "@babel/generator": "^7.25.0",
+ "@babel/helper-compilation-targets": "^7.25.2",
+ "@babel/helper-module-transforms": "^7.25.2",
+ "@babel/helpers": "^7.25.0",
+ "@babel/parser": "^7.25.0",
+ "@babel/template": "^7.25.0",
+ "@babel/traverse": "^7.25.2",
+ "@babel/types": "^7.25.2",
+ "convert-source-map": "^2.0.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.3",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
},
"funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
+ "type": "opencollective",
+ "url": "https://opencollective.com/babel"
}
},
- "node_modules/@angular-devkit/core/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,
- "license": "MIT"
- },
- "node_modules/@angular-devkit/core/node_modules/rxjs": {
- "version": "6.6.7",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
- "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
- "dev": true,
+ "node_modules/@babel/generator": {
+ "version": "7.25.0",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.0.tgz",
+ "integrity": "sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==",
"dependencies": {
- "tslib": "^1.9.0"
+ "@babel/types": "^7.25.0",
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25",
+ "jsesc": "^2.5.1"
},
"engines": {
- "npm": ">=2.0.0"
+ "node": ">=6.9.0"
}
},
- "node_modules/@angular-devkit/core/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/@angular-devkit/schematics": {
- "version": "14.2.1",
- "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.2.1.tgz",
- "integrity": "sha512-0U18FwDYt4zROBPrvewH6iBTkf2ozVHN4/gxUb9jWrqVw8mPU5AWc/iYxQLHBSinkr2Egjo1H/i9aBqgJSeh3g==",
- "dev": true,
+ "node_modules/@babel/helper-annotate-as-pure": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz",
+ "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==",
"dependencies": {
- "@angular-devkit/core": "14.2.1",
- "jsonc-parser": "3.1.0",
- "magic-string": "0.26.2",
- "ora": "5.4.1",
- "rxjs": "6.6.7"
+ "@babel/types": "^7.25.9"
},
"engines": {
- "node": "^14.15.0 || >=16.10.0",
- "npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
- "yarn": ">= 1.13.0"
+ "node": ">=6.9.0"
}
},
- "node_modules/@angular-devkit/schematics-cli": {
- "version": "14.2.1",
- "resolved": "https://registry.npmjs.org/@angular-devkit/schematics-cli/-/schematics-cli-14.2.1.tgz",
- "integrity": "sha512-JyyVvxxnZyh9gzN7Ee8c3/BuswIFEwfnJ0EMT7goMSpEkvFn0HDln3Oi/FY0INmNeWN6EfRre0/eoeS9NtV1DA==",
- "dev": true,
+ "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz",
+ "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==",
+ "peer": true,
"dependencies": {
- "@angular-devkit/core": "14.2.1",
- "@angular-devkit/schematics": "14.2.1",
- "ansi-colors": "4.1.3",
- "inquirer": "8.2.4",
- "symbol-observable": "4.0.0",
- "yargs-parser": "21.1.1"
- },
- "bin": {
- "schematics": "bin/schematics.js"
+ "@babel/types": "^7.22.15"
},
"engines": {
- "node": "^14.15.0 || >=16.10.0",
- "npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
- "yarn": ">= 1.13.0"
+ "node": ">=6.9.0"
}
},
- "node_modules/@angular-devkit/schematics-cli/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,
+ "node_modules/@babel/helper-compilation-targets": {
+ "version": "7.25.2",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz",
+ "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==",
"dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
+ "@babel/compat-data": "^7.25.2",
+ "@babel/helper-validator-option": "^7.24.8",
+ "browserslist": "^4.23.1",
+ "lru-cache": "^5.1.1",
+ "semver": "^6.3.1"
},
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
+ "node": ">=6.9.0"
}
},
- "node_modules/@angular-devkit/schematics-cli/node_modules/inquirer": {
- "version": "8.2.4",
- "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz",
- "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==",
- "dev": true,
+ "node_modules/@babel/helper-create-class-features-plugin": {
+ "version": "7.25.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.0.tgz",
+ "integrity": "sha512-GYM6BxeQsETc9mnct+nIIpf63SAyzvyYN7UB/IlTyd+MBg06afFGp0mIeUqGyWgS2mxad6vqbMrHVlaL3m70sQ==",
"dependencies": {
- "ansi-escapes": "^4.2.1",
- "chalk": "^4.1.1",
- "cli-cursor": "^3.1.0",
- "cli-width": "^3.0.0",
- "external-editor": "^3.0.3",
- "figures": "^3.0.0",
- "lodash": "^4.17.21",
- "mute-stream": "0.0.8",
- "ora": "^5.4.1",
- "run-async": "^2.4.0",
- "rxjs": "^7.5.5",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0",
- "through": "^2.3.6",
- "wrap-ansi": "^7.0.0"
+ "@babel/helper-annotate-as-pure": "^7.24.7",
+ "@babel/helper-member-expression-to-functions": "^7.24.8",
+ "@babel/helper-optimise-call-expression": "^7.24.7",
+ "@babel/helper-replace-supers": "^7.25.0",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7",
+ "@babel/traverse": "^7.25.0",
+ "semver": "^6.3.1"
},
"engines": {
- "node": ">=12.0.0"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
}
},
- "node_modules/@angular-devkit/schematics/node_modules/rxjs": {
- "version": "6.6.7",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
- "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
- "dev": true,
+ "node_modules/@babel/helper-create-regexp-features-plugin": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz",
+ "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==",
"dependencies": {
- "tslib": "^1.9.0"
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "regexpu-core": "^5.3.1",
+ "semver": "^6.3.1"
},
"engines": {
- "npm": ">=2.0.0"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
}
},
- "node_modules/@angular-devkit/schematics/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/@apollo/protobufjs": {
- "version": "1.2.7",
- "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.7.tgz",
- "integrity": "sha512-Lahx5zntHPZia35myYDBRuF58tlwPskwHc5CWBZC/4bMKB6siTBWwtMrkqXcsNwQiFSzSx5hKdRPUmemrEp3Gg==",
- "dev": true,
- "hasInstallScript": true,
+ "node_modules/@babel/helper-define-polyfill-provider": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz",
+ "integrity": "sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==",
"dependencies": {
- "@protobufjs/aspromise": "^1.1.2",
- "@protobufjs/base64": "^1.1.2",
- "@protobufjs/codegen": "^2.0.4",
- "@protobufjs/eventemitter": "^1.1.0",
- "@protobufjs/fetch": "^1.1.0",
- "@protobufjs/float": "^1.0.2",
- "@protobufjs/inquire": "^1.1.0",
- "@protobufjs/path": "^1.1.2",
- "@protobufjs/pool": "^1.1.0",
- "@protobufjs/utf8": "^1.1.0",
- "@types/long": "^4.0.0",
- "long": "^4.0.0"
+ "@babel/helper-compilation-targets": "^7.22.6",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "debug": "^4.1.1",
+ "lodash.debounce": "^4.0.8",
+ "resolve": "^1.14.2"
},
- "bin": {
- "apollo-pbjs": "bin/pbjs",
- "apollo-pbts": "bin/pbts"
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
}
},
- "node_modules/@apollo/usage-reporting-protobuf": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/@apollo/usage-reporting-protobuf/-/usage-reporting-protobuf-4.1.1.tgz",
- "integrity": "sha512-u40dIUePHaSKVshcedO7Wp+mPiZsaU6xjv9J+VyxpoU/zL6Jle+9zWeG98tr/+SZ0nZ4OXhrbb8SNr0rAPpIDA==",
- "dev": true,
- "dependencies": {
- "@apollo/protobufjs": "1.2.7"
+ "node_modules/@babel/helper-environment-visitor": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
+ "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "node_modules/@apollo/utils.dropunuseddefinitions": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@apollo/utils.dropunuseddefinitions/-/utils.dropunuseddefinitions-1.1.0.tgz",
- "integrity": "sha512-jU1XjMr6ec9pPoL+BFWzEPW7VHHulVdGKMkPAMiCigpVIT11VmCbnij0bWob8uS3ODJ65tZLYKAh/55vLw2rbg==",
- "dev": true,
- "engines": {
- "node": ">=12.13.0"
+ "node_modules/@babel/helper-function-name": {
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
+ "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
+ "dependencies": {
+ "@babel/template": "^7.22.15",
+ "@babel/types": "^7.23.0"
},
- "peerDependencies": {
- "graphql": "14.x || 15.x || 16.x"
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "node_modules/@apollo/utils.keyvaluecache": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/@apollo/utils.keyvaluecache/-/utils.keyvaluecache-1.0.2.tgz",
- "integrity": "sha512-p7PVdLPMnPzmXSQVEsy27cYEjVON+SH/Wb7COyW3rQN8+wJgT1nv9jZouYtztWW8ZgTkii5T6tC9qfoDREd4mg==",
- "dev": true,
+ "node_modules/@babel/helper-hoist-variables": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
+ "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
+ "peer": true,
"dependencies": {
- "@apollo/utils.logger": "^1.0.0",
- "lru-cache": "7.10.1 - 7.13.1"
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "node_modules/@apollo/utils.keyvaluecache/node_modules/lru-cache": {
- "version": "7.13.1",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.13.1.tgz",
- "integrity": "sha512-CHqbAq7NFlW3RSnoWXLJBxCWaZVBrfa9UEHId2M3AW8iEBurbqduNexEUCGc3SHc6iCYXNJCDi903LajSVAEPQ==",
- "dev": true,
+ "node_modules/@babel/helper-member-expression-to-functions": {
+ "version": "7.24.8",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz",
+ "integrity": "sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==",
+ "dependencies": {
+ "@babel/traverse": "^7.24.8",
+ "@babel/types": "^7.24.8"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=6.9.0"
}
},
- "node_modules/@apollo/utils.logger": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@apollo/utils.logger/-/utils.logger-1.0.1.tgz",
- "integrity": "sha512-XdlzoY7fYNK4OIcvMD2G94RoFZbzTQaNP0jozmqqMudmaGo2I/2Jx71xlDJ801mWA/mbYRihyaw6KJii7k5RVA==",
- "dev": true
- },
- "node_modules/@apollo/utils.printwithreducedwhitespace": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@apollo/utils.printwithreducedwhitespace/-/utils.printwithreducedwhitespace-1.1.0.tgz",
- "integrity": "sha512-GfFSkAv3n1toDZ4V6u2d7L4xMwLA+lv+6hqXicMN9KELSJ9yy9RzuEXaX73c/Ry+GzRsBy/fdSUGayGqdHfT2Q==",
- "dev": true,
- "engines": {
- "node": ">=12.13.0"
+ "node_modules/@babel/helper-module-imports": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz",
+ "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==",
+ "dependencies": {
+ "@babel/traverse": "^7.25.9",
+ "@babel/types": "^7.25.9"
},
- "peerDependencies": {
- "graphql": "14.x || 15.x || 16.x"
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "node_modules/@apollo/utils.removealiases": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@apollo/utils.removealiases/-/utils.removealiases-1.0.0.tgz",
- "integrity": "sha512-6cM8sEOJW2LaGjL/0vHV0GtRaSekrPQR4DiywaApQlL9EdROASZU5PsQibe2MWeZCOhNrPRuHh4wDMwPsWTn8A==",
- "dev": true,
+ "node_modules/@babel/helper-module-transforms": {
+ "version": "7.25.2",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz",
+ "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.24.7",
+ "@babel/helper-simple-access": "^7.24.7",
+ "@babel/helper-validator-identifier": "^7.24.7",
+ "@babel/traverse": "^7.25.2"
+ },
"engines": {
- "node": ">=12.13.0"
+ "node": ">=6.9.0"
},
"peerDependencies": {
- "graphql": "14.x || 15.x || 16.x"
+ "@babel/core": "^7.0.0"
}
},
- "node_modules/@apollo/utils.sortast": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@apollo/utils.sortast/-/utils.sortast-1.1.0.tgz",
- "integrity": "sha512-VPlTsmUnOwzPK5yGZENN069y6uUHgeiSlpEhRnLFYwYNoJHsuJq2vXVwIaSmts015WTPa2fpz1inkLYByeuRQA==",
- "dev": true,
+ "node_modules/@babel/helper-optimise-call-expression": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz",
+ "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==",
"dependencies": {
- "lodash.sortby": "^4.7.0"
+ "@babel/types": "^7.24.7"
},
"engines": {
- "node": ">=12.13.0"
- },
- "peerDependencies": {
- "graphql": "14.x || 15.x || 16.x"
+ "node": ">=6.9.0"
}
},
- "node_modules/@apollo/utils.stripsensitiveliterals": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@apollo/utils.stripsensitiveliterals/-/utils.stripsensitiveliterals-1.2.0.tgz",
- "integrity": "sha512-E41rDUzkz/cdikM5147d8nfCFVKovXxKBcjvLEQ7bjZm/cg9zEcXvS6vFY8ugTubI3fn6zoqo0CyU8zT+BGP9w==",
- "dev": true,
+ "node_modules/@babel/helper-plugin-utils": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz",
+ "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==",
"engines": {
- "node": ">=12.13.0"
- },
- "peerDependencies": {
- "graphql": "14.x || 15.x || 16.x"
+ "node": ">=6.9.0"
}
},
- "node_modules/@apollo/utils.usagereporting": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@apollo/utils.usagereporting/-/utils.usagereporting-1.0.1.tgz",
- "integrity": "sha512-6dk+0hZlnDbahDBB2mP/PZ5ybrtCJdLMbeNJD+TJpKyZmSY6bA3SjI8Cr2EM9QA+AdziywuWg+SgbWUF3/zQqQ==",
- "dev": true,
+ "node_modules/@babel/helper-remap-async-to-generator": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz",
+ "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==",
"dependencies": {
- "@apollo/usage-reporting-protobuf": "^4.0.0",
- "@apollo/utils.dropunuseddefinitions": "^1.1.0",
- "@apollo/utils.printwithreducedwhitespace": "^1.1.0",
- "@apollo/utils.removealiases": "1.0.0",
- "@apollo/utils.sortast": "^1.1.0",
- "@apollo/utils.stripsensitiveliterals": "^1.2.0"
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-wrap-function": "^7.22.20"
},
"engines": {
- "node": ">=12.13.0"
+ "node": ">=6.9.0"
},
"peerDependencies": {
- "graphql": "14.x || 15.x || 16.x"
+ "@babel/core": "^7.0.0"
}
},
- "node_modules/@apollographql/apollo-tools": {
- "version": "0.5.4",
- "resolved": "https://registry.npmjs.org/@apollographql/apollo-tools/-/apollo-tools-0.5.4.tgz",
- "integrity": "sha512-shM3q7rUbNyXVVRkQJQseXv6bnYM3BUma/eZhwXR4xsuM+bqWnJKvW7SAfRjP7LuSCocrexa5AXhjjawNHrIlw==",
- "dev": true,
+ "node_modules/@babel/helper-replace-supers": {
+ "version": "7.25.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz",
+ "integrity": "sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==",
+ "dependencies": {
+ "@babel/helper-member-expression-to-functions": "^7.24.8",
+ "@babel/helper-optimise-call-expression": "^7.24.7",
+ "@babel/traverse": "^7.25.0"
+ },
"engines": {
- "node": ">=8",
- "npm": ">=6"
+ "node": ">=6.9.0"
},
"peerDependencies": {
- "graphql": "^14.2.1 || ^15.0.0 || ^16.0.0"
- }
- },
- "node_modules/@apollographql/graphql-playground-html": {
- "version": "1.6.29",
- "resolved": "https://registry.npmjs.org/@apollographql/graphql-playground-html/-/graphql-playground-html-1.6.29.tgz",
- "integrity": "sha512-xCcXpoz52rI4ksJSdOCxeOCn2DLocxwHf9dVT/Q90Pte1LX+LY+91SFtJF3KXVHH8kEin+g1KKCQPKBjZJfWNA==",
- "dev": true,
- "dependencies": {
- "xss": "^1.0.8"
+ "@babel/core": "^7.0.0"
}
},
- "node_modules/@babel/code-frame": {
- "version": "7.23.5",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz",
- "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==",
- "dev": true,
+ "node_modules/@babel/helper-simple-access": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz",
+ "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==",
"dependencies": {
- "@babel/highlight": "^7.23.4",
- "chalk": "^2.4.2"
+ "@babel/traverse": "^7.24.7",
+ "@babel/types": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
}
},
- "node_modules/@babel/code-frame/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/@babel/helper-skip-transparent-expression-wrappers": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz",
+ "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==",
"dependencies": {
- "color-convert": "^1.9.0"
+ "@babel/traverse": "^7.24.7",
+ "@babel/types": "^7.24.7"
},
"engines": {
- "node": ">=4"
+ "node": ">=6.9.0"
}
},
- "node_modules/@babel/code-frame/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,
+ "node_modules/@babel/helper-split-export-declaration": {
+ "version": "7.22.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
+ "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
"dependencies": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
+ "@babel/types": "^7.22.5"
},
"engines": {
- "node": ">=4"
+ "node": ">=6.9.0"
}
},
- "node_modules/@babel/code-frame/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/@babel/helper-string-parser": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz",
+ "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==",
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "node_modules/@babel/code-frame/node_modules/color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
- "dev": true
- },
- "node_modules/@babel/code-frame/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": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true,
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
+ "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
"engines": {
- "node": ">=0.8.0"
+ "node": ">=6.9.0"
}
},
- "node_modules/@babel/code-frame/node_modules/has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "dev": true,
+ "node_modules/@babel/helper-validator-option": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz",
+ "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==",
"engines": {
- "node": ">=4"
+ "node": ">=6.9.0"
}
},
- "node_modules/@babel/code-frame/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,
+ "node_modules/@babel/helper-wrap-function": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz",
+ "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==",
"dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@babel/compat-data": {
- "version": "7.23.5",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz",
- "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==",
- "dev": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/core": {
- "version": "7.23.5",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.5.tgz",
- "integrity": "sha512-Cwc2XjUrG4ilcfOw4wBAK+enbdgwAcAJCfGUItPBKR7Mjw4aEfAFYrLxeRp4jWgtNIKn3n2AlBOfwwafl+42/g==",
- "dev": true,
- "dependencies": {
- "@ampproject/remapping": "^2.2.0",
- "@babel/code-frame": "^7.23.5",
- "@babel/generator": "^7.23.5",
- "@babel/helper-compilation-targets": "^7.22.15",
- "@babel/helper-module-transforms": "^7.23.3",
- "@babel/helpers": "^7.23.5",
- "@babel/parser": "^7.23.5",
+ "@babel/helper-function-name": "^7.22.5",
"@babel/template": "^7.22.15",
- "@babel/traverse": "^7.23.5",
- "@babel/types": "^7.23.5",
- "convert-source-map": "^2.0.0",
- "debug": "^4.1.0",
- "gensync": "^1.0.0-beta.2",
- "json5": "^2.2.3",
- "semver": "^6.3.1"
+ "@babel/types": "^7.22.19"
},
"engines": {
"node": ">=6.9.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/babel"
- }
- },
- "node_modules/@babel/core/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
}
},
- "node_modules/@babel/generator": {
- "version": "7.23.5",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.5.tgz",
- "integrity": "sha512-BPssCHrBD+0YrxviOa3QzpqwhNIXKEtOa2jQrm4FlmkC2apYgRnQcmPWiGZDlGxiNtltnUFolMe8497Esry+jA==",
- "dev": true,
+ "node_modules/@babel/helpers": {
+ "version": "7.25.0",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.0.tgz",
+ "integrity": "sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==",
"dependencies": {
- "@babel/types": "^7.23.5",
- "@jridgewell/gen-mapping": "^0.3.2",
- "@jridgewell/trace-mapping": "^0.3.17",
- "jsesc": "^2.5.1"
+ "@babel/template": "^7.25.0",
+ "@babel/types": "^7.25.0"
},
"engines": {
"node": ">=6.9.0"
}
},
- "node_modules/@babel/helper-compilation-targets": {
- "version": "7.22.15",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz",
- "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==",
- "dev": true,
+ "node_modules/@babel/highlight": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz",
+ "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==",
"dependencies": {
- "@babel/compat-data": "^7.22.9",
- "@babel/helper-validator-option": "^7.22.15",
- "browserslist": "^4.21.9",
- "lru-cache": "^5.1.1",
- "semver": "^6.3.1"
+ "@babel/helper-validator-identifier": "^7.24.7",
+ "chalk": "^2.4.2",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.0.0"
},
"engines": {
"node": ">=6.9.0"
}
},
- "node_modules/@babel/helper-compilation-targets/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,
+ "node_modules/@babel/parser": {
+ "version": "7.26.2",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.2.tgz",
+ "integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==",
"dependencies": {
- "yallist": "^3.0.2"
- }
- },
- "node_modules/@babel/helper-compilation-targets/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
+ "@babel/types": "^7.26.0"
+ },
"bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/@babel/helper-compilation-targets/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/@babel/helper-environment-visitor": {
- "version": "7.22.20",
- "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
- "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
- "dev": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-function-name": {
- "version": "7.23.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
- "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
- "dev": true,
- "dependencies": {
- "@babel/template": "^7.22.15",
- "@babel/types": "^7.23.0"
+ "parser": "bin/babel-parser.js"
},
"engines": {
- "node": ">=6.9.0"
+ "node": ">=6.0.0"
}
},
- "node_modules/@babel/helper-hoist-variables": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
- "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
- "dev": true,
+ "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
+ "version": "7.22.15",
+ "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.22.15.tgz",
+ "integrity": "sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==",
+ "peer": true,
"dependencies": {
- "@babel/types": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
}
},
- "node_modules/@babel/helper-module-imports": {
+ "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
"version": "7.22.15",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz",
- "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==",
- "dev": true,
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz",
+ "integrity": "sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==",
+ "peer": true,
"dependencies": {
- "@babel/types": "^7.22.15"
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
+ "@babel/plugin-transform-optional-chaining": "^7.22.15"
},
"engines": {
"node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.13.0"
}
},
- "node_modules/@babel/helper-module-transforms": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz",
- "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==",
- "dev": true,
+ "node_modules/@babel/plugin-proposal-async-generator-functions": {
+ "version": "7.20.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz",
+ "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==",
+ "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead.",
"dependencies": {
- "@babel/helper-environment-visitor": "^7.22.20",
- "@babel/helper-module-imports": "^7.22.15",
- "@babel/helper-simple-access": "^7.22.5",
- "@babel/helper-split-export-declaration": "^7.22.6",
- "@babel/helper-validator-identifier": "^7.22.20"
+ "@babel/helper-environment-visitor": "^7.18.9",
+ "@babel/helper-plugin-utils": "^7.20.2",
+ "@babel/helper-remap-async-to-generator": "^7.18.9",
+ "@babel/plugin-syntax-async-generators": "^7.8.4"
},
"engines": {
"node": ">=6.9.0"
},
"peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/helper-plugin-utils": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz",
- "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==",
- "dev": true,
- "engines": {
- "node": ">=6.9.0"
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/helper-simple-access": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz",
- "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==",
- "dev": true,
+ "node_modules/@babel/plugin-proposal-class-properties": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz",
+ "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==",
+ "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.",
"dependencies": {
- "@babel/types": "^7.22.5"
+ "@babel/helper-create-class-features-plugin": "^7.18.6",
+ "@babel/helper-plugin-utils": "^7.18.6"
},
"engines": {
"node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/helper-split-export-declaration": {
- "version": "7.22.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
- "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
- "dev": true,
+ "node_modules/@babel/plugin-proposal-decorators": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.24.7.tgz",
+ "integrity": "sha512-RL9GR0pUG5Kc8BUWLNDm2T5OpYwSX15r98I0IkgmRQTXuELq/OynH8xtMTMvTJFjXbMWFVTKtYkTaYQsuAwQlQ==",
"dependencies": {
- "@babel/types": "^7.22.5"
+ "@babel/helper-create-class-features-plugin": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/plugin-syntax-decorators": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/helper-string-parser": {
- "version": "7.23.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz",
- "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==",
- "dev": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-validator-identifier": {
- "version": "7.22.20",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
- "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
- "dev": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-validator-option": {
- "version": "7.23.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz",
- "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==",
- "dev": true,
+ "node_modules/@babel/plugin-proposal-export-default-from": {
+ "version": "7.22.17",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.22.17.tgz",
+ "integrity": "sha512-cop/3quQBVvdz6X5SJC6AhUv3C9DrVTM06LUEXimEdWAhCSyOJIr9NiZDU9leHZ0/aiG0Sh7Zmvaku5TWYNgbA==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-export-default-from": "^7.22.5"
+ },
"engines": {
"node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/helpers": {
- "version": "7.23.5",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.5.tgz",
- "integrity": "sha512-oO7us8FzTEsG3U6ag9MfdF1iA/7Z6dz+MtFhifZk8C8o453rGJFFWUP1t+ULM9TUIAzC9uxXEiXjOiVMyd7QPg==",
- "dev": true,
+ "node_modules/@babel/plugin-proposal-logical-assignment-operators": {
+ "version": "7.20.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz",
+ "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==",
+ "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-logical-assignment-operators instead.",
"dependencies": {
- "@babel/template": "^7.22.15",
- "@babel/traverse": "^7.23.5",
- "@babel/types": "^7.23.5"
+ "@babel/helper-plugin-utils": "^7.20.2",
+ "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
},
"engines": {
"node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/highlight": {
- "version": "7.23.4",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz",
- "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==",
- "dev": true,
+ "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz",
+ "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==",
+ "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead.",
"dependencies": {
- "@babel/helper-validator-identifier": "^7.22.20",
- "chalk": "^2.4.2",
- "js-tokens": "^4.0.0"
+ "@babel/helper-plugin-utils": "^7.18.6",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
},
"engines": {
"node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/highlight/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/@babel/plugin-proposal-numeric-separator": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz",
+ "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==",
+ "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead.",
"dependencies": {
- "color-convert": "^1.9.0"
+ "@babel/helper-plugin-utils": "^7.18.6",
+ "@babel/plugin-syntax-numeric-separator": "^7.10.4"
},
"engines": {
- "node": ">=4"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/highlight/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,
+ "node_modules/@babel/plugin-proposal-object-rest-spread": {
+ "version": "7.20.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz",
+ "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==",
+ "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead.",
"dependencies": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
+ "@babel/compat-data": "^7.20.5",
+ "@babel/helper-compilation-targets": "^7.20.7",
+ "@babel/helper-plugin-utils": "^7.20.2",
+ "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+ "@babel/plugin-transform-parameters": "^7.20.7"
},
"engines": {
- "node": ">=4"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/highlight/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,
+ "node_modules/@babel/plugin-proposal-optional-catch-binding": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz",
+ "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==",
+ "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-catch-binding instead.",
"dependencies": {
- "color-name": "1.1.3"
- }
- },
- "node_modules/@babel/highlight/node_modules/color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
- "dev": true
- },
- "node_modules/@babel/highlight/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": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true,
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/@babel/highlight/node_modules/has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "dev": true,
+ "@babel/helper-plugin-utils": "^7.18.6",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
+ },
"engines": {
- "node": ">=4"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/highlight/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,
+ "node_modules/@babel/plugin-proposal-optional-chaining": {
+ "version": "7.21.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz",
+ "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==",
+ "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead.",
"dependencies": {
- "has-flag": "^3.0.0"
+ "@babel/helper-plugin-utils": "^7.20.2",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0",
+ "@babel/plugin-syntax-optional-chaining": "^7.8.3"
},
"engines": {
- "node": ">=4"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/parser": {
- "version": "7.23.5",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.5.tgz",
- "integrity": "sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ==",
- "dev": true,
- "bin": {
- "parser": "bin/babel-parser.js"
- },
+ "node_modules/@babel/plugin-proposal-private-property-in-object": {
+ "version": "7.21.0-placeholder-for-preset-env.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz",
+ "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==",
+ "peer": true,
"engines": {
- "node": ">=6.0.0"
+ "node": ">=6.9.0"
+ },
+ "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",
"integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
- "dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
},
@@ -879,7 +702,6 @@
"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,
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
},
@@ -891,7 +713,6 @@
"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,
"dependencies": {
"@babel/helper-plugin-utils": "^7.12.13"
},
@@ -899,23 +720,130 @@
"@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",
- "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
- "dev": true,
+ "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==",
+ "peer": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.10.4"
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-syntax-json-strings": {
- "version": "7.8.3",
+ "node_modules/@babel/plugin-syntax-decorators": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.24.7.tgz",
+ "integrity": "sha512-Ui4uLJJrRV1lb38zg1yYTmRKmiZLiftDEvZN2iq3kd9kUFU+PttmzTbAFC2ucRk/XJmtek6G23gPsuZbhrT8fQ==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.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==",
+ "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.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.22.5.tgz",
+ "integrity": "sha512-ODAqWWXB/yReh/jVQDag/3/tl6lgBueQkk/TcfW/59Oykm4c8a55XloX0CTk2k2VJiFWMgHby9xNX29IbCv9dQ==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "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==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-flow": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.22.5.tgz",
+ "integrity": "sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-import-assertions": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz",
+ "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==",
+ "peer": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-import-attributes": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz",
+ "integrity": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==",
+ "peer": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "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",
+ "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@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,
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
},
@@ -924,12 +852,11 @@
}
},
"node_modules/@babel/plugin-syntax-jsx": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz",
- "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==",
- "dev": true,
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz",
+ "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -942,7 +869,6 @@
"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,
"dependencies": {
"@babel/helper-plugin-utils": "^7.10.4"
},
@@ -954,7 +880,6 @@
"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,
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
},
@@ -966,7 +891,6 @@
"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,
"dependencies": {
"@babel/helper-plugin-utils": "^7.10.4"
},
@@ -978,7 +902,6 @@
"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,
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
},
@@ -990,7 +913,6 @@
"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,
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
},
@@ -1002,7 +924,6 @@
"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,
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
},
@@ -1010,11 +931,24 @@
"@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==",
+ "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",
"integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
- "dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.14.5"
},
@@ -1026,10 +960,9 @@
}
},
"node_modules/@babel/plugin-syntax-typescript": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz",
- "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==",
- "dev": true,
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz",
+ "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -1040,3029 +973,2802 @@
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/runtime": {
- "version": "7.23.2",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz",
- "integrity": "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==",
+ "node_modules/@babel/plugin-syntax-unicode-sets-regex": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz",
+ "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==",
+ "peer": true,
"dependencies": {
- "regenerator-runtime": "^0.14.0"
+ "@babel/helper-create-regexp-features-plugin": "^7.18.6",
+ "@babel/helper-plugin-utils": "^7.18.6"
},
"engines": {
"node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
}
},
- "node_modules/@babel/template": {
- "version": "7.22.15",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz",
- "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-arrow-functions": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz",
+ "integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==",
"dependencies": {
- "@babel/code-frame": "^7.22.13",
- "@babel/parser": "^7.22.15",
- "@babel/types": "^7.22.15"
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/traverse": {
- "version": "7.23.5",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.5.tgz",
- "integrity": "sha512-czx7Xy5a6sapWWRx61m1Ke1Ra4vczu1mCTtJam5zRTBOonfdJ+S/B6HYmGYu3fJtr8GGET3si6IhgWVBhJ/m8w==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-async-generator-functions": {
+ "version": "7.23.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.2.tgz",
+ "integrity": "sha512-BBYVGxbDVHfoeXbOwcagAkOQAm9NxoTdMGfTqghu1GrvadSaw6iW3Je6IcL5PNOw8VwjxqBECXy50/iCQSY/lQ==",
+ "peer": true,
"dependencies": {
- "@babel/code-frame": "^7.23.5",
- "@babel/generator": "^7.23.5",
"@babel/helper-environment-visitor": "^7.22.20",
- "@babel/helper-function-name": "^7.23.0",
- "@babel/helper-hoist-variables": "^7.22.5",
- "@babel/helper-split-export-declaration": "^7.22.6",
- "@babel/parser": "^7.23.5",
- "@babel/types": "^7.23.5",
- "debug": "^4.1.0",
- "globals": "^11.1.0"
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-remap-async-to-generator": "^7.22.20",
+ "@babel/plugin-syntax-async-generators": "^7.8.4"
},
"engines": {
"node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "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,
+ "node_modules/@babel/plugin-transform-async-to-generator": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz",
+ "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-remap-async-to-generator": "^7.22.5"
+ },
"engines": {
- "node": ">=4"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/types": {
- "version": "7.23.5",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.5.tgz",
- "integrity": "sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-block-scoped-functions": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz",
+ "integrity": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==",
+ "peer": true,
"dependencies": {
- "@babel/helper-string-parser": "^7.23.4",
- "@babel/helper-validator-identifier": "^7.22.20",
- "to-fast-properties": "^2.0.0"
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"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==",
- "dev": true,
- "optional": true,
+ "node_modules/@babel/plugin-transform-block-scoping": {
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.0.tgz",
+ "integrity": "sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
"engines": {
- "node": ">=0.1.90"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@cspotcode/source-map-support": {
- "version": "0.8.1",
- "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
- "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",
- "dev": true,
- "license": "MIT",
+ "node_modules/@babel/plugin-transform-class-properties": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz",
+ "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==",
+ "peer": true,
"dependencies": {
- "@jridgewell/trace-mapping": "0.3.9"
+ "@babel/helper-create-class-features-plugin": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
- "node": ">=12"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.9",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
- "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
- "dev": true,
- "license": "MIT",
+ "node_modules/@babel/plugin-transform-class-static-block": {
+ "version": "7.22.11",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz",
+ "integrity": "sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==",
+ "peer": true,
"dependencies": {
- "@jridgewell/resolve-uri": "^3.0.3",
- "@jridgewell/sourcemap-codec": "^1.4.10"
+ "@babel/helper-create-class-features-plugin": "^7.22.11",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-class-static-block": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.12.0"
}
},
- "node_modules/@eslint/eslintrc": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz",
- "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-classes": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz",
+ "integrity": "sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==",
"dependencies": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.4.0",
- "globals": "^13.19.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-compilation-targets": "^7.22.15",
+ "@babel/helper-environment-visitor": "^7.22.5",
+ "@babel/helper-function-name": "^7.22.5",
+ "@babel/helper-optimise-call-expression": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-replace-supers": "^7.22.9",
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "globals": "^11.1.0"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": ">=6.9.0"
},
- "funding": {
- "url": "https://opencollective.com/eslint"
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@faker-js/faker": {
- "version": "8.0.2",
- "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-8.0.2.tgz",
- "integrity": "sha512-Uo3pGspElQW91PCvKSIAXoEgAUlRnH29sX2/p89kg7sP1m2PzCufHINd0FhTXQf6DYGiUlVncdSPa2F9wxed2A==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/fakerjs"
- }
- ],
+ "node_modules/@babel/plugin-transform-computed-properties": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz",
+ "integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/template": "^7.22.5"
+ },
"engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0",
- "npm": ">=6.14.13"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@graphql-tools/merge": {
- "version": "8.3.0",
- "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.3.0.tgz",
- "integrity": "sha512-xRa7RAQok/0DD2YnjuqikMrr7dUAxTpdGtZ7BkvUUGhYs3B3p7reCAfvOVr1DJAqVToP7hdlMk+S5+Ylk+AaqA==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-destructuring": {
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.0.tgz",
+ "integrity": "sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg==",
"dependencies": {
- "@graphql-tools/utils": "8.8.0",
- "tslib": "^2.4.0"
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
},
"peerDependencies": {
- "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@graphql-tools/mock": {
- "version": "8.7.20",
- "resolved": "https://registry.npmjs.org/@graphql-tools/mock/-/mock-8.7.20.tgz",
- "integrity": "sha512-ljcHSJWjC/ZyzpXd5cfNhPI7YljRVvabKHPzKjEs5ElxWu2cdlLGvyNYepApXDsM/OJG/2xuhGM+9GWu5gEAPQ==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-dotall-regex": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz",
+ "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==",
+ "peer": true,
"dependencies": {
- "@graphql-tools/schema": "^9.0.18",
- "@graphql-tools/utils": "^9.2.1",
- "fast-json-stable-stringify": "^2.1.0",
- "tslib": "^2.4.0"
+ "@babel/helper-create-regexp-features-plugin": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
},
"peerDependencies": {
- "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@graphql-tools/mock/node_modules/@graphql-tools/merge": {
- "version": "8.4.2",
- "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.4.2.tgz",
- "integrity": "sha512-XbrHAaj8yDuINph+sAfuq3QCZ/tKblrTLOpirK0+CAgNlZUCHs0Fa+xtMUURgwCVThLle1AF7svJCxFizygLsw==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-duplicate-keys": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz",
+ "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==",
+ "peer": true,
"dependencies": {
- "@graphql-tools/utils": "^9.2.1",
- "tslib": "^2.4.0"
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
},
"peerDependencies": {
- "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@graphql-tools/mock/node_modules/@graphql-tools/schema": {
- "version": "9.0.19",
- "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-9.0.19.tgz",
- "integrity": "sha512-oBRPoNBtCkk0zbUsyP4GaIzCt8C0aCI4ycIRUL67KK5pOHljKLBBtGT+Jr6hkzA74C8Gco8bpZPe7aWFjiaK2w==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-dynamic-import": {
+ "version": "7.22.11",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz",
+ "integrity": "sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==",
+ "peer": true,
"dependencies": {
- "@graphql-tools/merge": "^8.4.1",
- "@graphql-tools/utils": "^9.2.1",
- "tslib": "^2.4.0",
- "value-or-promise": "^1.0.12"
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
},
"peerDependencies": {
- "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@graphql-tools/mock/node_modules/@graphql-tools/utils": {
- "version": "9.2.1",
- "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.2.1.tgz",
- "integrity": "sha512-WUw506Ql6xzmOORlriNrD6Ugx+HjVgYxt9KCXD9mHAak+eaXSwuGGPyE60hy9xaDEoXKBsG7SkG69ybitaVl6A==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-exponentiation-operator": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz",
+ "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==",
+ "peer": true,
"dependencies": {
- "@graphql-typed-document-node/core": "^3.1.1",
- "tslib": "^2.4.0"
+ "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
},
"peerDependencies": {
- "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@graphql-tools/mock/node_modules/value-or-promise": {
- "version": "1.0.12",
- "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.12.tgz",
- "integrity": "sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-export-namespace-from": {
+ "version": "7.22.11",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz",
+ "integrity": "sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@graphql-tools/schema": {
- "version": "9.0.2",
- "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-9.0.2.tgz",
- "integrity": "sha512-FnBM1PMKQ6y8KlzeFocnEwcGA/IT++z4v+hvvwwXL+IUYDNqmrp9XYNklpQRb/KKSbTtKnQapCWNiVNex7jl+Q==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-flow-strip-types": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.22.5.tgz",
+ "integrity": "sha512-tujNbZdxdG0/54g/oua8ISToaXTFBf8EnSb5PgQSciIXWOWKX3S4+JR7ZE9ol8FZwf9kxitzkGQ+QWeov/mCiA==",
"dependencies": {
- "@graphql-tools/merge": "8.3.4",
- "@graphql-tools/utils": "8.10.1",
- "tslib": "^2.4.0",
- "value-or-promise": "1.0.11"
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-flow": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
},
"peerDependencies": {
- "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@graphql-tools/schema/node_modules/@graphql-tools/merge": {
- "version": "8.3.4",
- "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.3.4.tgz",
- "integrity": "sha512-2z1UpHvvI52nQZIYArU+rPq1lOENWetsdb+6vu8yLGyCRP4CpKMBvtmiHkbrlPBO8dItpZ08szXEoaStfJHBxQ==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-for-of": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz",
+ "integrity": "sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==",
+ "peer": true,
"dependencies": {
- "@graphql-tools/utils": "8.10.1",
- "tslib": "^2.4.0"
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
},
"peerDependencies": {
- "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@graphql-tools/schema/node_modules/@graphql-tools/utils": {
- "version": "8.10.1",
- "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.10.1.tgz",
- "integrity": "sha512-UYi/afPvxZ8mz0LjplMxOSmGDPenVS/Q0zJ/6LOyF9yZdJYIDe+J+Qr/I9+rCYQmgBW4BJeRUUc7VoUzZPfZDA==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-function-name": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz",
+ "integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==",
"dependencies": {
- "tslib": "^2.4.0"
+ "@babel/helper-compilation-targets": "^7.22.5",
+ "@babel/helper-function-name": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
},
"peerDependencies": {
- "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@graphql-tools/utils": {
- "version": "8.8.0",
- "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.8.0.tgz",
- "integrity": "sha512-KJrtx05uSM/cPYFdTnGAS1doL5bftJLAiFCDMZ8Vkifztz3BFn3gpFiy/o4wDtM8s39G46mxmt2Km/RmeltfGw==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-json-strings": {
+ "version": "7.22.11",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz",
+ "integrity": "sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==",
+ "peer": true,
"dependencies": {
- "tslib": "^2.4.0"
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-json-strings": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
},
"peerDependencies": {
- "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@graphql-typed-document-node/core": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz",
- "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-literals": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz",
+ "integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
"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 || ^17.0.0"
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@grpc/grpc-js": {
- "version": "1.7.3",
- "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.7.3.tgz",
- "integrity": "sha512-H9l79u4kJ2PVSxUNA08HMYAnUBLj9v6KjYQ7SQ71hOZcEXhShE/y5iQCesP8+6/Ik/7i2O0a10bPquIcYfufog==",
+ "node_modules/@babel/plugin-transform-logical-assignment-operators": {
+ "version": "7.22.11",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz",
+ "integrity": "sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==",
+ "peer": true,
"dependencies": {
- "@grpc/proto-loader": "^0.7.0",
- "@types/node": ">=12.12.47"
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
},
"engines": {
- "node": "^8.13.0 || >=10.10.0"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@grpc/proto-loader": {
- "version": "0.7.3",
- "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.3.tgz",
- "integrity": "sha512-5dAvoZwna2Py3Ef96Ux9jIkp3iZ62TUsV00p3wVBPNX5K178UbNi8Q7gQVqwXT1Yq9RejIGG9G2IPEo93T6RcA==",
+ "node_modules/@babel/plugin-transform-member-expression-literals": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz",
+ "integrity": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==",
+ "peer": true,
"dependencies": {
- "@types/long": "^4.0.1",
- "lodash.camelcase": "^4.3.0",
- "long": "^4.0.0",
- "protobufjs": "^7.0.0",
- "yargs": "^16.2.0"
- },
- "bin": {
- "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js"
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
- "node": ">=6"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@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==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-modules-amd": {
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.0.tgz",
+ "integrity": "sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw==",
+ "peer": true,
"dependencies": {
- "@humanwhocodes/object-schema": "^1.2.1",
- "debug": "^4.1.1",
- "minimatch": "^3.0.4"
+ "@babel/helper-module-transforms": "^7.23.0",
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"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==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-modules-commonjs": {
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz",
+ "integrity": "sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ==",
"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-module-transforms": "^7.23.0",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-simple-access": "^7.22.5"
},
"engines": {
- "node": ">=8"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-modules-systemjs": {
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.0.tgz",
+ "integrity": "sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg==",
+ "peer": true,
"dependencies": {
- "sprintf-js": "~1.0.2"
+ "@babel/helper-hoist-variables": "^7.22.5",
+ "@babel/helper-module-transforms": "^7.23.0",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-validator-identifier": "^7.22.20"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": {
- "version": "3.14.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
- "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-modules-umd": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz",
+ "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==",
+ "peer": true,
"dependencies": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
+ "@babel/helper-module-transforms": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5"
},
- "bin": {
- "js-yaml": "bin/js-yaml.js"
- }
- },
- "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
- "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
- "dev": true,
"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==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz",
+ "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
"engines": {
- "node": ">=8"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
}
},
- "node_modules/@jest/console": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz",
- "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-new-target": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz",
+ "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==",
+ "peer": true,
"dependencies": {
- "@jest/types": "^29.6.3",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "jest-message-util": "^29.7.0",
- "jest-util": "^29.7.0",
- "slash": "^3.0.0"
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@jest/console/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,
+ "node_modules/@babel/plugin-transform-nullish-coalescing-operator": {
+ "version": "7.22.11",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz",
+ "integrity": "sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==",
+ "peer": true,
"dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
},
"engines": {
- "node": ">=10"
+ "node": ">=6.9.0"
},
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@jest/core": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz",
- "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-numeric-separator": {
+ "version": "7.22.11",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz",
+ "integrity": "sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==",
+ "peer": true,
"dependencies": {
- "@jest/console": "^29.7.0",
- "@jest/reporters": "^29.7.0",
- "@jest/test-result": "^29.7.0",
- "@jest/transform": "^29.7.0",
- "@jest/types": "^29.6.3",
- "@types/node": "*",
- "ansi-escapes": "^4.2.1",
- "chalk": "^4.0.0",
- "ci-info": "^3.2.0",
- "exit": "^0.1.2",
- "graceful-fs": "^4.2.9",
- "jest-changed-files": "^29.7.0",
- "jest-config": "^29.7.0",
- "jest-haste-map": "^29.7.0",
- "jest-message-util": "^29.7.0",
- "jest-regex-util": "^29.6.3",
- "jest-resolve": "^29.7.0",
- "jest-resolve-dependencies": "^29.7.0",
- "jest-runner": "^29.7.0",
- "jest-runtime": "^29.7.0",
- "jest-snapshot": "^29.7.0",
- "jest-util": "^29.7.0",
- "jest-validate": "^29.7.0",
- "jest-watcher": "^29.7.0",
- "micromatch": "^4.0.4",
- "pretty-format": "^29.7.0",
- "slash": "^3.0.0",
- "strip-ansi": "^6.0.0"
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-numeric-separator": "^7.10.4"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": ">=6.9.0"
},
"peerDependencies": {
- "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
- },
- "peerDependenciesMeta": {
- "node-notifier": {
- "optional": true
- }
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@jest/core/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,
+ "node_modules/@babel/plugin-transform-object-rest-spread": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz",
+ "integrity": "sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==",
"dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
+ "@babel/compat-data": "^7.22.9",
+ "@babel/helper-compilation-targets": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+ "@babel/plugin-transform-parameters": "^7.22.15"
},
"engines": {
- "node": ">=10"
+ "node": ">=6.9.0"
},
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@jest/environment": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz",
- "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-object-super": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz",
+ "integrity": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==",
+ "peer": true,
"dependencies": {
- "@jest/fake-timers": "^29.7.0",
- "@jest/types": "^29.6.3",
- "@types/node": "*",
- "jest-mock": "^29.7.0"
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-replace-supers": "^7.22.5"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@jest/expect": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz",
- "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-optional-catch-binding": {
+ "version": "7.22.11",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz",
+ "integrity": "sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==",
+ "peer": true,
"dependencies": {
- "expect": "^29.7.0",
- "jest-snapshot": "^29.7.0"
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@jest/expect-utils": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz",
- "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-optional-chaining": {
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.0.tgz",
+ "integrity": "sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g==",
+ "peer": true,
"dependencies": {
- "jest-get-type": "^29.6.3"
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
+ "@babel/plugin-syntax-optional-chaining": "^7.8.3"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@jest/fake-timers": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz",
- "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-parameters": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz",
+ "integrity": "sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==",
"dependencies": {
- "@jest/types": "^29.6.3",
- "@sinonjs/fake-timers": "^10.0.2",
- "@types/node": "*",
- "jest-message-util": "^29.7.0",
- "jest-mock": "^29.7.0",
- "jest-util": "^29.7.0"
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@jest/globals": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz",
- "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-private-methods": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz",
+ "integrity": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==",
"dependencies": {
- "@jest/environment": "^29.7.0",
- "@jest/expect": "^29.7.0",
- "@jest/types": "^29.6.3",
- "jest-mock": "^29.7.0"
+ "@babel/helper-create-class-features-plugin": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@jest/reporters": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz",
- "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-private-property-in-object": {
+ "version": "7.22.11",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz",
+ "integrity": "sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==",
"dependencies": {
- "@bcoe/v8-coverage": "^0.2.3",
- "@jest/console": "^29.7.0",
- "@jest/test-result": "^29.7.0",
- "@jest/transform": "^29.7.0",
- "@jest/types": "^29.6.3",
- "@jridgewell/trace-mapping": "^0.3.18",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "collect-v8-coverage": "^1.0.0",
- "exit": "^0.1.2",
- "glob": "^7.1.3",
- "graceful-fs": "^4.2.9",
- "istanbul-lib-coverage": "^3.0.0",
- "istanbul-lib-instrument": "^6.0.0",
- "istanbul-lib-report": "^3.0.0",
- "istanbul-lib-source-maps": "^4.0.0",
- "istanbul-reports": "^3.1.3",
- "jest-message-util": "^29.7.0",
- "jest-util": "^29.7.0",
- "jest-worker": "^29.7.0",
- "slash": "^3.0.0",
- "string-length": "^4.0.1",
- "strip-ansi": "^6.0.0",
- "v8-to-istanbul": "^9.0.1"
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-create-class-features-plugin": "^7.22.11",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-private-property-in-object": "^7.14.5"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": ">=6.9.0"
},
"peerDependencies": {
- "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
- },
- "peerDependenciesMeta": {
- "node-notifier": {
- "optional": true
- }
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@jest/reporters/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,
+ "node_modules/@babel/plugin-transform-property-literals": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz",
+ "integrity": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==",
+ "peer": true,
"dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
- "node": ">=10"
+ "node": ">=6.9.0"
},
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@jest/reporters/node_modules/jest-worker": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz",
- "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-react-display-name": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.25.9.tgz",
+ "integrity": "sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ==",
"dependencies": {
- "@types/node": "*",
- "jest-util": "^29.7.0",
- "merge-stream": "^2.0.0",
- "supports-color": "^8.0.0"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@jest/reporters/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,
+ "node_modules/@babel/plugin-transform-react-jsx": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.9.tgz",
+ "integrity": "sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw==",
"dependencies": {
- "has-flag": "^4.0.0"
+ "@babel/helper-annotate-as-pure": "^7.25.9",
+ "@babel/helper-module-imports": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/plugin-syntax-jsx": "^7.25.9",
+ "@babel/types": "^7.25.9"
},
"engines": {
- "node": ">=10"
+ "node": ">=6.9.0"
},
- "funding": {
- "url": "https://github.com/chalk/supports-color?sponsor=1"
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@jest/schemas": {
- "version": "29.6.3",
- "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz",
- "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-react-jsx-development": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.25.9.tgz",
+ "integrity": "sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw==",
"dependencies": {
- "@sinclair/typebox": "^0.27.8"
+ "@babel/plugin-transform-react-jsx": "^7.25.9"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@jest/source-map": {
- "version": "29.6.3",
- "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz",
- "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-react-jsx-self": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.22.5.tgz",
+ "integrity": "sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==",
"dependencies": {
- "@jridgewell/trace-mapping": "^0.3.18",
- "callsites": "^3.0.0",
- "graceful-fs": "^4.2.9"
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@jest/test-result": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz",
- "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-react-jsx-source": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.22.5.tgz",
+ "integrity": "sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==",
"dependencies": {
- "@jest/console": "^29.7.0",
- "@jest/types": "^29.6.3",
- "@types/istanbul-lib-coverage": "^2.0.0",
- "collect-v8-coverage": "^1.0.0"
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@jest/test-sequencer": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz",
- "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-react-pure-annotations": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.25.9.tgz",
+ "integrity": "sha512-KQ/Takk3T8Qzj5TppkS1be588lkbTp5uj7w6a0LeQaTMSckU/wK0oJ/pih+T690tkgI5jfmg2TqDJvd41Sj1Cg==",
"dependencies": {
- "@jest/test-result": "^29.7.0",
- "graceful-fs": "^4.2.9",
- "jest-haste-map": "^29.7.0",
- "slash": "^3.0.0"
+ "@babel/helper-annotate-as-pure": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@jest/transform": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz",
- "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-regenerator": {
+ "version": "7.22.10",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz",
+ "integrity": "sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==",
+ "peer": true,
"dependencies": {
- "@babel/core": "^7.11.6",
- "@jest/types": "^29.6.3",
- "@jridgewell/trace-mapping": "^0.3.18",
- "babel-plugin-istanbul": "^6.1.1",
- "chalk": "^4.0.0",
- "convert-source-map": "^2.0.0",
- "fast-json-stable-stringify": "^2.1.0",
- "graceful-fs": "^4.2.9",
- "jest-haste-map": "^29.7.0",
- "jest-regex-util": "^29.6.3",
- "jest-util": "^29.7.0",
- "micromatch": "^4.0.4",
- "pirates": "^4.0.4",
- "slash": "^3.0.0",
- "write-file-atomic": "^4.0.2"
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "regenerator-transform": "^0.15.2"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@jest/transform/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,
+ "node_modules/@babel/plugin-transform-reserved-words": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz",
+ "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==",
+ "peer": true,
"dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
- "node": ">=10"
+ "node": ">=6.9.0"
},
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@jest/types": {
- "version": "29.6.3",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz",
- "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-runtime": {
+ "version": "7.23.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.2.tgz",
+ "integrity": "sha512-XOntj6icgzMS58jPVtQpiuF6ZFWxQiJavISGx5KGjRj+3gqZr8+N6Kx+N9BApWzgS+DOjIZfXXj0ZesenOWDyA==",
"dependencies": {
- "@jest/schemas": "^29.6.3",
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^3.0.0",
- "@types/node": "*",
- "@types/yargs": "^17.0.8",
- "chalk": "^4.0.0"
+ "@babel/helper-module-imports": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "babel-plugin-polyfill-corejs2": "^0.4.6",
+ "babel-plugin-polyfill-corejs3": "^0.8.5",
+ "babel-plugin-polyfill-regenerator": "^0.5.3",
+ "semver": "^6.3.1"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@jest/types/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,
+ "node_modules/@babel/plugin-transform-shorthand-properties": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz",
+ "integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==",
"dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
- "node": ">=10"
+ "node": ">=6.9.0"
},
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@josephg/resolvable": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@josephg/resolvable/-/resolvable-1.0.1.tgz",
- "integrity": "sha512-CtzORUwWTTOTqfVtHaKRJ0I1kNQd1bpn3sUh8I3nJDVY+5/M/Oe1DnEWzPQvqq/xPIIkzzzIP7mfCoAjFRvDhg==",
- "dev": true
- },
- "node_modules/@jridgewell/gen-mapping": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
- "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-spread": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz",
+ "integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==",
"dependencies": {
- "@jridgewell/set-array": "^1.0.1",
- "@jridgewell/sourcemap-codec": "^1.4.10",
- "@jridgewell/trace-mapping": "^0.3.9"
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5"
},
"engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/resolve-uri": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz",
- "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==",
- "dev": true,
- "engines": {
- "node": ">=6.0.0"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@jridgewell/set-array": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
- "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-sticky-regex": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz",
+ "integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
"engines": {
- "node": ">=6.0.0"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@jridgewell/source-map": {
- "version": "0.3.5",
- "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz",
- "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-template-literals": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz",
+ "integrity": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==",
+ "peer": true,
"dependencies": {
- "@jridgewell/gen-mapping": "^0.3.0",
- "@jridgewell/trace-mapping": "^0.3.9"
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@jridgewell/sourcemap-codec": {
- "version": "1.4.15",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
- "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
- "dev": true
- },
- "node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.20",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz",
- "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-typeof-symbol": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz",
+ "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==",
+ "peer": true,
"dependencies": {
- "@jridgewell/resolve-uri": "^3.1.0",
- "@jridgewell/sourcemap-codec": "^1.4.14"
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@mapbox/node-pre-gyp": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz",
- "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==",
+ "node_modules/@babel/plugin-transform-typescript": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.15.tgz",
+ "integrity": "sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA==",
"dependencies": {
- "detect-libc": "^2.0.0",
- "https-proxy-agent": "^5.0.0",
- "make-dir": "^3.1.0",
- "node-fetch": "^2.6.7",
- "nopt": "^5.0.0",
- "npmlog": "^5.0.1",
- "rimraf": "^3.0.2",
- "semver": "^7.3.5",
- "tar": "^6.1.11"
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-create-class-features-plugin": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-typescript": "^7.22.5"
},
- "bin": {
- "node-pre-gyp": "bin/node-pre-gyp"
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@nestjs/apollo": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/@nestjs/apollo/-/apollo-10.1.0.tgz",
- "integrity": "sha512-yfnh049lHBaF8647JQQwL5zJnpl/vhjlnoaCUWRpZK4Tw+s9pzzKScKHmPTRBvTCFANbNTl2t/NzQM32jfqpIw==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-unicode-escapes": {
+ "version": "7.22.10",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz",
+ "integrity": "sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==",
+ "peer": true,
"dependencies": {
- "iterall": "1.3.0",
- "lodash.omit": "4.5.0",
- "tslib": "2.4.0"
+ "@babel/helper-plugin-utils": "^7.22.5"
},
- "peerDependencies": {
- "@apollo/gateway": "^0.44.1 || ^0.46.0 || ^0.48.0 || ^0.49.0 || ^0.50.0 || ^2.0.0",
- "@nestjs/common": "^8.2.3 || ^9.0.0",
- "@nestjs/core": "^8.2.3 || ^9.0.0",
- "@nestjs/graphql": "^10.0.0",
- "apollo-server-core": "^3.5.0",
- "apollo-server-express": "^3.5.0",
- "apollo-server-fastify": "^3.5.0",
- "graphql": "^15.8.0 || ^16.0.0"
+ "engines": {
+ "node": ">=6.9.0"
},
- "peerDependenciesMeta": {
- "@apollo/gateway": {
- "optional": true
- },
- "apollo-server-core": {
- "optional": true
- },
- "apollo-server-express": {
- "optional": true
- },
- "apollo-server-fastify": {
- "optional": true
- }
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@nestjs/axios": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/@nestjs/axios/-/axios-0.1.0.tgz",
- "integrity": "sha512-b2TT2X6BFbnNoeteiaxCIiHaFcSbVW+S5yygYqiIq5i6H77yIU3IVuLdpQkHq8/EqOWFwMopLN8jdkUT71Am9w==",
- "dependencies": {
- "axios": "0.27.2"
- },
- "peerDependencies": {
- "@nestjs/common": "^7.0.0 || ^8.0.0 || ^9.0.0",
- "reflect-metadata": "^0.1.12",
- "rxjs": "^6.0.0 || ^7.0.0"
- }
- },
- "node_modules/@nestjs/cli": {
- "version": "9.1.2",
- "resolved": "https://registry.npmjs.org/@nestjs/cli/-/cli-9.1.2.tgz",
- "integrity": "sha512-J/mFYM/L03//MiKcYX113MkTbA88cjb+4pNdLjeOpVRCbfbQh1zArehGAOvas9+SNRUzUYj31vI1snYKXc0j1g==",
- "dev": true,
- "dependencies": {
- "@angular-devkit/core": "14.2.1",
- "@angular-devkit/schematics": "14.2.1",
- "@angular-devkit/schematics-cli": "14.2.1",
- "@nestjs/schematics": "^9.0.0",
- "chalk": "3.0.0",
- "chokidar": "3.5.3",
- "cli-table3": "0.6.2",
- "commander": "4.1.1",
- "fork-ts-checker-webpack-plugin": "7.2.13",
- "inquirer": "7.3.3",
- "node-emoji": "1.11.0",
- "ora": "5.4.1",
- "os-name": "4.0.1",
- "rimraf": "3.0.2",
- "shelljs": "0.8.5",
- "source-map-support": "0.5.21",
- "tree-kill": "1.2.2",
- "tsconfig-paths": "4.1.0",
- "tsconfig-paths-webpack-plugin": "4.0.0",
- "typescript": "4.7.4",
- "webpack": "5.74.0",
- "webpack-node-externals": "3.0.0"
- },
- "bin": {
- "nest": "bin/nest.js"
+ "node_modules/@babel/plugin-transform-unicode-property-regex": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz",
+ "integrity": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==",
+ "peer": true,
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
- "node": ">= 12.9.0"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@nestjs/cli/node_modules/strip-bom": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
- "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-unicode-regex": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz",
+ "integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
"engines": {
- "node": ">=4"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@nestjs/cli/node_modules/tsconfig-paths": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.1.0.tgz",
- "integrity": "sha512-AHx4Euop/dXFC+Vx589alFba8QItjF+8hf8LtmuiCwHyI4rHXQtOOENaM8kvYf5fR0dRChy3wzWIZ9WbB7FWow==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-unicode-sets-regex": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz",
+ "integrity": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==",
+ "peer": true,
"dependencies": {
- "json5": "^2.2.1",
- "minimist": "^1.2.6",
- "strip-bom": "^3.0.0"
+ "@babel/helper-create-regexp-features-plugin": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
- "node": ">=6"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
}
},
- "node_modules/@nestjs/cli/node_modules/typescript": {
- "version": "4.7.4",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz",
- "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==",
- "dev": true,
- "bin": {
- "tsc": "bin/tsc",
- "tsserver": "bin/tsserver"
+ "node_modules/@babel/preset-env": {
+ "version": "7.23.2",
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.2.tgz",
+ "integrity": "sha512-BW3gsuDD+rvHL2VO2SjAUNTBe5YrjsTiDyqamPDWY723na3/yPQ65X5oQkFVJZ0o50/2d+svm1rkPoJeR1KxVQ==",
+ "peer": true,
+ "dependencies": {
+ "@babel/compat-data": "^7.23.2",
+ "@babel/helper-compilation-targets": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-validator-option": "^7.22.15",
+ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.15",
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.15",
+ "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2",
+ "@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-import-assertions": "^7.22.5",
+ "@babel/plugin-syntax-import-attributes": "^7.22.5",
+ "@babel/plugin-syntax-import-meta": "^7.10.4",
+ "@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-syntax-unicode-sets-regex": "^7.18.6",
+ "@babel/plugin-transform-arrow-functions": "^7.22.5",
+ "@babel/plugin-transform-async-generator-functions": "^7.23.2",
+ "@babel/plugin-transform-async-to-generator": "^7.22.5",
+ "@babel/plugin-transform-block-scoped-functions": "^7.22.5",
+ "@babel/plugin-transform-block-scoping": "^7.23.0",
+ "@babel/plugin-transform-class-properties": "^7.22.5",
+ "@babel/plugin-transform-class-static-block": "^7.22.11",
+ "@babel/plugin-transform-classes": "^7.22.15",
+ "@babel/plugin-transform-computed-properties": "^7.22.5",
+ "@babel/plugin-transform-destructuring": "^7.23.0",
+ "@babel/plugin-transform-dotall-regex": "^7.22.5",
+ "@babel/plugin-transform-duplicate-keys": "^7.22.5",
+ "@babel/plugin-transform-dynamic-import": "^7.22.11",
+ "@babel/plugin-transform-exponentiation-operator": "^7.22.5",
+ "@babel/plugin-transform-export-namespace-from": "^7.22.11",
+ "@babel/plugin-transform-for-of": "^7.22.15",
+ "@babel/plugin-transform-function-name": "^7.22.5",
+ "@babel/plugin-transform-json-strings": "^7.22.11",
+ "@babel/plugin-transform-literals": "^7.22.5",
+ "@babel/plugin-transform-logical-assignment-operators": "^7.22.11",
+ "@babel/plugin-transform-member-expression-literals": "^7.22.5",
+ "@babel/plugin-transform-modules-amd": "^7.23.0",
+ "@babel/plugin-transform-modules-commonjs": "^7.23.0",
+ "@babel/plugin-transform-modules-systemjs": "^7.23.0",
+ "@babel/plugin-transform-modules-umd": "^7.22.5",
+ "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5",
+ "@babel/plugin-transform-new-target": "^7.22.5",
+ "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11",
+ "@babel/plugin-transform-numeric-separator": "^7.22.11",
+ "@babel/plugin-transform-object-rest-spread": "^7.22.15",
+ "@babel/plugin-transform-object-super": "^7.22.5",
+ "@babel/plugin-transform-optional-catch-binding": "^7.22.11",
+ "@babel/plugin-transform-optional-chaining": "^7.23.0",
+ "@babel/plugin-transform-parameters": "^7.22.15",
+ "@babel/plugin-transform-private-methods": "^7.22.5",
+ "@babel/plugin-transform-private-property-in-object": "^7.22.11",
+ "@babel/plugin-transform-property-literals": "^7.22.5",
+ "@babel/plugin-transform-regenerator": "^7.22.10",
+ "@babel/plugin-transform-reserved-words": "^7.22.5",
+ "@babel/plugin-transform-shorthand-properties": "^7.22.5",
+ "@babel/plugin-transform-spread": "^7.22.5",
+ "@babel/plugin-transform-sticky-regex": "^7.22.5",
+ "@babel/plugin-transform-template-literals": "^7.22.5",
+ "@babel/plugin-transform-typeof-symbol": "^7.22.5",
+ "@babel/plugin-transform-unicode-escapes": "^7.22.10",
+ "@babel/plugin-transform-unicode-property-regex": "^7.22.5",
+ "@babel/plugin-transform-unicode-regex": "^7.22.5",
+ "@babel/plugin-transform-unicode-sets-regex": "^7.22.5",
+ "@babel/preset-modules": "0.1.6-no-external-plugins",
+ "@babel/types": "^7.23.0",
+ "babel-plugin-polyfill-corejs2": "^0.4.6",
+ "babel-plugin-polyfill-corejs3": "^0.8.5",
+ "babel-plugin-polyfill-regenerator": "^0.5.3",
+ "core-js-compat": "^3.31.0",
+ "semver": "^6.3.1"
},
"engines": {
- "node": ">=4.2.0"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@nestjs/common": {
- "version": "9.1.2",
- "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-9.1.2.tgz",
- "integrity": "sha512-zpF4DaLvvsCVqfrf9LJfSeYP+SBCWCFbOCTOmEZ5Gs6Hralia6s2kS+CSicJKx8IpnyC6ZReuqdTbjcPl4yunA==",
+ "node_modules/@babel/preset-flow": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.22.15.tgz",
+ "integrity": "sha512-dB5aIMqpkgbTfN5vDdTRPzjqtWiZcRESNR88QYnoPR+bmdYoluOzMX9tQerTv0XzSgZYctPfO1oc0N5zdog1ew==",
"dependencies": {
- "iterare": "1.2.1",
- "tslib": "2.4.0",
- "uuid": "9.0.0"
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-validator-option": "^7.22.15",
+ "@babel/plugin-transform-flow-strip-types": "^7.22.5"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/nest"
+ "engines": {
+ "node": ">=6.9.0"
},
"peerDependencies": {
- "cache-manager": "*",
- "class-transformer": "*",
- "class-validator": "*",
- "reflect-metadata": "^0.1.12",
- "rxjs": "^7.1.0"
- },
- "peerDependenciesMeta": {
- "cache-manager": {
- "optional": true
- },
- "class-transformer": {
- "optional": true
- },
- "class-validator": {
- "optional": true
- }
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@nestjs/config": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@nestjs/config/-/config-2.2.0.tgz",
- "integrity": "sha512-78Eg6oMbCy3D/YvqeiGBTOWei1Jwi3f2pSIZcZ1QxY67kYsJzTRTkwRT8Iv30DbK0sGKc1mcloDLD5UXgZAZtg==",
+ "node_modules/@babel/preset-modules": {
+ "version": "0.1.6-no-external-plugins",
+ "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz",
+ "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==",
+ "peer": true,
"dependencies": {
- "dotenv": "16.0.1",
- "dotenv-expand": "8.0.3",
- "lodash": "4.17.21",
- "uuid": "8.3.2"
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/types": "^7.4.4",
+ "esutils": "^2.0.2"
},
"peerDependencies": {
- "@nestjs/common": "^7.0.0 || ^8.0.0 || ^9.0.0",
- "reflect-metadata": "^0.1.13",
- "rxjs": "^6.0.0 || ^7.2.0"
+ "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0"
}
},
- "node_modules/@nestjs/config/node_modules/dotenv": {
- "version": "16.0.1",
- "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.1.tgz",
- "integrity": "sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ==",
+ "node_modules/@babel/preset-react": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.25.9.tgz",
+ "integrity": "sha512-D3to0uSPiWE7rBrdIICCd0tJSIGpLaaGptna2+w7Pft5xMqLpA1sz99DK5TZ1TjGbdQ/VI1eCSZ06dv3lT4JOw==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-validator-option": "^7.25.9",
+ "@babel/plugin-transform-react-display-name": "^7.25.9",
+ "@babel/plugin-transform-react-jsx": "^7.25.9",
+ "@babel/plugin-transform-react-jsx-development": "^7.25.9",
+ "@babel/plugin-transform-react-pure-annotations": "^7.25.9"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@nestjs/config/node_modules/uuid": {
- "version": "8.3.2",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
- "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
- "bin": {
- "uuid": "dist/bin/uuid"
+ "node_modules/@babel/preset-typescript": {
+ "version": "7.23.2",
+ "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.23.2.tgz",
+ "integrity": "sha512-u4UJc1XsS1GhIGteM8rnGiIvf9rJpiVgMEeCnwlLA7WJPC+jcXWJAGxYmeqs5hOZD8BbAfnV5ezBOxQbb4OUxA==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-validator-option": "^7.22.15",
+ "@babel/plugin-syntax-jsx": "^7.22.5",
+ "@babel/plugin-transform-modules-commonjs": "^7.23.0",
+ "@babel/plugin-transform-typescript": "^7.22.15"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@nestjs/core": {
- "version": "9.1.2",
- "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-9.1.2.tgz",
- "integrity": "sha512-wrb/U8PN50K9wEHOLifR9bFKDH8+Dr37rXBB5J+9v3tSWEHkT4o2OiJ8qFmfX5B9GwGE/YRKaJqxw/ScvYvPFw==",
- "hasInstallScript": true,
+ "node_modules/@babel/register": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.22.15.tgz",
+ "integrity": "sha512-V3Q3EqoQdn65RCgTLwauZaTfd1ShhwPmbBv+1dkZV/HpCGMKVyn6oFcRlI7RaKqiDQjX2Qd3AuoEguBgdjIKlg==",
"dependencies": {
- "@nuxtjs/opencollective": "0.3.2",
- "fast-safe-stringify": "2.1.1",
- "iterare": "1.2.1",
- "object-hash": "3.0.0",
- "path-to-regexp": "3.2.0",
- "tslib": "2.4.0",
- "uuid": "9.0.0"
+ "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"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/nest"
+ "engines": {
+ "node": ">=6.9.0"
},
"peerDependencies": {
- "@nestjs/common": "^9.0.0",
- "@nestjs/microservices": "^9.0.0",
- "@nestjs/platform-express": "^9.0.0",
- "@nestjs/websockets": "^9.0.0",
- "reflect-metadata": "^0.1.12",
- "rxjs": "^7.1.0"
- },
- "peerDependenciesMeta": {
- "@nestjs/microservices": {
- "optional": true
- },
- "@nestjs/platform-express": {
- "optional": true
- },
- "@nestjs/websockets": {
- "optional": true
- }
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@nestjs/graphql": {
- "version": "10.1.1",
- "resolved": "https://registry.npmjs.org/@nestjs/graphql/-/graphql-10.1.1.tgz",
- "integrity": "sha512-j7f3TSH8whFbUeO0xLZ7iw40N7gVrsyB+qnTjInNoJ3A+gs7SiYobszxia9LaeBLs0X/We+uCA9kofeXYI+jnw==",
- "dev": true,
- "dependencies": {
- "@graphql-tools/merge": "8.3.0",
- "@graphql-tools/schema": "9.0.2",
- "@graphql-tools/utils": "8.8.0",
- "@nestjs/mapped-types": "1.1.0",
- "chokidar": "3.5.3",
- "fast-glob": "3.2.11",
- "graphql-tag": "2.12.6",
- "graphql-ws": "5.5.5",
- "lodash": "4.17.21",
- "normalize-path": "3.0.0",
- "subscriptions-transport-ws": "0.11.0",
- "tslib": "2.4.0",
- "uuid": "8.3.2",
- "ws": "8.8.1"
- },
- "peerDependencies": {
- "@apollo/subgraph": "^0.1.5 || ^0.3.0 || ^0.4.0 || ^2.0.0",
- "@nestjs/common": "^8.2.3 || ^9.0.0",
- "@nestjs/core": "^8.2.3 || ^9.0.0",
- "graphql": "^15.8.0 || ^16.0.0",
- "reflect-metadata": "^0.1.13",
- "ts-morph": "^13.0.2 || ^14.0.0 || ^15.0.0"
+ "node_modules/@babel/register/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==",
+ "dependencies": {
+ "commondir": "^1.0.1",
+ "make-dir": "^2.0.0",
+ "pkg-dir": "^3.0.0"
},
- "peerDependenciesMeta": {
- "@apollo/subgraph": {
- "optional": true
- },
- "ts-morph": {
- "optional": true
- }
+ "engines": {
+ "node": ">=6"
}
},
- "node_modules/@nestjs/graphql/node_modules/uuid": {
- "version": "8.3.2",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
- "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
- "dev": true,
- "bin": {
- "uuid": "dist/bin/uuid"
+ "node_modules/@babel/register/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==",
+ "dependencies": {
+ "locate-path": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
}
},
- "node_modules/@nestjs/jwt": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/@nestjs/jwt/-/jwt-9.0.0.tgz",
- "integrity": "sha512-ZsXGY/wMYKzEhymw2+dxiwrHTRKIKrGszx6r2EjQqNLypdXMQu0QrujwZJ8k3+XQV4snmuJwwNakQoA2ILfq8w==",
+ "node_modules/@babel/register/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==",
"dependencies": {
- "@types/jsonwebtoken": "8.5.8",
- "jsonwebtoken": "8.5.1"
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
},
- "peerDependencies": {
- "@nestjs/common": "^8.0.0 || ^9.0.0"
+ "engines": {
+ "node": ">=6"
}
},
- "node_modules/@nestjs/mapped-types": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@nestjs/mapped-types/-/mapped-types-1.1.0.tgz",
- "integrity": "sha512-+2kSly4P1QI+9eGt+/uGyPdEG1hVz7nbpqPHWZVYgoqz8eOHljpXPag+UCVRw9zo2XCu4sgNUIGe8Uk0+OvUQg==",
- "peerDependencies": {
- "@nestjs/common": "^7.0.8 || ^8.0.0 || ^9.0.0",
- "class-transformer": "^0.2.0 || ^0.3.0 || ^0.4.0 || ^0.5.0",
- "class-validator": "^0.11.1 || ^0.12.0 || ^0.13.0",
- "reflect-metadata": "^0.1.12"
+ "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==",
+ "dependencies": {
+ "pify": "^4.0.1",
+ "semver": "^5.6.0"
},
- "peerDependenciesMeta": {
- "class-transformer": {
- "optional": true
- },
- "class-validator": {
- "optional": true
- }
+ "engines": {
+ "node": ">=6"
}
},
- "node_modules/@nestjs/microservices": {
- "version": "9.1.2",
- "resolved": "https://registry.npmjs.org/@nestjs/microservices/-/microservices-9.1.2.tgz",
- "integrity": "sha512-i/Vgw7CXHFBe1qNZdhJ2smf0MmluFK1P8TGV4HdT8yMdwqT6hc8Elm7Fb1ZIdm0R3Sn30CnsCpvFNm7cXTQ07A==",
+ "node_modules/@babel/register/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==",
"dependencies": {
- "iterare": "1.2.1",
- "tslib": "2.4.0"
+ "p-try": "^2.0.0"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/nest"
- },
- "peerDependencies": {
- "@grpc/grpc-js": "*",
- "@nestjs/common": "^9.0.0",
- "@nestjs/core": "^9.0.0",
- "@nestjs/websockets": "^9.0.0",
- "amqp-connection-manager": "*",
- "amqplib": "*",
- "cache-manager": "*",
- "ioredis": "*",
- "kafkajs": "*",
- "mqtt": "*",
- "nats": "*",
- "reflect-metadata": "^0.1.12",
- "rxjs": "^7.1.0"
+ "engines": {
+ "node": ">=6"
},
- "peerDependenciesMeta": {
- "@grpc/grpc-js": {
- "optional": true
- },
- "@nestjs/websockets": {
- "optional": true
- },
- "amqp-connection-manager": {
- "optional": true
- },
- "amqplib": {
- "optional": true
- },
- "cache-manager": {
- "optional": true
- },
- "ioredis": {
- "optional": true
- },
- "kafkajs": {
- "optional": true
- },
- "mqtt": {
- "optional": true
- },
- "nats": {
- "optional": true
- }
- }
- },
- "node_modules/@nestjs/passport": {
- "version": "9.0.3",
- "resolved": "https://registry.npmjs.org/@nestjs/passport/-/passport-9.0.3.tgz",
- "integrity": "sha512-HplSJaimEAz1IOZEu+pdJHHJhQyBOPAYWXYHfAPQvRqWtw4FJF1VXl1Qtk9dcXQX1eKytDtH+qBzNQc19GWNEg==",
- "peerDependencies": {
- "@nestjs/common": "^8.0.0 || ^9.0.0",
- "passport": "^0.4.0 || ^0.5.0 || ^0.6.0"
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@nestjs/platform-express": {
- "version": "9.1.2",
- "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-9.1.2.tgz",
- "integrity": "sha512-SlAG6nfEVSk+lQL1Z4kjLip2jJ+w4mc8cG5ccM3mN06gREYfJVayNuydPUYtoxP/QmzugQfO5+cNEdqdhCmSQw==",
+ "node_modules/@babel/register/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==",
"dependencies": {
- "body-parser": "1.20.0",
- "cors": "2.8.5",
- "express": "4.18.1",
- "multer": "1.4.4-lts.1",
- "tslib": "2.4.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/nest"
+ "p-limit": "^2.0.0"
},
- "peerDependencies": {
- "@nestjs/common": "^9.0.0",
- "@nestjs/core": "^9.0.0"
+ "engines": {
+ "node": ">=6"
}
},
- "node_modules/@nestjs/platform-express/node_modules/cookie": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
- "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
+ "node_modules/@babel/register/node_modules/path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
"engines": {
- "node": ">= 0.6"
+ "node": ">=4"
}
},
- "node_modules/@nestjs/platform-express/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/@babel/register/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==",
"dependencies": {
- "ms": "2.0.0"
+ "find-up": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
}
},
- "node_modules/@nestjs/platform-express/node_modules/encodeurl": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
- "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
- "engines": {
- "node": ">= 0.8"
+ "node_modules/@babel/register/node_modules/semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "bin": {
+ "semver": "bin/semver"
}
},
- "node_modules/@nestjs/platform-express/node_modules/express": {
- "version": "4.18.1",
- "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz",
- "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==",
+ "node_modules/@babel/register/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==",
"dependencies": {
- "accepts": "~1.3.8",
- "array-flatten": "1.1.1",
- "body-parser": "1.20.0",
- "content-disposition": "0.5.4",
- "content-type": "~1.0.4",
- "cookie": "0.5.0",
- "cookie-signature": "1.0.6",
- "debug": "2.6.9",
- "depd": "2.0.0",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "finalhandler": "1.2.0",
- "fresh": "0.5.2",
- "http-errors": "2.0.0",
- "merge-descriptors": "1.0.1",
- "methods": "~1.1.2",
- "on-finished": "2.4.1",
- "parseurl": "~1.3.3",
- "path-to-regexp": "0.1.7",
- "proxy-addr": "~2.0.7",
- "qs": "6.10.3",
- "range-parser": "~1.2.1",
- "safe-buffer": "5.2.1",
- "send": "0.18.0",
- "serve-static": "1.15.0",
- "setprototypeof": "1.2.0",
- "statuses": "2.0.1",
- "type-is": "~1.6.18",
- "utils-merge": "1.0.1",
- "vary": "~1.1.2"
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
+ "node_modules/@babel/regjsgen": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz",
+ "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA=="
+ },
+ "node_modules/@babel/runtime": {
+ "version": "7.23.2",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz",
+ "integrity": "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==",
+ "dependencies": {
+ "regenerator-runtime": "^0.14.0"
},
"engines": {
- "node": ">= 0.10.0"
+ "node": ">=6.9.0"
}
},
- "node_modules/@nestjs/platform-express/node_modules/finalhandler": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
- "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
+ "node_modules/@babel/template": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz",
+ "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==",
"dependencies": {
- "debug": "2.6.9",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "on-finished": "2.4.1",
- "parseurl": "~1.3.3",
- "statuses": "2.0.1",
- "unpipe": "~1.0.0"
+ "@babel/code-frame": "^7.25.9",
+ "@babel/parser": "^7.25.9",
+ "@babel/types": "^7.25.9"
},
"engines": {
- "node": ">= 0.8"
+ "node": ">=6.9.0"
}
},
- "node_modules/@nestjs/platform-express/node_modules/merge-descriptors": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
- "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
- },
- "node_modules/@nestjs/platform-express/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
- },
- "node_modules/@nestjs/platform-express/node_modules/path-to-regexp": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
- "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
- },
- "node_modules/@nestjs/platform-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/@nestjs/platform-express/node_modules/send": {
- "version": "0.18.0",
- "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
- "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
+ "node_modules/@babel/template/node_modules/@babel/code-frame": {
+ "version": "7.26.2",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz",
+ "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==",
"dependencies": {
- "debug": "2.6.9",
- "depd": "2.0.0",
- "destroy": "1.2.0",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "fresh": "0.5.2",
- "http-errors": "2.0.0",
- "mime": "1.6.0",
- "ms": "2.1.3",
- "on-finished": "2.4.1",
- "range-parser": "~1.2.1",
- "statuses": "2.0.1"
+ "@babel/helper-validator-identifier": "^7.25.9",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.0.0"
},
"engines": {
- "node": ">= 0.8.0"
+ "node": ">=6.9.0"
}
},
- "node_modules/@nestjs/platform-express/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/@babel/traverse": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.9.tgz",
+ "integrity": "sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==",
+ "dependencies": {
+ "@babel/code-frame": "^7.25.9",
+ "@babel/generator": "^7.25.9",
+ "@babel/parser": "^7.25.9",
+ "@babel/template": "^7.25.9",
+ "@babel/types": "^7.25.9",
+ "debug": "^4.3.1",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
},
- "node_modules/@nestjs/platform-express/node_modules/serve-static": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
- "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
+ "node_modules/@babel/traverse/node_modules/@babel/code-frame": {
+ "version": "7.26.2",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz",
+ "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==",
"dependencies": {
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "parseurl": "~1.3.3",
- "send": "0.18.0"
+ "@babel/helper-validator-identifier": "^7.25.9",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.0.0"
},
"engines": {
- "node": ">= 0.8.0"
+ "node": ">=6.9.0"
}
},
- "node_modules/@nestjs/schematics": {
- "version": "9.0.3",
- "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-9.0.3.tgz",
- "integrity": "sha512-kZrU/lrpVd2cnK8I3ibDb3Wi1ppl3wX3U3lVWoL+DzRRoezWKkh8upEL4q0koKmuXnsmLiu3UPxFeMOrJV7TSA==",
- "dev": true,
+ "node_modules/@babel/traverse/node_modules/@babel/generator": {
+ "version": "7.26.2",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.2.tgz",
+ "integrity": "sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==",
"dependencies": {
- "@angular-devkit/core": "14.2.1",
- "@angular-devkit/schematics": "14.2.1",
- "fs-extra": "10.1.0",
- "jsonc-parser": "3.2.0",
- "pluralize": "8.0.0"
+ "@babel/parser": "^7.26.2",
+ "@babel/types": "^7.26.0",
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25",
+ "jsesc": "^3.0.2"
},
- "peerDependencies": {
- "typescript": "^4.3.5"
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "node_modules/@nestjs/schematics/node_modules/jsonc-parser": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz",
- "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==",
- "dev": true
+ "node_modules/@babel/traverse/node_modules/jsesc": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz",
+ "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==",
+ "bin": {
+ "jsesc": "bin/jsesc"
+ },
+ "engines": {
+ "node": ">=6"
+ }
},
- "node_modules/@nestjs/testing": {
- "version": "9.1.2",
- "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-9.1.2.tgz",
- "integrity": "sha512-BfwERdTppE4oz6qxCNJVo0kaRH2FO7mipooedT2nDtYW3krGZ8978odmGdpVgNz1xwqKDH3Y/68frs5oW2CTZw==",
- "dev": true,
+ "node_modules/@babel/types": {
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz",
+ "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==",
"dependencies": {
- "tslib": "2.4.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/nest"
+ "@babel/helper-string-parser": "^7.25.9",
+ "@babel/helper-validator-identifier": "^7.25.9"
},
- "peerDependencies": {
- "@nestjs/common": "^9.0.0",
- "@nestjs/core": "^9.0.0",
- "@nestjs/microservices": "^9.0.0",
- "@nestjs/platform-express": "^9.0.0"
- },
- "peerDependenciesMeta": {
- "@nestjs/microservices": {
- "optional": true
- },
- "@nestjs/platform-express": {
- "optional": true
- }
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "node_modules/@nestjs/typeorm": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/@nestjs/typeorm/-/typeorm-9.0.1.tgz",
- "integrity": "sha512-A2BgLIPsMtmMI0bPKEf4bmzgFPsnvHqNBx3KkvaJ7hJrBQy0OqYOb+Rr06ifblKWDWS2tUPNrAFQbZjtk3PI+g==",
+ "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=="
+ },
+ "node_modules/@callstack/react-theme-provider": {
+ "version": "3.0.9",
+ "resolved": "https://registry.npmjs.org/@callstack/react-theme-provider/-/react-theme-provider-3.0.9.tgz",
+ "integrity": "sha512-tTQ0uDSCL0ypeMa8T/E9wAZRGKWj8kXP7+6RYgPTfOPs9N07C9xM8P02GJ3feETap4Ux5S69D9nteq9mEj86NA==",
"dependencies": {
- "uuid": "8.3.2"
+ "deepmerge": "^3.2.0",
+ "hoist-non-react-statics": "^3.3.0"
},
"peerDependencies": {
- "@nestjs/common": "^8.0.0 || ^9.0.0",
- "@nestjs/core": "^8.0.0 || ^9.0.0",
- "reflect-metadata": "^0.1.13",
- "rxjs": "^7.2.0",
- "typeorm": "^0.3.0"
+ "react": ">=16.3.0"
}
},
- "node_modules/@nestjs/typeorm/node_modules/uuid": {
- "version": "8.3.2",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
- "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
- "bin": {
- "uuid": "dist/bin/uuid"
+ "node_modules/@callstack/react-theme-provider/node_modules/deepmerge": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.3.0.tgz",
+ "integrity": "sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA==",
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "node_modules/@nodelib/fs.scandir": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
- "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
- "dev": true,
+ "node_modules/@egjs/hammerjs": {
+ "version": "2.0.17",
+ "resolved": "https://registry.npmjs.org/@egjs/hammerjs/-/hammerjs-2.0.17.tgz",
+ "integrity": "sha512-XQsZgjm2EcVUiZQf11UBJQfmZeEmOW8DpI1gsFeln6w0ae0ii4dMQEQ0kjl6DspdWX1aGY1/loyXnP0JS06e/A==",
"dependencies": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
+ "@types/hammerjs": "^2.0.36"
},
"engines": {
- "node": ">= 8"
+ "node": ">=0.8.0"
}
},
- "node_modules/@nodelib/fs.stat": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
- "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "node_modules/@eslint-community/eslint-utils": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
+ "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
"dev": true,
+ "dependencies": {
+ "eslint-visitor-keys": "^3.3.0"
+ },
"engines": {
- "node": ">= 8"
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
}
},
- "node_modules/@nodelib/fs.walk": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
- "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "node_modules/@eslint-community/regexpp": {
+ "version": "4.10.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz",
+ "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==",
"dev": true,
- "dependencies": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- },
"engines": {
- "node": ">= 8"
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
}
},
- "node_modules/@nuxtjs/opencollective": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.3.2.tgz",
- "integrity": "sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==",
+ "node_modules/@eslint/eslintrc": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz",
+ "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==",
+ "dev": true,
"dependencies": {
- "chalk": "^4.1.0",
- "consola": "^2.15.0",
- "node-fetch": "^2.6.1"
- },
- "bin": {
- "opencollective": "bin/opencollective.js"
+ "ajv": "^6.12.4",
+ "debug": "^4.3.2",
+ "espree": "^9.6.0",
+ "globals": "^13.19.0",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.0",
+ "minimatch": "^3.1.2",
+ "strip-json-comments": "^3.1.1"
},
"engines": {
- "node": ">=8.0.0",
- "npm": ">=5.0.0"
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
- "node_modules/@nuxtjs/opencollective/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/@eslint/eslintrc/node_modules/globals": {
+ "version": "13.23.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz",
+ "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==",
+ "dev": true,
"dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
+ "type-fest": "^0.20.2"
},
"engines": {
- "node": ">=10"
+ "node": ">=8"
},
"funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@protobufjs/aspromise": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
- "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ=="
- },
- "node_modules/@protobufjs/base64": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz",
- "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg=="
- },
- "node_modules/@protobufjs/codegen": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz",
- "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg=="
- },
- "node_modules/@protobufjs/eventemitter": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz",
- "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q=="
- },
- "node_modules/@protobufjs/fetch": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz",
- "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==",
- "dependencies": {
- "@protobufjs/aspromise": "^1.1.1",
- "@protobufjs/inquire": "^1.1.0"
+ "node_modules/@eslint/eslintrc/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"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@protobufjs/float": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz",
- "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ=="
- },
- "node_modules/@protobufjs/inquire": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz",
- "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q=="
- },
- "node_modules/@protobufjs/path": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz",
- "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA=="
- },
- "node_modules/@protobufjs/pool": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz",
- "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw=="
- },
- "node_modules/@protobufjs/utf8": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz",
- "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw=="
- },
- "node_modules/@sinclair/typebox": {
- "version": "0.27.8",
- "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz",
- "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==",
- "dev": true
- },
- "node_modules/@sinonjs/commons": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz",
- "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==",
+ "node_modules/@eslint/js": {
+ "version": "8.52.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.52.0.tgz",
+ "integrity": "sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA==",
"dev": true,
- "dependencies": {
- "type-detect": "4.0.8"
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}
},
- "node_modules/@sinonjs/fake-timers": {
- "version": "10.3.0",
- "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz",
- "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==",
- "dev": true,
+ "node_modules/@expo/bunyan": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@expo/bunyan/-/bunyan-4.0.1.tgz",
+ "integrity": "sha512-+Lla7nYSiHZirgK+U/uYzsLv/X+HaJienbD5AKX1UQZHYfWaP+9uuQluRB4GrEVWF0GZ7vEVp/jzaOT9k/SQlg==",
"dependencies": {
- "@sinonjs/commons": "^3.0.0"
+ "uuid": "^8.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "node_modules/@sqltools/formatter": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/@sqltools/formatter/-/formatter-1.2.5.tgz",
- "integrity": "sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw=="
- },
- "node_modules/@tsconfig/node10": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz",
- "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==",
- "dev": true
- },
- "node_modules/@tsconfig/node12": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz",
- "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==",
- "dev": true
- },
- "node_modules/@tsconfig/node14": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz",
- "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==",
- "dev": true
- },
- "node_modules/@tsconfig/node16": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz",
- "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==",
- "dev": true
+ "node_modules/@expo/bunyan/node_modules/uuid": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
},
- "node_modules/@types/accepts": {
- "version": "1.3.6",
- "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.6.tgz",
- "integrity": "sha512-6+qlUg57yfE9OO63wnsJXLeq9cG3gSHBBIxNMOjNrbDRlDnm/NaR7RctfYcVCPq+j7d+MwOxqVEludH5+FKrlg==",
- "dev": true,
- "dependencies": {
- "@types/node": "*"
+ "node_modules/@expo/cli": {
+ "version": "0.18.31",
+ "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-0.18.31.tgz",
+ "integrity": "sha512-v9llw9fT3Uv+TCM6Xllo54t672CuYtinEQZ2LPJ2EJsCwuTc4Cd2gXQaouuIVD21VoeGQnr5JtJuWbF97sBKzQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.20.0",
+ "@expo/code-signing-certificates": "0.0.5",
+ "@expo/config": "~9.0.0-beta.0",
+ "@expo/config-plugins": "~8.0.8",
+ "@expo/devcert": "^1.0.0",
+ "@expo/env": "~0.3.0",
+ "@expo/image-utils": "^0.5.0",
+ "@expo/json-file": "^8.3.0",
+ "@expo/metro-config": "0.18.11",
+ "@expo/osascript": "^2.0.31",
+ "@expo/package-manager": "^1.5.0",
+ "@expo/plist": "^0.1.0",
+ "@expo/prebuild-config": "7.0.9",
+ "@expo/rudder-sdk-node": "1.1.1",
+ "@expo/spawn-async": "^1.7.2",
+ "@expo/xcpretty": "^4.3.0",
+ "@react-native/dev-middleware": "0.74.85",
+ "@urql/core": "2.3.6",
+ "@urql/exchange-retry": "0.3.0",
+ "accepts": "^1.3.8",
+ "arg": "5.0.2",
+ "better-opn": "~3.0.2",
+ "bplist-creator": "0.0.7",
+ "bplist-parser": "^0.3.1",
+ "cacache": "^18.0.2",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.3.0",
+ "connect": "^3.7.0",
+ "debug": "^4.3.4",
+ "env-editor": "^0.4.1",
+ "fast-glob": "^3.3.2",
+ "find-yarn-workspace-root": "~2.0.0",
+ "form-data": "^3.0.1",
+ "freeport-async": "2.0.0",
+ "fs-extra": "~8.1.0",
+ "getenv": "^1.0.0",
+ "glob": "^7.1.7",
+ "graphql": "15.8.0",
+ "graphql-tag": "^2.10.1",
+ "https-proxy-agent": "^5.0.1",
+ "internal-ip": "4.3.0",
+ "is-docker": "^2.0.0",
+ "is-wsl": "^2.1.1",
+ "js-yaml": "^3.13.1",
+ "json-schema-deref-sync": "^0.13.0",
+ "lodash.debounce": "^4.0.8",
+ "md5hex": "^1.0.0",
+ "minimatch": "^3.0.4",
+ "node-fetch": "^2.6.7",
+ "node-forge": "^1.3.1",
+ "npm-package-arg": "^7.0.0",
+ "open": "^8.3.0",
+ "ora": "3.4.0",
+ "picomatch": "^3.0.1",
+ "pretty-bytes": "5.6.0",
+ "progress": "2.0.3",
+ "prompts": "^2.3.2",
+ "qrcode-terminal": "0.11.0",
+ "require-from-string": "^2.0.2",
+ "requireg": "^0.2.2",
+ "resolve": "^1.22.2",
+ "resolve-from": "^5.0.0",
+ "resolve.exports": "^2.0.2",
+ "semver": "^7.6.0",
+ "send": "^0.18.0",
+ "slugify": "^1.3.4",
+ "source-map-support": "~0.5.21",
+ "stacktrace-parser": "^0.1.10",
+ "structured-headers": "^0.4.1",
+ "tar": "^6.0.5",
+ "temp-dir": "^2.0.0",
+ "tempy": "^0.7.1",
+ "terminal-link": "^2.1.1",
+ "text-table": "^0.2.0",
+ "url-join": "4.0.0",
+ "wrap-ansi": "^7.0.0",
+ "ws": "^8.12.1"
+ },
+ "bin": {
+ "expo-internal": "build/bin/cli"
}
},
- "node_modules/@types/babel__core": {
- "version": "7.20.5",
- "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
- "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==",
- "dev": true,
+ "node_modules/@expo/cli/node_modules/@babel/code-frame": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz",
+ "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==",
"dependencies": {
- "@babel/parser": "^7.20.7",
- "@babel/types": "^7.20.7",
- "@types/babel__generator": "*",
- "@types/babel__template": "*",
- "@types/babel__traverse": "*"
+ "@babel/highlight": "^7.10.4"
}
},
- "node_modules/@types/babel__generator": {
- "version": "7.6.7",
- "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.7.tgz",
- "integrity": "sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ==",
- "dev": true,
+ "node_modules/@expo/cli/node_modules/@expo/image-utils": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.5.1.tgz",
+ "integrity": "sha512-U/GsFfFox88lXULmFJ9Shfl2aQGcwoKPF7fawSCLixIKtMCpsI+1r0h+5i0nQnmt9tHuzXZDL8+Dg1z6OhkI9A==",
"dependencies": {
- "@babel/types": "^7.0.0"
+ "@expo/spawn-async": "^1.7.2",
+ "chalk": "^4.0.0",
+ "fs-extra": "9.0.0",
+ "getenv": "^1.0.0",
+ "jimp-compact": "0.16.1",
+ "node-fetch": "^2.6.0",
+ "parse-png": "^2.1.0",
+ "resolve-from": "^5.0.0",
+ "semver": "^7.6.0",
+ "tempy": "0.3.0"
}
},
- "node_modules/@types/babel__template": {
- "version": "7.4.4",
- "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz",
- "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==",
- "dev": true,
+ "node_modules/@expo/cli/node_modules/@expo/image-utils/node_modules/fs-extra": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz",
+ "integrity": "sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==",
"dependencies": {
- "@babel/parser": "^7.1.0",
- "@babel/types": "^7.0.0"
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=10"
}
},
- "node_modules/@types/babel__traverse": {
- "version": "7.20.4",
- "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.4.tgz",
- "integrity": "sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==",
- "dev": true,
- "dependencies": {
- "@babel/types": "^7.20.7"
+ "node_modules/@expo/cli/node_modules/@expo/image-utils/node_modules/temp-dir": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz",
+ "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==",
+ "engines": {
+ "node": ">=4"
}
},
- "node_modules/@types/bcrypt": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/@types/bcrypt/-/bcrypt-5.0.0.tgz",
- "integrity": "sha512-agtcFKaruL8TmcvqbndlqHPSJgsolhf/qPWchFlgnW1gECTN/nKbFcoFnvKAQRFfKbh+BO6A3SWdJu9t+xF3Lw==",
- "dev": true,
+ "node_modules/@expo/cli/node_modules/@expo/image-utils/node_modules/tempy": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.3.0.tgz",
+ "integrity": "sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ==",
"dependencies": {
- "@types/node": "*"
+ "temp-dir": "^1.0.0",
+ "type-fest": "^0.3.1",
+ "unique-string": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "node_modules/@types/body-parser": {
- "version": "1.19.4",
- "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.4.tgz",
- "integrity": "sha512-N7UDG0/xiPQa2D/XrVJXjkWbpqHCd2sBaB32ggRF2l83RhPfamgKGF8gwwqyksS95qUS5ZYF9aF+lLPRlwI2UA==",
- "dev": true,
+ "node_modules/@expo/cli/node_modules/@expo/json-file": {
+ "version": "8.3.3",
+ "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.3.3.tgz",
+ "integrity": "sha512-eZ5dld9AD0PrVRiIWpRkm5aIoWBw3kAyd8VkuWEy92sEthBKDDDHAnK2a0dw0Eil6j7rK7lS/Qaq/Zzngv2h5A==",
"dependencies": {
- "@types/connect": "*",
- "@types/node": "*"
+ "@babel/code-frame": "~7.10.4",
+ "json5": "^2.2.2",
+ "write-file-atomic": "^2.3.0"
}
},
- "node_modules/@types/cache-manager": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/@types/cache-manager/-/cache-manager-3.4.0.tgz",
- "integrity": "sha512-XVbn2HS+O+Mk2SKRCjr01/8oD5p2Tv1fxxdBqJ0+Cl+UBNiz0WVY5rusHpMGx+qF6Vc2pnRwPVwSKbGaDApCpw==",
- "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==",
- "dev": true,
- "dependencies": {
- "@types/express": "*"
+ "node_modules/@expo/cli/node_modules/@expo/plist": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.1.3.tgz",
+ "integrity": "sha512-GW/7hVlAylYg1tUrEASclw1MMk9FP4ZwyFAY/SUTJIhPDQHtfOlXREyWV3hhrHdX/K+pS73GNgdfT6E/e+kBbg==",
+ "dependencies": {
+ "@xmldom/xmldom": "~0.7.7",
+ "base64-js": "^1.2.3",
+ "xmlbuilder": "^14.0.0"
+ }
+ },
+ "node_modules/@expo/cli/node_modules/@expo/prebuild-config": {
+ "version": "7.0.9",
+ "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-7.0.9.tgz",
+ "integrity": "sha512-9i6Cg7jInpnGEHN0jxnW0P+0BexnePiBzmbUvzSbRXpdXihYUX2AKMu73jgzxn5P1hXOSkzNS7umaY+BZ+aBag==",
+ "dependencies": {
+ "@expo/config": "~9.0.0-beta.0",
+ "@expo/config-plugins": "~8.0.8",
+ "@expo/config-types": "^51.0.3",
+ "@expo/image-utils": "^0.5.0",
+ "@expo/json-file": "^8.3.0",
+ "@react-native/normalize-colors": "0.74.85",
+ "debug": "^4.3.1",
+ "fs-extra": "^9.0.0",
+ "resolve-from": "^5.0.0",
+ "semver": "^7.6.0",
+ "xml2js": "0.6.0"
+ },
+ "peerDependencies": {
+ "expo-modules-autolinking": ">=0.8.1"
}
},
- "node_modules/@types/connect": {
- "version": "3.4.37",
- "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.37.tgz",
- "integrity": "sha512-zBUSRqkfZ59OcwXon4HVxhx5oWCJmc0OtBTK05M+p0dYjgN6iTwIL2T/WbsQZrEsdnwaF9cWQ+azOnpPvIqY3Q==",
- "dev": true,
+ "node_modules/@expo/cli/node_modules/@expo/prebuild-config/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==",
"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/cookiejar": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.3.tgz",
- "integrity": "sha512-LZ8SD3LpNmLMDLkG2oCBjZg+ETnx6XdCjydUE0HwojDmnDfDUnhMKKbtth1TZh+hzcqb03azrYWoXLS8sMXdqg==",
- "dev": true
- },
- "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==",
- "dev": true
+ "node_modules/@expo/cli/node_modules/@expo/prebuild-config/node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
},
- "node_modules/@types/eslint": {
- "version": "8.44.6",
- "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.6.tgz",
- "integrity": "sha512-P6bY56TVmX8y9J87jHNgQh43h6VVU+6H7oN7hgvivV81K2XY8qJZ5vqPy/HdUoVIelii2kChYVzQanlswPWVFw==",
- "dev": true,
+ "node_modules/@expo/cli/node_modules/@expo/spawn-async": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/@expo/spawn-async/-/spawn-async-1.7.2.tgz",
+ "integrity": "sha512-QdWi16+CHB9JYP7gma19OVVg0BFkvU8zNj9GjWorYI8Iv8FUxjOCcYRuAmX4s/h91e4e7BPsskc8cSrZYho9Ew==",
"dependencies": {
- "@types/estree": "*",
- "@types/json-schema": "*"
+ "cross-spawn": "^7.0.3"
+ },
+ "engines": {
+ "node": ">=12"
}
},
- "node_modules/@types/eslint-scope": {
- "version": "3.7.6",
- "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.6.tgz",
- "integrity": "sha512-zfM4ipmxVKWdxtDaJ3MP3pBurDXOCoyjvlpE3u6Qzrmw4BPbfm4/ambIeTk/r/J0iq/+2/xp0Fmt+gFvXJY2PQ==",
- "dev": true,
+ "node_modules/@expo/cli/node_modules/@react-native/normalize-colors": {
+ "version": "0.74.85",
+ "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.74.85.tgz",
+ "integrity": "sha512-pcE4i0X7y3hsAE0SpIl7t6dUc0B0NZLd1yv7ssm4FrLhWG+CGyIq4eFDXpmPU1XHmL5PPySxTAjEMiwv6tAmOw=="
+ },
+ "node_modules/@expo/cli/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dependencies": {
- "@types/eslint": "*",
- "@types/estree": "*"
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "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
+ "node_modules/@expo/cli/node_modules/arg": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
+ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg=="
},
- "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==",
- "dev": true,
+ "node_modules/@expo/cli/node_modules/argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
"dependencies": {
- "@types/body-parser": "*",
- "@types/express-serve-static-core": "^4.17.18",
- "@types/qs": "*",
- "@types/serve-static": "*"
+ "sprintf-js": "~1.0.2"
}
},
- "node_modules/@types/express-actuator": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/@types/express-actuator/-/express-actuator-1.8.0.tgz",
- "integrity": "sha512-dNjiuD7Xzd5lVkjJ7Gngq5Oak4lwNtdd/YTP6ozRxsf2Y9WXrNjW0+tVc8ZeSD20SKQQAO4l5Kt6vaFk6iqiVg==",
- "dev": true,
+ "node_modules/@expo/cli/node_modules/bplist-creator": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.0.7.tgz",
+ "integrity": "sha512-xp/tcaV3T5PCiaY04mXga7o/TE+t95gqeLmADeBI1CvZtdWTbgBt3uLpvh4UWtenKeBhCV6oVxGk38yZr2uYEA==",
"dependencies": {
- "@types/express": "*"
+ "stream-buffers": "~2.2.0"
}
},
- "node_modules/@types/express-serve-static-core": {
- "version": "4.17.39",
- "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.39.tgz",
- "integrity": "sha512-BiEUfAiGCOllomsRAZOiMFP7LAnrifHpt56pc4Z7l9K6ACyN06Ns1JLMBxwkfLOjJRlSf06NwWsT7yzfpaVpyQ==",
- "dev": true,
+ "node_modules/@expo/cli/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": {
- "@types/node": "*",
- "@types/qs": "*",
- "@types/range-parser": "*",
- "@types/send": "*"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/@types/graceful-fs": {
- "version": "4.1.9",
- "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz",
- "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==",
- "dev": true,
+ "node_modules/@expo/cli/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dependencies": {
- "@types/node": "*"
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
}
},
- "node_modules/@types/http-errors": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.3.tgz",
- "integrity": "sha512-pP0P/9BnCj1OVvQR2lF41EkDG/lWWnDyA203b/4Fmi2eTyORnBtcDoKDwjWQthELrBvWkMOrvSOnZ8OVlW6tXA==",
- "dev": true
+ "node_modules/@expo/cli/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
- "node_modules/@types/istanbul-lib-coverage": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz",
- "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==",
- "dev": true
+ "node_modules/@expo/cli/node_modules/crypto-random-string": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz",
+ "integrity": "sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg==",
+ "engines": {
+ "node": ">=4"
+ }
},
- "node_modules/@types/istanbul-lib-report": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz",
- "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==",
- "dev": true,
+ "node_modules/@expo/cli/node_modules/form-data": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.2.tgz",
+ "integrity": "sha512-sJe+TQb2vIaIyO783qN6BlMYWMw3WBOHA1Ay2qxsnjuafEOQFJ2JakedOQirT6D5XPRxDvS7AHYyem9fTpb4LQ==",
"dependencies": {
- "@types/istanbul-lib-coverage": "*"
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
}
},
- "node_modules/@types/istanbul-reports": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz",
- "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==",
- "dev": true,
+ "node_modules/@expo/cli/node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "deprecated": "Glob versions prior to v9 are no longer supported",
"dependencies": {
- "@types/istanbul-lib-report": "*"
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/@types/jest": {
- "version": "29.5.10",
- "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.10.tgz",
- "integrity": "sha512-tE4yxKEphEyxj9s4inideLHktW/x6DwesIwWZ9NN1FKf9zbJYsnhBoA9vrHA/IuIOKwPa5PcFBNV4lpMIOEzyQ==",
- "dev": true,
- "dependencies": {
- "expect": "^29.0.0",
- "pretty-format": "^29.0.0"
+ "node_modules/@expo/cli/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/@types/json-schema": {
- "version": "7.0.14",
- "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz",
- "integrity": "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==",
- "dev": true
- },
- "node_modules/@types/json5": {
- "version": "0.0.29",
- "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
- "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==",
- "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==",
+ "node_modules/@expo/cli/node_modules/js-yaml": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+ "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
"dependencies": {
- "@types/node": "*"
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
}
},
- "node_modules/@types/long": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz",
- "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA=="
- },
- "node_modules/@types/mime": {
- "version": "1.3.4",
- "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.4.tgz",
- "integrity": "sha512-1Gjee59G25MrQGk8bsNvC6fxNiRgUlGn2wlhGf95a59DrprnnHk80FIMMFG9XHMdrfsuA119ht06QPDXA1Z7tw==",
- "dev": true
+ "node_modules/@expo/cli/node_modules/jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
},
- "node_modules/@types/node": {
- "version": "18.17.0",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-18.17.0.tgz",
- "integrity": "sha512-GXZxEtOxYGFchyUzxvKI14iff9KZ2DI+A6a37o6EQevtg6uO9t+aUZKcaC1Te5Ng1OnLM7K9NVVj+FbecD9cJg=="
+ "node_modules/@expo/cli/node_modules/jsonfile/node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
},
- "node_modules/@types/nodemailer": {
- "version": "6.4.17",
- "resolved": "https://registry.npmjs.org/@types/nodemailer/-/nodemailer-6.4.17.tgz",
- "integrity": "sha512-I9CCaIp6DTldEg7vyUTZi8+9Vo0hi1/T8gv3C89yk1rSAAzoKQ8H8ki/jBYJSFoH/BisgLP8tkZMlQ91CIquww==",
- "dev": true,
- "dependencies": {
- "@types/node": "*"
+ "node_modules/@expo/cli/node_modules/picomatch": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-3.0.1.tgz",
+ "integrity": "sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
}
},
- "node_modules/@types/parse-json": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.1.tgz",
- "integrity": "sha512-3YmXzzPAdOTVljVMkTMBdBEvlOLg2cDQaDhnnhT3nT9uDbnJzjWhKlzb+desT12Y7tGqaN6d+AbozcKzyL36Ng==",
- "dev": true
+ "node_modules/@expo/cli/node_modules/semver": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
},
- "node_modules/@types/passport": {
- "version": "1.0.14",
- "resolved": "https://registry.npmjs.org/@types/passport/-/passport-1.0.14.tgz",
- "integrity": "sha512-D6p2ygR2S7Cq5PO7iUaEIQu/5WrM0tONu6Lxgk0C9r3lafQIlVpWCo3V/KI9To3OqHBxcfQaOeK+8AvwW5RYmw==",
- "dev": true,
+ "node_modules/@expo/cli/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==",
"dependencies": {
- "@types/express": "*"
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
}
},
- "node_modules/@types/passport-jwt": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/@types/passport-jwt/-/passport-jwt-3.0.6.tgz",
- "integrity": "sha512-cmAAMIRTaEwpqxlrZyiEY9kdibk94gP5KTF8AT1Ra4rWNZYHNMreqhKUEeC5WJtuN5SJZjPQmV+XO2P5PlnvNQ==",
- "dev": true,
+ "node_modules/@expo/cli/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": {
- "@types/express": "*",
- "@types/jsonwebtoken": "*",
- "@types/passport-strategy": "*"
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "node_modules/@types/passport-local": {
- "version": "1.0.34",
- "resolved": "https://registry.npmjs.org/@types/passport-local/-/passport-local-1.0.34.tgz",
- "integrity": "sha512-PSc07UdYx+jhadySxxIYWuv6sAnY5e+gesn/5lkPKfBeGuIYn9OPR+AAEDq73VRUh6NBTpvE/iPE62rzZUslog==",
- "dev": true,
- "dependencies": {
- "@types/express": "*",
- "@types/passport": "*",
- "@types/passport-strategy": "*"
+ "node_modules/@expo/cli/node_modules/type-fest": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz",
+ "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==",
+ "engines": {
+ "node": ">=6"
}
},
- "node_modules/@types/passport-strategy": {
- "version": "0.2.37",
- "resolved": "https://registry.npmjs.org/@types/passport-strategy/-/passport-strategy-0.2.37.tgz",
- "integrity": "sha512-ltgwLnwHVfpjK7/66lpv43hiz90nIVb36JmeB0iF3FAZoHX6+LbkY5Ey97Bm8Jr0uGhQyDFEsSOOfejp5PJehg==",
- "dev": true,
+ "node_modules/@expo/cli/node_modules/unique-string": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz",
+ "integrity": "sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg==",
"dependencies": {
- "@types/express": "*",
- "@types/passport": "*"
+ "crypto-random-string": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
}
},
- "node_modules/@types/qs": {
- "version": "6.9.9",
- "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.9.tgz",
- "integrity": "sha512-wYLxw35euwqGvTDx6zfY1vokBFnsK0HNrzc6xNHchxfO2hpuRg74GbkEW7e3sSmPvj0TjCDT1VCa6OtHXnubsg==",
- "dev": true
- },
- "node_modules/@types/range-parser": {
- "version": "1.2.6",
- "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.6.tgz",
- "integrity": "sha512-+0autS93xyXizIYiyL02FCY8N+KkKPhILhcUSA276HxzreZ16kl+cmwvV2qAM/PuCCwPXzOXOWhiPcw20uSFcA==",
- "dev": true
+ "node_modules/@expo/cli/node_modules/universalify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz",
+ "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
},
- "node_modules/@types/send": {
- "version": "0.17.3",
- "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.3.tgz",
- "integrity": "sha512-/7fKxvKUoETxjFUsuFlPB9YndePpxxRAOfGC/yJdc9kTjTeP5kRCTzfnE8kPUKCeyiyIZu0YQ76s50hCedI1ug==",
- "dev": true,
+ "node_modules/@expo/code-signing-certificates": {
+ "version": "0.0.5",
+ "resolved": "https://registry.npmjs.org/@expo/code-signing-certificates/-/code-signing-certificates-0.0.5.tgz",
+ "integrity": "sha512-BNhXkY1bblxKZpltzAx98G2Egj9g1Q+JRcvR7E99DOj862FTCX+ZPsAUtPTr7aHxwtrL7+fL3r0JSmM9kBm+Bw==",
"dependencies": {
- "@types/mime": "^1",
- "@types/node": "*"
+ "node-forge": "^1.2.1",
+ "nullthrows": "^1.1.1"
}
},
- "node_modules/@types/serve-static": {
- "version": "1.15.4",
- "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.4.tgz",
- "integrity": "sha512-aqqNfs1XTF0HDrFdlY//+SGUxmdSUbjeRXb5iaZc3x0/vMbYmdw9qvOgHWOyyLFxSSRnUuP5+724zBgfw8/WAw==",
- "dev": true,
+ "node_modules/@expo/config": {
+ "version": "9.0.4",
+ "resolved": "https://registry.npmjs.org/@expo/config/-/config-9.0.4.tgz",
+ "integrity": "sha512-g5ns5u1JSKudHYhjo1zaSfkJ/iZIcWmUmIQptMJZ6ag1C0ShL2sj8qdfU8MmAMuKLOgcIfSaiWlQnm4X3VJVkg==",
"dependencies": {
- "@types/http-errors": "*",
- "@types/mime": "*",
- "@types/node": "*"
+ "@babel/code-frame": "~7.10.4",
+ "@expo/config-plugins": "~8.0.8",
+ "@expo/config-types": "^51.0.3",
+ "@expo/json-file": "^8.3.0",
+ "getenv": "^1.0.0",
+ "glob": "7.1.6",
+ "require-from-string": "^2.0.2",
+ "resolve-from": "^5.0.0",
+ "semver": "^7.6.0",
+ "slugify": "^1.3.4",
+ "sucrase": "3.34.0"
}
},
- "node_modules/@types/stack-utils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz",
- "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==",
- "dev": true
- },
- "node_modules/@types/superagent": {
- "version": "4.1.20",
- "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-4.1.20.tgz",
- "integrity": "sha512-GfpwJgYSr3yO+nArFkmyqv3i0vZavyEG5xPd/o95RwpKYpsOKJYI5XLdxLpdRbZI3YiGKKdIOFIf/jlP7A0Jxg==",
- "dev": true,
+ "node_modules/@expo/config-plugins": {
+ "version": "8.0.11",
+ "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-8.0.11.tgz",
+ "integrity": "sha512-oALE1HwnLFthrobAcC9ocnR9KXLzfWEjgIe4CPe+rDsfC6GDs8dGYCXfRFoCEzoLN4TGYs9RdZ8r0KoCcNrm2A==",
"dependencies": {
- "@types/cookiejar": "*",
- "@types/node": "*"
+ "@expo/config-types": "^51.0.3",
+ "@expo/json-file": "~8.3.0",
+ "@expo/plist": "^0.1.0",
+ "@expo/sdk-runtime-versions": "^1.0.0",
+ "chalk": "^4.1.2",
+ "debug": "^4.3.1",
+ "find-up": "~5.0.0",
+ "getenv": "^1.0.0",
+ "glob": "7.1.6",
+ "resolve-from": "^5.0.0",
+ "semver": "^7.5.4",
+ "slash": "^3.0.0",
+ "slugify": "^1.6.6",
+ "xcode": "^3.0.1",
+ "xml2js": "0.6.0"
}
},
- "node_modules/@types/supertest": {
- "version": "2.0.11",
- "resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-2.0.11.tgz",
- "integrity": "sha512-uci4Esokrw9qGb9bvhhSVEjd6rkny/dk5PK/Qz4yxKiyppEI+dOPlNrZBahE3i+PoKFYyDxChVXZ/ysS/nrm1Q==",
- "dev": true,
+ "node_modules/@expo/config-plugins/node_modules/@babel/code-frame": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz",
+ "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==",
"dependencies": {
- "@types/superagent": "*"
+ "@babel/highlight": "^7.10.4"
}
},
- "node_modules/@types/yargs": {
- "version": "17.0.32",
- "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz",
- "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==",
- "dev": true,
+ "node_modules/@expo/config-plugins/node_modules/@expo/json-file": {
+ "version": "8.3.3",
+ "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.3.3.tgz",
+ "integrity": "sha512-eZ5dld9AD0PrVRiIWpRkm5aIoWBw3kAyd8VkuWEy92sEthBKDDDHAnK2a0dw0Eil6j7rK7lS/Qaq/Zzngv2h5A==",
"dependencies": {
- "@types/yargs-parser": "*"
+ "@babel/code-frame": "~7.10.4",
+ "json5": "^2.2.2",
+ "write-file-atomic": "^2.3.0"
}
},
- "node_modules/@types/yargs-parser": {
- "version": "21.0.3",
- "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz",
- "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==",
- "dev": true
+ "node_modules/@expo/config-plugins/node_modules/@expo/plist": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.1.3.tgz",
+ "integrity": "sha512-GW/7hVlAylYg1tUrEASclw1MMk9FP4ZwyFAY/SUTJIhPDQHtfOlXREyWV3hhrHdX/K+pS73GNgdfT6E/e+kBbg==",
+ "dependencies": {
+ "@xmldom/xmldom": "~0.7.7",
+ "base64-js": "^1.2.3",
+ "xmlbuilder": "^14.0.0"
+ }
},
- "node_modules/@typescript-eslint/eslint-plugin": {
- "version": "5.13.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.13.0.tgz",
- "integrity": "sha512-vLktb2Uec81fxm/cfz2Hd6QaWOs8qdmVAZXLdOBX6JFJDhf6oDZpMzZ4/LZ6SFM/5DgDcxIMIvy3F+O9yZBuiQ==",
- "dev": true,
+ "node_modules/@expo/config-plugins/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dependencies": {
- "@typescript-eslint/scope-manager": "5.13.0",
- "@typescript-eslint/type-utils": "5.13.0",
- "@typescript-eslint/utils": "5.13.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"
+ "color-convert": "^2.0.1"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": ">=8"
},
"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
- }
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/@typescript-eslint/parser": {
- "version": "5.13.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.13.0.tgz",
- "integrity": "sha512-GdrU4GvBE29tm2RqWOM0P5QfCtgCyN4hXICj/X9ibKED16136l9ZpoJvCL5pSKtmJzA+NRDzQ312wWMejCVVfg==",
- "dev": true,
+ "node_modules/@expo/config-plugins/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": {
- "@typescript-eslint/scope-manager": "5.13.0",
- "@typescript-eslint/types": "5.13.0",
- "@typescript-eslint/typescript-estree": "5.13.0",
- "debug": "^4.3.2"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.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": "^6.0.0 || ^7.0.0 || ^8.0.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/@typescript-eslint/scope-manager": {
- "version": "5.13.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.13.0.tgz",
- "integrity": "sha512-T4N8UvKYDSfVYdmJq7g2IPJYCRzwtp74KyDZytkR4OL3NRupvswvmJQJ4CX5tDSurW2cvCc1Ia1qM7d0jpa7IA==",
- "dev": true,
+ "node_modules/@expo/config-plugins/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dependencies": {
- "@typescript-eslint/types": "5.13.0",
- "@typescript-eslint/visitor-keys": "5.13.0"
+ "color-name": "~1.1.4"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@expo/config-plugins/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "node_modules/@expo/config-plugins/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/@expo/config-plugins/node_modules/semver": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "bin": {
+ "semver": "bin/semver.js"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
+ "engines": {
+ "node": ">=10"
}
},
- "node_modules/@typescript-eslint/type-utils": {
- "version": "5.13.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.13.0.tgz",
- "integrity": "sha512-/nz7qFizaBM1SuqAKb7GLkcNn2buRdDgZraXlkhz+vUGiN1NZ9LzkA595tHHeduAiS2MsHqMNhE2zNzGdw43Yg==",
- "dev": true,
+ "node_modules/@expo/config-plugins/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": {
- "@typescript-eslint/utils": "5.13.0",
- "debug": "^4.3.2",
- "tsutils": "^3.21.0"
+ "has-flag": "^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": "*"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
+ "node": ">=8"
}
},
- "node_modules/@typescript-eslint/types": {
- "version": "5.13.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.13.0.tgz",
- "integrity": "sha512-LmE/KO6DUy0nFY/OoQU0XelnmDt+V8lPQhh8MOVa7Y5k2gGRd6U9Kp3wAjhB4OHg57tUO0nOnwYQhRRyEAyOyg==",
- "dev": true,
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
+ "node_modules/@expo/config-types": {
+ "version": "51.0.3",
+ "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-51.0.3.tgz",
+ "integrity": "sha512-hMfuq++b8VySb+m9uNNrlpbvGxYc8OcFCUX9yTmi9tlx6A4k8SDabWFBgmnr4ao3wEArvWrtUQIfQCVtPRdpKA=="
+ },
+ "node_modules/@expo/config/node_modules/@babel/code-frame": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz",
+ "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==",
+ "dependencies": {
+ "@babel/highlight": "^7.10.4"
}
},
- "node_modules/@typescript-eslint/typescript-estree": {
- "version": "5.13.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.13.0.tgz",
- "integrity": "sha512-Q9cQow0DeLjnp5DuEDjLZ6JIkwGx3oYZe+BfcNuw/POhtpcxMTy18Icl6BJqTSd+3ftsrfuVb7mNHRZf7xiaNA==",
- "dev": true,
+ "node_modules/@expo/config/node_modules/@expo/json-file": {
+ "version": "8.3.3",
+ "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.3.3.tgz",
+ "integrity": "sha512-eZ5dld9AD0PrVRiIWpRkm5aIoWBw3kAyd8VkuWEy92sEthBKDDDHAnK2a0dw0Eil6j7rK7lS/Qaq/Zzngv2h5A==",
"dependencies": {
- "@typescript-eslint/types": "5.13.0",
- "@typescript-eslint/visitor-keys": "5.13.0",
- "debug": "^4.3.2",
- "globby": "^11.0.4",
- "is-glob": "^4.0.3",
- "semver": "^7.3.5",
- "tsutils": "^3.21.0"
+ "@babel/code-frame": "~7.10.4",
+ "json5": "^2.2.2",
+ "write-file-atomic": "^2.3.0"
+ }
+ },
+ "node_modules/@expo/config/node_modules/semver": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "bin": {
+ "semver": "bin/semver.js"
},
"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": ">=10"
}
},
- "node_modules/@typescript-eslint/utils": {
- "version": "5.13.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.13.0.tgz",
- "integrity": "sha512-+9oHlPWYNl6AwwoEt5TQryEHwiKRVjz7Vk6kaBeD3/kwHE5YqTGHtm/JZY8Bo9ITOeKutFaXnBlMgSATMJALUQ==",
- "dev": true,
+ "node_modules/@expo/devcert": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/@expo/devcert/-/devcert-1.1.4.tgz",
+ "integrity": "sha512-fqBODr8c72+gBSX5Ty3SIzaY4bXainlpab78+vEYEKL3fXmsOswMLf0+KE36mUEAa36BYabX7K3EiXOXX5OPMw==",
+ "dependencies": {
+ "application-config-path": "^0.1.0",
+ "command-exists": "^1.2.4",
+ "debug": "^3.1.0",
+ "eol": "^0.9.1",
+ "get-port": "^3.2.0",
+ "glob": "^10.4.2",
+ "lodash": "^4.17.21",
+ "mkdirp": "^0.5.1",
+ "password-prompt": "^1.0.4",
+ "sudo-prompt": "^8.2.0",
+ "tmp": "^0.0.33",
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@expo/devcert/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==",
"dependencies": {
- "@types/json-schema": "^7.0.9",
- "@typescript-eslint/scope-manager": "5.13.0",
- "@typescript-eslint/types": "5.13.0",
- "@typescript-eslint/typescript-estree": "5.13.0",
- "eslint-scope": "^5.1.1",
- "eslint-utils": "^3.0.0"
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/@expo/devcert/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/@expo/devcert/node_modules/glob": {
+ "version": "10.4.5",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
+ "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
},
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
},
"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/isaacs"
}
},
- "node_modules/@typescript-eslint/visitor-keys": {
- "version": "5.13.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.13.0.tgz",
- "integrity": "sha512-HLKEAS/qA1V7d9EzcpLFykTePmOQqOFim8oCvhY3pZgQ8Hi38hYpHd9e5GN6nQBFQNecNhws5wkS9Y5XIO0s/g==",
- "dev": true,
+ "node_modules/@expo/devcert/node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
"dependencies": {
- "@typescript-eslint/types": "5.13.0",
- "eslint-visitor-keys": "^3.0.0"
+ "brace-expansion": "^2.0.1"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": ">=16 || 14 >=14.17"
},
"funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "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,
- "dependencies": {
- "@webassemblyjs/helper-numbers": "1.11.1",
- "@webassemblyjs/helper-wasm-bytecode": "1.11.1"
- }
- },
- "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
- },
- "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
- },
- "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
- },
- "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,
+ "node_modules/@expo/env": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@expo/env/-/env-0.3.0.tgz",
+ "integrity": "sha512-OtB9XVHWaXidLbHvrVDeeXa09yvTl3+IQN884sO6PhIi2/StXfgSH/9zC7IvzrDB8kW3EBJ1PPLuCUJ2hxAT7Q==",
"dependencies": {
- "@webassemblyjs/floating-point-hex-parser": "1.11.1",
- "@webassemblyjs/helper-api-error": "1.11.1",
- "@xtuc/long": "4.2.2"
+ "chalk": "^4.0.0",
+ "debug": "^4.3.4",
+ "dotenv": "~16.4.5",
+ "dotenv-expand": "~11.0.6",
+ "getenv": "^1.0.0"
}
},
- "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
- },
- "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,
+ "node_modules/@expo/env/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dependencies": {
- "@webassemblyjs/ast": "1.11.1",
- "@webassemblyjs/helper-buffer": "1.11.1",
- "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
- "@webassemblyjs/wasm-gen": "1.11.1"
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "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,
+ "node_modules/@expo/env/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": {
- "@xtuc/ieee754": "^1.2.0"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "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,
+ "node_modules/@expo/env/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dependencies": {
- "@xtuc/long": "4.2.2"
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
}
},
- "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
+ "node_modules/@expo/env/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
- "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,
- "dependencies": {
- "@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/@expo/env/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/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,
+ "node_modules/@expo/env/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": {
- "@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"
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "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,
+ "node_modules/@expo/fingerprint": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@expo/fingerprint/-/fingerprint-0.10.3.tgz",
+ "integrity": "sha512-h/BnnyloJyMSrzeXonKLE6HfiMpRg3e9m8CAv+eUaAozG9heKMG9ftHW4cfm2StDYj/rWjFc5YK6MSIX6qd+xg==",
"dependencies": {
- "@webassemblyjs/ast": "1.11.1",
- "@webassemblyjs/helper-buffer": "1.11.1",
- "@webassemblyjs/wasm-gen": "1.11.1",
- "@webassemblyjs/wasm-parser": "1.11.1"
+ "@expo/spawn-async": "^1.7.2",
+ "chalk": "^4.1.2",
+ "debug": "^4.3.4",
+ "find-up": "^5.0.0",
+ "minimatch": "^3.0.4",
+ "p-limit": "^3.1.0",
+ "resolve-from": "^5.0.0",
+ "semver": "^7.6.0"
+ },
+ "bin": {
+ "fingerprint": "bin/cli.js"
}
},
- "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,
+ "node_modules/@expo/fingerprint/node_modules/@expo/spawn-async": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/@expo/spawn-async/-/spawn-async-1.7.2.tgz",
+ "integrity": "sha512-QdWi16+CHB9JYP7gma19OVVg0BFkvU8zNj9GjWorYI8Iv8FUxjOCcYRuAmX4s/h91e4e7BPsskc8cSrZYho9Ew==",
"dependencies": {
- "@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"
+ "cross-spawn": "^7.0.3"
+ },
+ "engines": {
+ "node": ">=12"
}
},
- "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,
+ "node_modules/@expo/fingerprint/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dependencies": {
- "@webassemblyjs/ast": "1.11.1",
- "@xtuc/long": "4.2.2"
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "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/@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/abbrev": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
- "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
- },
- "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/@expo/fingerprint/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": {
- "mime-types": "~2.1.34",
- "negotiator": "0.6.3"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
},
"engines": {
- "node": ">= 0.6"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/acorn": {
- "version": "8.10.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz",
- "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==",
- "dev": true,
- "bin": {
- "acorn": "bin/acorn"
+ "node_modules/@expo/fingerprint/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dependencies": {
+ "color-name": "~1.1.4"
},
"engines": {
- "node": ">=0.4.0"
+ "node": ">=7.0.0"
}
},
- "node_modules/acorn-import-assertions": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz",
- "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==",
- "dev": true,
- "peerDependencies": {
- "acorn": "^8"
+ "node_modules/@expo/fingerprint/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "node_modules/@expo/fingerprint/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/acorn-jsx": {
- "version": "5.3.2",
- "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
- "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
- "dev": true,
- "peerDependencies": {
- "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ "node_modules/@expo/fingerprint/node_modules/semver": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
}
},
- "node_modules/agent-base": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
- "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "node_modules/@expo/fingerprint/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": {
- "debug": "4"
+ "has-flag": "^4.0.0"
},
"engines": {
- "node": ">= 6.0.0"
+ "node": ">=8"
}
},
- "node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "license": "MIT",
+ "node_modules/@expo/image-utils": {
+ "version": "0.3.22",
+ "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.3.22.tgz",
+ "integrity": "sha512-uzq+RERAtkWypOFOLssFnXXqEqKjNj9eXN7e97d/EXUAojNcLDoXc0sL+F5B1I4qtlsnhX01kcpoIBBZD8wZNQ==",
"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"
+ "@expo/spawn-async": "1.5.0",
+ "chalk": "^4.0.0",
+ "fs-extra": "9.0.0",
+ "getenv": "^1.0.0",
+ "jimp-compact": "0.16.1",
+ "mime": "^2.4.4",
+ "node-fetch": "^2.6.0",
+ "parse-png": "^2.1.0",
+ "resolve-from": "^5.0.0",
+ "semver": "7.3.2",
+ "tempy": "0.3.0"
+ }
+ },
+ "node_modules/@expo/image-utils/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
},
"funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/ajv-formats": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz",
- "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==",
- "dev": true,
+ "node_modules/@expo/image-utils/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": {
- "ajv": "^8.0.0"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
},
- "peerDependencies": {
- "ajv": "^8.0.0"
+ "engines": {
+ "node": ">=10"
},
- "peerDependenciesMeta": {
- "ajv": {
- "optional": true
- }
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/ajv-formats/node_modules/ajv": {
- "version": "8.17.1",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
- "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
- "dev": true,
- "license": "MIT",
+ "node_modules/@expo/image-utils/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dependencies": {
- "fast-deep-equal": "^3.1.3",
- "fast-uri": "^3.0.1",
- "json-schema-traverse": "^1.0.0",
- "require-from-string": "^2.0.2"
+ "color-name": "~1.1.4"
},
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
+ "engines": {
+ "node": ">=7.0.0"
}
},
- "node_modules/ajv-formats/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,
- "license": "MIT"
- },
- "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,
- "peerDependencies": {
- "ajv": "^6.9.1"
- }
+ "node_modules/@expo/image-utils/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
- "node_modules/amqp-connection-manager": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/amqp-connection-manager/-/amqp-connection-manager-4.1.3.tgz",
- "integrity": "sha512-wFc3oUbcDfmpSV/YxrsR9KrTXmFsZDzpdvfGCsAQfm6+5pl3VJyvxic44IYmqgb0oIvT0T5fWsmAr7zxfQvkTw==",
- "dependencies": {
- "promise-breaker": "^5.0.0"
- },
+ "node_modules/@expo/image-utils/node_modules/crypto-random-string": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz",
+ "integrity": "sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg==",
"engines": {
- "node": ">=10.0.0",
- "npm": ">5.0.0"
- },
- "peerDependencies": {
- "amqplib": "*"
+ "node": ">=4"
}
},
- "node_modules/amqplib": {
- "version": "0.10.0",
- "resolved": "https://registry.npmjs.org/amqplib/-/amqplib-0.10.0.tgz",
- "integrity": "sha512-UueEnRGY6upiSvGsSYM22Woa1SeSukqYtqgYW4Gj8gHvbf5BRhhYRqf3kQ8aSUYYffTOZi6SeOVW2eOXt0hpPA==",
+ "node_modules/@expo/image-utils/node_modules/fs-extra": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz",
+ "integrity": "sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==",
"dependencies": {
- "bitsyntax": "~0.1.0",
- "buffer-more-ints": "~1.0.0",
- "readable-stream": "1.x >=1.1.9",
- "url-parse": "~1.5.10"
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^1.0.0"
},
"engines": {
"node": ">=10"
}
},
- "node_modules/ansi-colors": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz",
- "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==",
- "dev": true,
- "engines": {
- "node": ">=6"
+ "node_modules/@expo/image-utils/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/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,
+ "node_modules/@expo/image-utils/node_modules/jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
"dependencies": {
- "type-fest": "^0.21.3"
+ "universalify": "^2.0.0"
},
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/@expo/image-utils/node_modules/jsonfile/node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
"engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">= 10.0.0"
}
},
- "node_modules/ansi-escapes/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,
+ "node_modules/@expo/image-utils/node_modules/semver": {
+ "version": "7.3.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz",
+ "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
"engines": {
"node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/ansi-gray": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz",
- "integrity": "sha512-HrgGIZUl8h2EHuZaU9hTR/cU5nhKxpVE1V6kdGsQ8e4zirElJ5fvtfc8N7Q1oq1aatO275i8pUFUCpNWCAnVWw==",
- "dev": true,
+ "node_modules/@expo/image-utils/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": {
- "ansi-wrap": "0.1.0"
+ "has-flag": "^4.0.0"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=8"
}
},
- "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/@expo/image-utils/node_modules/temp-dir": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz",
+ "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==",
"engines": {
- "node": ">=8"
+ "node": ">=4"
}
},
- "node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "node_modules/@expo/image-utils/node_modules/tempy": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.3.0.tgz",
+ "integrity": "sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ==",
"dependencies": {
- "color-convert": "^2.0.1"
+ "temp-dir": "^1.0.0",
+ "type-fest": "^0.3.1",
+ "unique-string": "^1.0.0"
},
"engines": {
"node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/ansi-wrap": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz",
- "integrity": "sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==",
- "dev": true,
+ "node_modules/@expo/image-utils/node_modules/type-fest": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz",
+ "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==",
"engines": {
- "node": ">=0.10.0"
+ "node": ">=6"
}
},
- "node_modules/any-promise": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
- "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A=="
- },
- "node_modules/anymatch": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
- "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
- "dev": true,
+ "node_modules/@expo/image-utils/node_modules/unique-string": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz",
+ "integrity": "sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg==",
"dependencies": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
+ "crypto-random-string": "^1.0.0"
},
"engines": {
- "node": ">= 8"
+ "node": ">=4"
}
},
- "node_modules/apollo-datasource": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-3.3.2.tgz",
- "integrity": "sha512-L5TiS8E2Hn/Yz7SSnWIVbZw0ZfEIXZCa5VUiVxD9P53JvSrf4aStvsFDlGWPvpIdCR+aly2CfoB79B9/JjKFqg==",
- "deprecated": "The `apollo-datasource` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023 and October 22nd 2024, respectively). See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.",
- "dev": true,
- "dependencies": {
- "@apollo/utils.keyvaluecache": "^1.0.1",
- "apollo-server-env": "^4.2.1"
- },
+ "node_modules/@expo/image-utils/node_modules/universalify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz",
+ "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==",
"engines": {
- "node": ">=12.0"
+ "node": ">= 10.0.0"
}
},
- "node_modules/apollo-reporting-protobuf": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/apollo-reporting-protobuf/-/apollo-reporting-protobuf-3.4.0.tgz",
- "integrity": "sha512-h0u3EbC/9RpihWOmcSsvTW2O6RXVaD/mPEjfrPkxRPTEPWqncsgOoRJw+wih4OqfH3PvTJvoEIf4LwKrUaqWog==",
- "deprecated": "The `apollo-reporting-protobuf` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/usage-reporting-protobuf` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.",
- "dev": true,
+ "node_modules/@expo/json-file": {
+ "version": "8.2.37",
+ "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.37.tgz",
+ "integrity": "sha512-YaH6rVg11JoTS2P6LsW7ybS2CULjf40AbnAHw2F1eDPuheprNjARZMnyHFPkKv7GuxCy+B9GPcbOKgc4cgA80Q==",
"dependencies": {
- "@apollo/protobufjs": "1.2.6"
+ "@babel/code-frame": "~7.10.4",
+ "json5": "^2.2.2",
+ "write-file-atomic": "^2.3.0"
}
},
- "node_modules/apollo-reporting-protobuf/node_modules/@apollo/protobufjs": {
- "version": "1.2.6",
- "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.6.tgz",
- "integrity": "sha512-Wqo1oSHNUj/jxmsVp4iR3I480p6qdqHikn38lKrFhfzcDJ7lwd7Ck7cHRl4JE81tWNArl77xhnG/OkZhxKBYOw==",
- "dev": true,
- "hasInstallScript": true,
+ "node_modules/@expo/json-file/node_modules/@babel/code-frame": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz",
+ "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==",
"dependencies": {
- "@protobufjs/aspromise": "^1.1.2",
- "@protobufjs/base64": "^1.1.2",
- "@protobufjs/codegen": "^2.0.4",
- "@protobufjs/eventemitter": "^1.1.0",
- "@protobufjs/fetch": "^1.1.0",
- "@protobufjs/float": "^1.0.2",
- "@protobufjs/inquire": "^1.1.0",
- "@protobufjs/path": "^1.1.2",
- "@protobufjs/pool": "^1.1.0",
- "@protobufjs/utf8": "^1.1.0",
- "@types/long": "^4.0.0",
- "@types/node": "^10.1.0",
- "long": "^4.0.0"
- },
- "bin": {
- "apollo-pbjs": "bin/pbjs",
- "apollo-pbts": "bin/pbts"
- }
- },
- "node_modules/apollo-reporting-protobuf/node_modules/@types/node": {
- "version": "10.17.60",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz",
- "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==",
- "dev": true
- },
- "node_modules/apollo-server-core": {
- "version": "3.12.1",
- "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-3.12.1.tgz",
- "integrity": "sha512-9SF5WAkkV0FZQ2HVUWI9Jada1U0jg7e8NCN9EklbtvaCeUlOLyXyM+KCWuZ7+dqHxjshbtcwylPHutt3uzoNkw==",
- "deprecated": "The `apollo-server-core` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/server` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.",
- "dev": true,
- "dependencies": {
- "@apollo/utils.keyvaluecache": "^1.0.1",
- "@apollo/utils.logger": "^1.0.0",
- "@apollo/utils.usagereporting": "^1.0.0",
- "@apollographql/apollo-tools": "^0.5.3",
- "@apollographql/graphql-playground-html": "1.6.29",
- "@graphql-tools/mock": "^8.1.2",
- "@graphql-tools/schema": "^8.0.0",
- "@josephg/resolvable": "^1.0.0",
- "apollo-datasource": "^3.3.2",
- "apollo-reporting-protobuf": "^3.4.0",
- "apollo-server-env": "^4.2.1",
- "apollo-server-errors": "^3.3.1",
- "apollo-server-plugin-base": "^3.7.2",
- "apollo-server-types": "^3.8.0",
- "async-retry": "^1.2.1",
- "fast-json-stable-stringify": "^2.1.0",
- "graphql-tag": "^2.11.0",
- "loglevel": "^1.6.8",
- "lru-cache": "^6.0.0",
- "node-abort-controller": "^3.0.1",
- "sha.js": "^2.4.11",
- "uuid": "^9.0.0",
- "whatwg-mimetype": "^3.0.0"
- },
- "engines": {
- "node": ">=12.0"
- },
- "peerDependencies": {
- "graphql": "^15.3.0 || ^16.0.0"
+ "@babel/highlight": "^7.10.4"
}
},
- "node_modules/apollo-server-core/node_modules/@graphql-tools/merge": {
- "version": "8.3.1",
- "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.3.1.tgz",
- "integrity": "sha512-BMm99mqdNZbEYeTPK3it9r9S6rsZsQKtlqJsSBknAclXq2pGEfOxjcIZi+kBSkHZKPKCRrYDd5vY0+rUmIHVLg==",
- "dev": true,
+ "node_modules/@expo/metro-config": {
+ "version": "0.18.11",
+ "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-0.18.11.tgz",
+ "integrity": "sha512-/uOq55VbSf9yMbUO1BudkUM2SsGW1c5hr9BnhIqYqcsFv0Jp5D3DtJ4rljDKaUeNLbwr6m7pqIrkSMq5NrYf4Q==",
"dependencies": {
- "@graphql-tools/utils": "8.9.0",
- "tslib": "^2.4.0"
- },
- "peerDependencies": {
- "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
+ "@babel/core": "^7.20.0",
+ "@babel/generator": "^7.20.5",
+ "@babel/parser": "^7.20.0",
+ "@babel/types": "^7.20.0",
+ "@expo/config": "~9.0.0-beta.0",
+ "@expo/env": "~0.3.0",
+ "@expo/json-file": "~8.3.0",
+ "@expo/spawn-async": "^1.7.2",
+ "chalk": "^4.1.0",
+ "debug": "^4.3.2",
+ "find-yarn-workspace-root": "~2.0.0",
+ "fs-extra": "^9.1.0",
+ "getenv": "^1.0.0",
+ "glob": "^7.2.3",
+ "jsc-safe-url": "^0.2.4",
+ "lightningcss": "~1.19.0",
+ "postcss": "~8.4.32",
+ "resolve-from": "^5.0.0"
}
},
- "node_modules/apollo-server-core/node_modules/@graphql-tools/schema": {
- "version": "8.5.1",
- "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.5.1.tgz",
- "integrity": "sha512-0Esilsh0P/qYcB5DKQpiKeQs/jevzIadNTaT0jeWklPMwNbT7yMX4EqZany7mbeRRlSRwMzNzL5olyFdffHBZg==",
- "dev": true,
+ "node_modules/@expo/metro-config/node_modules/@babel/code-frame": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz",
+ "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==",
"dependencies": {
- "@graphql-tools/merge": "8.3.1",
- "@graphql-tools/utils": "8.9.0",
- "tslib": "^2.4.0",
- "value-or-promise": "1.0.11"
- },
- "peerDependencies": {
- "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
+ "@babel/highlight": "^7.10.4"
}
},
- "node_modules/apollo-server-core/node_modules/@graphql-tools/utils": {
- "version": "8.9.0",
- "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.9.0.tgz",
- "integrity": "sha512-pjJIWH0XOVnYGXCqej8g/u/tsfV4LvLlj0eATKQu5zwnxd/TiTHq7Cg313qUPTFFHZ3PP5wJ15chYVtLDwaymg==",
- "dev": true,
+ "node_modules/@expo/metro-config/node_modules/@expo/json-file": {
+ "version": "8.3.3",
+ "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.3.3.tgz",
+ "integrity": "sha512-eZ5dld9AD0PrVRiIWpRkm5aIoWBw3kAyd8VkuWEy92sEthBKDDDHAnK2a0dw0Eil6j7rK7lS/Qaq/Zzngv2h5A==",
"dependencies": {
- "tslib": "^2.4.0"
- },
- "peerDependencies": {
- "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
+ "@babel/code-frame": "~7.10.4",
+ "json5": "^2.2.2",
+ "write-file-atomic": "^2.3.0"
}
},
- "node_modules/apollo-server-env": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-4.2.1.tgz",
- "integrity": "sha512-vm/7c7ld+zFMxibzqZ7SSa5tBENc4B0uye9LTfjJwGoQFY5xsUPH5FpO5j0bMUDZ8YYNbrF9SNtzc5Cngcr90g==",
- "deprecated": "The `apollo-server-env` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/utils.fetcher` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.",
- "dev": true,
+ "node_modules/@expo/metro-config/node_modules/@expo/spawn-async": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/@expo/spawn-async/-/spawn-async-1.7.2.tgz",
+ "integrity": "sha512-QdWi16+CHB9JYP7gma19OVVg0BFkvU8zNj9GjWorYI8Iv8FUxjOCcYRuAmX4s/h91e4e7BPsskc8cSrZYho9Ew==",
"dependencies": {
- "node-fetch": "^2.6.7"
+ "cross-spawn": "^7.0.3"
},
"engines": {
- "node": ">=12.0"
+ "node": ">=12"
}
},
- "node_modules/apollo-server-errors": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-3.3.1.tgz",
- "integrity": "sha512-xnZJ5QWs6FixHICXHxUfm+ZWqqxrNuPlQ+kj5m6RtEgIpekOPssH/SD9gf2B4HuWV0QozorrygwZnux8POvyPA==",
- "deprecated": "The `apollo-server-errors` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/server` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.",
- "dev": true,
+ "node_modules/@expo/metro-config/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
"engines": {
- "node": ">=12.0"
+ "node": ">=8"
},
- "peerDependencies": {
- "graphql": "^15.3.0 || ^16.0.0"
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/apollo-server-express": {
- "version": "3.10.2",
- "resolved": "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-3.10.2.tgz",
- "integrity": "sha512-TUpnh23qAP3NqMp3/2TxcCpOxhvT64H6teOM5W+t5ncdHZ85aEMDrbfIhNwqkdsya+UyMn9IoBmn25h5TW93ZQ==",
- "deprecated": "The `apollo-server-express` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/server` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.",
- "dev": true,
+ "node_modules/@expo/metro-config/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": {
- "@types/accepts": "^1.3.5",
- "@types/body-parser": "1.19.2",
- "@types/cors": "2.8.12",
- "@types/express": "4.17.13",
- "@types/express-serve-static-core": "4.17.30",
- "accepts": "^1.3.5",
- "apollo-server-core": "^3.10.2",
- "apollo-server-types": "^3.6.2",
- "body-parser": "^1.19.0",
- "cors": "^2.8.5",
- "parseurl": "^1.3.3"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
},
"engines": {
- "node": ">=12.0"
+ "node": ">=10"
},
- "peerDependencies": {
- "express": "^4.17.1",
- "graphql": "^15.3.0 || ^16.0.0"
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/apollo-server-express/node_modules/@types/body-parser": {
- "version": "1.19.2",
- "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz",
- "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==",
- "dev": true,
+ "node_modules/@expo/metro-config/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dependencies": {
- "@types/connect": "*",
- "@types/node": "*"
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
}
},
- "node_modules/apollo-server-express/node_modules/@types/express-serve-static-core": {
- "version": "4.17.30",
- "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.30.tgz",
- "integrity": "sha512-gstzbTWro2/nFed1WXtf+TtrpwxH7Ggs4RLYTLbeVgIkUQOI3WG/JKjgeOU1zXDvezllupjrf8OPIdvTbIaVOQ==",
- "dev": true,
+ "node_modules/@expo/metro-config/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "node_modules/@expo/metro-config/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==",
"dependencies": {
- "@types/node": "*",
- "@types/qs": "*",
- "@types/range-parser": "*"
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
}
},
- "node_modules/apollo-server-plugin-base": {
- "version": "3.7.2",
- "resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-3.7.2.tgz",
- "integrity": "sha512-wE8dwGDvBOGehSsPTRZ8P/33Jan6/PmL0y0aN/1Z5a5GcbFhDaaJCjK5cav6npbbGL2DPKK0r6MPXi3k3N45aw==",
- "deprecated": "The `apollo-server-plugin-base` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/server` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.",
- "dev": true,
+ "node_modules/@expo/metro-config/node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "deprecated": "Glob versions prior to v9 are no longer supported",
"dependencies": {
- "apollo-server-types": "^3.8.0"
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
},
"engines": {
- "node": ">=12.0"
+ "node": "*"
},
- "peerDependencies": {
- "graphql": "^15.3.0 || ^16.0.0"
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/apollo-server-types": {
- "version": "3.8.0",
- "resolved": "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-3.8.0.tgz",
- "integrity": "sha512-ZI/8rTE4ww8BHktsVpb91Sdq7Cb71rdSkXELSwdSR0eXu600/sY+1UXhTWdiJvk+Eq5ljqoHLwLbY2+Clq2b9A==",
- "deprecated": "The `apollo-server-types` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/server` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.",
- "dev": true,
- "dependencies": {
- "@apollo/utils.keyvaluecache": "^1.0.1",
- "@apollo/utils.logger": "^1.0.0",
- "apollo-reporting-protobuf": "^3.4.0",
- "apollo-server-env": "^4.2.1"
- },
+ "node_modules/@expo/metro-config/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": ">=12.0"
+ "node": ">=8"
+ }
+ },
+ "node_modules/@expo/metro-config/node_modules/jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "dependencies": {
+ "universalify": "^2.0.0"
},
- "peerDependencies": {
- "graphql": "^15.3.0 || ^16.0.0"
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
}
},
- "node_modules/app-root-path": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.1.0.tgz",
- "integrity": "sha512-biN3PwB2gUtjaYy/isrU3aNWI5w+fAfvHkSvCKeQGxhmYpwKFUxudR3Yya+KqVRHBmEDYh+/lTozYCFbmzX4nA==",
+ "node_modules/@expo/metro-config/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": ">= 6.0.0"
+ "node": ">=8"
}
},
- "node_modules/append-field": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz",
- "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw=="
+ "node_modules/@expo/metro-config/node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
},
- "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=="
+ "node_modules/@expo/metro-runtime": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/@expo/metro-runtime/-/metro-runtime-3.2.3.tgz",
+ "integrity": "sha512-v5ji+fAGi7B9YavrxvekuF8gXEV/5fz0+PhaED5AaFDnbGB4IJIbpaiqK9nqZV1axjGZNQSw6Q8TsnFetCR3bQ==",
+ "peerDependencies": {
+ "react-native": "*"
+ }
},
- "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==",
+ "node_modules/@expo/osascript": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/@expo/osascript/-/osascript-2.1.4.tgz",
+ "integrity": "sha512-LcPjxJ5FOFpqPORm+5MRLV0CuYWMthJYV6eerF+lQVXKlvgSn3EOqaHC3Vf3H+vmB0f6G4kdvvFtg40vG4bIhA==",
"dependencies": {
- "delegates": "^1.0.0",
- "readable-stream": "^3.6.0"
+ "@expo/spawn-async": "^1.7.2",
+ "exec-async": "^2.2.0"
},
"engines": {
- "node": ">=10"
+ "node": ">=12"
}
},
- "node_modules/are-we-there-yet/node_modules/readable-stream": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
- "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "node_modules/@expo/osascript/node_modules/@expo/spawn-async": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/@expo/spawn-async/-/spawn-async-1.7.2.tgz",
+ "integrity": "sha512-QdWi16+CHB9JYP7gma19OVVg0BFkvU8zNj9GjWorYI8Iv8FUxjOCcYRuAmX4s/h91e4e7BPsskc8cSrZYho9Ew==",
"dependencies": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
+ "cross-spawn": "^7.0.3"
},
"engines": {
- "node": ">= 6"
+ "node": ">=12"
}
},
- "node_modules/are-we-there-yet/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/@expo/package-manager": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/@expo/package-manager/-/package-manager-1.6.1.tgz",
+ "integrity": "sha512-4rT46wP/94Ll+CWXtFKok1Lbo9XncSUtErFOo/9/3FVughGbIfdG4SKZOAWIpr9wxwEfkyhHfAP9q71ONlWODw==",
+ "dependencies": {
+ "@expo/json-file": "^9.0.0",
+ "@expo/spawn-async": "^1.7.2",
+ "ansi-regex": "^5.0.0",
+ "chalk": "^4.0.0",
+ "find-up": "^5.0.0",
+ "js-yaml": "^3.13.1",
+ "micromatch": "^4.0.8",
+ "npm-package-arg": "^11.0.0",
+ "ora": "^3.4.0",
+ "resolve-workspace-root": "^2.0.0",
+ "split": "^1.0.1",
+ "sudo-prompt": "9.1.1"
+ }
},
- "node_modules/are-we-there-yet/node_modules/string_decoder": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
- "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+ "node_modules/@expo/package-manager/node_modules/@babel/code-frame": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz",
+ "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==",
"dependencies": {
- "safe-buffer": "~5.2.0"
+ "@babel/highlight": "^7.10.4"
}
},
- "node_modules/arg": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
- "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
- "dev": true
+ "node_modules/@expo/package-manager/node_modules/@expo/json-file": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-9.0.0.tgz",
+ "integrity": "sha512-M+55xFVrFzDcgMDf+52lPDLjKB5xwRfStWlv/b/Vu2OLgxGZLWpxoPYjlRoHqxjPbCQIi2ZCbobK+0KuNhsELg==",
+ "dependencies": {
+ "@babel/code-frame": "~7.10.4",
+ "json5": "^2.2.3",
+ "write-file-atomic": "^2.3.0"
+ }
},
- "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/array-flatten": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
- "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
- },
- "node_modules/array-union": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
- "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/asap": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
- "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==",
- "dev": true
- },
- "node_modules/async": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz",
- "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw=="
- },
- "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==",
- "dev": true,
- "dependencies": {
- "retry": "0.13.1"
- }
- },
- "node_modules/asynckit": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
- },
- "node_modules/axios": {
- "version": "0.27.2",
- "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz",
- "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==",
+ "node_modules/@expo/package-manager/node_modules/@expo/spawn-async": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/@expo/spawn-async/-/spawn-async-1.7.2.tgz",
+ "integrity": "sha512-QdWi16+CHB9JYP7gma19OVVg0BFkvU8zNj9GjWorYI8Iv8FUxjOCcYRuAmX4s/h91e4e7BPsskc8cSrZYho9Ew==",
"dependencies": {
- "follow-redirects": "^1.14.9",
- "form-data": "^4.0.0"
+ "cross-spawn": "^7.0.3"
+ },
+ "engines": {
+ "node": ">=12"
}
},
- "node_modules/babel-jest": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz",
- "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==",
- "dev": true,
+ "node_modules/@expo/package-manager/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dependencies": {
- "@jest/transform": "^29.7.0",
- "@types/babel__core": "^7.1.14",
- "babel-plugin-istanbul": "^6.1.1",
- "babel-preset-jest": "^29.6.3",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.9",
- "slash": "^3.0.0"
+ "color-convert": "^2.0.1"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": ">=8"
},
- "peerDependencies": {
- "@babel/core": "^7.8.0"
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/babel-jest/node_modules/chalk": {
+ "node_modules/@expo/package-manager/node_modules/argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dependencies": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "node_modules/@expo/package-manager/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"
@@ -4074,1060 +3780,859 @@
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "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,
+ "node_modules/@expo/package-manager/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dependencies": {
- "@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"
+ "color-name": "~1.1.4"
},
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@expo/package-manager/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "node_modules/@expo/package-manager/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/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz",
- "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==",
- "dev": true,
+ "node_modules/@expo/package-manager/node_modules/hosted-git-info": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz",
+ "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==",
"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"
+ "lru-cache": "^10.0.1"
},
"engines": {
- "node": ">=8"
+ "node": "^16.14.0 || >=18.0.0"
}
},
- "node_modules/babel-plugin-istanbul/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
+ "node_modules/@expo/package-manager/node_modules/js-yaml": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+ "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+ "dependencies": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ },
"bin": {
- "semver": "bin/semver.js"
+ "js-yaml": "bin/js-yaml.js"
}
},
- "node_modules/babel-plugin-jest-hoist": {
- "version": "29.6.3",
- "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz",
- "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==",
- "dev": true,
+ "node_modules/@expo/package-manager/node_modules/lru-cache": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="
+ },
+ "node_modules/@expo/package-manager/node_modules/npm-package-arg": {
+ "version": "11.0.3",
+ "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.3.tgz",
+ "integrity": "sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==",
"dependencies": {
- "@babel/template": "^7.3.3",
- "@babel/types": "^7.3.3",
- "@types/babel__core": "^7.1.14",
- "@types/babel__traverse": "^7.0.6"
+ "hosted-git-info": "^7.0.0",
+ "proc-log": "^4.0.0",
+ "semver": "^7.3.5",
+ "validate-npm-package-name": "^5.0.0"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.14.0 || >=18.0.0"
}
},
- "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": {
- "@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"
+ "node_modules/@expo/package-manager/node_modules/semver": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "bin": {
+ "semver": "bin/semver.js"
},
- "peerDependencies": {
- "@babel/core": "^7.0.0"
+ "engines": {
+ "node": ">=10"
}
},
- "node_modules/babel-preset-jest": {
- "version": "29.6.3",
- "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz",
- "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==",
- "dev": true,
+ "node_modules/@expo/package-manager/node_modules/sudo-prompt": {
+ "version": "9.1.1",
+ "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.1.1.tgz",
+ "integrity": "sha512-es33J1g2HjMpyAhz8lOR+ICmXXAqTuKbuXuUWLhOLew20oN9oUCgCJx615U/v7aioZg7IX5lIh9x34vwneu4pA=="
+ },
+ "node_modules/@expo/package-manager/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": {
- "babel-plugin-jest-hoist": "^29.6.3",
- "babel-preset-current-node-syntax": "^1.0.0"
+ "has-flag": "^4.0.0"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
+ "node": ">=8"
}
},
- "node_modules/backo2": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz",
- "integrity": "sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA==",
- "dev": true
+ "node_modules/@expo/package-manager/node_modules/validate-npm-package-name": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz",
+ "integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
},
- "node_modules/balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
+ "node_modules/@expo/plist": {
+ "version": "0.0.20",
+ "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.0.20.tgz",
+ "integrity": "sha512-UXQ4LXCfTZ580LDHGJ5q62jSTwJFFJ1GqBu8duQMThiHKWbMJ+gajJh6rsB6EJ3aLUr9wcauxneL5LVRFxwBEA==",
+ "dependencies": {
+ "@xmldom/xmldom": "~0.7.7",
+ "base64-js": "^1.2.3",
+ "xmlbuilder": "^14.0.0"
+ }
},
- "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/@expo/prebuild-config": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-7.0.6.tgz",
+ "integrity": "sha512-Hts+iGBaG6OQ+N8IEMMgwQElzJeSTb7iUJ26xADEHkaexsucAK+V52dM8M4ceicvbZR9q8M+ebJEGj0MCNA3dQ==",
+ "dependencies": {
+ "@expo/config": "~9.0.0-beta.0",
+ "@expo/config-plugins": "~8.0.0-beta.0",
+ "@expo/config-types": "^51.0.0-unreleased",
+ "@expo/image-utils": "^0.5.0",
+ "@expo/json-file": "^8.3.0",
+ "@react-native/normalize-colors": "0.74.84",
+ "debug": "^4.3.1",
+ "fs-extra": "^9.0.0",
+ "resolve-from": "^5.0.0",
+ "semver": "^7.6.0",
+ "xml2js": "0.6.0"
+ },
+ "peerDependencies": {
+ "expo-modules-autolinking": ">=0.8.1"
+ }
},
- "node_modules/bcrypt": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.0.1.tgz",
- "integrity": "sha512-9BTgmrhZM2t1bNuDtrtIMVSmmxZBrJ71n8Wg+YgdjHuIWYF7SjjmCPZFB+/5i/o/PIeRpwVJR3P+NrpIItUjqw==",
- "hasInstallScript": true,
+ "node_modules/@expo/prebuild-config/node_modules/@babel/code-frame": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz",
+ "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==",
"dependencies": {
- "@mapbox/node-pre-gyp": "^1.0.0",
- "node-addon-api": "^3.1.0"
- },
- "engines": {
- "node": ">= 10.0.0"
+ "@babel/highlight": "^7.10.4"
}
},
- "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,
- "engines": {
- "node": ">=8"
+ "node_modules/@expo/prebuild-config/node_modules/@expo/image-utils": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.5.1.tgz",
+ "integrity": "sha512-U/GsFfFox88lXULmFJ9Shfl2aQGcwoKPF7fawSCLixIKtMCpsI+1r0h+5i0nQnmt9tHuzXZDL8+Dg1z6OhkI9A==",
+ "dependencies": {
+ "@expo/spawn-async": "^1.7.2",
+ "chalk": "^4.0.0",
+ "fs-extra": "9.0.0",
+ "getenv": "^1.0.0",
+ "jimp-compact": "0.16.1",
+ "node-fetch": "^2.6.0",
+ "parse-png": "^2.1.0",
+ "resolve-from": "^5.0.0",
+ "semver": "^7.6.0",
+ "tempy": "0.3.0"
}
},
- "node_modules/bitsyntax": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/bitsyntax/-/bitsyntax-0.1.0.tgz",
- "integrity": "sha512-ikAdCnrloKmFOugAfxWws89/fPc+nw0OOG1IzIE72uSOg/A3cYptKCjSUhDTuj7fhsJtzkzlv7l3b8PzRHLN0Q==",
+ "node_modules/@expo/prebuild-config/node_modules/@expo/image-utils/node_modules/fs-extra": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz",
+ "integrity": "sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==",
"dependencies": {
- "buffer-more-ints": "~1.0.0",
- "debug": "~2.6.9",
- "safe-buffer": "~5.1.2"
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^1.0.0"
},
"engines": {
- "node": ">=0.8"
+ "node": ">=10"
}
},
- "node_modules/bitsyntax/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/@expo/prebuild-config/node_modules/@expo/image-utils/node_modules/universalify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz",
+ "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==",
+ "engines": {
+ "node": ">= 10.0.0"
}
},
- "node_modules/bitsyntax/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
- },
- "node_modules/bl": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
- "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
- "dev": true,
+ "node_modules/@expo/prebuild-config/node_modules/@expo/json-file": {
+ "version": "8.3.3",
+ "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.3.3.tgz",
+ "integrity": "sha512-eZ5dld9AD0PrVRiIWpRkm5aIoWBw3kAyd8VkuWEy92sEthBKDDDHAnK2a0dw0Eil6j7rK7lS/Qaq/Zzngv2h5A==",
"dependencies": {
- "buffer": "^5.5.0",
- "inherits": "^2.0.4",
- "readable-stream": "^3.4.0"
+ "@babel/code-frame": "~7.10.4",
+ "json5": "^2.2.2",
+ "write-file-atomic": "^2.3.0"
}
},
- "node_modules/bl/node_modules/readable-stream": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
- "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
- "dev": true,
+ "node_modules/@expo/prebuild-config/node_modules/@expo/spawn-async": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/@expo/spawn-async/-/spawn-async-1.7.2.tgz",
+ "integrity": "sha512-QdWi16+CHB9JYP7gma19OVVg0BFkvU8zNj9GjWorYI8Iv8FUxjOCcYRuAmX4s/h91e4e7BPsskc8cSrZYho9Ew==",
"dependencies": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
+ "cross-spawn": "^7.0.3"
},
"engines": {
- "node": ">= 6"
+ "node": ">=12"
}
},
- "node_modules/bl/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,
- "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/bl/node_modules/string_decoder": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
- "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
- "dev": true,
+ "node_modules/@expo/prebuild-config/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dependencies": {
- "safe-buffer": "~5.2.0"
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/body-parser": {
- "version": "1.20.0",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz",
- "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==",
+ "node_modules/@expo/prebuild-config/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": {
- "bytes": "3.1.2",
- "content-type": "~1.0.4",
- "debug": "2.6.9",
- "depd": "2.0.0",
- "destroy": "1.2.0",
- "http-errors": "2.0.0",
- "iconv-lite": "0.4.24",
- "on-finished": "2.4.1",
- "qs": "6.10.3",
- "raw-body": "2.5.1",
- "type-is": "~1.6.18",
- "unpipe": "1.0.0"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
},
"engines": {
- "node": ">= 0.8",
- "npm": "1.2.8000 || >= 1.4.16"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "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==",
+ "node_modules/@expo/prebuild-config/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dependencies": {
- "ms": "2.0.0"
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
}
},
- "node_modules/body-parser/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ "node_modules/@expo/prebuild-config/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
- "node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
+ "node_modules/@expo/prebuild-config/node_modules/crypto-random-string": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz",
+ "integrity": "sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg==",
+ "engines": {
+ "node": ">=4"
}
},
- "node_modules/braces": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
- "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
- "dev": true,
+ "node_modules/@expo/prebuild-config/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==",
"dependencies": {
- "fill-range": "^7.1.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/@expo/prebuild-config/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/browserslist": {
- "version": "4.22.1",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz",
- "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/browserslist"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
+ "node_modules/@expo/prebuild-config/node_modules/jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
"dependencies": {
- "caniuse-lite": "^1.0.30001541",
- "electron-to-chromium": "^1.4.535",
- "node-releases": "^2.0.13",
- "update-browserslist-db": "^1.0.13"
+ "universalify": "^2.0.0"
},
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/@expo/prebuild-config/node_modules/semver": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
"bin": {
- "browserslist": "cli.js"
+ "semver": "bin/semver.js"
},
"engines": {
- "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ "node": ">=10"
}
},
- "node_modules/bs-logger": {
- "version": "0.2.6",
- "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz",
- "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==",
- "dev": true,
+ "node_modules/@expo/prebuild-config/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": {
- "fast-json-stable-stringify": "2.x"
+ "has-flag": "^4.0.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==",
- "dev": true,
- "dependencies": {
- "node-int64": "^0.4.0"
+ "node_modules/@expo/prebuild-config/node_modules/temp-dir": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz",
+ "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==",
+ "engines": {
+ "node": ">=4"
}
},
- "node_modules/buffer": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
- "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
- "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/@expo/prebuild-config/node_modules/tempy": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.3.0.tgz",
+ "integrity": "sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ==",
"dependencies": {
- "base64-js": "^1.3.1",
- "ieee754": "^1.1.13"
+ "temp-dir": "^1.0.0",
+ "type-fest": "^0.3.1",
+ "unique-string": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "node_modules/buffer-alloc": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
- "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
- "dev": true,
+ "node_modules/@expo/prebuild-config/node_modules/type-fest": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz",
+ "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@expo/prebuild-config/node_modules/unique-string": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz",
+ "integrity": "sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg==",
"dependencies": {
- "buffer-alloc-unsafe": "^1.1.0",
- "buffer-fill": "^1.0.0"
+ "crypto-random-string": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
}
},
- "node_modules/buffer-alloc-unsafe": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
- "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==",
- "dev": true
+ "node_modules/@expo/prebuild-config/node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
},
- "node_modules/buffer-crc32": {
- "version": "0.2.13",
- "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
- "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
- "dev": true,
+ "node_modules/@expo/rudder-sdk-node": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@expo/rudder-sdk-node/-/rudder-sdk-node-1.1.1.tgz",
+ "integrity": "sha512-uy/hS/awclDJ1S88w9UGpc6Nm9XnNUjzOAAib1A3PVAnGQIwebg8DpFqOthFBTlZxeuV/BKbZ5jmTbtNZkp1WQ==",
+ "dependencies": {
+ "@expo/bunyan": "^4.0.0",
+ "@segment/loosely-validate-event": "^2.0.0",
+ "fetch-retry": "^4.1.1",
+ "md5": "^2.2.1",
+ "node-fetch": "^2.6.1",
+ "remove-trailing-slash": "^0.1.0",
+ "uuid": "^8.3.2"
+ },
"engines": {
- "node": "*"
+ "node": ">=12"
}
},
- "node_modules/buffer-equal-constant-time": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
- "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA=="
+ "node_modules/@expo/rudder-sdk-node/node_modules/uuid": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
},
- "node_modules/buffer-fill": {
+ "node_modules/@expo/sdk-runtime-versions": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
- "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==",
- "dev": true
+ "resolved": "https://registry.npmjs.org/@expo/sdk-runtime-versions/-/sdk-runtime-versions-1.0.0.tgz",
+ "integrity": "sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ=="
},
- "node_modules/buffer-from": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
- "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
+ "node_modules/@expo/server": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/@expo/server/-/server-0.4.4.tgz",
+ "integrity": "sha512-q9ADBzMN5rZ/fgQ2mz5YIJuZ8gelQlhG2CQqToD+UvBLZvbaHCNxTTSs2KI1LzJvAaW5CWgWMatGvGF6iUQ0LA==",
+ "dependencies": {
+ "@remix-run/node": "^2.7.2",
+ "abort-controller": "^3.0.0",
+ "debug": "^4.3.4",
+ "source-map-support": "~0.5.21"
+ }
},
- "node_modules/buffer-more-ints": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/buffer-more-ints/-/buffer-more-ints-1.0.0.tgz",
- "integrity": "sha512-EMetuGFz5SLsT0QTnXzINh4Ksr+oo4i+UGTXEshiGCQWnsgSs7ZhJ8fzlwQ+OzEMs0MpDAMr1hxnblp5a4vcHg=="
+ "node_modules/@expo/server/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==",
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
},
- "node_modules/buffer-writer": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz",
- "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==",
+ "node_modules/@expo/spawn-async": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@expo/spawn-async/-/spawn-async-1.5.0.tgz",
+ "integrity": "sha512-LB7jWkqrHo+5fJHNrLAFdimuSXQ2MQ4lA7SQW5bf/HbsXuV2VrT/jN/M8f/KoWt0uJMGN4k/j7Opx4AvOOxSew==",
+ "dependencies": {
+ "cross-spawn": "^6.0.5"
+ },
"engines": {
"node": ">=4"
}
},
- "node_modules/busboy": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
- "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==",
+ "node_modules/@expo/spawn-async/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==",
"dependencies": {
- "streamsearch": "^1.1.0"
+ "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": ">=10.16.0"
+ "node": ">=4.8"
}
},
- "node_modules/bytes": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
- "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+ "node_modules/@expo/spawn-async/node_modules/path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
"engines": {
- "node": ">= 0.8"
+ "node": ">=4"
}
},
- "node_modules/cache-manager": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/cache-manager/-/cache-manager-3.4.3.tgz",
- "integrity": "sha512-6+Hfzy1SNs/thUwo+07pV0ozgxc4sadrAN0eFVGvXl/X9nz3J0BqEnnEoyxEn8jnF+UkEo0MKpyk9BO80hMeiQ==",
- "dependencies": {
- "async": "3.2.0",
- "lodash": "^4.17.21",
- "lru-cache": "6.0.0"
+ "node_modules/@expo/spawn-async/node_modules/semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "bin": {
+ "semver": "bin/semver"
}
},
- "node_modules/cache-manager-redis-store": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/cache-manager-redis-store/-/cache-manager-redis-store-2.0.0.tgz",
- "integrity": "sha512-bWLWlUg6nCYHiJLCCYxY2MgvwvKnvlWwrbuynrzpjEIhfArD2GC9LtutIHFEPeyGVQN6C+WEw+P3r+BFBwhswg==",
+ "node_modules/@expo/spawn-async/node_modules/shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
"dependencies": {
- "redis": "^3.0.2"
+ "shebang-regex": "^1.0.0"
},
"engines": {
- "node": ">= 8.3"
+ "node": ">=0.10.0"
}
},
- "node_modules/call-bind": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz",
- "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==",
- "dependencies": {
- "call-bind-apply-helpers": "^1.0.0",
- "es-define-property": "^1.0.0",
- "get-intrinsic": "^1.2.4",
- "set-function-length": "^1.2.2"
- },
+ "node_modules/@expo/spawn-async/node_modules/shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
"engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "node": ">=0.10.0"
}
},
- "node_modules/call-bind-apply-helpers": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.0.tgz",
- "integrity": "sha512-CCKAP2tkPau7D3GE8+V8R6sQubA9R5foIzGp+85EXCVSCivuxBNAWqcpn72PKYiIcqoViv/kcUDpaEIMBVi1lQ==",
+ "node_modules/@expo/spawn-async/node_modules/which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
"dependencies": {
- "es-errors": "^1.3.0",
- "function-bind": "^1.1.2"
+ "isexe": "^2.0.0"
},
- "engines": {
- "node": ">= 0.4"
+ "bin": {
+ "which": "bin/which"
}
},
- "node_modules/callsites": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
- "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
- "dev": true,
- "engines": {
- "node": ">=6"
+ "node_modules/@expo/vector-icons": {
+ "version": "14.0.4",
+ "resolved": "https://registry.npmjs.org/@expo/vector-icons/-/vector-icons-14.0.4.tgz",
+ "integrity": "sha512-+yKshcbpDfbV4zoXOgHxCwh7lkE9VVTT5T03OUlBsqfze1PLy6Hi4jp1vSb1GVbY6eskvMIivGVc9SKzIv0oEQ==",
+ "dependencies": {
+ "prop-types": "^15.8.1"
}
},
- "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/@expo/xcpretty": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/@expo/xcpretty/-/xcpretty-4.3.1.tgz",
+ "integrity": "sha512-sqXgo1SCv+j4VtYEwl/bukuOIBrVgx6euIoCat3Iyx5oeoXwEA2USCoeL0IPubflMxncA2INkqJ/Wr3NGrSgzw==",
+ "dependencies": {
+ "@babel/code-frame": "7.10.4",
+ "chalk": "^4.1.0",
+ "find-up": "^5.0.0",
+ "js-yaml": "^4.1.0"
+ },
+ "bin": {
+ "excpretty": "build/cli.js"
}
},
- "node_modules/caniuse-lite": {
- "version": "1.0.30001553",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001553.tgz",
- "integrity": "sha512-N0ttd6TrFfuqKNi+pMgWJTb9qrdJu4JSpgPFLe/lrD19ugC6fZgF0pUewRowDwzdDnb9V41mFcdlYgl/PyKf4A==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ]
+ "node_modules/@expo/xcpretty/node_modules/@babel/code-frame": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz",
+ "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==",
+ "dependencies": {
+ "@babel/highlight": "^7.10.4"
+ }
},
- "node_modules/caw": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/caw/-/caw-2.0.1.tgz",
- "integrity": "sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==",
- "dev": true,
+ "node_modules/@expo/xcpretty/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dependencies": {
- "get-proxy": "^2.0.0",
- "isurl": "^1.0.0-alpha5",
- "tunnel-agent": "^0.6.0",
- "url-to-options": "^1.0.1"
+ "color-convert": "^2.0.1"
},
"engines": {
- "node": ">=4"
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/chalk": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
- "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
- "dev": true,
+ "node_modules/@expo/xcpretty/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": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
},
- "engines": {
- "node": ">=8"
- }
- },
- "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,
"engines": {
"node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/chardet": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
- "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
- "dev": true
- },
- "node_modules/chokidar": {
- "version": "3.5.3",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
- "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
- "dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://paulmillr.com/funding/"
- }
- ],
+ "node_modules/@expo/xcpretty/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dependencies": {
- "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"
+ "color-name": "~1.1.4"
},
"engines": {
- "node": ">= 8.10.0"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.2"
+ "node": ">=7.0.0"
}
},
- "node_modules/chownr": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
- "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
- "engines": {
- "node": ">=10"
- }
+ "node_modules/@expo/xcpretty/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
- "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,
+ "node_modules/@expo/xcpretty/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.0"
+ "node": ">=8"
}
},
- "node_modules/ci-info": {
- "version": "3.9.0",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz",
- "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/sibiraj-s"
- }
- ],
+ "node_modules/@expo/xcpretty/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/cjs-module-lexer": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz",
- "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==",
- "dev": true
+ "node_modules/@graphql-typed-document-node/core": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz",
+ "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==",
+ "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 || ^17.0.0"
+ }
},
- "node_modules/class-transformer": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.5.1.tgz",
- "integrity": "sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw=="
+ "node_modules/@hapi/hoek": {
+ "version": "9.3.0",
+ "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz",
+ "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ=="
},
- "node_modules/class-validator": {
- "version": "0.13.2",
- "resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.13.2.tgz",
- "integrity": "sha512-yBUcQy07FPlGzUjoLuUfIOXzgynnQPPruyK1Ge2B74k9ROwnle1E+NxLWnUv5OLU8hA/qL5leAE9XnXq3byaBw==",
+ "node_modules/@hapi/topo": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz",
+ "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==",
"dependencies": {
- "libphonenumber-js": "^1.9.43",
- "validator": "^13.7.0"
+ "@hapi/hoek": "^9.0.0"
}
},
- "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/@humanwhocodes/config-array": {
+ "version": "0.11.13",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz",
+ "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==",
"dev": true,
"dependencies": {
- "restore-cursor": "^3.1.0"
+ "@humanwhocodes/object-schema": "^2.0.1",
+ "debug": "^4.1.1",
+ "minimatch": "^3.0.5"
},
"engines": {
- "node": ">=8"
+ "node": ">=10.10.0"
}
},
- "node_modules/cli-highlight": {
- "version": "2.1.11",
- "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.11.tgz",
- "integrity": "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==",
- "dependencies": {
- "chalk": "^4.0.0",
- "highlight.js": "^10.7.1",
- "mz": "^2.4.0",
- "parse5": "^5.1.1",
- "parse5-htmlparser2-tree-adapter": "^6.0.0",
- "yargs": "^16.0.0"
- },
- "bin": {
- "highlight": "bin/highlight"
- },
+ "node_modules/@humanwhocodes/module-importer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
+ "dev": true,
"engines": {
- "node": ">=8.0.0",
- "npm": ">=5.0.0"
+ "node": ">=12.22"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
}
},
- "node_modules/cli-highlight/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/@humanwhocodes/object-schema": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz",
+ "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==",
+ "dev": true
+ },
+ "node_modules/@ide/backoff": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@ide/backoff/-/backoff-1.0.0.tgz",
+ "integrity": "sha512-F0YfUDjvT+Mtt/R4xdl2X0EYCHMMiJqNLdxHD++jDT5ydEFIyqbCHh51Qx2E211dgZprPKhV7sHmnXKpLuvc5g=="
+ },
+ "node_modules/@isaacs/cliui": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
+ "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
"dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
+ "string-width": "^5.1.2",
+ "string-width-cjs": "npm:string-width@^4.2.0",
+ "strip-ansi": "^7.0.1",
+ "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
+ "wrap-ansi": "^8.1.0",
+ "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
},
"engines": {
- "node": ">=10"
+ "node": ">=12"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/ansi-regex": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
+ "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
+ "engines": {
+ "node": ">=12"
},
"funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
}
},
- "node_modules/cli-highlight/node_modules/parse5": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz",
- "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug=="
- },
- "node_modules/cli-spinners": {
- "version": "2.9.1",
- "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.1.tgz",
- "integrity": "sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==",
- "dev": true,
+ "node_modules/@isaacs/cliui/node_modules/ansi-styles": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
"engines": {
- "node": ">=6"
+ "node": ">=12"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/cli-table3": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.2.tgz",
- "integrity": "sha512-QyavHCaIC80cMivimWu4aWHilIpiDpfm3hGmqAmXVL1UsnbLuBSMd21hTX6VY4ZSDSM73ESLeF8TOYId3rBTbw==",
- "dev": true,
+ "node_modules/@isaacs/cliui/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=="
+ },
+ "node_modules/@isaacs/cliui/node_modules/string-width": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
"dependencies": {
- "string-width": "^4.2.0"
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
},
"engines": {
- "node": "10.* || >= 12.*"
+ "node": ">=12"
},
- "optionalDependencies": {
- "@colors/colors": "1.5.0"
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/cli-width": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz",
- "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==",
- "dev": true,
+ "node_modules/@isaacs/cliui/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
"engines": {
- "node": ">= 10"
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
}
},
- "node_modules/cliui": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
- "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+ "node_modules/@isaacs/cliui/node_modules/wrap-ansi": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
+ "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
"dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^7.0.0"
- }
- },
- "node_modules/clone": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
- "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==",
- "dev": true,
+ "ansi-styles": "^6.1.0",
+ "string-width": "^5.0.1",
+ "strip-ansi": "^7.0.1"
+ },
"engines": {
- "node": ">=0.8"
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
- "node_modules/co": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
- "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==",
- "dev": true,
+ "node_modules/@isaacs/ttlcache": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/@isaacs/ttlcache/-/ttlcache-1.4.1.tgz",
+ "integrity": "sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==",
"engines": {
- "iojs": ">= 1.0.0",
- "node": ">= 0.12.0"
+ "node": ">=12"
}
},
- "node_modules/collect-v8-coverage": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz",
- "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==",
- "dev": true
- },
- "node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "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==",
"dependencies": {
- "color-name": "~1.1.4"
+ "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": ">=7.0.0"
+ "node": ">=8"
}
},
- "node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
- },
- "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==",
- "bin": {
- "color-support": "bin.js"
+ "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dependencies": {
+ "sprintf-js": "~1.0.2"
}
},
- "node_modules/combined-stream": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "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==",
"dependencies": {
- "delayed-stream": "~1.0.0"
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
},
"engines": {
- "node": ">= 0.8"
- }
- },
- "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,
- "engines": {
- "node": ">= 6"
+ "node": ">=8"
}
},
- "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==",
- "dev": true
- },
- "node_modules/compressible": {
- "version": "2.0.18",
- "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
- "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
+ "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+ "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
"dependencies": {
- "mime-db": ">= 1.43.0 < 2"
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
},
- "engines": {
- "node": ">= 0.6"
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
}
},
- "node_modules/compression": {
- "version": "1.7.4",
- "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz",
- "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==",
+ "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==",
"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"
+ "p-locate": "^4.1.0"
},
"engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/compression/node_modules/bytes": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
- "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/compression/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/compression/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
- },
- "node_modules/concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
- },
- "node_modules/concat-stream": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
- "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
- "engines": [
- "node >= 0.8"
- ],
- "dependencies": {
- "buffer-from": "^1.0.0",
- "inherits": "^2.0.3",
- "readable-stream": "^2.2.2",
- "typedarray": "^0.0.6"
- }
- },
- "node_modules/concat-stream/node_modules/isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
- },
- "node_modules/concat-stream/node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "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/concat-stream/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "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": {
- "ini": "^1.3.4",
- "proto-list": "~1.2.1"
+ "node": ">=8"
}
},
- "node_modules/consola": {
- "version": "2.15.3",
- "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz",
- "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw=="
- },
- "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": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ=="
- },
- "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/@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==",
"dependencies": {
- "safe-buffer": "5.2.1"
+ "p-try": "^2.0.0"
},
"engines": {
- "node": ">= 0.6"
- }
- },
- "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/content-type": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
- "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/convert-source-map": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
- "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
- "dev": true
- },
- "node_modules/cookie": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz",
- "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==",
- "engines": {
- "node": ">= 0.6"
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/cookie-signature": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
- "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
- },
- "node_modules/cookiejar": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz",
- "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==",
- "dev": true
- },
- "node_modules/core-util-is": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
- "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
- },
- "node_modules/cors": {
- "version": "2.8.5",
- "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
- "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
+ "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==",
"dependencies": {
- "object-assign": "^4",
- "vary": "^1"
+ "p-limit": "^2.2.0"
},
"engines": {
- "node": ">= 0.10"
+ "node": ">=8"
}
},
- "node_modules/cosmiconfig": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz",
- "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==",
- "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"
- },
+ "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==",
"engines": {
- "node": ">=10"
+ "node": ">=8"
}
},
- "node_modules/create-jest": {
+ "node_modules/@jest/console": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz",
- "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==",
- "dev": true,
+ "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz",
+ "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==",
"dependencies": {
"@jest/types": "^29.6.3",
+ "@types/node": "*",
"chalk": "^4.0.0",
- "exit": "^0.1.2",
- "graceful-fs": "^4.2.9",
- "jest-config": "^29.7.0",
+ "jest-message-util": "^29.7.0",
"jest-util": "^29.7.0",
- "prompts": "^2.0.1"
- },
- "bin": {
- "create-jest": "bin/create-jest.js"
+ "slash": "^3.0.0"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "node_modules/create-jest/node_modules/chalk": {
+ "node_modules/@jest/console/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@jest/console/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"
@@ -5139,773 +4644,10668 @@
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "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==",
- "dev": true
- },
- "node_modules/cross-spawn": {
- "version": "7.0.6",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
- "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
- "dev": true,
+ "node_modules/@jest/console/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dependencies": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
+ "color-name": "~1.1.4"
},
"engines": {
- "node": ">= 8"
+ "node": ">=7.0.0"
}
},
- "node_modules/cssfilter": {
- "version": "0.0.10",
- "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz",
- "integrity": "sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==",
- "dev": true
+ "node_modules/@jest/console/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
- "node_modules/date-fns": {
- "version": "2.30.0",
- "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz",
- "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==",
- "dependencies": {
- "@babel/runtime": "^7.21.0"
- },
+ "node_modules/@jest/console/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": ">=0.11"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/date-fns"
+ "node": ">=8"
}
},
- "node_modules/dayjs": {
- "version": "1.11.10",
- "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz",
- "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ=="
+ "node_modules/@jest/console/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/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "node_modules/@jest/core": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz",
+ "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==",
"dependencies": {
- "ms": "2.1.2"
+ "@jest/console": "^29.7.0",
+ "@jest/reporters": "^29.7.0",
+ "@jest/test-result": "^29.7.0",
+ "@jest/transform": "^29.7.0",
+ "@jest/types": "^29.6.3",
+ "@types/node": "*",
+ "ansi-escapes": "^4.2.1",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "exit": "^0.1.2",
+ "graceful-fs": "^4.2.9",
+ "jest-changed-files": "^29.7.0",
+ "jest-config": "^29.7.0",
+ "jest-haste-map": "^29.7.0",
+ "jest-message-util": "^29.7.0",
+ "jest-regex-util": "^29.6.3",
+ "jest-resolve": "^29.7.0",
+ "jest-resolve-dependencies": "^29.7.0",
+ "jest-runner": "^29.7.0",
+ "jest-runtime": "^29.7.0",
+ "jest-snapshot": "^29.7.0",
+ "jest-util": "^29.7.0",
+ "jest-validate": "^29.7.0",
+ "jest-watcher": "^29.7.0",
+ "micromatch": "^4.0.4",
+ "pretty-format": "^29.7.0",
+ "slash": "^3.0.0",
+ "strip-ansi": "^6.0.0"
},
"engines": {
- "node": ">=6.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ },
+ "peerDependencies": {
+ "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
},
"peerDependenciesMeta": {
- "supports-color": {
+ "node-notifier": {
"optional": true
}
}
},
- "node_modules/decompress": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz",
- "integrity": "sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==",
- "dev": true,
+ "node_modules/@jest/core/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dependencies": {
- "decompress-tar": "^4.0.0",
- "decompress-tarbz2": "^4.0.0",
- "decompress-targz": "^4.0.0",
- "decompress-unzip": "^4.0.1",
- "graceful-fs": "^4.1.10",
- "make-dir": "^1.0.0",
- "pify": "^2.3.0",
- "strip-dirs": "^2.0.0"
+ "color-convert": "^2.0.1"
},
"engines": {
- "node": ">=4"
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/decompress-response": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
- "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==",
- "dev": true,
+ "node_modules/@jest/core/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": {
- "mimic-response": "^1.0.0"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/decompress-tar": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz",
- "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==",
- "dev": true,
+ "node_modules/@jest/core/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dependencies": {
- "file-type": "^5.2.0",
- "is-stream": "^1.1.0",
- "tar-stream": "^1.5.2"
+ "color-name": "~1.1.4"
},
"engines": {
- "node": ">=4"
+ "node": ">=7.0.0"
}
},
- "node_modules/decompress-tar/node_modules/is-stream": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
- "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
- "dev": true,
+ "node_modules/@jest/core/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "node_modules/@jest/core/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": ">=0.10.0"
+ "node": ">=8"
}
},
- "node_modules/decompress-tarbz2": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz",
- "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==",
- "dev": true,
+ "node_modules/@jest/core/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": {
- "decompress-tar": "^4.1.0",
- "file-type": "^6.1.0",
- "is-stream": "^1.1.0",
- "seek-bzip": "^1.0.5",
- "unbzip2-stream": "^1.0.9"
+ "has-flag": "^4.0.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=8"
}
},
- "node_modules/decompress-tarbz2/node_modules/file-type": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz",
- "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==",
- "dev": true,
+ "node_modules/@jest/create-cache-key-function": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.7.0.tgz",
+ "integrity": "sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==",
+ "dependencies": {
+ "@jest/types": "^29.6.3"
+ },
"engines": {
- "node": ">=4"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "node_modules/decompress-tarbz2/node_modules/is-stream": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
- "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
- "dev": true,
+ "node_modules/@jest/environment": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz",
+ "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==",
+ "dependencies": {
+ "@jest/fake-timers": "^29.7.0",
+ "@jest/types": "^29.6.3",
+ "@types/node": "*",
+ "jest-mock": "^29.7.0"
+ },
"engines": {
- "node": ">=0.10.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "node_modules/decompress-targz": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz",
- "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==",
- "dev": true,
+ "node_modules/@jest/expect": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz",
+ "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==",
"dependencies": {
- "decompress-tar": "^4.1.1",
- "file-type": "^5.2.0",
- "is-stream": "^1.1.0"
+ "expect": "^29.7.0",
+ "jest-snapshot": "^29.7.0"
},
"engines": {
- "node": ">=4"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "node_modules/decompress-targz/node_modules/is-stream": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
- "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
- "dev": true,
+ "node_modules/@jest/expect-utils": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz",
+ "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==",
+ "dependencies": {
+ "jest-get-type": "^29.6.3"
+ },
"engines": {
- "node": ">=0.10.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "node_modules/decompress-unzip": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz",
- "integrity": "sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw==",
- "dev": true,
+ "node_modules/@jest/fake-timers": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz",
+ "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==",
"dependencies": {
- "file-type": "^3.8.0",
- "get-stream": "^2.2.0",
- "pify": "^2.3.0",
- "yauzl": "^2.4.2"
+ "@jest/types": "^29.6.3",
+ "@sinonjs/fake-timers": "^10.0.2",
+ "@types/node": "*",
+ "jest-message-util": "^29.7.0",
+ "jest-mock": "^29.7.0",
+ "jest-util": "^29.7.0"
},
"engines": {
- "node": ">=4"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "node_modules/decompress-unzip/node_modules/file-type": {
- "version": "3.9.0",
- "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz",
- "integrity": "sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==",
- "dev": true,
+ "node_modules/@jest/globals": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz",
+ "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==",
+ "dependencies": {
+ "@jest/environment": "^29.7.0",
+ "@jest/expect": "^29.7.0",
+ "@jest/types": "^29.6.3",
+ "jest-mock": "^29.7.0"
+ },
"engines": {
- "node": ">=0.10.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "node_modules/decompress-unzip/node_modules/get-stream": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz",
- "integrity": "sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==",
- "dev": true,
+ "node_modules/@jest/reporters": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz",
+ "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==",
"dependencies": {
- "object-assign": "^4.0.1",
- "pinkie-promise": "^2.0.0"
+ "@bcoe/v8-coverage": "^0.2.3",
+ "@jest/console": "^29.7.0",
+ "@jest/test-result": "^29.7.0",
+ "@jest/transform": "^29.7.0",
+ "@jest/types": "^29.6.3",
+ "@jridgewell/trace-mapping": "^0.3.18",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "collect-v8-coverage": "^1.0.0",
+ "exit": "^0.1.2",
+ "glob": "^7.1.3",
+ "graceful-fs": "^4.2.9",
+ "istanbul-lib-coverage": "^3.0.0",
+ "istanbul-lib-instrument": "^6.0.0",
+ "istanbul-lib-report": "^3.0.0",
+ "istanbul-lib-source-maps": "^4.0.0",
+ "istanbul-reports": "^3.1.3",
+ "jest-message-util": "^29.7.0",
+ "jest-util": "^29.7.0",
+ "jest-worker": "^29.7.0",
+ "slash": "^3.0.0",
+ "string-length": "^4.0.1",
+ "strip-ansi": "^6.0.0",
+ "v8-to-istanbul": "^9.0.1"
},
"engines": {
- "node": ">=0.10.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ },
+ "peerDependencies": {
+ "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+ },
+ "peerDependenciesMeta": {
+ "node-notifier": {
+ "optional": true
+ }
}
},
- "node_modules/decompress-unzip/node_modules/pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
- "dev": true,
+ "node_modules/@jest/reporters/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
"engines": {
- "node": ">=0.10.0"
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/decompress/node_modules/make-dir": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
- "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
- "dev": true,
+ "node_modules/@jest/reporters/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": {
- "pify": "^3.0.0"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/decompress/node_modules/make-dir/node_modules/pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
+ "node_modules/@jest/reporters/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@jest/reporters/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "node_modules/@jest/reporters/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/@jest/reporters/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/@jest/schemas": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz",
+ "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==",
+ "dependencies": {
+ "@sinclair/typebox": "^0.27.8"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jest/source-map": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz",
+ "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==",
+ "dependencies": {
+ "@jridgewell/trace-mapping": "^0.3.18",
+ "callsites": "^3.0.0",
+ "graceful-fs": "^4.2.9"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jest/test-result": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz",
+ "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==",
+ "dependencies": {
+ "@jest/console": "^29.7.0",
+ "@jest/types": "^29.6.3",
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "collect-v8-coverage": "^1.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jest/test-sequencer": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz",
+ "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==",
+ "dependencies": {
+ "@jest/test-result": "^29.7.0",
+ "graceful-fs": "^4.2.9",
+ "jest-haste-map": "^29.7.0",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jest/transform": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz",
+ "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==",
+ "dependencies": {
+ "@babel/core": "^7.11.6",
+ "@jest/types": "^29.6.3",
+ "@jridgewell/trace-mapping": "^0.3.18",
+ "babel-plugin-istanbul": "^6.1.1",
+ "chalk": "^4.0.0",
+ "convert-source-map": "^2.0.0",
+ "fast-json-stable-stringify": "^2.1.0",
+ "graceful-fs": "^4.2.9",
+ "jest-haste-map": "^29.7.0",
+ "jest-regex-util": "^29.6.3",
+ "jest-util": "^29.7.0",
+ "micromatch": "^4.0.4",
+ "pirates": "^4.0.4",
+ "slash": "^3.0.0",
+ "write-file-atomic": "^4.0.2"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jest/transform/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@jest/transform/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": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/@jest/transform/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@jest/transform/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "node_modules/@jest/transform/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/@jest/transform/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/@jest/transform/node_modules/write-file-atomic": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz",
+ "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==",
+ "dependencies": {
+ "imurmurhash": "^0.1.4",
+ "signal-exit": "^3.0.7"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@jest/types": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz",
+ "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==",
+ "dependencies": {
+ "@jest/schemas": "^29.6.3",
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^17.0.8",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jest/types/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@jest/types/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": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/@jest/types/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@jest/types/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "node_modules/@jest/types/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/@jest/types/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/@jridgewell/gen-mapping": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
+ "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
+ "dependencies": {
+ "@jridgewell/set-array": "^1.2.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz",
+ "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/set-array": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
+ "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/source-map": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz",
+ "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==",
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.4.15",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
+ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.25",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
+ "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nozbe/simdjson": {
+ "version": "3.1.0-wmelon1",
+ "resolved": "https://registry.npmjs.org/@nozbe/simdjson/-/simdjson-3.1.0-wmelon1.tgz",
+ "integrity": "sha512-PQaHHQyvASrcrfzqkZ4ona43m0UjN81NuTWt6rJkOUePGDjxc8MNp2Q7jcod1CIdTsXJ13wRWeFbquwNfhpIQQ=="
+ },
+ "node_modules/@nozbe/sqlite": {
+ "version": "3.40.1",
+ "resolved": "https://registry.npmjs.org/@nozbe/sqlite/-/sqlite-3.40.1.tgz",
+ "integrity": "sha512-uKJOW4sQi3neCmgKhqLr0IJKlb2y5q2p05U5CEDJrCxSyD2uVYvSdh7IMrPjF4sWtzc/Lnk462M4vde7Dn5NSw=="
+ },
+ "node_modules/@nozbe/watermelondb": {
+ "version": "0.27.1",
+ "resolved": "https://registry.npmjs.org/@nozbe/watermelondb/-/watermelondb-0.27.1.tgz",
+ "integrity": "sha512-41Nlq0FMGkcr2CUgtPRQRVAbA8VYI6fpeGlX4eoiLhoh3nbPIlX4RIcjLIEoyGgkCUSNSnNvXrv0RMIJRl4nZQ==",
+ "dependencies": {
+ "@babel/runtime": "7.21.0",
+ "@nozbe/simdjson": "3.1.0-wmelon1",
+ "@nozbe/sqlite": "3.40.1",
+ "hoist-non-react-statics": "^3.3.2",
+ "lokijs": "npm:@nozbe/lokijs@1.5.12-wmelon6",
+ "rxjs": "^7.8.0",
+ "sql-escape-string": "^1.1.0"
+ }
+ },
+ "node_modules/@nozbe/watermelondb/node_modules/@babel/runtime": {
+ "version": "7.21.0",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz",
+ "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==",
+ "dependencies": {
+ "regenerator-runtime": "^0.13.11"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@nozbe/watermelondb/node_modules/regenerator-runtime": {
+ "version": "0.13.11",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
+ "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="
+ },
+ "node_modules/@npmcli/fs": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz",
+ "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==",
+ "dependencies": {
+ "semver": "^7.3.5"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@npmcli/fs/node_modules/semver": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@pkgjs/parseargs": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
+ "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
+ "optional": true,
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@pkgr/utils": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.2.tgz",
+ "integrity": "sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==",
+ "dev": true,
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "fast-glob": "^3.3.0",
+ "is-glob": "^4.0.3",
+ "open": "^9.1.0",
+ "picocolors": "^1.0.0",
+ "tslib": "^2.6.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/unts"
+ }
+ },
+ "node_modules/@pkgr/utils/node_modules/define-lazy-prop": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz",
+ "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@pkgr/utils/node_modules/open": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/open/-/open-9.1.0.tgz",
+ "integrity": "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==",
+ "dev": true,
+ "dependencies": {
+ "default-browser": "^4.0.0",
+ "define-lazy-prop": "^3.0.0",
+ "is-inside-container": "^1.0.0",
+ "is-wsl": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@radix-ui/react-compose-refs": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.0.tgz",
+ "integrity": "sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-slot": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.1.tgz",
+ "integrity": "sha512-avutXAFL1ehGvAXtPquu0YK5oz6ctS474iM3vNGQIkswrVhdrS52e3uoMQBzZhNRAIE0jBnUyXWNmSjGHhCFcw==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@react-native-async-storage/async-storage": {
+ "version": "1.23.1",
+ "resolved": "https://registry.npmjs.org/@react-native-async-storage/async-storage/-/async-storage-1.23.1.tgz",
+ "integrity": "sha512-Qd2kQ3yi6Y3+AcUlrHxSLlnBvpdCEMVGFlVBneVOjaFaPU61g1huc38g339ysXspwY1QZA2aNhrk/KlHGO+ewA==",
+ "dependencies": {
+ "merge-options": "^3.0.4"
+ },
+ "peerDependencies": {
+ "react-native": "^0.0.0-0 || >=0.60 <1.0"
+ }
+ },
+ "node_modules/@react-native-community/cli": {
+ "version": "13.6.9",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-13.6.9.tgz",
+ "integrity": "sha512-hFJL4cgLPxncJJd/epQ4dHnMg5Jy/7Q56jFvA3MHViuKpzzfTCJCB+pGY54maZbtym53UJON9WTGpM3S81UfjQ==",
+ "dependencies": {
+ "@react-native-community/cli-clean": "13.6.9",
+ "@react-native-community/cli-config": "13.6.9",
+ "@react-native-community/cli-debugger-ui": "13.6.9",
+ "@react-native-community/cli-doctor": "13.6.9",
+ "@react-native-community/cli-hermes": "13.6.9",
+ "@react-native-community/cli-server-api": "13.6.9",
+ "@react-native-community/cli-tools": "13.6.9",
+ "@react-native-community/cli-types": "13.6.9",
+ "chalk": "^4.1.2",
+ "commander": "^9.4.1",
+ "deepmerge": "^4.3.0",
+ "execa": "^5.0.0",
+ "find-up": "^4.1.0",
+ "fs-extra": "^8.1.0",
+ "graceful-fs": "^4.1.3",
+ "prompts": "^2.4.2",
+ "semver": "^7.5.2"
+ },
+ "bin": {
+ "rnc-cli": "build/bin.js"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@react-native-community/cli-clean": {
+ "version": "13.6.9",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-13.6.9.tgz",
+ "integrity": "sha512-7Dj5+4p9JggxuVNOjPbduZBAP1SUgNhLKVw5noBUzT/3ZpUZkDM+RCSwyoyg8xKWoE4OrdUAXwAFlMcFDPKykA==",
+ "dependencies": {
+ "@react-native-community/cli-tools": "13.6.9",
+ "chalk": "^4.1.2",
+ "execa": "^5.0.0",
+ "fast-glob": "^3.3.2"
+ }
+ },
+ "node_modules/@react-native-community/cli-clean/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@react-native-community/cli-clean/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": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/@react-native-community/cli-clean/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@react-native-community/cli-clean/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "node_modules/@react-native-community/cli-clean/node_modules/execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "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"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/@react-native-community/cli-clean/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/@react-native-community/cli-clean/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/@react-native-community/cli-clean/node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native-community/cli-clean/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==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@react-native-community/cli-clean/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==",
+ "dependencies": {
+ "path-key": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli-clean/node_modules/onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "dependencies": {
+ "mimic-fn": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native-community/cli-clean/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/@react-native-community/cli-config": {
+ "version": "13.6.9",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-13.6.9.tgz",
+ "integrity": "sha512-rFfVBcNojcMm+KKHE/xqpqXg8HoKl4EC7bFHUrahMJ+y/tZll55+oX/PGG37rzB8QzP2UbMQ19DYQKC1G7kXeg==",
+ "dependencies": {
+ "@react-native-community/cli-tools": "13.6.9",
+ "chalk": "^4.1.2",
+ "cosmiconfig": "^5.1.0",
+ "deepmerge": "^4.3.0",
+ "fast-glob": "^3.3.2",
+ "joi": "^17.2.1"
+ }
+ },
+ "node_modules/@react-native-community/cli-config/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@react-native-community/cli-config/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": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/@react-native-community/cli-config/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@react-native-community/cli-config/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "node_modules/@react-native-community/cli-config/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/@react-native-community/cli-config/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/@react-native-community/cli-debugger-ui": {
+ "version": "13.6.9",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-13.6.9.tgz",
+ "integrity": "sha512-TkN7IdFmGPPvTpAo3nCAH9uwGCPxWBEAwpqEZDrq0NWllI7Tdie8vDpGdrcuCcKalmhq6OYnkXzeBah7O1Ztpw==",
+ "dependencies": {
+ "serve-static": "^1.13.1"
+ }
+ },
+ "node_modules/@react-native-community/cli-doctor": {
+ "version": "13.6.9",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-13.6.9.tgz",
+ "integrity": "sha512-5quFaLdWFQB+677GXh5dGU9I5eg2z6Vg4jOX9vKnc9IffwyIFAyJfCZHrxLSRPDGNXD7biDQUdoezXYGwb6P/A==",
+ "dependencies": {
+ "@react-native-community/cli-config": "13.6.9",
+ "@react-native-community/cli-platform-android": "13.6.9",
+ "@react-native-community/cli-platform-apple": "13.6.9",
+ "@react-native-community/cli-platform-ios": "13.6.9",
+ "@react-native-community/cli-tools": "13.6.9",
+ "chalk": "^4.1.2",
+ "command-exists": "^1.2.8",
+ "deepmerge": "^4.3.0",
+ "envinfo": "^7.10.0",
+ "execa": "^5.0.0",
+ "hermes-profile-transformer": "^0.0.6",
+ "node-stream-zip": "^1.9.1",
+ "ora": "^5.4.1",
+ "semver": "^7.5.2",
+ "strip-ansi": "^5.2.0",
+ "wcwidth": "^1.0.1",
+ "yaml": "^2.2.1"
+ }
+ },
+ "node_modules/@react-native-community/cli-doctor/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@react-native-community/cli-doctor/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": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/@react-native-community/cli-doctor/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==",
+ "dependencies": {
+ "restore-cursor": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli-doctor/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@react-native-community/cli-doctor/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "node_modules/@react-native-community/cli-doctor/node_modules/execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "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"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/@react-native-community/cli-doctor/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/@react-native-community/cli-doctor/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/@react-native-community/cli-doctor/node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native-community/cli-doctor/node_modules/log-symbols": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
+ "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
+ "dependencies": {
+ "chalk": "^4.1.0",
+ "is-unicode-supported": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native-community/cli-doctor/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==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@react-native-community/cli-doctor/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==",
+ "dependencies": {
+ "path-key": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli-doctor/node_modules/onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "dependencies": {
+ "mimic-fn": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native-community/cli-doctor/node_modules/ora": {
+ "version": "5.4.1",
+ "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz",
+ "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==",
+ "dependencies": {
+ "bl": "^4.1.0",
+ "chalk": "^4.1.0",
+ "cli-cursor": "^3.1.0",
+ "cli-spinners": "^2.5.0",
+ "is-interactive": "^1.0.0",
+ "is-unicode-supported": "^0.1.0",
+ "log-symbols": "^4.1.0",
+ "strip-ansi": "^6.0.0",
+ "wcwidth": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native-community/cli-doctor/node_modules/ora/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==",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli-doctor/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==",
+ "dependencies": {
+ "onetime": "^5.1.0",
+ "signal-exit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli-doctor/node_modules/semver": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@react-native-community/cli-doctor/node_modules/strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dependencies": {
+ "ansi-regex": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@react-native-community/cli-doctor/node_modules/strip-ansi/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==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@react-native-community/cli-doctor/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/@react-native-community/cli-hermes": {
+ "version": "13.6.9",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-13.6.9.tgz",
+ "integrity": "sha512-GvwiwgvFw4Ws+krg2+gYj8sR3g05evmNjAHkKIKMkDTJjZ8EdyxbkifRUs1ZCq3TMZy2oeblZBXCJVOH4W7ZbA==",
+ "dependencies": {
+ "@react-native-community/cli-platform-android": "13.6.9",
+ "@react-native-community/cli-tools": "13.6.9",
+ "chalk": "^4.1.2",
+ "hermes-profile-transformer": "^0.0.6"
+ }
+ },
+ "node_modules/@react-native-community/cli-hermes/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@react-native-community/cli-hermes/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": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/@react-native-community/cli-hermes/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@react-native-community/cli-hermes/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "node_modules/@react-native-community/cli-hermes/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/@react-native-community/cli-hermes/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/@react-native-community/cli-platform-android": {
+ "version": "13.6.9",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-13.6.9.tgz",
+ "integrity": "sha512-9KsYGdr08QhdvT3Ht7e8phQB3gDX9Fs427NJe0xnoBh+PDPTI2BD5ks5ttsH8CzEw8/P6H8tJCHq6hf2nxd9cw==",
+ "dependencies": {
+ "@react-native-community/cli-tools": "13.6.9",
+ "chalk": "^4.1.2",
+ "execa": "^5.0.0",
+ "fast-glob": "^3.3.2",
+ "fast-xml-parser": "^4.2.4",
+ "logkitty": "^0.7.1"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-android/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-android/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": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-android/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-android/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "node_modules/@react-native-community/cli-platform-android/node_modules/execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "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"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-android/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/@react-native-community/cli-platform-android/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/@react-native-community/cli-platform-android/node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-android/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==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-android/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==",
+ "dependencies": {
+ "path-key": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-android/node_modules/onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "dependencies": {
+ "mimic-fn": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-android/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/@react-native-community/cli-platform-apple": {
+ "version": "13.6.9",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-apple/-/cli-platform-apple-13.6.9.tgz",
+ "integrity": "sha512-KoeIHfhxMhKXZPXmhQdl6EE+jGKWwoO9jUVWgBvibpVmsNjo7woaG/tfJMEWfWF3najX1EkQAoJWpCDBMYWtlA==",
+ "dependencies": {
+ "@react-native-community/cli-tools": "13.6.9",
+ "chalk": "^4.1.2",
+ "execa": "^5.0.0",
+ "fast-glob": "^3.3.2",
+ "fast-xml-parser": "^4.0.12",
+ "ora": "^5.4.1"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-apple/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-apple/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": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-apple/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==",
+ "dependencies": {
+ "restore-cursor": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-apple/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-apple/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "node_modules/@react-native-community/cli-platform-apple/node_modules/execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "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"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-apple/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/@react-native-community/cli-platform-apple/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/@react-native-community/cli-platform-apple/node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-apple/node_modules/log-symbols": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
+ "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
+ "dependencies": {
+ "chalk": "^4.1.0",
+ "is-unicode-supported": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-apple/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==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-apple/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==",
+ "dependencies": {
+ "path-key": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-apple/node_modules/onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "dependencies": {
+ "mimic-fn": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-apple/node_modules/ora": {
+ "version": "5.4.1",
+ "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz",
+ "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==",
+ "dependencies": {
+ "bl": "^4.1.0",
+ "chalk": "^4.1.0",
+ "cli-cursor": "^3.1.0",
+ "cli-spinners": "^2.5.0",
+ "is-interactive": "^1.0.0",
+ "is-unicode-supported": "^0.1.0",
+ "log-symbols": "^4.1.0",
+ "strip-ansi": "^6.0.0",
+ "wcwidth": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-apple/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==",
+ "dependencies": {
+ "onetime": "^5.1.0",
+ "signal-exit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-apple/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/@react-native-community/cli-platform-ios": {
+ "version": "13.6.9",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-13.6.9.tgz",
+ "integrity": "sha512-CiUcHlGs8vE0CAB4oi1f+dzniqfGuhWPNrDvae2nm8dewlahTBwIcK5CawyGezjcJoeQhjBflh9vloska+nlnw==",
+ "dependencies": {
+ "@react-native-community/cli-platform-apple": "13.6.9"
+ }
+ },
+ "node_modules/@react-native-community/cli-server-api": {
+ "version": "13.6.9",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-13.6.9.tgz",
+ "integrity": "sha512-W8FSlCPWymO+tlQfM3E0JmM8Oei5HZsIk5S0COOl0MRi8h0NmHI4WSTF2GCfbFZkcr2VI/fRsocoN8Au4EZAug==",
+ "dependencies": {
+ "@react-native-community/cli-debugger-ui": "13.6.9",
+ "@react-native-community/cli-tools": "13.6.9",
+ "compression": "^1.7.1",
+ "connect": "^3.6.5",
+ "errorhandler": "^1.5.1",
+ "nocache": "^3.0.1",
+ "pretty-format": "^26.6.2",
+ "serve-static": "^1.13.1",
+ "ws": "^6.2.2"
+ }
+ },
+ "node_modules/@react-native-community/cli-server-api/node_modules/@jest/types": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz",
+ "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==",
+ "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"
+ }
+ },
+ "node_modules/@react-native-community/cli-server-api/node_modules/@types/yargs": {
+ "version": "15.0.19",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz",
+ "integrity": "sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==",
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/@react-native-community/cli-server-api/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@react-native-community/cli-server-api/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": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/@react-native-community/cli-server-api/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@react-native-community/cli-server-api/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "node_modules/@react-native-community/cli-server-api/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/@react-native-community/cli-server-api/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==",
+ "dependencies": {
+ "@jest/types": "^26.6.2",
+ "ansi-regex": "^5.0.0",
+ "ansi-styles": "^4.0.0",
+ "react-is": "^17.0.1"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@react-native-community/cli-server-api/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-native-community/cli-server-api/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/@react-native-community/cli-server-api/node_modules/ws": {
+ "version": "6.2.3",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz",
+ "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==",
+ "dependencies": {
+ "async-limiter": "~1.0.0"
+ }
+ },
+ "node_modules/@react-native-community/cli-tools": {
+ "version": "13.6.9",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-13.6.9.tgz",
+ "integrity": "sha512-OXaSjoN0mZVw3nrAwcY1PC0uMfyTd9fz7Cy06dh+EJc+h0wikABsVRzV8cIOPrVV+PPEEXE0DBrH20T2puZzgQ==",
+ "dependencies": {
+ "appdirsjs": "^1.2.4",
+ "chalk": "^4.1.2",
+ "execa": "^5.0.0",
+ "find-up": "^5.0.0",
+ "mime": "^2.4.1",
+ "node-fetch": "^2.6.0",
+ "open": "^6.2.0",
+ "ora": "^5.4.1",
+ "semver": "^7.5.2",
+ "shell-quote": "^1.7.3",
+ "sudo-prompt": "^9.0.0"
+ }
+ },
+ "node_modules/@react-native-community/cli-tools/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@react-native-community/cli-tools/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": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/@react-native-community/cli-tools/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==",
+ "dependencies": {
+ "restore-cursor": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli-tools/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@react-native-community/cli-tools/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "node_modules/@react-native-community/cli-tools/node_modules/execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "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"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/@react-native-community/cli-tools/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/@react-native-community/cli-tools/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/@react-native-community/cli-tools/node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native-community/cli-tools/node_modules/is-wsl": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
+ "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@react-native-community/cli-tools/node_modules/log-symbols": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
+ "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
+ "dependencies": {
+ "chalk": "^4.1.0",
+ "is-unicode-supported": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native-community/cli-tools/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==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@react-native-community/cli-tools/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==",
+ "dependencies": {
+ "path-key": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli-tools/node_modules/onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "dependencies": {
+ "mimic-fn": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native-community/cli-tools/node_modules/open": {
+ "version": "6.4.0",
+ "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz",
+ "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==",
+ "dependencies": {
+ "is-wsl": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli-tools/node_modules/ora": {
+ "version": "5.4.1",
+ "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz",
+ "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==",
+ "dependencies": {
+ "bl": "^4.1.0",
+ "chalk": "^4.1.0",
+ "cli-cursor": "^3.1.0",
+ "cli-spinners": "^2.5.0",
+ "is-interactive": "^1.0.0",
+ "is-unicode-supported": "^0.1.0",
+ "log-symbols": "^4.1.0",
+ "strip-ansi": "^6.0.0",
+ "wcwidth": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native-community/cli-tools/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==",
+ "dependencies": {
+ "onetime": "^5.1.0",
+ "signal-exit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli-tools/node_modules/semver": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@react-native-community/cli-tools/node_modules/sudo-prompt": {
+ "version": "9.2.1",
+ "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz",
+ "integrity": "sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw=="
+ },
+ "node_modules/@react-native-community/cli-tools/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/@react-native-community/cli-types": {
+ "version": "13.6.9",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-13.6.9.tgz",
+ "integrity": "sha512-RLxDppvRxXfs3hxceW/mShi+6o5yS+kFPnPqZTaMKKR5aSg7LwDpLQW4K2D22irEG8e6RKDkZUeH9aL3vO2O0w==",
+ "dependencies": {
+ "joi": "^17.2.1"
+ }
+ },
+ "node_modules/@react-native-community/cli/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@react-native-community/cli/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": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/@react-native-community/cli/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@react-native-community/cli/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "node_modules/@react-native-community/cli/node_modules/commander": {
+ "version": "9.5.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz",
+ "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==",
+ "engines": {
+ "node": "^12.20.0 || >=14"
+ }
+ },
+ "node_modules/@react-native-community/cli/node_modules/execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "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"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/@react-native-community/cli/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==",
+ "dependencies": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli/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/@react-native-community/cli/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/@react-native-community/cli/node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native-community/cli/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==",
+ "dependencies": {
+ "p-locate": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli/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==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@react-native-community/cli/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==",
+ "dependencies": {
+ "path-key": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli/node_modules/onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "dependencies": {
+ "mimic-fn": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native-community/cli/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==",
+ "dependencies": {
+ "p-try": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native-community/cli/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==",
+ "dependencies": {
+ "p-limit": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli/node_modules/semver": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@react-native-community/cli/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/@react-native/assets-registry": {
+ "version": "0.74.87",
+ "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.74.87.tgz",
+ "integrity": "sha512-1XmRhqQchN+pXPKEKYdpJlwESxVomJOxtEnIkbo7GAlaN2sym84fHEGDXAjLilih5GVPpcpSmFzTy8jx3LtaFg==",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@react-native/babel-plugin-codegen": {
+ "version": "0.74.87",
+ "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.74.87.tgz",
+ "integrity": "sha512-+vJYpMnENFrwtgvDfUj+CtVJRJuUnzAUYT0/Pb68Sq9RfcZ5xdcCuUgyf7JO+akW2VTBoJY427wkcxU30qrWWw==",
+ "dependencies": {
+ "@react-native/codegen": "0.74.87"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@react-native/babel-preset": {
+ "version": "0.74.87",
+ "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.74.87.tgz",
+ "integrity": "sha512-hyKpfqzN2nxZmYYJ0tQIHG99FQO0OWXp/gVggAfEUgiT+yNKas1C60LuofUsK7cd+2o9jrpqgqW4WzEDZoBlTg==",
+ "dependencies": {
+ "@babel/core": "^7.20.0",
+ "@babel/plugin-proposal-async-generator-functions": "^7.0.0",
+ "@babel/plugin-proposal-class-properties": "^7.18.0",
+ "@babel/plugin-proposal-export-default-from": "^7.0.0",
+ "@babel/plugin-proposal-logical-assignment-operators": "^7.18.0",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.0",
+ "@babel/plugin-proposal-numeric-separator": "^7.0.0",
+ "@babel/plugin-proposal-object-rest-spread": "^7.20.0",
+ "@babel/plugin-proposal-optional-catch-binding": "^7.0.0",
+ "@babel/plugin-proposal-optional-chaining": "^7.20.0",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.0",
+ "@babel/plugin-syntax-export-default-from": "^7.0.0",
+ "@babel/plugin-syntax-flow": "^7.18.0",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0",
+ "@babel/plugin-syntax-optional-chaining": "^7.0.0",
+ "@babel/plugin-transform-arrow-functions": "^7.0.0",
+ "@babel/plugin-transform-async-to-generator": "^7.20.0",
+ "@babel/plugin-transform-block-scoping": "^7.0.0",
+ "@babel/plugin-transform-classes": "^7.0.0",
+ "@babel/plugin-transform-computed-properties": "^7.0.0",
+ "@babel/plugin-transform-destructuring": "^7.20.0",
+ "@babel/plugin-transform-flow-strip-types": "^7.20.0",
+ "@babel/plugin-transform-function-name": "^7.0.0",
+ "@babel/plugin-transform-literals": "^7.0.0",
+ "@babel/plugin-transform-modules-commonjs": "^7.0.0",
+ "@babel/plugin-transform-named-capturing-groups-regex": "^7.0.0",
+ "@babel/plugin-transform-parameters": "^7.0.0",
+ "@babel/plugin-transform-private-methods": "^7.22.5",
+ "@babel/plugin-transform-private-property-in-object": "^7.22.11",
+ "@babel/plugin-transform-react-display-name": "^7.0.0",
+ "@babel/plugin-transform-react-jsx": "^7.0.0",
+ "@babel/plugin-transform-react-jsx-self": "^7.0.0",
+ "@babel/plugin-transform-react-jsx-source": "^7.0.0",
+ "@babel/plugin-transform-runtime": "^7.0.0",
+ "@babel/plugin-transform-shorthand-properties": "^7.0.0",
+ "@babel/plugin-transform-spread": "^7.0.0",
+ "@babel/plugin-transform-sticky-regex": "^7.0.0",
+ "@babel/plugin-transform-typescript": "^7.5.0",
+ "@babel/plugin-transform-unicode-regex": "^7.0.0",
+ "@babel/template": "^7.0.0",
+ "@react-native/babel-plugin-codegen": "0.74.87",
+ "babel-plugin-transform-flow-enums": "^0.0.2",
+ "react-refresh": "^0.14.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@babel/core": "*"
+ }
+ },
+ "node_modules/@react-native/codegen": {
+ "version": "0.74.87",
+ "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.74.87.tgz",
+ "integrity": "sha512-GMSYDiD+86zLKgMMgz9z0k6FxmRn+z6cimYZKkucW4soGbxWsbjUAZoZ56sJwt2FJ3XVRgXCrnOCgXoH/Bkhcg==",
+ "dependencies": {
+ "@babel/parser": "^7.20.0",
+ "glob": "^7.1.1",
+ "hermes-parser": "0.19.1",
+ "invariant": "^2.2.4",
+ "jscodeshift": "^0.14.0",
+ "mkdirp": "^0.5.1",
+ "nullthrows": "^1.1.1"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@babel/preset-env": "^7.1.6"
+ }
+ },
+ "node_modules/@react-native/community-cli-plugin": {
+ "version": "0.74.87",
+ "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.74.87.tgz",
+ "integrity": "sha512-EgJG9lSr8x3X67dHQKQvU6EkO+3ksVlJHYIVv6U/AmW9dN80BEFxgYbSJ7icXS4wri7m4kHdgeq2PQ7/3vvrTQ==",
+ "dependencies": {
+ "@react-native-community/cli-server-api": "13.6.9",
+ "@react-native-community/cli-tools": "13.6.9",
+ "@react-native/dev-middleware": "0.74.87",
+ "@react-native/metro-babel-transformer": "0.74.87",
+ "chalk": "^4.0.0",
+ "execa": "^5.1.1",
+ "metro": "^0.80.3",
+ "metro-config": "^0.80.3",
+ "metro-core": "^0.80.3",
+ "node-fetch": "^2.2.0",
+ "querystring": "^0.2.1",
+ "readline": "^1.3.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@react-native/community-cli-plugin/node_modules/@react-native/debugger-frontend": {
+ "version": "0.74.87",
+ "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.74.87.tgz",
+ "integrity": "sha512-MN95DJLYTv4EqJc+9JajA3AJZSBYJz2QEJ3uWlHrOky2vKrbbRVaW1ityTmaZa2OXIvNc6CZwSRSE7xCoHbXhQ==",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@react-native/community-cli-plugin/node_modules/@react-native/dev-middleware": {
+ "version": "0.74.87",
+ "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.74.87.tgz",
+ "integrity": "sha512-7TmZ3hTHwooYgIHqc/z87BMe1ryrIqAUi+AF7vsD+EHCGxHFdMjSpf1BZ2SUPXuLnF2cTiTfV2RwhbPzx0tYIA==",
+ "dependencies": {
+ "@isaacs/ttlcache": "^1.4.1",
+ "@react-native/debugger-frontend": "0.74.87",
+ "@rnx-kit/chromium-edge-launcher": "^1.0.0",
+ "chrome-launcher": "^0.15.2",
+ "connect": "^3.6.5",
+ "debug": "^2.2.0",
+ "node-fetch": "^2.2.0",
+ "nullthrows": "^1.1.1",
+ "open": "^7.0.3",
+ "selfsigned": "^2.4.1",
+ "serve-static": "^1.13.1",
+ "temp-dir": "^2.0.0",
+ "ws": "^6.2.2"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@react-native/community-cli-plugin/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@react-native/community-cli-plugin/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": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/@react-native/community-cli-plugin/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@react-native/community-cli-plugin/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "node_modules/@react-native/community-cli-plugin/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/@react-native/community-cli-plugin/node_modules/execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "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"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/@react-native/community-cli-plugin/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/@react-native/community-cli-plugin/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/@react-native/community-cli-plugin/node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native/community-cli-plugin/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==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@react-native/community-cli-plugin/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ },
+ "node_modules/@react-native/community-cli-plugin/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==",
+ "dependencies": {
+ "path-key": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native/community-cli-plugin/node_modules/onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "dependencies": {
+ "mimic-fn": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native/community-cli-plugin/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==",
+ "dependencies": {
+ "is-docker": "^2.0.0",
+ "is-wsl": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native/community-cli-plugin/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/@react-native/community-cli-plugin/node_modules/ws": {
+ "version": "6.2.3",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz",
+ "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==",
+ "dependencies": {
+ "async-limiter": "~1.0.0"
+ }
+ },
+ "node_modules/@react-native/debugger-frontend": {
+ "version": "0.74.85",
+ "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.74.85.tgz",
+ "integrity": "sha512-gUIhhpsYLUTYWlWw4vGztyHaX/kNlgVspSvKe2XaPA7o3jYKUoNLc3Ov7u70u/MBWfKdcEffWq44eSe3j3s5JQ==",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@react-native/dev-middleware": {
+ "version": "0.74.85",
+ "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.74.85.tgz",
+ "integrity": "sha512-BRmgCK5vnMmHaKRO+h8PKJmHHH3E6JFuerrcfE3wG2eZ1bcSr+QTu8DAlpxsDWvJvHpCi8tRJGauxd+Ssj/c7w==",
+ "dependencies": {
+ "@isaacs/ttlcache": "^1.4.1",
+ "@react-native/debugger-frontend": "0.74.85",
+ "@rnx-kit/chromium-edge-launcher": "^1.0.0",
+ "chrome-launcher": "^0.15.2",
+ "connect": "^3.6.5",
+ "debug": "^2.2.0",
+ "node-fetch": "^2.2.0",
+ "nullthrows": "^1.1.1",
+ "open": "^7.0.3",
+ "selfsigned": "^2.4.1",
+ "serve-static": "^1.13.1",
+ "temp-dir": "^2.0.0",
+ "ws": "^6.2.2"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@react-native/dev-middleware/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/@react-native/dev-middleware/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ },
+ "node_modules/@react-native/dev-middleware/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==",
+ "dependencies": {
+ "is-docker": "^2.0.0",
+ "is-wsl": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native/dev-middleware/node_modules/ws": {
+ "version": "6.2.3",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz",
+ "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==",
+ "dependencies": {
+ "async-limiter": "~1.0.0"
+ }
+ },
+ "node_modules/@react-native/gradle-plugin": {
+ "version": "0.74.87",
+ "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.74.87.tgz",
+ "integrity": "sha512-T+VX0N1qP+U9V4oAtn7FTX7pfsoVkd1ocyw9swYXgJqU2fK7hC9famW7b3s3ZiufPGPr1VPJe2TVGtSopBjL6A==",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@react-native/js-polyfills": {
+ "version": "0.74.87",
+ "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.74.87.tgz",
+ "integrity": "sha512-M5Evdn76CuVEF0GsaXiGi95CBZ4IWubHqwXxV9vG9CC9kq0PSkoM2Pn7Lx7dgyp4vT7ccJ8a3IwHbe+5KJRnpw==",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@react-native/metro-babel-transformer": {
+ "version": "0.74.87",
+ "resolved": "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.74.87.tgz",
+ "integrity": "sha512-UsJCO24sNax2NSPBmV1zLEVVNkS88kcgAiYrZHtYSwSjpl4WZ656tIeedBfiySdJ94Hr3kQmBYLipV5zk0NI1A==",
+ "dependencies": {
+ "@babel/core": "^7.20.0",
+ "@react-native/babel-preset": "0.74.87",
+ "hermes-parser": "0.19.1",
+ "nullthrows": "^1.1.1"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@babel/core": "*"
+ }
+ },
+ "node_modules/@react-native/normalize-color": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@react-native/normalize-color/-/normalize-color-2.1.0.tgz",
+ "integrity": "sha512-Z1jQI2NpdFJCVgpY+8Dq/Bt3d+YUi1928Q+/CZm/oh66fzM0RUl54vvuXlPJKybH4pdCZey1eDTPaLHkMPNgWA=="
+ },
+ "node_modules/@react-native/normalize-colors": {
+ "version": "0.74.84",
+ "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.74.84.tgz",
+ "integrity": "sha512-Y5W6x8cC5RuakUcTVUFNAIhUZ/tYpuqHZlRBoAuakrTwVuoNHXfQki8lj1KsYU7rW6e3VWgdEx33AfOQpdNp6A=="
+ },
+ "node_modules/@react-native/virtualized-lists": {
+ "version": "0.74.87",
+ "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.74.87.tgz",
+ "integrity": "sha512-lsGxoFMb0lyK/MiplNKJpD+A1EoEUumkLrCjH4Ht+ZlG8S0BfCxmskLZ6qXn3BiDSkLjfjI/qyZ3pnxNBvkXpQ==",
+ "dependencies": {
+ "invariant": "^2.2.4",
+ "nullthrows": "^1.1.1"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/react": "^18.2.6",
+ "react": "*",
+ "react-native": "*"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@react-navigation/bottom-tabs": {
+ "version": "6.5.11",
+ "resolved": "https://registry.npmjs.org/@react-navigation/bottom-tabs/-/bottom-tabs-6.5.11.tgz",
+ "integrity": "sha512-CBN/NOdxnMvmjw+AJQI1kltOYaClTZmGec5pQ3ZNTPX86ytbIOylDIITKMfTgHZcIEFQDymx1SHeS++PIL3Szw==",
+ "dependencies": {
+ "@react-navigation/elements": "^1.3.21",
+ "color": "^4.2.3",
+ "warn-once": "^0.1.0"
+ },
+ "peerDependencies": {
+ "@react-navigation/native": "^6.0.0",
+ "react": "*",
+ "react-native": "*",
+ "react-native-safe-area-context": ">= 3.0.0",
+ "react-native-screens": ">= 3.0.0"
+ }
+ },
+ "node_modules/@react-navigation/core": {
+ "version": "6.4.10",
+ "resolved": "https://registry.npmjs.org/@react-navigation/core/-/core-6.4.10.tgz",
+ "integrity": "sha512-oYhqxETRHNHKsipm/BtGL0LI43Hs2VSFoWMbBdHK9OqgQPjTVUitslgLcPpo4zApCcmBWoOLX2qPxhsBda644A==",
+ "dependencies": {
+ "@react-navigation/routers": "^6.1.9",
+ "escape-string-regexp": "^4.0.0",
+ "nanoid": "^3.1.23",
+ "query-string": "^7.1.3",
+ "react-is": "^16.13.0",
+ "use-latest-callback": "^0.1.7"
+ },
+ "peerDependencies": {
+ "react": "*"
+ }
+ },
+ "node_modules/@react-navigation/core/node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-navigation/elements": {
+ "version": "1.3.21",
+ "resolved": "https://registry.npmjs.org/@react-navigation/elements/-/elements-1.3.21.tgz",
+ "integrity": "sha512-eyS2C6McNR8ihUoYfc166O1D8VYVh9KIl0UQPI8/ZJVsStlfSTgeEEh+WXge6+7SFPnZ4ewzEJdSAHH+jzcEfg==",
+ "peerDependencies": {
+ "@react-navigation/native": "^6.0.0",
+ "react": "*",
+ "react-native": "*",
+ "react-native-safe-area-context": ">= 3.0.0"
+ }
+ },
+ "node_modules/@react-navigation/native": {
+ "version": "6.1.9",
+ "resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-6.1.9.tgz",
+ "integrity": "sha512-AMuJDpwXE7UlfyhIXaUCCynXmv69Kb8NzKgKJO7v0k0L+u6xUTbt6xvshmJ79vsvaFyaEH9Jg5FMzek5/S5qNw==",
+ "dependencies": {
+ "@react-navigation/core": "^6.4.10",
+ "escape-string-regexp": "^4.0.0",
+ "fast-deep-equal": "^3.1.3",
+ "nanoid": "^3.1.23"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "react-native": "*"
+ }
+ },
+ "node_modules/@react-navigation/native-stack": {
+ "version": "6.9.16",
+ "resolved": "https://registry.npmjs.org/@react-navigation/native-stack/-/native-stack-6.9.16.tgz",
+ "integrity": "sha512-SrmBGr5YvRxDtdTacOkA/wvqwpt9kt+AsYpmt82hKMPKpu0v98WONedTXDzi6whhY3jeT2GZkwF8hyrJ+wDbTA==",
+ "dependencies": {
+ "@react-navigation/elements": "^1.3.21",
+ "warn-once": "^0.1.0"
+ },
+ "peerDependencies": {
+ "@react-navigation/native": "^6.0.0",
+ "react": "*",
+ "react-native": "*",
+ "react-native-safe-area-context": ">= 3.0.0",
+ "react-native-screens": ">= 3.0.0"
+ }
+ },
+ "node_modules/@react-navigation/native/node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-navigation/routers": {
+ "version": "6.1.9",
+ "resolved": "https://registry.npmjs.org/@react-navigation/routers/-/routers-6.1.9.tgz",
+ "integrity": "sha512-lTM8gSFHSfkJvQkxacGM6VJtBt61ip2XO54aNfswD+KMw6eeZ4oehl7m0me3CR9hnDE4+60iAZR8sAhvCiI3NA==",
+ "dependencies": {
+ "nanoid": "^3.1.23"
+ }
+ },
+ "node_modules/@remix-run/node": {
+ "version": "2.11.2",
+ "resolved": "https://registry.npmjs.org/@remix-run/node/-/node-2.11.2.tgz",
+ "integrity": "sha512-gRNFM61EOYWNmYgf+pvBt6MrirWlkDz1G6RQsJNowtRqbYoy05AdDe5HiHGF5w8ZMAZVeXnZiwbL0Nt7ykYBCA==",
+ "dependencies": {
+ "@remix-run/server-runtime": "2.11.2",
+ "@remix-run/web-fetch": "^4.4.2",
+ "@web3-storage/multipart-parser": "^1.0.0",
+ "cookie-signature": "^1.1.0",
+ "source-map-support": "^0.5.21",
+ "stream-slice": "^0.1.2",
+ "undici": "^6.11.1"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "typescript": "^5.1.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@remix-run/node/node_modules/cookie-signature": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.1.tgz",
+ "integrity": "sha512-78KWk9T26NhzXtuL26cIJ8/qNHANyJ/ZYrmEXFzUmhZdjpBv+DlWlOANRTGBt48YcyslsLrj0bMLFTmXvLRCOw==",
+ "engines": {
+ "node": ">=6.6.0"
+ }
+ },
+ "node_modules/@remix-run/node/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==",
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
+ "node_modules/@remix-run/router": {
+ "version": "1.19.1",
+ "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.19.1.tgz",
+ "integrity": "sha512-S45oynt/WH19bHbIXjtli6QmwNYvaz+vtnubvNpNDvUOoA/OWh6j1OikIP3G+v5GHdxyC6EXoChG3HgYGEUfcg==",
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@remix-run/server-runtime": {
+ "version": "2.11.2",
+ "resolved": "https://registry.npmjs.org/@remix-run/server-runtime/-/server-runtime-2.11.2.tgz",
+ "integrity": "sha512-abG6ENj0X3eHqDxqO2thWM2NSEiPnqyt58z1BbiQCv+t8g0Zuqd5QHbB4wzdNvfS0vKhg+jJiigcJneAc4sZzw==",
+ "dependencies": {
+ "@remix-run/router": "1.19.1",
+ "@types/cookie": "^0.6.0",
+ "@web3-storage/multipart-parser": "^1.0.0",
+ "cookie": "^0.6.0",
+ "set-cookie-parser": "^2.4.8",
+ "source-map": "^0.7.3",
+ "turbo-stream": "2.3.0"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "typescript": "^5.1.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@remix-run/server-runtime/node_modules/cookie": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
+ "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/@remix-run/server-runtime/node_modules/source-map": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
+ "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@remix-run/web-blob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@remix-run/web-blob/-/web-blob-3.1.0.tgz",
+ "integrity": "sha512-owGzFLbqPH9PlKb8KvpNJ0NO74HWE2euAn61eEiyCXX/oteoVzTVSN8mpLgDjaxBf2btj5/nUllSUgpyd6IH6g==",
+ "dependencies": {
+ "@remix-run/web-stream": "^1.1.0",
+ "web-encoding": "1.1.5"
+ }
+ },
+ "node_modules/@remix-run/web-fetch": {
+ "version": "4.4.2",
+ "resolved": "https://registry.npmjs.org/@remix-run/web-fetch/-/web-fetch-4.4.2.tgz",
+ "integrity": "sha512-jgKfzA713/4kAW/oZ4bC3MoLWyjModOVDjFPNseVqcJKSafgIscrYL9G50SurEYLswPuoU3HzSbO0jQCMYWHhA==",
+ "dependencies": {
+ "@remix-run/web-blob": "^3.1.0",
+ "@remix-run/web-file": "^3.1.0",
+ "@remix-run/web-form-data": "^3.1.0",
+ "@remix-run/web-stream": "^1.1.0",
+ "@web3-storage/multipart-parser": "^1.0.0",
+ "abort-controller": "^3.0.0",
+ "data-uri-to-buffer": "^3.0.1",
+ "mrmime": "^1.0.0"
+ },
+ "engines": {
+ "node": "^10.17 || >=12.3"
+ }
+ },
+ "node_modules/@remix-run/web-file": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@remix-run/web-file/-/web-file-3.1.0.tgz",
+ "integrity": "sha512-dW2MNGwoiEYhlspOAXFBasmLeYshyAyhIdrlXBi06Duex5tDr3ut2LFKVj7tyHLmn8nnNwFf1BjNbkQpygC2aQ==",
+ "dependencies": {
+ "@remix-run/web-blob": "^3.1.0"
+ }
+ },
+ "node_modules/@remix-run/web-form-data": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@remix-run/web-form-data/-/web-form-data-3.1.0.tgz",
+ "integrity": "sha512-NdeohLMdrb+pHxMQ/Geuzdp0eqPbea+Ieo8M8Jx2lGC6TBHsgHzYcBvr0LyPdPVycNRDEpWpiDdCOdCryo3f9A==",
+ "dependencies": {
+ "web-encoding": "1.1.5"
+ }
+ },
+ "node_modules/@remix-run/web-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@remix-run/web-stream/-/web-stream-1.1.0.tgz",
+ "integrity": "sha512-KRJtwrjRV5Bb+pM7zxcTJkhIqWWSy+MYsIxHK+0m5atcznsf15YwUBWHWulZerV2+vvHH1Lp1DD7pw6qKW8SgA==",
+ "dependencies": {
+ "web-streams-polyfill": "^3.1.1"
+ }
+ },
+ "node_modules/@rnx-kit/chromium-edge-launcher": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@rnx-kit/chromium-edge-launcher/-/chromium-edge-launcher-1.0.0.tgz",
+ "integrity": "sha512-lzD84av1ZQhYUS+jsGqJiCMaJO2dn9u+RTT9n9q6D3SaKVwWqv+7AoRKqBu19bkwyE+iFRl1ymr40QS90jVFYg==",
+ "dependencies": {
+ "@types/node": "^18.0.0",
+ "escape-string-regexp": "^4.0.0",
+ "is-wsl": "^2.2.0",
+ "lighthouse-logger": "^1.0.0",
+ "mkdirp": "^1.0.4",
+ "rimraf": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=14.15"
+ }
+ },
+ "node_modules/@rnx-kit/chromium-edge-launcher/node_modules/@types/node": {
+ "version": "18.19.44",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.44.tgz",
+ "integrity": "sha512-ZsbGerYg72WMXUIE9fYxtvfzLEuq6q8mKERdWFnqTmOvudMxnz+CBNRoOwJ2kNpFOncrKjT1hZwxjlFgQ9qvQA==",
+ "dependencies": {
+ "undici-types": "~5.26.4"
+ }
+ },
+ "node_modules/@rnx-kit/chromium-edge-launcher/node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@rnx-kit/chromium-edge-launcher/node_modules/mkdirp": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@segment/loosely-validate-event": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@segment/loosely-validate-event/-/loosely-validate-event-2.0.0.tgz",
+ "integrity": "sha512-ZMCSfztDBqwotkl848ODgVcAmN4OItEWDCkshcKz0/W6gGSQayuuCtWV/MlodFivAZD793d6UgANd6wCXUfrIw==",
+ "dependencies": {
+ "component-type": "^1.2.1",
+ "join-component": "^1.1.0"
+ }
+ },
+ "node_modules/@shopify/flash-list": {
+ "version": "1.6.4",
+ "resolved": "https://registry.npmjs.org/@shopify/flash-list/-/flash-list-1.6.4.tgz",
+ "integrity": "sha512-M2momcnY7swsvmpHIFDVbdOaFw4aQocJXA/lFP0Gpz+alQjFylqVKvszxl4atYO2SNbjxlb2L6hEP9WEcAknGQ==",
+ "dependencies": {
+ "recyclerlistview": "4.2.0",
+ "tslib": "2.4.0"
+ },
+ "peerDependencies": {
+ "@babel/runtime": "*",
+ "react": "*",
+ "react-native": "*"
+ }
+ },
+ "node_modules/@shopify/flash-list/node_modules/tslib": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
+ "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
+ },
+ "node_modules/@sideway/address": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz",
+ "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==",
+ "dependencies": {
+ "@hapi/hoek": "^9.0.0"
+ }
+ },
+ "node_modules/@sideway/formula": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz",
+ "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg=="
+ },
+ "node_modules/@sideway/pinpoint": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz",
+ "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ=="
+ },
+ "node_modules/@sinclair/typebox": {
+ "version": "0.27.8",
+ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz",
+ "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA=="
+ },
+ "node_modules/@sinonjs/commons": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz",
+ "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==",
+ "dependencies": {
+ "type-detect": "4.0.8"
+ }
+ },
+ "node_modules/@sinonjs/fake-timers": {
+ "version": "10.3.0",
+ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz",
+ "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==",
+ "dependencies": {
+ "@sinonjs/commons": "^3.0.0"
+ }
+ },
+ "node_modules/@testing-library/jest-native": {
+ "version": "5.4.3",
+ "resolved": "https://registry.npmjs.org/@testing-library/jest-native/-/jest-native-5.4.3.tgz",
+ "integrity": "sha512-/sSDGaOuE+PJ1Z9Kp4u7PQScSVVXGud59I/qsBFFJvIbcn4P6yYw6cBnBmbPF+X9aRIsTJRDl6gzw5ZkJNm66w==",
+ "dependencies": {
+ "chalk": "^4.1.2",
+ "jest-diff": "^29.0.1",
+ "jest-matcher-utils": "^29.0.1",
+ "pretty-format": "^29.0.3",
+ "redent": "^3.0.0"
+ },
+ "peerDependencies": {
+ "react": ">=16.0.0",
+ "react-native": ">=0.59",
+ "react-test-renderer": ">=16.0.0"
+ }
+ },
+ "node_modules/@testing-library/jest-native/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@testing-library/jest-native/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": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/@testing-library/jest-native/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@testing-library/jest-native/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "node_modules/@testing-library/jest-native/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/@testing-library/jest-native/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/@testing-library/react-native": {
+ "version": "12.3.2",
+ "resolved": "https://registry.npmjs.org/@testing-library/react-native/-/react-native-12.3.2.tgz",
+ "integrity": "sha512-S8ggbK5A8leTMp9ETiAMjUCMVdy7SHFH7566TLsF06sHEDqOB05ohQU28Qv0EQY6jr8P73qmQXUpWlPwnhJOUQ==",
+ "dev": true,
+ "dependencies": {
+ "jest-matcher-utils": "^29.7.0",
+ "pretty-format": "^29.7.0",
+ "redent": "^3.0.0"
+ },
+ "peerDependencies": {
+ "jest": ">=28.0.0",
+ "react": ">=16.8.0",
+ "react-native": ">=0.59",
+ "react-test-renderer": ">=16.8.0"
+ },
+ "peerDependenciesMeta": {
+ "jest": {
+ "optional": true
+ }
+ }
+ },
+ "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==",
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@types/babel__core": {
+ "version": "7.20.3",
+ "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.3.tgz",
+ "integrity": "sha512-54fjTSeSHwfan8AyHWrKbfBWiEUrNTZsUwPTDSNaaP1QDQIZbeNUg3a59E9D+375MzUw/x1vx2/0F5LBz+AeYA==",
+ "dependencies": {
+ "@babel/parser": "^7.20.7",
+ "@babel/types": "^7.20.7",
+ "@types/babel__generator": "*",
+ "@types/babel__template": "*",
+ "@types/babel__traverse": "*"
+ }
+ },
+ "node_modules/@types/babel__generator": {
+ "version": "7.6.6",
+ "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.6.tgz",
+ "integrity": "sha512-66BXMKb/sUWbMdBNdMvajU7i/44RkrA3z/Yt1c7R5xejt8qh84iU54yUWCtm0QwGJlDcf/gg4zd/x4mpLAlb/w==",
+ "dependencies": {
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "node_modules/@types/babel__template": {
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.3.tgz",
+ "integrity": "sha512-ciwyCLeuRfxboZ4isgdNZi/tkt06m8Tw6uGbBSBgWrnnZGNXiEyM27xc/PjXGQLqlZ6ylbgHMnm7ccF9tCkOeQ==",
+ "dependencies": {
+ "@babel/parser": "^7.1.0",
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "node_modules/@types/babel__traverse": {
+ "version": "7.20.3",
+ "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.3.tgz",
+ "integrity": "sha512-Lsh766rGEFbaxMIDH7Qa+Yha8cMVI3qAK6CHt3OR0YfxOIn5Z54iHiyDRycHrBqeIiqGa20Kpsv1cavfBKkRSw==",
+ "dependencies": {
+ "@babel/types": "^7.20.7"
+ }
+ },
+ "node_modules/@types/cookie": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz",
+ "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA=="
+ },
+ "node_modules/@types/eslint": {
+ "version": "8.44.6",
+ "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.6.tgz",
+ "integrity": "sha512-P6bY56TVmX8y9J87jHNgQh43h6VVU+6H7oN7hgvivV81K2XY8qJZ5vqPy/HdUoVIelii2kChYVzQanlswPWVFw==",
+ "dev": true,
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "@types/estree": "*",
+ "@types/json-schema": "*"
+ }
+ },
+ "node_modules/@types/estree": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.4.tgz",
+ "integrity": "sha512-2JwWnHK9H+wUZNorf2Zr6ves96WHoWDJIftkcxPKsS7Djta6Zu519LarhRNljPXkpsZR2ZMwNCPeW7omW07BJw==",
+ "dev": true,
+ "optional": true,
+ "peer": true
+ },
+ "node_modules/@types/graceful-fs": {
+ "version": "4.1.8",
+ "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.8.tgz",
+ "integrity": "sha512-NhRH7YzWq8WiNKVavKPBmtLYZHxNY19Hh+az28O/phfp68CF45pMFud+ZzJ8ewnxnC5smIdF3dqFeiSUQ5I+pw==",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/hammerjs": {
+ "version": "2.0.43",
+ "resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.43.tgz",
+ "integrity": "sha512-wqxfwHk83RS7+6OpytGdo5wqkqtvx+bGaIs1Rwm5NrtQHUfL4OgWs/5p0OipmjmT+fexePh37Ek+mqIpdNjQKA=="
+ },
+ "node_modules/@types/istanbul-lib-coverage": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz",
+ "integrity": "sha512-zONci81DZYCZjiLe0r6equvZut0b+dBRPBN5kBDjsONnutYNtJMoWQ9uR2RkL1gLG9NMTzvf+29e5RFfPbeKhQ=="
+ },
+ "node_modules/@types/istanbul-lib-report": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.2.tgz",
+ "integrity": "sha512-8toY6FgdltSdONav1XtUHl4LN1yTmLza+EuDazb/fEmRNCwjyqNVIQWs2IfC74IqjHkREs/nQ2FWq5kZU9IC0w==",
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "*"
+ }
+ },
+ "node_modules/@types/istanbul-reports": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.3.tgz",
+ "integrity": "sha512-1nESsePMBlf0RPRffLZi5ujYh7IH1BWL4y9pr+Bn3cJBdxz+RTP8bUFljLz9HvzhhOSWKdyBZ4DIivdL6rvgZg==",
+ "dependencies": {
+ "@types/istanbul-lib-report": "*"
+ }
+ },
+ "node_modules/@types/jest": {
+ "version": "29.5.7",
+ "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.7.tgz",
+ "integrity": "sha512-HLyetab6KVPSiF+7pFcUyMeLsx25LDNDemw9mGsJBkai/oouwrjTycocSDYopMEwFhN2Y4s9oPyOCZNofgSt2g==",
+ "dev": true,
+ "dependencies": {
+ "expect": "^29.0.0",
+ "pretty-format": "^29.0.0"
+ }
+ },
+ "node_modules/@types/jsdom": {
+ "version": "20.0.1",
+ "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz",
+ "integrity": "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==",
+ "dependencies": {
+ "@types/node": "*",
+ "@types/tough-cookie": "*",
+ "parse5": "^7.0.0"
+ }
+ },
+ "node_modules/@types/json-schema": {
+ "version": "7.0.14",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz",
+ "integrity": "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw=="
+ },
+ "node_modules/@types/json5": {
+ "version": "0.0.29",
+ "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
+ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==",
+ "dev": true
+ },
+ "node_modules/@types/node": {
+ "version": "20.8.10",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.10.tgz",
+ "integrity": "sha512-TlgT8JntpcbmKUFzjhsyhGfP2fsiz1Mv56im6enJ905xG1DAYesxJaeSbGqQmAw8OWPdhyJGhGSQGKRNJ45u9w==",
+ "dependencies": {
+ "undici-types": "~5.26.4"
+ }
+ },
+ "node_modules/@types/node-forge": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.8.tgz",
+ "integrity": "sha512-vGXshY9vim9CJjrpcS5raqSjEfKlJcWy2HNdgUasR66fAnVEYarrf1ULV4nfvpC1nZq/moA9qyqBcu83x+Jlrg==",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/prop-types": {
+ "version": "15.7.9",
+ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.9.tgz",
+ "integrity": "sha512-n1yyPsugYNSmHgxDFjicaI2+gCNjsBck8UX9kuofAKlc0h1bL+20oSF72KeNaW2DUlesbEVCFgyV2dPGTiY42g==",
+ "devOptional": true
+ },
+ "node_modules/@types/react": {
+ "version": "18.2.79",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.79.tgz",
+ "integrity": "sha512-RwGAGXPl9kSXwdNTafkOEuFrTBD5SA2B3iEB96xi8+xu5ddUa/cpvyVCSNn+asgLCTHkb5ZxN8gbuibYJi4s1w==",
+ "devOptional": true,
+ "dependencies": {
+ "@types/prop-types": "*",
+ "csstype": "^3.0.2"
+ }
+ },
+ "node_modules/@types/react-native": {
+ "version": "0.70.16",
+ "resolved": "https://registry.npmjs.org/@types/react-native/-/react-native-0.70.16.tgz",
+ "integrity": "sha512-zHPWfszSWTctG1O1gsAHTQzOC33GY7Iv/Mk44tSMkcHiUtqB1GjOZz1VLqSyxW3Qw77HX4GUHi8b1ksOFrq2KQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/react": "*"
+ }
+ },
+ "node_modules/@types/react-native-vector-icons": {
+ "version": "6.4.16",
+ "resolved": "https://registry.npmjs.org/@types/react-native-vector-icons/-/react-native-vector-icons-6.4.16.tgz",
+ "integrity": "sha512-27p1tItacE/0yYKCs+nmGxtO5hiA9nhUSg9W+ipnq9PFS1NMQ+Cjf6Y+tFQgE4u0wF412xkgA40MIGLuocgqCg==",
+ "dev": true,
+ "dependencies": {
+ "@types/react": "*",
+ "@types/react-native": "^0.70"
+ }
+ },
+ "node_modules/@types/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==",
+ "dev": true
+ },
+ "node_modules/@types/stack-utils": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.2.tgz",
+ "integrity": "sha512-g7CK9nHdwjK2n0ymT2CW698FuWJRIx+RP6embAzZ2Qi8/ilIrA1Imt2LVSeHUzKvpoi7BhmmQcXz95eS0f2JXw=="
+ },
+ "node_modules/@types/tough-cookie": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.4.tgz",
+ "integrity": "sha512-95Sfz4nvMAb0Nl9DTxN3j64adfwfbBPEYq14VN7zT5J5O2M9V6iZMIIQU1U+pJyl9agHYHNCqhCXgyEtIRRa5A=="
+ },
+ "node_modules/@types/yargs": {
+ "version": "17.0.29",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.29.tgz",
+ "integrity": "sha512-nacjqA3ee9zRF/++a3FUY1suHTFKZeHba2n8WeDw9cCVdmzmHpIxyzOJBcpHvvEmS8E9KqWlSnWHUkOrkhWcvA==",
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/@types/yargs-parser": {
+ "version": "21.0.2",
+ "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.2.tgz",
+ "integrity": "sha512-5qcvofLPbfjmBfKaLfj/+f+Sbd6pN4zl7w7VSVI5uz7m9QZTuB2aZAa2uo1wHFBNN2x6g/SoTkXmd8mQnQF2Cw=="
+ },
+ "node_modules/@typescript-eslint/eslint-plugin": {
+ "version": "6.9.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.9.1.tgz",
+ "integrity": "sha512-w0tiiRc9I4S5XSXXrMHOWgHgxbrBn1Ro+PmiYhSg2ZVdxrAJtQgzU5o2m1BfP6UOn7Vxcc6152vFjQfmZR4xEg==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/regexpp": "^4.5.1",
+ "@typescript-eslint/scope-manager": "6.9.1",
+ "@typescript-eslint/type-utils": "6.9.1",
+ "@typescript-eslint/utils": "6.9.1",
+ "@typescript-eslint/visitor-keys": "6.9.1",
+ "debug": "^4.3.4",
+ "graphemer": "^1.4.0",
+ "ignore": "^5.2.4",
+ "natural-compare": "^1.4.0",
+ "semver": "^7.5.4",
+ "ts-api-utils": "^1.0.1"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha",
+ "eslint": "^7.0.0 || ^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@typescript-eslint/eslint-plugin/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
+ "node_modules/@typescript-eslint/parser": {
+ "version": "6.9.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.9.1.tgz",
+ "integrity": "sha512-C7AK2wn43GSaCUZ9do6Ksgi2g3mwFkMO3Cis96kzmgudoVaKyt62yNzJOktP0HDLb/iO2O0n2lBOzJgr6Q/cyg==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/scope-manager": "6.9.1",
+ "@typescript-eslint/types": "6.9.1",
+ "@typescript-eslint/typescript-estree": "6.9.1",
+ "@typescript-eslint/visitor-keys": "6.9.1",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^7.0.0 || ^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/scope-manager": {
+ "version": "6.9.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.9.1.tgz",
+ "integrity": "sha512-38IxvKB6NAne3g/+MyXMs2Cda/Sz+CEpmm+KLGEM8hx/CvnSRuw51i8ukfwB/B/sESdeTGet1NH1Wj7I0YXswg==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "6.9.1",
+ "@typescript-eslint/visitor-keys": "6.9.1"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/type-utils": {
+ "version": "6.9.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.9.1.tgz",
+ "integrity": "sha512-eh2oHaUKCK58qIeYp19F5V5TbpM52680sB4zNSz29VBQPTWIlE/hCj5P5B1AChxECe/fmZlspAWFuRniep1Skg==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/typescript-estree": "6.9.1",
+ "@typescript-eslint/utils": "6.9.1",
+ "debug": "^4.3.4",
+ "ts-api-utils": "^1.0.1"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^7.0.0 || ^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/types": {
+ "version": "6.9.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.9.1.tgz",
+ "integrity": "sha512-BUGslGOb14zUHOUmDB2FfT6SI1CcZEJYfF3qFwBeUrU6srJfzANonwRYHDpLBuzbq3HaoF2XL2hcr01c8f8OaQ==",
+ "dev": true,
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree": {
+ "version": "6.9.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.9.1.tgz",
+ "integrity": "sha512-U+mUylTHfcqeO7mLWVQ5W/tMLXqVpRv61wm9ZtfE5egz7gtnmqVIw9ryh0mgIlkKk9rZLY3UHygsBSdB9/ftyw==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "6.9.1",
+ "@typescript-eslint/visitor-keys": "6.9.1",
+ "debug": "^4.3.4",
+ "globby": "^11.1.0",
+ "is-glob": "^4.0.3",
+ "semver": "^7.5.4",
+ "ts-api-utils": "^1.0.1"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
+ "node_modules/@typescript-eslint/utils": {
+ "version": "6.9.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.9.1.tgz",
+ "integrity": "sha512-L1T0A5nFdQrMVunpZgzqPL6y2wVreSyHhKGZryS6jrEN7bD9NplVAyMryUhXsQ4TWLnZmxc2ekar/lSGIlprCA==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.4.0",
+ "@types/json-schema": "^7.0.12",
+ "@types/semver": "^7.5.0",
+ "@typescript-eslint/scope-manager": "6.9.1",
+ "@typescript-eslint/types": "6.9.1",
+ "@typescript-eslint/typescript-estree": "6.9.1",
+ "semver": "^7.5.4"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/utils/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@typescript-eslint/utils/node_modules/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@typescript-eslint/utils/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
+ "node_modules/@typescript-eslint/visitor-keys": {
+ "version": "6.9.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.9.1.tgz",
+ "integrity": "sha512-MUaPUe/QRLEffARsmNfmpghuQkW436DvESW+h+M52w0coICHRfD6Np9/K6PdACwnrq1HmuLl+cSPZaJmeVPkSw==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "6.9.1",
+ "eslint-visitor-keys": "^3.4.1"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@ungap/structured-clone": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
+ "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
+ "dev": true
+ },
+ "node_modules/@urql/core": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/@urql/core/-/core-2.3.6.tgz",
+ "integrity": "sha512-PUxhtBh7/8167HJK6WqBv6Z0piuiaZHQGYbhwpNL9aIQmLROPEdaUYkY4wh45wPQXcTpnd11l0q3Pw+TI11pdw==",
+ "dependencies": {
+ "@graphql-typed-document-node/core": "^3.1.0",
+ "wonka": "^4.0.14"
+ },
+ "peerDependencies": {
+ "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0"
+ }
+ },
+ "node_modules/@urql/exchange-retry": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@urql/exchange-retry/-/exchange-retry-0.3.0.tgz",
+ "integrity": "sha512-hHqer2mcdVC0eYnVNbWyi28AlGOPb2vjH3lP3/Bc8Lc8BjhMsDwFMm7WhoP5C1+cfbr/QJ6Er3H/L08wznXxfg==",
+ "dependencies": {
+ "@urql/core": ">=2.3.1",
+ "wonka": "^4.0.14"
+ },
+ "peerDependencies": {
+ "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0"
+ }
+ },
+ "node_modules/@web3-storage/multipart-parser": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@web3-storage/multipart-parser/-/multipart-parser-1.0.0.tgz",
+ "integrity": "sha512-BEO6al7BYqcnfX15W2cnGR+Q566ACXAT9UQykORCWW80lmkpWsnEob6zJS1ZVBKsSJC8+7vJkHwlp+lXG1UCdw=="
+ },
+ "node_modules/@xmldom/xmldom": {
+ "version": "0.7.13",
+ "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.13.tgz",
+ "integrity": "sha512-lm2GW5PkosIzccsaZIz7tp8cPADSIlIHWDFTR1N0SzfinhhYgeIQjFMz4rYzanCScr3DqQLeomUDArp6MWKm+g==",
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/@zxing/text-encoding": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/@zxing/text-encoding/-/text-encoding-0.9.0.tgz",
+ "integrity": "sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==",
+ "optional": true
+ },
+ "node_modules/abab": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz",
+ "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA=="
+ },
+ "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": {
+ "event-target-shim": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=6.5"
+ }
+ },
+ "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": {
+ "mime-types": "~2.1.34",
+ "negotiator": "0.6.3"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/acorn": {
+ "version": "8.11.2",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz",
+ "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==",
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-globals": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz",
+ "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==",
+ "dependencies": {
+ "acorn": "^8.1.0",
+ "acorn-walk": "^8.0.2"
+ }
+ },
+ "node_modules/acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "dev": true,
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/acorn-walk": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.0.tgz",
+ "integrity": "sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA==",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/agent-base": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "dependencies": {
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6.0.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==",
+ "dependencies": {
+ "clean-stack": "^2.0.0",
+ "indent-string": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dev": true,
+ "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"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/ajv-formats": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz",
+ "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==",
+ "dependencies": {
+ "ajv": "^8.0.0"
+ },
+ "peerDependencies": {
+ "ajv": "^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "ajv": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/ajv-formats/node_modules/ajv": {
+ "version": "8.12.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
+ "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+ "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/ajv-formats/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/anser": {
+ "version": "1.4.10",
+ "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz",
+ "integrity": "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww=="
+ },
+ "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==",
+ "dependencies": {
+ "type-fest": "^0.21.3"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/ansi-fragments": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz",
+ "integrity": "sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==",
+ "dependencies": {
+ "colorette": "^1.0.7",
+ "slice-ansi": "^2.0.0",
+ "strip-ansi": "^5.0.0"
+ }
+ },
+ "node_modules/ansi-fragments/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==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/ansi-fragments/node_modules/strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dependencies": {
+ "ansi-regex": "^4.1.0"
+ },
+ "engines": {
+ "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==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "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"
+ }
+ },
+ "node_modules/any-promise": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
+ "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A=="
+ },
+ "node_modules/anymatch": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "dependencies": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/appdirsjs": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.7.tgz",
+ "integrity": "sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw=="
+ },
+ "node_modules/application-config-path": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/application-config-path/-/application-config-path-0.1.1.tgz",
+ "integrity": "sha512-zy9cHePtMP0YhwG+CfHm0bgwdnga2X3gZexpdCwEj//dpb+TKajtiC8REEUJUSq6Ab4f9cgNy2l8ObXzCXFkEw=="
+ },
+ "node_modules/arg": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz",
+ "integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg=="
+ },
+ "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/array-buffer-byte-length": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz",
+ "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==",
+ "dependencies": {
+ "call-bind": "^1.0.5",
+ "is-array-buffer": "^3.0.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array-includes": {
+ "version": "3.1.7",
+ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz",
+ "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "get-intrinsic": "^1.2.1",
+ "is-string": "^1.0.7"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/array.prototype.findlastindex": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz",
+ "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "es-shim-unscopables": "^1.0.0",
+ "get-intrinsic": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array.prototype.flat": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz",
+ "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "es-shim-unscopables": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array.prototype.flatmap": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz",
+ "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "es-shim-unscopables": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array.prototype.tosorted": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz",
+ "integrity": "sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "es-shim-unscopables": "^1.0.0",
+ "get-intrinsic": "^1.2.1"
+ }
+ },
+ "node_modules/arraybuffer.prototype.slice": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz",
+ "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==",
+ "dependencies": {
+ "array-buffer-byte-length": "^1.0.1",
+ "call-bind": "^1.0.5",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.22.3",
+ "es-errors": "^1.2.1",
+ "get-intrinsic": "^1.2.3",
+ "is-array-buffer": "^3.0.4",
+ "is-shared-array-buffer": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/asap": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
+ "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA=="
+ },
+ "node_modules/assert": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz",
+ "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "is-nan": "^1.3.2",
+ "object-is": "^1.1.5",
+ "object.assign": "^4.1.4",
+ "util": "^0.12.5"
+ }
+ },
+ "node_modules/ast-types": {
+ "version": "0.15.2",
+ "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.15.2.tgz",
+ "integrity": "sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==",
+ "dependencies": {
+ "tslib": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/astral-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
+ "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/async-limiter": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz",
+ "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ=="
+ },
+ "node_modules/asynciterator.prototype": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz",
+ "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==",
+ "dev": true,
+ "dependencies": {
+ "has-symbols": "^1.0.3"
+ }
+ },
+ "node_modules/asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
+ },
+ "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==",
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
+ "node_modules/available-typed-arrays": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz",
+ "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==",
+ "dependencies": {
+ "possible-typed-array-names": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/axios": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.0.tgz",
+ "integrity": "sha512-EZ1DYihju9pwVB+jg67ogm+Tmqc6JmhamRN6I4Zt8DfZu5lbcQGw3ozH9lFejSJgs/ibaef3A9PMXPLeefFGJg==",
+ "dependencies": {
+ "follow-redirects": "^1.15.0",
+ "form-data": "^4.0.0",
+ "proxy-from-env": "^1.1.0"
+ }
+ },
+ "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==",
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/babel-jest": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz",
+ "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==",
+ "dependencies": {
+ "@jest/transform": "^29.7.0",
+ "@types/babel__core": "^7.1.14",
+ "babel-plugin-istanbul": "^6.1.1",
+ "babel-preset-jest": "^29.6.3",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.9",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.8.0"
+ }
+ },
+ "node_modules/babel-jest/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/babel-jest/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": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/babel-jest/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/babel-jest/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "node_modules/babel-jest/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/babel-jest/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/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==",
+ "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"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz",
+ "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==",
+ "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_modules/babel-plugin-jest-hoist": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz",
+ "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==",
+ "dependencies": {
+ "@babel/template": "^7.3.3",
+ "@babel/types": "^7.3.3",
+ "@types/babel__core": "^7.1.14",
+ "@types/babel__traverse": "^7.0.6"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/babel-plugin-polyfill-corejs2": {
+ "version": "0.4.6",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz",
+ "integrity": "sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==",
+ "dependencies": {
+ "@babel/compat-data": "^7.22.6",
+ "@babel/helper-define-polyfill-provider": "^0.4.3",
+ "semver": "^6.3.1"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/babel-plugin-polyfill-corejs3": {
+ "version": "0.8.6",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.6.tgz",
+ "integrity": "sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ==",
+ "dependencies": {
+ "@babel/helper-define-polyfill-provider": "^0.4.3",
+ "core-js-compat": "^3.33.1"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/babel-plugin-polyfill-regenerator": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz",
+ "integrity": "sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==",
+ "dependencies": {
+ "@babel/helper-define-polyfill-provider": "^0.4.3"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/babel-plugin-react-compiler": {
+ "version": "0.0.0-experimental-592953e-20240517",
+ "resolved": "https://registry.npmjs.org/babel-plugin-react-compiler/-/babel-plugin-react-compiler-0.0.0-experimental-592953e-20240517.tgz",
+ "integrity": "sha512-OjG1SVaeQZaJrqkMFJatg8W/MTow8Ak5rx2SI0ETQBO1XvOk/XZGMbltNCPdFJLKghBYoBjC+Y3Ap/Xr7B01mA==",
+ "dependencies": {
+ "@babel/generator": "7.2.0",
+ "@babel/types": "^7.19.0",
+ "chalk": "4",
+ "invariant": "^2.2.4",
+ "pretty-format": "^24",
+ "zod": "^3.22.4",
+ "zod-validation-error": "^2.1.0"
+ }
+ },
+ "node_modules/babel-plugin-react-compiler/node_modules/@babel/generator": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.2.0.tgz",
+ "integrity": "sha512-BA75MVfRlFQG2EZgFYIwyT1r6xSkwfP2bdkY/kLZusEYWiJs4xCowab/alaEaT0wSvmVuXGqiefeBlP+7V1yKg==",
+ "dependencies": {
+ "@babel/types": "^7.2.0",
+ "jsesc": "^2.5.1",
+ "lodash": "^4.17.10",
+ "source-map": "^0.5.0",
+ "trim-right": "^1.0.1"
+ }
+ },
+ "node_modules/babel-plugin-react-compiler/node_modules/@jest/types": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz",
+ "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==",
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^1.1.1",
+ "@types/yargs": "^13.0.0"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/babel-plugin-react-compiler/node_modules/@types/istanbul-reports": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz",
+ "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==",
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "*",
+ "@types/istanbul-lib-report": "*"
+ }
+ },
+ "node_modules/babel-plugin-react-compiler/node_modules/@types/yargs": {
+ "version": "13.0.12",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz",
+ "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==",
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/babel-plugin-react-compiler/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==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/babel-plugin-react-compiler/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": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/babel-plugin-react-compiler/node_modules/chalk/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/babel-plugin-react-compiler/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/babel-plugin-react-compiler/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "node_modules/babel-plugin-react-compiler/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/babel-plugin-react-compiler/node_modules/pretty-format": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz",
+ "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==",
+ "dependencies": {
+ "@jest/types": "^24.9.0",
+ "ansi-regex": "^4.0.0",
+ "ansi-styles": "^3.2.0",
+ "react-is": "^16.8.4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/babel-plugin-react-compiler/node_modules/source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/babel-plugin-react-compiler/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/babel-plugin-react-native-web": {
+ "version": "0.19.13",
+ "resolved": "https://registry.npmjs.org/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.19.13.tgz",
+ "integrity": "sha512-4hHoto6xaN23LCyZgL9LJZc3olmAxd7b6jDzlZnKXAh4rRAbZRKNBJoOOdp46OBqgy+K0t0guTj5/mhA8inymQ=="
+ },
+ "node_modules/babel-plugin-transform-flow-enums": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-enums/-/babel-plugin-transform-flow-enums-0.0.2.tgz",
+ "integrity": "sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==",
+ "dependencies": {
+ "@babel/plugin-syntax-flow": "^7.12.1"
+ }
+ },
+ "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==",
+ "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"
+ }
+ },
+ "node_modules/babel-preset-expo": {
+ "version": "11.0.15",
+ "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-11.0.15.tgz",
+ "integrity": "sha512-rgiMTYwqIPULaO7iZdqyL7aAff9QLOX6OWUtLZBlOrOTreGY1yHah/5+l8MvI6NVc/8Zj5LY4Y5uMSnJIuzTLw==",
+ "dependencies": {
+ "@babel/plugin-proposal-decorators": "^7.12.9",
+ "@babel/plugin-transform-export-namespace-from": "^7.22.11",
+ "@babel/plugin-transform-object-rest-spread": "^7.12.13",
+ "@babel/plugin-transform-parameters": "^7.22.15",
+ "@babel/preset-react": "^7.22.15",
+ "@babel/preset-typescript": "^7.23.0",
+ "@react-native/babel-preset": "0.74.87",
+ "babel-plugin-react-compiler": "0.0.0-experimental-592953e-20240517",
+ "babel-plugin-react-native-web": "~0.19.10",
+ "react-refresh": "^0.14.2"
+ }
+ },
+ "node_modules/babel-preset-jest": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz",
+ "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==",
+ "dependencies": {
+ "babel-plugin-jest-hoist": "^29.6.3",
+ "babel-preset-current-node-syntax": "^1.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/badgin": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/badgin/-/badgin-1.2.3.tgz",
+ "integrity": "sha512-NQGA7LcfCpSzIbGRbkgjgdWkjy7HI+Th5VLxTJfW5EeaAf3fnS+xWQaQOCYiny+q6QSvxqoSO04vCx+4u++EJw=="
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
+ },
+ "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/better-opn": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-3.0.2.tgz",
+ "integrity": "sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==",
+ "dependencies": {
+ "open": "^8.0.4"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/better-sqlite3": {
+ "version": "11.2.1",
+ "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-11.2.1.tgz",
+ "integrity": "sha512-Xbt1d68wQnUuFIEVsbt6V+RG30zwgbtCGQ4QOcXVrOH0FE4eHk64FWZ9NUfRHS4/x1PXqwz/+KOrnXD7f0WieA==",
+ "dev": true,
+ "hasInstallScript": true,
+ "dependencies": {
+ "bindings": "^1.5.0",
+ "prebuild-install": "^7.1.1"
+ }
+ },
+ "node_modules/big-integer": {
+ "version": "1.6.51",
+ "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz",
+ "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==",
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "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,
+ "dependencies": {
+ "file-uri-to-path": "1.0.0"
+ }
+ },
+ "node_modules/bl": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
+ "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
+ "dependencies": {
+ "buffer": "^5.5.0",
+ "inherits": "^2.0.4",
+ "readable-stream": "^3.4.0"
+ }
+ },
+ "node_modules/bl/node_modules/readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/bplist-creator": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.1.0.tgz",
+ "integrity": "sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==",
+ "dependencies": {
+ "stream-buffers": "2.2.x"
+ }
+ },
+ "node_modules/bplist-parser": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.2.tgz",
+ "integrity": "sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==",
+ "dependencies": {
+ "big-integer": "1.6.x"
+ },
+ "engines": {
+ "node": ">= 5.10.0"
+ }
+ },
+ "node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+ "dependencies": {
+ "fill-range": "^7.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/browserslist": {
+ "version": "4.23.3",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz",
+ "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "caniuse-lite": "^1.0.30001646",
+ "electron-to-chromium": "^1.5.4",
+ "node-releases": "^2.0.18",
+ "update-browserslist-db": "^1.1.0"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ }
+ },
+ "node_modules/bs-logger": {
+ "version": "0.2.6",
+ "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz",
+ "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==",
+ "dependencies": {
+ "fast-json-stable-stringify": "2.x"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "node-int64": "^0.4.0"
+ }
+ },
+ "node_modules/buffer": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
+ "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+ "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": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.1.13"
+ }
+ },
+ "node_modules/buffer-alloc": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
+ "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
+ "dependencies": {
+ "buffer-alloc-unsafe": "^1.1.0",
+ "buffer-fill": "^1.0.0"
+ }
+ },
+ "node_modules/buffer-alloc-unsafe": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
+ "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg=="
+ },
+ "node_modules/buffer-fill": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
+ "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ=="
+ },
+ "node_modules/buffer-from": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
+ },
+ "node_modules/builtins": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz",
+ "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ=="
+ },
+ "node_modules/bundle-name": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz",
+ "integrity": "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==",
+ "dev": true,
+ "dependencies": {
+ "run-applescript": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/bytes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
+ "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/cacache": {
+ "version": "18.0.4",
+ "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.4.tgz",
+ "integrity": "sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ==",
+ "dependencies": {
+ "@npmcli/fs": "^3.1.0",
+ "fs-minipass": "^3.0.0",
+ "glob": "^10.2.2",
+ "lru-cache": "^10.0.1",
+ "minipass": "^7.0.3",
+ "minipass-collect": "^2.0.1",
+ "minipass-flush": "^1.0.5",
+ "minipass-pipeline": "^1.2.4",
+ "p-map": "^4.0.0",
+ "ssri": "^10.0.0",
+ "tar": "^6.1.11",
+ "unique-filename": "^3.0.0"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/cacache/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==",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/cacache/node_modules/glob": {
+ "version": "10.4.5",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
+ "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/cacache/node_modules/lru-cache": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="
+ },
+ "node_modules/cacache/node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/call-bind": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
+ "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
+ "dependencies": {
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "set-function-length": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/caller-callsite": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz",
+ "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==",
+ "dependencies": {
+ "callsites": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/caller-callsite/node_modules/callsites": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz",
+ "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/caller-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz",
+ "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==",
+ "dependencies": {
+ "caller-callsite": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001651",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz",
+ "integrity": "sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ]
+ },
+ "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"
+ }
+ },
+ "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==",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/charenc": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz",
+ "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/chownr": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
+ "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/chrome-launcher": {
+ "version": "0.15.2",
+ "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.2.tgz",
+ "integrity": "sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==",
+ "dependencies": {
+ "@types/node": "*",
+ "escape-string-regexp": "^4.0.0",
+ "is-wsl": "^2.2.0",
+ "lighthouse-logger": "^1.0.0"
+ },
+ "bin": {
+ "print-chrome-path": "bin/print-chrome-path.js"
+ },
+ "engines": {
+ "node": ">=12.13.0"
+ }
+ },
+ "node_modules/chrome-launcher/node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/ci-info": {
+ "version": "3.9.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz",
+ "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/sibiraj-s"
+ }
+ ],
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cjs-module-lexer": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz",
+ "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ=="
+ },
+ "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==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/cli-cursor": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
+ "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==",
+ "dependencies": {
+ "restore-cursor": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/cli-spinners": {
+ "version": "2.9.1",
+ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.1.tgz",
+ "integrity": "sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==",
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cliui": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/clone": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
+ "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==",
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "is-plain-object": "^2.0.4",
+ "kind-of": "^6.0.2",
+ "shallow-clone": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/co": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+ "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==",
+ "engines": {
+ "iojs": ">= 1.0.0",
+ "node": ">= 0.12.0"
+ }
+ },
+ "node_modules/collect-v8-coverage": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz",
+ "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q=="
+ },
+ "node_modules/color": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz",
+ "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==",
+ "dependencies": {
+ "color-convert": "^2.0.1",
+ "color-string": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=12.5.0"
+ }
+ },
+ "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"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
+ },
+ "node_modules/color-string": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
+ "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
+ "dependencies": {
+ "color-name": "^1.0.0",
+ "simple-swizzle": "^0.2.2"
+ }
+ },
+ "node_modules/color/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/color/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "node_modules/colorette": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz",
+ "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g=="
+ },
+ "node_modules/combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "dependencies": {
+ "delayed-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/command-exists": {
+ "version": "1.2.9",
+ "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz",
+ "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w=="
+ },
+ "node_modules/commander": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
+ "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/commondir": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
+ "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg=="
+ },
+ "node_modules/component-type": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/component-type/-/component-type-1.2.2.tgz",
+ "integrity": "sha512-99VUHREHiN5cLeHm3YLq312p6v+HUEcwtLCAtelvUDI6+SH5g5Cr85oNR2S1o6ywzL0ykMbuwLzM2ANocjEOIA==",
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/compressible": {
+ "version": "2.0.18",
+ "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
+ "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
+ "dependencies": {
+ "mime-db": ">= 1.43.0 < 2"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/compression": {
+ "version": "1.7.4",
+ "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz",
+ "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==",
+ "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"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/compression/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/compression/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
+ },
+ "node_modules/connect": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz",
+ "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==",
+ "dependencies": {
+ "debug": "2.6.9",
+ "finalhandler": "1.1.2",
+ "parseurl": "~1.3.3",
+ "utils-merge": "1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.10.0"
+ }
+ },
+ "node_modules/connect/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/connect/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ },
+ "node_modules/convert-source-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="
+ },
+ "node_modules/core-js": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz",
+ "integrity": "sha512-ZiPp9pZlgxpWRu0M+YWbm6+aQ84XEfH1JRXvfOc/fILWI0VKhLC2LX13X1NYq4fULzLMq7Hfh43CSo2/aIaUPA==",
+ "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js."
+ },
+ "node_modules/core-js-compat": {
+ "version": "3.33.2",
+ "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.2.tgz",
+ "integrity": "sha512-axfo+wxFVxnqf8RvxTzoAlzW4gRoacrHeoFlc9n0x50+7BEyZL/Rt3hicaED1/CEd7I6tPCPVUYcJwCMO5XUYw==",
+ "dependencies": {
+ "browserslist": "^4.22.1"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/core-js"
+ }
+ },
+ "node_modules/core-util-is": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
+ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
+ },
+ "node_modules/cosmiconfig": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz",
+ "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==",
+ "dependencies": {
+ "import-fresh": "^2.0.0",
+ "is-directory": "^0.3.1",
+ "js-yaml": "^3.13.1",
+ "parse-json": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/cosmiconfig/node_modules/argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dependencies": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "node_modules/cosmiconfig/node_modules/import-fresh": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz",
+ "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==",
+ "dependencies": {
+ "caller-path": "^2.0.0",
+ "resolve-from": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/cosmiconfig/node_modules/js-yaml": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+ "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+ "dependencies": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/cosmiconfig/node_modules/parse-json": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==",
+ "dependencies": {
+ "error-ex": "^1.3.1",
+ "json-parse-better-errors": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/cosmiconfig/node_modules/resolve-from": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
+ "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/create-jest": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz",
+ "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==",
+ "dependencies": {
+ "@jest/types": "^29.6.3",
+ "chalk": "^4.0.0",
+ "exit": "^0.1.2",
+ "graceful-fs": "^4.2.9",
+ "jest-config": "^29.7.0",
+ "jest-util": "^29.7.0",
+ "prompts": "^2.0.1"
+ },
+ "bin": {
+ "create-jest": "bin/create-jest.js"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/create-jest/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/create-jest/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": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/create-jest/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/create-jest/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "node_modules/create-jest/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/create-jest/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/cross-fetch": {
+ "version": "3.1.8",
+ "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz",
+ "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==",
+ "dependencies": {
+ "node-fetch": "^2.6.12"
+ }
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/crypt": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz",
+ "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/crypto-js": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz",
+ "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q=="
+ },
+ "node_modules/crypto-random-string": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
+ "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/css-in-js-utils": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-3.1.0.tgz",
+ "integrity": "sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==",
+ "dependencies": {
+ "hyphenate-style-name": "^1.0.3"
+ }
+ },
+ "node_modules/cssom": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz",
+ "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw=="
+ },
+ "node_modules/cssstyle": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz",
+ "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==",
+ "dependencies": {
+ "cssom": "~0.3.6"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "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=="
+ },
+ "node_modules/csstype": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
+ "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==",
+ "devOptional": true
+ },
+ "node_modules/dag-map": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/dag-map/-/dag-map-1.0.2.tgz",
+ "integrity": "sha512-+LSAiGFwQ9dRnRdOeaj7g47ZFJcOUPukAP8J3A3fuZ1g9Y44BG+P1sgApjLXTQPOzC4+7S9Wr8kXsfpINM4jpw=="
+ },
+ "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/data-urls": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz",
+ "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==",
+ "dependencies": {
+ "abab": "^2.0.6",
+ "whatwg-mimetype": "^3.0.0",
+ "whatwg-url": "^11.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/data-view-buffer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz",
+ "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==",
+ "dependencies": {
+ "call-bind": "^1.0.6",
+ "es-errors": "^1.3.0",
+ "is-data-view": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/data-view-byte-length": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz",
+ "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "es-errors": "^1.3.0",
+ "is-data-view": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/data-view-byte-offset": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz",
+ "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==",
+ "dependencies": {
+ "call-bind": "^1.0.6",
+ "es-errors": "^1.3.0",
+ "is-data-view": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/date-fns": {
+ "version": "2.30.0",
+ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz",
+ "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==",
+ "dependencies": {
+ "@babel/runtime": "^7.21.0"
+ },
+ "engines": {
+ "node": ">=0.11"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/date-fns"
+ }
+ },
+ "node_modules/dayjs": {
+ "version": "1.11.12",
+ "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.12.tgz",
+ "integrity": "sha512-Rt2g+nTbLlDWZTwwrIXjy9MeiZmSDI375FvZs72ngxx8PDC6YXOeR3q5LAuPzjZQxhiWdRKac7RKV+YyQYfYIg=="
+ },
+ "node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/decimal.js": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz",
+ "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA=="
+ },
+ "node_modules/decode-uri-component": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
+ "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==",
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/decompress-response": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
+ "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
+ "dev": true,
+ "dependencies": {
+ "mimic-response": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/dedent": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz",
+ "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==",
+ "peerDependencies": {
+ "babel-plugin-macros": "^3.1.0"
+ },
+ "peerDependenciesMeta": {
+ "babel-plugin-macros": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/deep-extend": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true
+ },
+ "node_modules/deepmerge": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
+ "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/default-browser": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz",
+ "integrity": "sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==",
+ "dev": true,
+ "dependencies": {
+ "bundle-name": "^3.0.0",
+ "default-browser-id": "^3.0.0",
+ "execa": "^7.1.1",
+ "titleize": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/default-browser-id": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz",
+ "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==",
+ "dev": true,
+ "dependencies": {
+ "bplist-parser": "^0.2.0",
+ "untildify": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/default-browser-id/node_modules/bplist-parser": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz",
+ "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==",
+ "dev": true,
+ "dependencies": {
+ "big-integer": "^1.6.44"
+ },
+ "engines": {
+ "node": ">= 5.10.0"
+ }
+ },
+ "node_modules/default-browser/node_modules/execa": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz",
+ "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==",
+ "dev": true,
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.1",
+ "human-signals": "^4.3.0",
+ "is-stream": "^3.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^5.1.0",
+ "onetime": "^6.0.0",
+ "signal-exit": "^3.0.7",
+ "strip-final-newline": "^3.0.0"
+ },
+ "engines": {
+ "node": "^14.18.0 || ^16.14.0 || >=18.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/default-browser/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==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/default-browser/node_modules/human-signals": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz",
+ "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=14.18.0"
+ }
+ },
+ "node_modules/default-browser/node_modules/is-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
+ "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
+ "dev": true,
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/default-browser/node_modules/mimic-fn": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
+ "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/default-browser/node_modules/npm-run-path": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz",
+ "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^4.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/default-browser/node_modules/onetime": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz",
+ "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==",
+ "dev": true,
+ "dependencies": {
+ "mimic-fn": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/default-browser/node_modules/path-key": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
+ "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/default-browser/node_modules/strip-final-newline": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz",
+ "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/default-gateway": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz",
+ "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==",
+ "dependencies": {
+ "execa": "^1.0.0",
+ "ip-regex": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/defaults": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz",
+ "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==",
+ "dependencies": {
+ "clone": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/defaults/node_modules/clone": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
+ "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==",
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/define-data-property": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
+ "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
+ "dependencies": {
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/define-lazy-prop": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
+ "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/define-properties": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
+ "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
+ "dependencies": {
+ "define-data-property": "^1.0.1",
+ "has-property-descriptors": "^1.0.0",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/del": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz",
+ "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==",
+ "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"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/denodeify": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz",
+ "integrity": "sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg=="
+ },
+ "node_modules/depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/destroy": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
+ },
+ "node_modules/detect-libc": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
+ "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==",
+ "bin": {
+ "detect-libc": "bin/detect-libc.js"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/detect-newline": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz",
+ "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/diff-sequences": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz",
+ "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==",
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/dir-glob": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
+ "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
+ "dependencies": {
+ "path-type": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "dev": true,
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/domexception": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz",
+ "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==",
+ "dependencies": {
+ "webidl-conversions": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/dotenv": {
+ "version": "16.4.5",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz",
+ "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://dotenvx.com"
+ }
+ },
+ "node_modules/dotenv-expand": {
+ "version": "11.0.6",
+ "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.6.tgz",
+ "integrity": "sha512-8NHi73otpWsZGBSZwwknTXS5pqMOrk9+Ssrna8xCaxkzEpU9OTf9R5ArQGVw03//Zmk9MOwLPng9WwndvpAJ5g==",
+ "dependencies": {
+ "dotenv": "^16.4.4"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://dotenvx.com"
+ }
+ },
+ "node_modules/eastasianwidth": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="
+ },
+ "node_modules/ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
+ },
+ "node_modules/electron-to-chromium": {
+ "version": "1.5.11",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.11.tgz",
+ "integrity": "sha512-R1CccCDYqndR25CaXFd6hp/u9RaaMcftMkphmvuepXr5b1vfLkRml6aWVeBhXJ7rbevHkKEMJtz8XqPf7ffmew=="
+ },
+ "node_modules/emittery": {
+ "version": "0.13.1",
+ "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz",
+ "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/emittery?sponsor=1"
+ }
+ },
+ "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/encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/encoding": {
+ "version": "0.1.13",
+ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz",
+ "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
+ "dependencies": {
+ "iconv-lite": "^0.6.2"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/end-of-stream": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
+ "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
+ "dependencies": {
+ "once": "^1.4.0"
+ }
+ },
+ "node_modules/env-editor": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/env-editor/-/env-editor-0.4.2.tgz",
+ "integrity": "sha512-ObFo8v4rQJAE59M69QzwloxPZtd33TpYEIjtKD1rrFDcM1Gd7IkDxEBU+HriziN6HSHQnBJi8Dmy+JWkav5HKA==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/envinfo": {
+ "version": "7.13.0",
+ "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz",
+ "integrity": "sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==",
+ "bin": {
+ "envinfo": "dist/cli.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/eol": {
+ "version": "0.9.1",
+ "resolved": "https://registry.npmjs.org/eol/-/eol-0.9.1.tgz",
+ "integrity": "sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg=="
+ },
+ "node_modules/error-ex": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "dependencies": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "node_modules/error-stack-parser": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz",
+ "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==",
+ "dependencies": {
+ "stackframe": "^1.3.4"
+ }
+ },
+ "node_modules/errorhandler": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.1.tgz",
+ "integrity": "sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==",
+ "dependencies": {
+ "accepts": "~1.3.7",
+ "escape-html": "~1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/es-abstract": {
+ "version": "1.23.3",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz",
+ "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==",
+ "dependencies": {
+ "array-buffer-byte-length": "^1.0.1",
+ "arraybuffer.prototype.slice": "^1.0.3",
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.7",
+ "data-view-buffer": "^1.0.1",
+ "data-view-byte-length": "^1.0.1",
+ "data-view-byte-offset": "^1.0.0",
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.0.0",
+ "es-set-tostringtag": "^2.0.3",
+ "es-to-primitive": "^1.2.1",
+ "function.prototype.name": "^1.1.6",
+ "get-intrinsic": "^1.2.4",
+ "get-symbol-description": "^1.0.2",
+ "globalthis": "^1.0.3",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.2",
+ "has-proto": "^1.0.3",
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.2",
+ "internal-slot": "^1.0.7",
+ "is-array-buffer": "^3.0.4",
+ "is-callable": "^1.2.7",
+ "is-data-view": "^1.0.1",
+ "is-negative-zero": "^2.0.3",
+ "is-regex": "^1.1.4",
+ "is-shared-array-buffer": "^1.0.3",
+ "is-string": "^1.0.7",
+ "is-typed-array": "^1.1.13",
+ "is-weakref": "^1.0.2",
+ "object-inspect": "^1.13.1",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.5",
+ "regexp.prototype.flags": "^1.5.2",
+ "safe-array-concat": "^1.1.2",
+ "safe-regex-test": "^1.0.3",
+ "string.prototype.trim": "^1.2.9",
+ "string.prototype.trimend": "^1.0.8",
+ "string.prototype.trimstart": "^1.0.8",
+ "typed-array-buffer": "^1.0.2",
+ "typed-array-byte-length": "^1.0.1",
+ "typed-array-byte-offset": "^1.0.2",
+ "typed-array-length": "^1.0.6",
+ "unbox-primitive": "^1.0.2",
+ "which-typed-array": "^1.1.15"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/es-define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
+ "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
+ "dependencies": {
+ "get-intrinsic": "^1.2.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-iterator-helpers": {
+ "version": "1.0.15",
+ "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz",
+ "integrity": "sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==",
+ "dev": true,
+ "dependencies": {
+ "asynciterator.prototype": "^1.0.0",
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.22.1",
+ "es-set-tostringtag": "^2.0.1",
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.2.1",
+ "globalthis": "^1.0.3",
+ "has-property-descriptors": "^1.0.0",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "internal-slot": "^1.0.5",
+ "iterator.prototype": "^1.1.2",
+ "safe-array-concat": "^1.0.1"
+ }
+ },
+ "node_modules/es-object-atoms": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz",
+ "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==",
+ "dependencies": {
+ "es-errors": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-set-tostringtag": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz",
+ "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==",
+ "dependencies": {
+ "get-intrinsic": "^1.2.4",
+ "has-tostringtag": "^1.0.2",
+ "hasown": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-shim-unscopables": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz",
+ "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==",
+ "dev": true,
+ "dependencies": {
+ "hasown": "^2.0.0"
+ }
+ },
+ "node_modules/es-to-primitive": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
+ "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+ "dependencies": {
+ "is-callable": "^1.1.4",
+ "is-date-object": "^1.0.1",
+ "is-symbol": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",
+ "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
+ },
+ "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": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/escodegen": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz",
+ "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==",
+ "dependencies": {
+ "esprima": "^4.0.1",
+ "estraverse": "^5.2.0",
+ "esutils": "^2.0.2"
+ },
+ "bin": {
+ "escodegen": "bin/escodegen.js",
+ "esgenerate": "bin/esgenerate.js"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "optionalDependencies": {
+ "source-map": "~0.6.1"
+ }
+ },
+ "node_modules/eslint": {
+ "version": "8.52.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.52.0.tgz",
+ "integrity": "sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.2.0",
+ "@eslint-community/regexpp": "^4.6.1",
+ "@eslint/eslintrc": "^2.1.2",
+ "@eslint/js": "8.52.0",
+ "@humanwhocodes/config-array": "^0.11.13",
+ "@humanwhocodes/module-importer": "^1.0.1",
+ "@nodelib/fs.walk": "^1.2.8",
+ "@ungap/structured-clone": "^1.2.0",
+ "ajv": "^6.12.4",
+ "chalk": "^4.0.0",
+ "cross-spawn": "^7.0.2",
+ "debug": "^4.3.2",
+ "doctrine": "^3.0.0",
+ "escape-string-regexp": "^4.0.0",
+ "eslint-scope": "^7.2.2",
+ "eslint-visitor-keys": "^3.4.3",
+ "espree": "^9.6.1",
+ "esquery": "^1.4.2",
+ "esutils": "^2.0.2",
+ "fast-deep-equal": "^3.1.3",
+ "file-entry-cache": "^6.0.1",
+ "find-up": "^5.0.0",
+ "glob-parent": "^6.0.2",
+ "globals": "^13.19.0",
+ "graphemer": "^1.4.0",
+ "ignore": "^5.2.0",
+ "imurmurhash": "^0.1.4",
+ "is-glob": "^4.0.0",
+ "is-path-inside": "^3.0.3",
+ "js-yaml": "^4.1.0",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.4.1",
+ "lodash.merge": "^4.6.2",
+ "minimatch": "^3.1.2",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.9.3",
+ "strip-ansi": "^6.0.1",
+ "text-table": "^0.2.0"
+ },
+ "bin": {
+ "eslint": "bin/eslint.js"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-config-prettier": {
+ "version": "8.10.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz",
+ "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==",
+ "dev": true,
+ "bin": {
+ "eslint-config-prettier": "bin/cli.js"
+ },
+ "peerDependencies": {
+ "eslint": ">=7.0.0"
+ }
+ },
+ "node_modules/eslint-config-universe": {
+ "version": "12.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-universe/-/eslint-config-universe-12.0.0.tgz",
+ "integrity": "sha512-78UxGByheyDNL1RhszWYeDzWiBaUtLnFSeI20pJI89IXa9OAEZQHzG/iBFpMeaCs7Hqyg0wYJcuCbCx535wB7A==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/eslint-plugin": "^6.0.0",
+ "@typescript-eslint/parser": "^6.0.0",
+ "eslint-config-prettier": "^8.8.0",
+ "eslint-plugin-import": "^2.27.5",
+ "eslint-plugin-node": "^11.1.0",
+ "eslint-plugin-prettier": "^5.0.0",
+ "eslint-plugin-react": "^7.32.2",
+ "eslint-plugin-react-hooks": "^4.6.0"
+ },
+ "peerDependencies": {
+ "eslint": ">=8.10",
+ "prettier": ">=3"
+ },
+ "peerDependenciesMeta": {
+ "prettier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-import-resolver-node": {
+ "version": "0.3.9",
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz",
+ "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^3.2.7",
+ "is-core-module": "^2.13.0",
+ "resolve": "^1.22.4"
+ }
+ },
+ "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": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/eslint-module-utils": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz",
+ "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^3.2.7"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "peerDependenciesMeta": {
+ "eslint": {
+ "optional": true
+ }
+ }
+ },
+ "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,
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/eslint-plugin-es": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz",
+ "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==",
+ "dev": true,
+ "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"
+ }
+ },
+ "node_modules/eslint-plugin-import": {
+ "version": "2.29.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.0.tgz",
+ "integrity": "sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==",
+ "dev": true,
+ "dependencies": {
+ "array-includes": "^3.1.7",
+ "array.prototype.findlastindex": "^1.2.3",
+ "array.prototype.flat": "^1.3.2",
+ "array.prototype.flatmap": "^1.3.2",
+ "debug": "^3.2.7",
+ "doctrine": "^2.1.0",
+ "eslint-import-resolver-node": "^0.3.9",
+ "eslint-module-utils": "^2.8.0",
+ "hasown": "^2.0.0",
+ "is-core-module": "^2.13.1",
+ "is-glob": "^4.0.3",
+ "minimatch": "^3.1.2",
+ "object.fromentries": "^2.0.7",
+ "object.groupby": "^1.0.1",
+ "object.values": "^1.1.7",
+ "semver": "^6.3.1",
+ "tsconfig-paths": "^3.14.2"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "peerDependencies": {
+ "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8"
+ }
+ },
+ "node_modules/eslint-plugin-import/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/eslint-plugin-import/node_modules/doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "dev": true,
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/eslint-plugin-node": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz",
+ "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==",
+ "dev": true,
+ "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_modules/eslint-plugin-prettier": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.1.tgz",
+ "integrity": "sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg==",
+ "dev": true,
+ "dependencies": {
+ "prettier-linter-helpers": "^1.0.0",
+ "synckit": "^0.8.5"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/prettier"
+ },
+ "peerDependencies": {
+ "@types/eslint": ">=8.0.0",
+ "eslint": ">=8.0.0",
+ "prettier": ">=3.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/eslint": {
+ "optional": true
+ },
+ "eslint-config-prettier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-plugin-react": {
+ "version": "7.33.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz",
+ "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==",
+ "dev": true,
+ "dependencies": {
+ "array-includes": "^3.1.6",
+ "array.prototype.flatmap": "^1.3.1",
+ "array.prototype.tosorted": "^1.1.1",
+ "doctrine": "^2.1.0",
+ "es-iterator-helpers": "^1.0.12",
+ "estraverse": "^5.3.0",
+ "jsx-ast-utils": "^2.4.1 || ^3.0.0",
+ "minimatch": "^3.1.2",
+ "object.entries": "^1.1.6",
+ "object.fromentries": "^2.0.6",
+ "object.hasown": "^1.1.2",
+ "object.values": "^1.1.6",
+ "prop-types": "^15.8.1",
+ "resolve": "^2.0.0-next.4",
+ "semver": "^6.3.1",
+ "string.prototype.matchall": "^4.0.8"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "peerDependencies": {
+ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8"
+ }
+ },
+ "node_modules/eslint-plugin-react-hooks": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz",
+ "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0"
+ }
+ },
+ "node_modules/eslint-plugin-react/node_modules/doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "dev": true,
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/eslint-plugin-react/node_modules/resolve": {
+ "version": "2.0.0-next.5",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz",
+ "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==",
+ "dev": true,
+ "dependencies": {
+ "is-core-module": "^2.13.0",
+ "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/eslint-scope": {
+ "version": "7.2.2",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
+ "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
+ "dev": true,
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "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,
+ "dependencies": {
+ "eslint-visitor-keys": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/mysticatea"
+ }
+ },
+ "node_modules/eslint-utils/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"
+ }
+ },
+ "node_modules/eslint-visitor-keys": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "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"
+ }
+ },
+ "node_modules/eslint/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/eslint/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/eslint/node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint/node_modules/globals": {
+ "version": "13.23.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz",
+ "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==",
+ "dev": true,
+ "dependencies": {
+ "type-fest": "^0.20.2"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint/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==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/eslint/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==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/eslint/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"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/espree": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
+ "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^8.9.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^3.4.1"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "bin": {
+ "esparse": "bin/esparse.js",
+ "esvalidate": "bin/esvalidate.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/esquery": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
+ "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
+ "dev": true,
+ "dependencies": {
+ "estraverse": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "dev": true,
+ "dependencies": {
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "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/exec-async": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/exec-async/-/exec-async-2.2.0.tgz",
+ "integrity": "sha512-87OpwcEiMia/DeiKFzaQNBNFeN3XkkpYIh9FyOqq5mS2oKv3CBE67PXoEKcr6nodWdXNogTiQ0jE2NGuoffXPw=="
+ },
+ "node_modules/execa": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
+ "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
+ "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/execa/node_modules/cross-spawn": {
+ "version": "6.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz",
+ "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==",
+ "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/execa/node_modules/path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/execa/node_modules/semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/execa/node_modules/shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
+ "dependencies": {
+ "shebang-regex": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/execa/node_modules/shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/execa/node_modules/which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "which": "bin/which"
+ }
+ },
+ "node_modules/exit": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
+ "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==",
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/expand-template": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz",
+ "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/expect": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz",
+ "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==",
+ "dependencies": {
+ "@jest/expect-utils": "^29.7.0",
+ "jest-get-type": "^29.6.3",
+ "jest-matcher-utils": "^29.7.0",
+ "jest-message-util": "^29.7.0",
+ "jest-util": "^29.7.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/expo": {
+ "version": "51.0.39",
+ "resolved": "https://registry.npmjs.org/expo/-/expo-51.0.39.tgz",
+ "integrity": "sha512-Cs/9xopyzJrpXWbyVUZnr37rprdFJorRgfSp6cdBfvbjxZeKnw2MEu7wJwV/s626i5lZTPGjZPHUF9uQvt51cg==",
+ "dependencies": {
+ "@babel/runtime": "^7.20.0",
+ "@expo/cli": "0.18.31",
+ "@expo/config": "9.0.4",
+ "@expo/config-plugins": "8.0.11",
+ "@expo/metro-config": "0.18.11",
+ "@expo/vector-icons": "^14.0.3",
+ "babel-preset-expo": "~11.0.15",
+ "expo-asset": "~10.0.10",
+ "expo-file-system": "~17.0.1",
+ "expo-font": "~12.0.10",
+ "expo-keep-awake": "~13.0.2",
+ "expo-modules-autolinking": "1.11.3",
+ "expo-modules-core": "1.12.26",
+ "fbemitter": "^3.0.0",
+ "whatwg-url-without-unicode": "8.0.0-3"
+ },
+ "bin": {
+ "expo": "bin/cli"
+ }
+ },
+ "node_modules/expo-application": {
+ "version": "5.9.1",
+ "resolved": "https://registry.npmjs.org/expo-application/-/expo-application-5.9.1.tgz",
+ "integrity": "sha512-uAfLBNZNahnDZLRU41ZFmNSKtetHUT9Ua557/q189ua0AWV7pQjoVAx49E4953feuvqc9swtU3ScZ/hN1XO/FQ==",
+ "peerDependencies": {
+ "expo": "*"
+ }
+ },
+ "node_modules/expo-asset": {
+ "version": "10.0.10",
+ "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-10.0.10.tgz",
+ "integrity": "sha512-0qoTIihB79k+wGus9wy0JMKq7DdenziVx3iUkGvMAy2azscSgWH6bd2gJ9CGnhC6JRd3qTMFBL0ou/fx7WZl7A==",
+ "dependencies": {
+ "expo-constants": "~16.0.0",
+ "invariant": "^2.2.4",
+ "md5-file": "^3.2.3"
+ },
+ "peerDependencies": {
+ "expo": "*"
+ }
+ },
+ "node_modules/expo-build-properties": {
+ "version": "0.12.5",
+ "resolved": "https://registry.npmjs.org/expo-build-properties/-/expo-build-properties-0.12.5.tgz",
+ "integrity": "sha512-donC1le0PYfLKCPKRMGQoixuWuwDWCngzXSoQXUPsgHTDHQUKr8aw+lcWkTwZcItgNovcnk784I0dyfYDcxybA==",
+ "dependencies": {
+ "ajv": "^8.11.0",
+ "semver": "^7.6.0"
+ },
+ "peerDependencies": {
+ "expo": "*"
+ }
+ },
+ "node_modules/expo-build-properties/node_modules/ajv": {
+ "version": "8.17.1",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
+ "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3",
+ "fast-uri": "^3.0.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/expo-build-properties/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/expo-build-properties/node_modules/semver": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/expo-constants": {
+ "version": "16.0.2",
+ "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-16.0.2.tgz",
+ "integrity": "sha512-9tNY3OVO0jfiMzl7ngb6IOyR5VFzNoN5OOazUWoeGfmMqVB5kltTemRvKraK9JRbBKIw+SOYLEmF0sEqgFZ6OQ==",
+ "dependencies": {
+ "@expo/config": "~9.0.0",
+ "@expo/env": "~0.3.0"
+ },
+ "peerDependencies": {
+ "expo": "*"
+ }
+ },
+ "node_modules/expo-dev-client": {
+ "version": "4.0.23",
+ "resolved": "https://registry.npmjs.org/expo-dev-client/-/expo-dev-client-4.0.23.tgz",
+ "integrity": "sha512-s0qTAxrvpztQUpi0WS/JKddon04jZqnAHcwiMsuDyt+VSqDL6VF3aZAGl8dI5ZEDsq/cT3jETyNxY8CMkvLmyA==",
+ "dependencies": {
+ "expo-dev-launcher": "4.0.25",
+ "expo-dev-menu": "5.0.19",
+ "expo-dev-menu-interface": "1.8.3",
+ "expo-manifests": "~0.14.0",
+ "expo-updates-interface": "~0.16.2"
+ },
+ "peerDependencies": {
+ "expo": "*"
+ }
+ },
+ "node_modules/expo-dev-launcher": {
+ "version": "4.0.25",
+ "resolved": "https://registry.npmjs.org/expo-dev-launcher/-/expo-dev-launcher-4.0.25.tgz",
+ "integrity": "sha512-uwdcQvBGMXl1WAlOg0Qb827xDogJcqSHKjIkB+YOPjUPdf9NsLN9AwUHZqIK1wOcmvi0pfgv1fPzTgoE9AwNcw==",
+ "dependencies": {
+ "ajv": "8.11.0",
+ "expo-dev-menu": "5.0.19",
+ "expo-manifests": "~0.14.0",
+ "resolve-from": "^5.0.0",
+ "semver": "^7.6.0"
+ },
+ "peerDependencies": {
+ "expo": "*"
+ }
+ },
+ "node_modules/expo-dev-launcher/node_modules/ajv": {
+ "version": "8.11.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz",
+ "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==",
+ "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/expo-dev-launcher/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/expo-dev-launcher/node_modules/semver": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/expo-dev-menu": {
+ "version": "5.0.19",
+ "resolved": "https://registry.npmjs.org/expo-dev-menu/-/expo-dev-menu-5.0.19.tgz",
+ "integrity": "sha512-C/ulbzfhcEsEk1X0gF3XaJPSwCZJqnHPpYqPGUf4xaXzk/TZpeMTqF6f3nfMyZjpj67L6DetvaJWv8jiDzZ/6Q==",
+ "dependencies": {
+ "expo-dev-menu-interface": "1.8.3",
+ "semver": "^7.5.4"
+ },
+ "peerDependencies": {
+ "expo": "*"
+ }
+ },
+ "node_modules/expo-dev-menu-interface": {
+ "version": "1.8.3",
+ "resolved": "https://registry.npmjs.org/expo-dev-menu-interface/-/expo-dev-menu-interface-1.8.3.tgz",
+ "integrity": "sha512-QM0LRozeFT5Ek0N7XpV93M+HMdEKRLEOXn0aW5M3uoUlnqC1+PLtF3HMy3k3hMKTTE/kJ1y1Z7akH07T0lunCQ==",
+ "peerDependencies": {
+ "expo": "*"
+ }
+ },
+ "node_modules/expo-dev-menu/node_modules/semver": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/expo-device": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/expo-device/-/expo-device-6.0.2.tgz",
+ "integrity": "sha512-sCt91CuTmAuMXX4SlFOn4lIos2UIr8vb0jDstDDZXys6kErcj0uynC7bQAMreU5uRUTKMAl4MAMpKt9ufCXPBw==",
+ "dependencies": {
+ "ua-parser-js": "^0.7.33"
+ },
+ "peerDependencies": {
+ "expo": "*"
+ }
+ },
+ "node_modules/expo-device/node_modules/ua-parser-js": {
+ "version": "0.7.37",
+ "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.37.tgz",
+ "integrity": "sha512-xV8kqRKM+jhMvcHWUKthV9fNebIzrNy//2O9ZwWcfiBFR5f25XVZPLlEajk/sf3Ra15V92isyQqnIEXRDaZWEA==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/ua-parser-js"
+ },
+ {
+ "type": "paypal",
+ "url": "https://paypal.me/faisalman"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/faisalman"
+ }
+ ],
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/expo-eas-client": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/expo-eas-client/-/expo-eas-client-0.12.0.tgz",
+ "integrity": "sha512-Jkww9Cwpv0z7DdLYiRX0r4fqBEcI9cKqTn7cHx63S09JaZ2rcwEE4zYHgrXwjahO+tU2VW8zqH+AJl6RhhW4zA=="
+ },
+ "node_modules/expo-file-system": {
+ "version": "17.0.1",
+ "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-17.0.1.tgz",
+ "integrity": "sha512-dYpnZJqTGj6HCYJyXAgpFkQWsiCH3HY1ek2cFZVHFoEc5tLz9gmdEgTF6nFHurvmvfmXqxi7a5CXyVm0aFYJBw==",
+ "peerDependencies": {
+ "expo": "*"
+ }
+ },
+ "node_modules/expo-font": {
+ "version": "12.0.10",
+ "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-12.0.10.tgz",
+ "integrity": "sha512-Q1i2NuYri3jy32zdnBaHHCya1wH1yMAsI+3CCmj9zlQzlhsS9Bdwcj2W3c5eU5FvH2hsNQy4O+O1NnM6o/pDaQ==",
+ "dependencies": {
+ "fontfaceobserver": "^2.1.0"
+ },
+ "peerDependencies": {
+ "expo": "*"
+ }
+ },
+ "node_modules/expo-image": {
+ "version": "1.12.13",
+ "resolved": "https://registry.npmjs.org/expo-image/-/expo-image-1.12.13.tgz",
+ "integrity": "sha512-Dmuc5qmkIsl1nFj8C3Ux3wL2bN4QYW4dM9fkGA8kYiP5Fxf1lT36ldkHk2O2lPFRSFJDvLxT8Tz+7GTko5fzwQ==",
+ "peerDependencies": {
+ "expo": "*"
+ }
+ },
+ "node_modules/expo-image-loader": {
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/expo-image-loader/-/expo-image-loader-4.7.0.tgz",
+ "integrity": "sha512-cx+MxxsAMGl9AiWnQUzrkJMJH4eNOGlu7XkLGnAXSJrRoIiciGaKqzeaD326IyCTV+Z1fXvIliSgNW+DscvD8g==",
+ "peerDependencies": {
+ "expo": "*"
+ }
+ },
+ "node_modules/expo-image-picker": {
+ "version": "15.0.7",
+ "resolved": "https://registry.npmjs.org/expo-image-picker/-/expo-image-picker-15.0.7.tgz",
+ "integrity": "sha512-u8qiPZNfDb+ap6PJ8pq2iTO7JKX+ikAUQ0K0c7gXGliKLxoXgDdDmXxz9/6QdICTshJBJlBvI0MwY5NWu7A/uw==",
+ "dependencies": {
+ "expo-image-loader": "~4.7.0"
+ },
+ "peerDependencies": {
+ "expo": "*"
+ }
+ },
+ "node_modules/expo-json-utils": {
+ "version": "0.13.1",
+ "resolved": "https://registry.npmjs.org/expo-json-utils/-/expo-json-utils-0.13.1.tgz",
+ "integrity": "sha512-mlfaSArGVb+oJmUcR22jEONlgPp0wj4iNIHfQ2je9Q8WTOqMc0Ws9tUciz3JdJnhffdHqo/k8fpvf0IRmN5HPA=="
+ },
+ "node_modules/expo-jwt": {
+ "version": "1.6.5",
+ "resolved": "https://registry.npmjs.org/expo-jwt/-/expo-jwt-1.6.5.tgz",
+ "integrity": "sha512-HwlxywsvxYJOIkidfa5wOmwBAnIT2rgZFgH5M+bmzYhBpnlcR3Vq66abFSJfpyDcX8czoQY3bVbcmFmRRUVQjw==",
+ "dependencies": {
+ "crypto-js": "^4.2.0"
+ }
+ },
+ "node_modules/expo-keep-awake": {
+ "version": "13.0.2",
+ "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-13.0.2.tgz",
+ "integrity": "sha512-kKiwkVg/bY0AJ5q1Pxnm/GvpeB6hbNJhcFsoOWDh2NlpibhCLaHL826KHUM+WsnJRbVRxJ+K9vbPRHEMvFpVyw==",
+ "peerDependencies": {
+ "expo": "*"
+ }
+ },
+ "node_modules/expo-linking": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/expo-linking/-/expo-linking-6.3.1.tgz",
+ "integrity": "sha512-xuZCntSBGWCD/95iZ+mTUGTwHdy8Sx+immCqbUBxdvZ2TN61P02kKg7SaLS8A4a/hLrSCwrg5tMMwu5wfKr35g==",
+ "dependencies": {
+ "expo-constants": "~16.0.0",
+ "invariant": "^2.2.4"
+ }
+ },
+ "node_modules/expo-manifests": {
+ "version": "0.14.3",
+ "resolved": "https://registry.npmjs.org/expo-manifests/-/expo-manifests-0.14.3.tgz",
+ "integrity": "sha512-L3b5/qocBPiQjbW0cpOHfnqdKZbTJS7sA3mgeDJT+mWga/xYsdpma1EfNmsuvrOzjLGjStr1k1fceM9Bl49aqQ==",
+ "dependencies": {
+ "@expo/config": "~9.0.0",
+ "expo-json-utils": "~0.13.0"
+ },
+ "peerDependencies": {
+ "expo": "*"
+ }
+ },
+ "node_modules/expo-modules-autolinking": {
+ "version": "1.11.3",
+ "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-1.11.3.tgz",
+ "integrity": "sha512-oYh8EZEvYF5TYppxEKUTTJmbr8j7eRRnrIxzZtMvxLTXoujThVPMFS/cbnSnf2bFm1lq50TdDNABhmEi7z0ngQ==",
+ "dependencies": {
+ "chalk": "^4.1.0",
+ "commander": "^7.2.0",
+ "fast-glob": "^3.2.5",
+ "find-up": "^5.0.0",
+ "fs-extra": "^9.1.0",
+ "require-from-string": "^2.0.2",
+ "resolve-from": "^5.0.0"
+ },
+ "bin": {
+ "expo-modules-autolinking": "bin/expo-modules-autolinking.js"
+ }
+ },
+ "node_modules/expo-modules-autolinking/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/expo-modules-autolinking/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": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/expo-modules-autolinking/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/expo-modules-autolinking/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "node_modules/expo-modules-autolinking/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==",
+ "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/expo-modules-autolinking/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/expo-modules-autolinking/node_modules/jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/expo-modules-autolinking/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/expo-modules-autolinking/node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/expo-modules-core": {
+ "version": "1.12.26",
+ "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-1.12.26.tgz",
+ "integrity": "sha512-y8yDWjOi+rQRdO+HY+LnUlz8qzHerUaw/LUjKPU/mX8PRXP4UUPEEp5fjAwBU44xjNmYSHWZDwet4IBBE+yQUA==",
+ "dependencies": {
+ "invariant": "^2.2.4"
+ }
+ },
+ "node_modules/expo-notifications": {
+ "version": "0.28.15",
+ "resolved": "https://registry.npmjs.org/expo-notifications/-/expo-notifications-0.28.15.tgz",
+ "integrity": "sha512-T303dw2akcG4w8HBKI7+Y1v5kFxYy53DjlBSLBMo5f22vnLTHWaa8oOhmpwGRGU4uiX56Bw4q0wywCTSgbEamQ==",
+ "dependencies": {
+ "@expo/image-utils": "^0.5.0",
+ "@ide/backoff": "^1.0.0",
+ "abort-controller": "^3.0.0",
+ "assert": "^2.0.0",
+ "badgin": "^1.1.5",
+ "expo-application": "~5.9.0",
+ "expo-constants": "~16.0.0",
+ "fs-extra": "^9.1.0"
+ },
+ "peerDependencies": {
+ "expo": "*"
+ }
+ },
+ "node_modules/expo-notifications/node_modules/@expo/image-utils": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.5.1.tgz",
+ "integrity": "sha512-U/GsFfFox88lXULmFJ9Shfl2aQGcwoKPF7fawSCLixIKtMCpsI+1r0h+5i0nQnmt9tHuzXZDL8+Dg1z6OhkI9A==",
+ "dependencies": {
+ "@expo/spawn-async": "^1.7.2",
+ "chalk": "^4.0.0",
+ "fs-extra": "9.0.0",
+ "getenv": "^1.0.0",
+ "jimp-compact": "0.16.1",
+ "node-fetch": "^2.6.0",
+ "parse-png": "^2.1.0",
+ "resolve-from": "^5.0.0",
+ "semver": "^7.6.0",
+ "tempy": "0.3.0"
+ }
+ },
+ "node_modules/expo-notifications/node_modules/@expo/image-utils/node_modules/fs-extra": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz",
+ "integrity": "sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==",
+ "dependencies": {
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/expo-notifications/node_modules/@expo/image-utils/node_modules/universalify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz",
+ "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/expo-notifications/node_modules/@expo/spawn-async": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/@expo/spawn-async/-/spawn-async-1.7.2.tgz",
+ "integrity": "sha512-QdWi16+CHB9JYP7gma19OVVg0BFkvU8zNj9GjWorYI8Iv8FUxjOCcYRuAmX4s/h91e4e7BPsskc8cSrZYho9Ew==",
+ "dependencies": {
+ "cross-spawn": "^7.0.3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/expo-notifications/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/expo-notifications/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": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/expo-notifications/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/expo-notifications/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "node_modules/expo-notifications/node_modules/crypto-random-string": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz",
+ "integrity": "sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/expo-notifications/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==",
+ "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/expo-notifications/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/expo-notifications/node_modules/jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/expo-notifications/node_modules/semver": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/expo-notifications/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/expo-notifications/node_modules/temp-dir": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz",
+ "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/expo-notifications/node_modules/tempy": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.3.0.tgz",
+ "integrity": "sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ==",
+ "dependencies": {
+ "temp-dir": "^1.0.0",
+ "type-fest": "^0.3.1",
+ "unique-string": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/expo-notifications/node_modules/type-fest": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz",
+ "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/expo-notifications/node_modules/unique-string": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz",
+ "integrity": "sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg==",
+ "dependencies": {
+ "crypto-random-string": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/expo-notifications/node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/expo-router": {
+ "version": "3.5.23",
+ "resolved": "https://registry.npmjs.org/expo-router/-/expo-router-3.5.23.tgz",
+ "integrity": "sha512-Re2kYcxov67hWrcjuu0+3ovsLxYn79PuX6hgtYN20MgigY5ttX79KOIBEVGTO3F3y9dxSrGHyy5Z14BcO+usGQ==",
+ "dependencies": {
+ "@expo/metro-runtime": "3.2.3",
+ "@expo/server": "^0.4.0",
+ "@radix-ui/react-slot": "1.0.1",
+ "@react-navigation/bottom-tabs": "~6.5.7",
+ "@react-navigation/native": "~6.1.6",
+ "@react-navigation/native-stack": "~6.9.12",
+ "expo-splash-screen": "0.27.5",
+ "react-native-helmet-async": "2.0.4",
+ "schema-utils": "^4.0.1"
+ },
+ "peerDependencies": {
+ "@react-navigation/drawer": "^6.5.8",
+ "expo": "*",
+ "expo-constants": "*",
+ "expo-linking": "*",
+ "expo-status-bar": "*",
+ "react-native-reanimated": "*",
+ "react-native-safe-area-context": "*",
+ "react-native-screens": "*"
+ },
+ "peerDependenciesMeta": {
+ "@react-navigation/drawer": {
+ "optional": true
+ },
+ "@testing-library/jest-native": {
+ "optional": true
+ },
+ "react-native-reanimated": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/expo-router/node_modules/ajv": {
+ "version": "8.12.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
+ "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+ "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/expo-router/node_modules/ajv-keywords": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
+ "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3"
+ },
+ "peerDependencies": {
+ "ajv": "^8.8.2"
+ }
+ },
+ "node_modules/expo-router/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/expo-router/node_modules/schema-utils": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz",
+ "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==",
+ "dependencies": {
+ "@types/json-schema": "^7.0.9",
+ "ajv": "^8.9.0",
+ "ajv-formats": "^2.1.1",
+ "ajv-keywords": "^5.1.0"
+ },
+ "engines": {
+ "node": ">= 12.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ }
+ },
+ "node_modules/expo-splash-screen": {
+ "version": "0.27.5",
+ "resolved": "https://registry.npmjs.org/expo-splash-screen/-/expo-splash-screen-0.27.5.tgz",
+ "integrity": "sha512-9rdZuLkFCfgJBxrheUsOEOIW6Rp+9NVlpSE0hgXQwbTCLTncf00IHSE8/L2NbFyeDLNjof1yZBppaV7tXHRUzA==",
+ "dependencies": {
+ "@expo/prebuild-config": "7.0.6"
+ },
+ "peerDependencies": {
+ "expo": "*"
+ }
+ },
+ "node_modules/expo-status-bar": {
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/expo-status-bar/-/expo-status-bar-1.12.1.tgz",
+ "integrity": "sha512-/t3xdbS8KB0prj5KG5w7z+wZPFlPtkgs95BsmrP/E7Q0xHXTcDcQ6Cu2FkFuRM+PKTb17cJDnLkawyS5vDLxMA=="
+ },
+ "node_modules/expo-structured-headers": {
+ "version": "3.8.0",
+ "resolved": "https://registry.npmjs.org/expo-structured-headers/-/expo-structured-headers-3.8.0.tgz",
+ "integrity": "sha512-R+gFGn0x5CWl4OVlk2j1bJTJIz4KO8mPoCHpRHmfqMjmrMvrOM0qQSY3V5NHXwp1yT/L2v8aUmFQsBRIdvi1XA=="
+ },
+ "node_modules/expo-updates": {
+ "version": "0.25.22",
+ "resolved": "https://registry.npmjs.org/expo-updates/-/expo-updates-0.25.22.tgz",
+ "integrity": "sha512-ebu+wPnISzJ/H70CFAJAybS4ZZrACxRbgr9SMqOI/h84CwXGmdxzLmgxoNhy5q/Fa1u7JBmSr6x9a7psBDT4Cw==",
+ "dependencies": {
+ "@expo/code-signing-certificates": "0.0.5",
+ "@expo/config": "~9.0.0-beta.0",
+ "@expo/config-plugins": "~8.0.8",
+ "@expo/fingerprint": "^0.10.2",
+ "@expo/spawn-async": "^1.7.2",
+ "arg": "4.1.0",
+ "chalk": "^4.1.2",
+ "expo-eas-client": "~0.12.0",
+ "expo-manifests": "~0.14.0",
+ "expo-structured-headers": "~3.8.0",
+ "expo-updates-interface": "~0.16.2",
+ "fast-glob": "^3.3.2",
+ "fbemitter": "^3.0.0",
+ "ignore": "^5.3.1",
+ "resolve-from": "^5.0.0"
+ },
+ "bin": {
+ "expo-updates": "bin/cli.js"
+ },
+ "peerDependencies": {
+ "expo": "*"
+ }
+ },
+ "node_modules/expo-updates-interface": {
+ "version": "0.16.2",
+ "resolved": "https://registry.npmjs.org/expo-updates-interface/-/expo-updates-interface-0.16.2.tgz",
+ "integrity": "sha512-929XBU70q5ELxkKADj1xL0UIm3HvhYhNAOZv5DSk7rrKvLo7QDdPyl+JVnwZm9LrkNbH4wuE2rLoKu1KMgZ+9A==",
+ "peerDependencies": {
+ "expo": "*"
+ }
+ },
+ "node_modules/expo-updates/node_modules/@expo/spawn-async": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/@expo/spawn-async/-/spawn-async-1.7.2.tgz",
+ "integrity": "sha512-QdWi16+CHB9JYP7gma19OVVg0BFkvU8zNj9GjWorYI8Iv8FUxjOCcYRuAmX4s/h91e4e7BPsskc8cSrZYho9Ew==",
+ "dependencies": {
+ "cross-spawn": "^7.0.3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/expo-updates/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/expo-updates/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": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/expo-updates/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/expo-updates/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "node_modules/expo-updates/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/expo-updates/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/exponential-backoff": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz",
+ "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw=="
+ },
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
+ },
+ "node_modules/fast-diff": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz",
+ "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==",
+ "dev": true
+ },
+ "node_modules/fast-glob": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
+ "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.4"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/fast-glob/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
+ },
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "dev": true
+ },
+ "node_modules/fast-loops": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/fast-loops/-/fast-loops-1.1.3.tgz",
+ "integrity": "sha512-8EZzEP0eKkEEVX+drtd9mtuQ+/QrlfW/5MlwcwK5Nds6EkZ/tRzEexkzUY2mIssnAyVLT+TKHuRXmFNNXYUd6g=="
+ },
+ "node_modules/fast-uri": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.3.tgz",
+ "integrity": "sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw=="
+ },
+ "node_modules/fast-xml-parser": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz",
+ "integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/NaturalIntelligence"
+ },
+ {
+ "type": "paypal",
+ "url": "https://paypal.me/naturalintelligence"
+ }
+ ],
+ "dependencies": {
+ "strnum": "^1.0.5"
+ },
+ "bin": {
+ "fxparser": "src/cli/cli.js"
+ }
+ },
+ "node_modules/fastq": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz",
+ "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==",
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/fb-watchman": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz",
+ "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==",
+ "dependencies": {
+ "bser": "2.1.1"
+ }
+ },
+ "node_modules/fbemitter": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/fbemitter/-/fbemitter-3.0.0.tgz",
+ "integrity": "sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==",
+ "dependencies": {
+ "fbjs": "^3.0.0"
+ }
+ },
+ "node_modules/fbjs": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.5.tgz",
+ "integrity": "sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==",
+ "dependencies": {
+ "cross-fetch": "^3.1.5",
+ "fbjs-css-vars": "^1.0.0",
+ "loose-envify": "^1.0.0",
+ "object-assign": "^4.1.0",
+ "promise": "^7.1.1",
+ "setimmediate": "^1.0.5",
+ "ua-parser-js": "^1.0.35"
+ }
+ },
+ "node_modules/fbjs-css-vars": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz",
+ "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ=="
+ },
+ "node_modules/fetch-retry": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/fetch-retry/-/fetch-retry-4.1.1.tgz",
+ "integrity": "sha512-e6eB7zN6UBSwGVwrbWVH+gdLnkW9WwHhmq2YDK1Sh30pzx1onRVGBvogTlUeWxwTa+L86NYdo4hFkh7O8ZjSnA=="
+ },
+ "node_modules/file-entry-cache": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
+ "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+ "dev": true,
+ "dependencies": {
+ "flat-cache": "^3.0.4"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ }
+ },
+ "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
+ },
+ "node_modules/fill-range": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/filter-obj": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz",
+ "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/finalhandler": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
+ "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
+ "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"
+ }
+ },
+ "node_modules/finalhandler/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/finalhandler/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ },
+ "node_modules/finalhandler/node_modules/on-finished": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+ "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==",
+ "dependencies": {
+ "ee-first": "1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/find-yarn-workspace-root": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz",
+ "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==",
+ "dependencies": {
+ "micromatch": "^4.0.2"
+ }
+ },
+ "node_modules/flat-cache": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.1.tgz",
+ "integrity": "sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==",
+ "dev": true,
+ "dependencies": {
+ "flatted": "^3.2.9",
+ "keyv": "^4.5.3",
+ "rimraf": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/flatted": {
+ "version": "3.2.9",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz",
+ "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==",
+ "dev": true
+ },
+ "node_modules/flow-enums-runtime": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/flow-enums-runtime/-/flow-enums-runtime-0.0.6.tgz",
+ "integrity": "sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw=="
+ },
+ "node_modules/flow-parser": {
+ "version": "0.206.0",
+ "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.206.0.tgz",
+ "integrity": "sha512-HVzoK3r6Vsg+lKvlIZzaWNBVai+FXTX1wdYhz/wVlH13tb/gOdLXmlTqy6odmTBhT5UoWUbq0k8263Qhr9d88w==",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/follow-redirects": {
+ "version": "1.15.3",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz",
+ "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/RubenVerborgh"
+ }
+ ],
+ "engines": {
+ "node": ">=4.0"
+ },
+ "peerDependenciesMeta": {
+ "debug": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/fontfaceobserver": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/fontfaceobserver/-/fontfaceobserver-2.3.0.tgz",
+ "integrity": "sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg=="
+ },
+ "node_modules/for-each": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
+ "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
+ "dependencies": {
+ "is-callable": "^1.1.3"
+ }
+ },
+ "node_modules/foreground-child": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz",
+ "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==",
+ "dependencies": {
+ "cross-spawn": "^7.0.0",
+ "signal-exit": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/foreground-child/node_modules/signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/freeport-async": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/freeport-async/-/freeport-async-2.0.0.tgz",
+ "integrity": "sha512-K7od3Uw45AJg00XUmy15+Hae2hOcgKcmN3/EF6Y7i01O0gaqiRx8sUSpsb9+BRNL8RPBrhzPsVfy8q9ADlJuWQ==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/fs-constants": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
+ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
+ "dev": true
+ },
+ "node_modules/fs-extra": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
+ "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=6 <7 || >=8"
+ }
+ },
+ "node_modules/fs-minipass": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz",
+ "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==",
+ "dependencies": {
+ "minipass": "^7.0.3"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "hasInstallScript": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/function.prototype.name": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz",
+ "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "functions-have-names": "^1.2.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/functions-have-names": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
+ "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "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==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
+ "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "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==",
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/get-port": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz",
+ "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "pump": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/get-symbol-description": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz",
+ "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==",
+ "dependencies": {
+ "call-bind": "^1.0.5",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/getenv": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/getenv/-/getenv-1.0.0.tgz",
+ "integrity": "sha512-7yetJWqbS9sbn0vIfliPsFgoXMKn/YMF+Wuiog97x+urnSRRRZ7xB+uVkwGKzRgq9CDFfMQnE9ruL5DHv9c6Xg==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/github-from-package": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz",
+ "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==",
+ "dev": true
+ },
+ "node_modules/glob": {
+ "version": "7.1.6",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
+ "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
+ "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/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": {
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "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==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/globalthis": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz",
+ "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==",
+ "dependencies": {
+ "define-properties": "^1.1.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/globby": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
+ "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
+ "dependencies": {
+ "array-union": "^2.1.0",
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.2.9",
+ "ignore": "^5.2.0",
+ "merge2": "^1.4.1",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/gopd": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
+ "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+ "dependencies": {
+ "get-intrinsic": "^1.1.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
+ },
+ "node_modules/graphemer": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
+ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
+ "dev": true
+ },
+ "node_modules/graphql": {
+ "version": "15.8.0",
+ "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz",
+ "integrity": "sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==",
+ "engines": {
+ "node": ">= 10.x"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "tslib": "^2.1.0"
+ },
+ "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/has-bigints": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
+ "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/has-property-descriptors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
+ "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
+ "dependencies": {
+ "es-define-property": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-proto": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz",
+ "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "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==",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-tostringtag": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
+ "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
+ "dependencies": {
+ "has-symbols": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/hermes-estree": {
+ "version": "0.19.1",
+ "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.19.1.tgz",
+ "integrity": "sha512-daLGV3Q2MKk8w4evNMKwS8zBE/rcpA800nu1Q5kM08IKijoSnPe9Uo1iIxzPKRkn95IxxsgBMPeYHt3VG4ej2g=="
+ },
+ "node_modules/hermes-parser": {
+ "version": "0.19.1",
+ "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.19.1.tgz",
+ "integrity": "sha512-Vp+bXzxYJWrpEuJ/vXxUsLnt0+y4q9zyi4zUlkLqD8FKv4LjIfOvP69R/9Lty3dCyKh0E2BU7Eypqr63/rKT/A==",
+ "dependencies": {
+ "hermes-estree": "0.19.1"
+ }
+ },
+ "node_modules/hermes-profile-transformer": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/hermes-profile-transformer/-/hermes-profile-transformer-0.0.6.tgz",
+ "integrity": "sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==",
+ "dependencies": {
+ "source-map": "^0.7.3"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/hermes-profile-transformer/node_modules/source-map": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
+ "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "react-is": "^16.7.0"
+ }
+ },
+ "node_modules/hosted-git-info": {
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz",
+ "integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==",
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/hosted-git-info/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/hosted-git-info/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ },
+ "node_modules/html-encoding-sniffer": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz",
+ "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==",
+ "dependencies": {
+ "whatwg-encoding": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "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=="
+ },
+ "node_modules/http-errors": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+ "dependencies": {
+ "depd": "2.0.0",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "toidentifier": "1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/http-errors/node_modules/statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "@tootallnate/once": "2",
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/https-proxy-agent": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+ "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+ "dependencies": {
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "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==",
+ "engines": {
+ "node": ">=10.17.0"
+ }
+ },
+ "node_modules/hyphenate-style-name": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz",
+ "integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ=="
+ },
+ "node_modules/ieee754": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+ "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/ignore": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
+ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/image-size": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.1.1.tgz",
+ "integrity": "sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==",
+ "dependencies": {
+ "queue": "6.0.2"
+ },
+ "bin": {
+ "image-size": "bin/image-size.js"
+ },
+ "engines": {
+ "node": ">=16.x"
+ }
+ },
+ "node_modules/import-fresh": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+ "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+ "dev": true,
+ "dependencies": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/import-fresh/node_modules/resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true,
+ "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==",
+ "dependencies": {
+ "pkg-dir": "^4.2.0",
+ "resolve-cwd": "^3.0.0"
+ },
+ "bin": {
+ "import-local-fixture": "fixtures/cli.js"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/indent-string": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
+ "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "dependencies": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+ },
+ "node_modules/ini": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="
+ },
+ "node_modules/inline-style-prefixer": {
+ "version": "6.0.4",
+ "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-6.0.4.tgz",
+ "integrity": "sha512-FwXmZC2zbeeS7NzGjJ6pAiqRhXR0ugUShSNb6GApMl6da0/XGc4MOJsoWAywia52EEWbXNSy0pzkwz/+Y+swSg==",
+ "dependencies": {
+ "css-in-js-utils": "^3.1.0",
+ "fast-loops": "^1.1.3"
+ }
+ },
+ "node_modules/internal-ip": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz",
+ "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==",
+ "dependencies": {
+ "default-gateway": "^4.2.0",
+ "ipaddr.js": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/internal-slot": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz",
+ "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "hasown": "^2.0.0",
+ "side-channel": "^1.0.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/invariant": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
+ "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
+ "dependencies": {
+ "loose-envify": "^1.0.0"
+ }
+ },
+ "node_modules/ip-regex": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz",
+ "integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "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/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==",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-array-buffer": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz",
+ "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="
+ },
+ "node_modules/is-async-function": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz",
+ "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==",
+ "dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-bigint": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
+ "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
+ "dependencies": {
+ "has-bigints": "^1.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-boolean-object": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
+ "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "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=="
+ },
+ "node_modules/is-callable": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
+ "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-core-module": {
+ "version": "2.13.1",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz",
+ "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",
+ "dependencies": {
+ "hasown": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-data-view": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz",
+ "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==",
+ "dependencies": {
+ "is-typed-array": "^1.1.13"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-date-object": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
+ "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-directory": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz",
+ "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "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==",
+ "bin": {
+ "is-docker": "cli.js"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-finalizationregistry": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz",
+ "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "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==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/is-generator-function": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz",
+ "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==",
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "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": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-inside-container": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz",
+ "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==",
+ "dev": true,
+ "dependencies": {
+ "is-docker": "^3.0.0"
+ },
+ "bin": {
+ "is-inside-container": "cli.js"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-inside-container/node_modules/is-docker": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz",
+ "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==",
+ "dev": true,
+ "bin": {
+ "is-docker": "cli.js"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-interactive": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz",
+ "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-invalid-path": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/is-invalid-path/-/is-invalid-path-0.1.0.tgz",
+ "integrity": "sha512-aZMG0T3F34mTg4eTdszcGXx54oiZ4NtHSft3hWNJMGJXUUqdIj3cOZuHcU0nCWWcY3jd7yRe/3AEm3vSNTpBGQ==",
+ "dependencies": {
+ "is-glob": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-invalid-path/node_modules/is-extglob": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
+ "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-invalid-path/node_modules/is-glob": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
+ "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==",
+ "dependencies": {
+ "is-extglob": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "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,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-nan": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz",
+ "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==",
+ "dependencies": {
+ "call-bind": "^1.0.0",
+ "define-properties": "^1.1.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-negative-zero": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz",
+ "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-number-object": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
+ "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "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==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "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==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "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==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.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=="
+ },
+ "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==",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "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.3",
+ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz",
+ "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==",
+ "dependencies": {
+ "call-bind": "^1.0.7"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-string": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
+ "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-symbol": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
+ "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
+ "dependencies": {
+ "has-symbols": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-typed-array": {
+ "version": "1.1.13",
+ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz",
+ "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==",
+ "dependencies": {
+ "which-typed-array": "^1.1.14"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-unicode-supported": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
+ "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-valid-path": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-valid-path/-/is-valid-path-0.1.1.tgz",
+ "integrity": "sha512-+kwPrVDu9Ms03L90Qaml+79+6DZHqHyRoANI6IsZJ/g8frhnfchDOBCa0RbQ6/kdHt5CS5OeIEyrYznNuVN+8A==",
+ "dependencies": {
+ "is-invalid-path": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-weakmap": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz",
+ "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-weakref": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
+ "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
+ "dependencies": {
+ "call-bind": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-weakset": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz",
+ "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==",
"dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "is-docker": "^2.0.0"
+ },
"engines": {
- "node": ">=4"
+ "node": ">=8"
+ }
+ },
+ "node_modules/isarray": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
+ },
+ "node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/isomorphic-fetch": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz",
+ "integrity": "sha512-9c4TNAKYXM5PRyVcwUZrF3W09nQ+sO7+jydgs4ZGW9dhsLG2VOlISJABombdQqQRXCwuYG3sYV/puGf5rp0qmA==",
+ "dependencies": {
+ "node-fetch": "^1.0.1",
+ "whatwg-fetch": ">=0.10.0"
+ }
+ },
+ "node_modules/isomorphic-fetch/node_modules/node-fetch": {
+ "version": "1.7.3",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz",
+ "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==",
+ "dependencies": {
+ "encoding": "^0.1.11",
+ "is-stream": "^1.0.1"
+ }
+ },
+ "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==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-lib-instrument": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz",
+ "integrity": "sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==",
+ "dependencies": {
+ "@babel/core": "^7.12.3",
+ "@babel/parser": "^7.14.7",
+ "@istanbuljs/schema": "^0.1.2",
+ "istanbul-lib-coverage": "^3.2.0",
+ "semver": "^7.5.4"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/istanbul-lib-instrument/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/istanbul-lib-instrument/node_modules/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/istanbul-lib-instrument/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ },
+ "node_modules/istanbul-lib-report": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz",
+ "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==",
+ "dependencies": {
+ "istanbul-lib-coverage": "^3.0.0",
+ "make-dir": "^4.0.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/istanbul-lib-report/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/istanbul-lib-report/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/istanbul-lib-report/node_modules/make-dir": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz",
+ "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==",
+ "dependencies": {
+ "semver": "^7.5.3"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/istanbul-lib-report/node_modules/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/istanbul-lib-report/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/istanbul-lib-report/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ },
+ "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==",
+ "dependencies": {
+ "debug": "^4.1.1",
+ "istanbul-lib-coverage": "^3.0.0",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/istanbul-reports": {
+ "version": "3.1.6",
+ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz",
+ "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==",
+ "dependencies": {
+ "html-escaper": "^2.0.0",
+ "istanbul-lib-report": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/iterator.prototype": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz",
+ "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==",
+ "dev": true,
+ "dependencies": {
+ "define-properties": "^1.2.1",
+ "get-intrinsic": "^1.2.1",
+ "has-symbols": "^1.0.3",
+ "reflect.getprototypeof": "^1.0.4",
+ "set-function-name": "^2.0.1"
+ }
+ },
+ "node_modules/jackspeak": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
+ "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
}
},
- "node_modules/decompress/node_modules/pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
- "dev": true,
+ "node_modules/jest": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz",
+ "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==",
+ "dependencies": {
+ "@jest/core": "^29.7.0",
+ "@jest/types": "^29.6.3",
+ "import-local": "^3.0.2",
+ "jest-cli": "^29.7.0"
+ },
+ "bin": {
+ "jest": "bin/jest.js"
+ },
"engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/dedent": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz",
- "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==",
- "dev": true,
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ },
"peerDependencies": {
- "babel-plugin-macros": "^3.1.0"
+ "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
},
"peerDependenciesMeta": {
- "babel-plugin-macros": {
+ "node-notifier": {
"optional": true
}
}
},
- "node_modules/deep-is": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
- "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
- "dev": true
+ "node_modules/jest-changed-files": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz",
+ "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==",
+ "dependencies": {
+ "execa": "^5.0.0",
+ "jest-util": "^29.7.0",
+ "p-limit": "^3.1.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
},
- "node_modules/deepmerge": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
- "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
- "dev": true,
+ "node_modules/jest-changed-files/node_modules/execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "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/defaults": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz",
- "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==",
- "dev": true,
+ "node_modules/jest-changed-files/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/jest-changed-files/node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/jest-changed-files/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==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/jest-changed-files/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==",
"dependencies": {
- "clone": "^1.0.2"
+ "path-key": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-changed-files/node_modules/onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "dependencies": {
+ "mimic-fn": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/define-data-property": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
- "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
+ "node_modules/jest-circus": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz",
+ "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==",
"dependencies": {
- "es-define-property": "^1.0.0",
- "es-errors": "^1.3.0",
- "gopd": "^1.0.1"
+ "@jest/environment": "^29.7.0",
+ "@jest/expect": "^29.7.0",
+ "@jest/test-result": "^29.7.0",
+ "@jest/types": "^29.6.3",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "co": "^4.6.0",
+ "dedent": "^1.0.0",
+ "is-generator-fn": "^2.0.0",
+ "jest-each": "^29.7.0",
+ "jest-matcher-utils": "^29.7.0",
+ "jest-message-util": "^29.7.0",
+ "jest-runtime": "^29.7.0",
+ "jest-snapshot": "^29.7.0",
+ "jest-util": "^29.7.0",
+ "p-limit": "^3.1.0",
+ "pretty-format": "^29.7.0",
+ "pure-rand": "^6.0.0",
+ "slash": "^3.0.0",
+ "stack-utils": "^2.0.3"
},
"engines": {
- "node": ">= 0.4"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-circus/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
},
"funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "node_modules/jest-circus/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": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
"engines": {
- "node": ">=0.4.0"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/delegates": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
- "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ=="
+ "node_modules/jest-circus/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
},
- "node_modules/denque": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz",
- "integrity": "sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==",
+ "node_modules/jest-circus/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "node_modules/jest-circus/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": ">=0.10"
+ "node": ">=8"
}
},
- "node_modules/depd": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
- "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "node_modules/jest-circus/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/jest-cli": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz",
+ "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==",
+ "dependencies": {
+ "@jest/core": "^29.7.0",
+ "@jest/test-result": "^29.7.0",
+ "@jest/types": "^29.6.3",
+ "chalk": "^4.0.0",
+ "create-jest": "^29.7.0",
+ "exit": "^0.1.2",
+ "import-local": "^3.0.2",
+ "jest-config": "^29.7.0",
+ "jest-util": "^29.7.0",
+ "jest-validate": "^29.7.0",
+ "yargs": "^17.3.1"
+ },
+ "bin": {
+ "jest": "bin/jest.js"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ },
+ "peerDependencies": {
+ "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+ },
+ "peerDependenciesMeta": {
+ "node-notifier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jest-cli/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
"engines": {
- "node": ">= 0.8"
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/destroy": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
- "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
+ "node_modules/jest-cli/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": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
"engines": {
- "node": ">= 0.8",
- "npm": "1.2.8000 || >= 1.4.16"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/detect-libc": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz",
- "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==",
+ "node_modules/jest-cli/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
"engines": {
- "node": ">=8"
+ "node": ">=7.0.0"
}
},
- "node_modules/detect-newline": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz",
- "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==",
- "dev": true,
+ "node_modules/jest-cli/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "node_modules/jest-cli/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/dezalgo": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz",
- "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==",
- "dev": true,
+ "node_modules/jest-cli/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": {
- "asap": "^2.0.0",
- "wrappy": "1"
- }
- },
- "node_modules/diff": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
- "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
- "dev": true,
+ "has-flag": "^4.0.0"
+ },
"engines": {
- "node": ">=0.3.1"
+ "node": ">=8"
}
},
- "node_modules/diff-sequences": {
- "version": "29.6.3",
- "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz",
- "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==",
- "dev": true,
+ "node_modules/jest-config": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz",
+ "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==",
+ "dependencies": {
+ "@babel/core": "^7.11.6",
+ "@jest/test-sequencer": "^29.7.0",
+ "@jest/types": "^29.6.3",
+ "babel-jest": "^29.7.0",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "deepmerge": "^4.2.2",
+ "glob": "^7.1.3",
+ "graceful-fs": "^4.2.9",
+ "jest-circus": "^29.7.0",
+ "jest-environment-node": "^29.7.0",
+ "jest-get-type": "^29.6.3",
+ "jest-regex-util": "^29.6.3",
+ "jest-resolve": "^29.7.0",
+ "jest-runner": "^29.7.0",
+ "jest-util": "^29.7.0",
+ "jest-validate": "^29.7.0",
+ "micromatch": "^4.0.4",
+ "parse-json": "^5.2.0",
+ "pretty-format": "^29.7.0",
+ "slash": "^3.0.0",
+ "strip-json-comments": "^3.1.1"
+ },
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ },
+ "peerDependencies": {
+ "@types/node": "*",
+ "ts-node": ">=9.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ },
+ "ts-node": {
+ "optional": true
+ }
}
},
- "node_modules/dir-glob": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
- "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
- "dev": true,
+ "node_modules/jest-config/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dependencies": {
- "path-type": "^4.0.0"
+ "color-convert": "^2.0.1"
},
"engines": {
"node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/doctrine": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
- "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
- "dev": true,
+ "node_modules/jest-config/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": {
- "esutils": "^2.0.2"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
},
"engines": {
- "node": ">=6.0.0"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/dotenv": {
- "version": "10.0.0",
- "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz",
- "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==",
+ "node_modules/jest-config/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
"engines": {
- "node": ">=10"
+ "node": ">=7.0.0"
}
},
- "node_modules/dotenv-expand": {
- "version": "8.0.3",
- "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-8.0.3.tgz",
- "integrity": "sha512-SErOMvge0ZUyWd5B0NXMQlDkN+8r+HhVUsxgOO7IoPDOdDRD2JjExpN6y3KnFR66jsJMwSn1pqIivhU5rcJiNg==",
+ "node_modules/jest-config/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "node_modules/jest-config/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": ">=12"
+ "node": ">=8"
}
},
- "node_modules/download": {
- "version": "6.2.5",
- "resolved": "https://registry.npmjs.org/download/-/download-6.2.5.tgz",
- "integrity": "sha512-DpO9K1sXAST8Cpzb7kmEhogJxymyVUd5qz/vCOSyvwtp2Klj2XcDt5YUuasgxka44SxF0q5RriKIwJmQHG2AuA==",
- "dev": true,
+ "node_modules/jest-config/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": {
- "caw": "^2.0.0",
- "content-disposition": "^0.5.2",
- "decompress": "^4.0.0",
- "ext-name": "^5.0.0",
- "file-type": "5.2.0",
- "filenamify": "^2.0.0",
- "get-stream": "^3.0.0",
- "got": "^7.0.0",
- "make-dir": "^1.0.0",
- "p-event": "^1.0.0",
- "pify": "^3.0.0"
+ "has-flag": "^4.0.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=8"
}
},
- "node_modules/download/node_modules/get-stream": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
- "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==",
- "dev": true,
+ "node_modules/jest-diff": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz",
+ "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==",
+ "dependencies": {
+ "chalk": "^4.0.0",
+ "diff-sequences": "^29.6.3",
+ "jest-get-type": "^29.6.3",
+ "pretty-format": "^29.7.0"
+ },
"engines": {
- "node": ">=4"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "node_modules/download/node_modules/make-dir": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
- "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
- "dev": true,
+ "node_modules/jest-diff/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dependencies": {
- "pify": "^3.0.0"
+ "color-convert": "^2.0.1"
},
"engines": {
- "node": ">=4"
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/dunder-proto": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.0.tgz",
- "integrity": "sha512-9+Sj30DIu+4KvHqMfLUGLFYL2PkURSYMVXJyXe92nFRvlYq5hBjLEhblKB+vkd/WVlUYMWigiY07T91Fkk0+4A==",
+ "node_modules/jest-diff/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": {
- "call-bind-apply-helpers": "^1.0.0",
- "es-errors": "^1.3.0",
- "gopd": "^1.2.0"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
},
"engines": {
- "node": ">= 0.4"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/duplexer3": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz",
- "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==",
- "dev": true
- },
- "node_modules/ecdsa-sig-formatter": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
- "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
+ "node_modules/jest-diff/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dependencies": {
- "safe-buffer": "^5.0.1"
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
}
},
- "node_modules/ee-first": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
- "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
- },
- "node_modules/electron-to-chromium": {
- "version": "1.4.565",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.565.tgz",
- "integrity": "sha512-XbMoT6yIvg2xzcbs5hCADi0dXBh4//En3oFXmtPX+jiyyiCTiM9DGFT2SLottjpEs9Z8Mh8SqahbR96MaHfuSg==",
- "dev": true
+ "node_modules/jest-diff/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
- "node_modules/emittery": {
- "version": "0.13.1",
- "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz",
- "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==",
- "dev": true,
+ "node_modules/jest-diff/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": ">=12"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/emittery?sponsor=1"
+ "node": ">=8"
}
},
- "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/encodeurl": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
- "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
+ "node_modules/jest-diff/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": ">= 0.8"
+ "node": ">=8"
}
- },
- "node_modules/end-of-stream": {
- "version": "1.4.4",
- "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
- "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
- "dev": true,
+ },
+ "node_modules/jest-docblock": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz",
+ "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==",
"dependencies": {
- "once": "^1.4.0"
+ "detect-newline": "^3.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "node_modules/enhanced-resolve": {
- "version": "5.15.0",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz",
- "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==",
- "dev": true,
+ "node_modules/jest-each": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz",
+ "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==",
"dependencies": {
- "graceful-fs": "^4.2.4",
- "tapable": "^2.2.0"
+ "@jest/types": "^29.6.3",
+ "chalk": "^4.0.0",
+ "jest-get-type": "^29.6.3",
+ "jest-util": "^29.7.0",
+ "pretty-format": "^29.7.0"
},
"engines": {
- "node": ">=10.13.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "node_modules/entities": {
+ "node_modules/jest-each/node_modules/ansi-styles": {
"version": "4.3.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-4.3.0.tgz",
- "integrity": "sha512-/iP1rZrSEJ0DTlPiX+jbzlA3eVkY/e8L8SozroF395fIqE3TYF/Nz7YOMAawta+vLmyJ/hkGNNPcSbMADCCXbg==",
- "dev": true,
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
"engines": {
- "node": ">=0.12"
+ "node": ">=8"
},
"funding": {
- "url": "https://github.com/fb55/entities?sponsor=1"
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/error-ex": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
- "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
- "dev": true,
+ "node_modules/jest-each/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": {
- "is-arrayish": "^0.2.1"
- }
- },
- "node_modules/es-define-property": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
- "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/es-errors": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
- "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
"engines": {
- "node": ">= 0.4"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "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
- },
- "node_modules/escalade": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "node_modules/jest-each/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
"engines": {
- "node": ">=6"
+ "node": ">=7.0.0"
}
},
- "node_modules/escape-html": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
- "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
+ "node_modules/jest-each/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
- "node_modules/escape-string-regexp": {
+ "node_modules/jest-each/node_modules/has-flag": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
- "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
- "dev": true,
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=8"
}
},
- "node_modules/eslint": {
- "version": "8.10.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.10.0.tgz",
- "integrity": "sha512-tcI1D9lfVec+R4LE1mNDnzoJ/f71Kl/9Cv4nG47jOueCMBrCCKYXr4AUVS7go6mWYGFD4+EoN6+eXSrEbRzXVw==",
- "dev": true,
+ "node_modules/jest-each/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": {
- "@eslint/eslintrc": "^1.2.0",
- "@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"
+ "has-flag": "^4.0.0"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/eslint-config-prettier": {
- "version": "8.4.0",
- "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.4.0.tgz",
- "integrity": "sha512-CFotdUcMY18nGRo5KGsnNxpznzhkopOcOo0InID+sgQssPrzjvsyKZPvOgymTFeHrFuC3Tzdf2YndhXtULK9Iw==",
- "dev": true,
- "bin": {
- "eslint-config-prettier": "bin/cli.js"
- },
- "peerDependencies": {
- "eslint": ">=7.0.0"
+ "node": ">=8"
}
},
- "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,
+ "node_modules/jest-environment-jsdom": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz",
+ "integrity": "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==",
"dependencies": {
- "prettier-linter-helpers": "^1.0.0"
+ "@jest/environment": "^29.7.0",
+ "@jest/fake-timers": "^29.7.0",
+ "@jest/types": "^29.6.3",
+ "@types/jsdom": "^20.0.0",
+ "@types/node": "*",
+ "jest-mock": "^29.7.0",
+ "jest-util": "^29.7.0",
+ "jsdom": "^20.0.0"
},
"engines": {
- "node": ">=6.0.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
},
"peerDependencies": {
- "eslint": ">=7.28.0",
- "prettier": ">=2.0.0"
+ "canvas": "^2.5.0"
},
"peerDependenciesMeta": {
- "eslint-config-prettier": {
+ "canvas": {
"optional": true
}
}
},
- "node_modules/eslint-scope": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
- "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
- "dev": true,
+ "node_modules/jest-environment-node": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz",
+ "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==",
"dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
+ "@jest/environment": "^29.7.0",
+ "@jest/fake-timers": "^29.7.0",
+ "@jest/types": "^29.6.3",
+ "@types/node": "*",
+ "jest-mock": "^29.7.0",
+ "jest-util": "^29.7.0"
},
"engines": {
- "node": ">=8.0.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "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,
+ "node_modules/jest-expo": {
+ "version": "51.0.3",
+ "resolved": "https://registry.npmjs.org/jest-expo/-/jest-expo-51.0.3.tgz",
+ "integrity": "sha512-r49OuS9X2S/dH+lSfNmarBS2L/tgvBhzOgKHYFyDJWo+Bb5uVs7Rg/GZal/RD/NDkKFJuByGAaW1F6zHYnjZnw==",
+ "dependencies": {
+ "@expo/config": "~9.0.0-beta.0",
+ "@expo/json-file": "^8.3.0",
+ "@jest/create-cache-key-function": "^29.2.1",
+ "babel-jest": "^29.2.1",
+ "find-up": "^5.0.0",
+ "jest-environment-jsdom": "^29.2.1",
+ "jest-watch-select-projects": "^2.0.0",
+ "jest-watch-typeahead": "2.2.1",
+ "json5": "^2.2.3",
+ "lodash": "^4.17.19",
+ "react-test-renderer": "18.2.0",
+ "stacktrace-js": "^2.0.2"
+ },
+ "bin": {
+ "jest": "bin/jest.js"
+ }
+ },
+ "node_modules/jest-expo/node_modules/@babel/code-frame": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz",
+ "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==",
+ "dependencies": {
+ "@babel/highlight": "^7.10.4"
+ }
+ },
+ "node_modules/jest-expo/node_modules/@expo/json-file": {
+ "version": "8.3.3",
+ "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.3.3.tgz",
+ "integrity": "sha512-eZ5dld9AD0PrVRiIWpRkm5aIoWBw3kAyd8VkuWEy92sEthBKDDDHAnK2a0dw0Eil6j7rK7lS/Qaq/Zzngv2h5A==",
+ "dependencies": {
+ "@babel/code-frame": "~7.10.4",
+ "json5": "^2.2.2",
+ "write-file-atomic": "^2.3.0"
+ }
+ },
+ "node_modules/jest-get-type": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz",
+ "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==",
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-haste-map": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz",
+ "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==",
"dependencies": {
- "eslint-visitor-keys": "^2.0.0"
+ "@jest/types": "^29.6.3",
+ "@types/graceful-fs": "^4.1.3",
+ "@types/node": "*",
+ "anymatch": "^3.0.3",
+ "fb-watchman": "^2.0.0",
+ "graceful-fs": "^4.2.9",
+ "jest-regex-util": "^29.6.3",
+ "jest-util": "^29.7.0",
+ "jest-worker": "^29.7.0",
+ "micromatch": "^4.0.4",
+ "walker": "^1.0.8"
},
"engines": {
- "node": "^10.0.0 || ^12.0.0 || >= 14.0.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
},
- "funding": {
- "url": "https://github.com/sponsors/mysticatea"
+ "optionalDependencies": {
+ "fsevents": "^2.3.2"
+ }
+ },
+ "node_modules/jest-leak-detector": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz",
+ "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==",
+ "dependencies": {
+ "jest-get-type": "^29.6.3",
+ "pretty-format": "^29.7.0"
},
- "peerDependencies": {
- "eslint": ">=5"
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "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,
+ "node_modules/jest-matcher-utils": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz",
+ "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==",
+ "dependencies": {
+ "chalk": "^4.0.0",
+ "jest-diff": "^29.7.0",
+ "jest-get-type": "^29.6.3",
+ "pretty-format": "^29.7.0"
+ },
"engines": {
- "node": ">=10"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "node_modules/eslint-visitor-keys": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
- "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
- "dev": true,
+ "node_modules/jest-matcher-utils/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": ">=8"
},
"funding": {
- "url": "https://opencollective.com/eslint"
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/eslint/node_modules/chalk": {
+ "node_modules/jest-matcher-utils/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"
@@ -5917,689 +15317,740 @@
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/eslint/node_modules/eslint-scope": {
- "version": "7.2.2",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
- "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
- "dev": true,
+ "node_modules/jest-matcher-utils/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
+ "color-name": "~1.1.4"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
+ "node": ">=7.0.0"
}
},
- "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,
+ "node_modules/jest-matcher-utils/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "node_modules/jest-matcher-utils/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": ">=4.0"
+ "node": ">=8"
}
},
- "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,
+ "node_modules/jest-matcher-utils/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": {
- "is-glob": "^4.0.3"
+ "has-flag": "^4.0.0"
},
"engines": {
- "node": ">=10.13.0"
+ "node": ">=8"
}
},
- "node_modules/espree": {
- "version": "9.6.1",
- "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
- "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
- "dev": true,
+ "node_modules/jest-message-util": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz",
+ "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==",
"dependencies": {
- "acorn": "^8.9.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
+ "@babel/code-frame": "^7.12.13",
+ "@jest/types": "^29.6.3",
+ "@types/stack-utils": "^2.0.0",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.9",
+ "micromatch": "^4.0.4",
+ "pretty-format": "^29.7.0",
+ "slash": "^3.0.0",
+ "stack-utils": "^2.0.3"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-message-util/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
},
"funding": {
- "url": "https://opencollective.com/eslint"
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/esprima": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
- "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
- "dev": true,
- "bin": {
- "esparse": "bin/esparse.js",
- "esvalidate": "bin/esvalidate.js"
+ "node_modules/jest-message-util/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": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/esquery": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
- "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
- "dev": true,
+ "node_modules/jest-message-util/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dependencies": {
- "estraverse": "^5.1.0"
+ "color-name": "~1.1.4"
},
"engines": {
- "node": ">=0.10"
+ "node": ">=7.0.0"
}
},
- "node_modules/esquery/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,
+ "node_modules/jest-message-util/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "node_modules/jest-message-util/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": ">=4.0"
+ "node": ">=8"
}
},
- "node_modules/esrecurse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
- "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
- "dev": true,
+ "node_modules/jest-message-util/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": {
- "estraverse": "^5.2.0"
+ "has-flag": "^4.0.0"
},
"engines": {
- "node": ">=4.0"
+ "node": ">=8"
}
},
- "node_modules/esrecurse/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,
+ "node_modules/jest-mock": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz",
+ "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==",
+ "dependencies": {
+ "@jest/types": "^29.6.3",
+ "@types/node": "*",
+ "jest-util": "^29.7.0"
+ },
"engines": {
- "node": ">=4.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "node_modules/estraverse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
- "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
- "dev": true,
+ "node_modules/jest-mock-extended": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/jest-mock-extended/-/jest-mock-extended-3.0.5.tgz",
+ "integrity": "sha512-/eHdaNPUAXe7f65gHH5urc8SbRVWjYxBqmCgax2uqOBJy8UUcCBMN1upj1eZ8y/i+IqpyEm4Kq0VKss/GCCTdw==",
+ "dependencies": {
+ "ts-essentials": "^7.0.3"
+ },
+ "peerDependencies": {
+ "jest": "^24.0.0 || ^25.0.0 || ^26.0.0 || ^27.0.0 || ^28.0.0 || ^29.0.0",
+ "typescript": "^3.0.0 || ^4.0.0 || ^5.0.0"
+ }
+ },
+ "node_modules/jest-pnp-resolver": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz",
+ "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==",
"engines": {
- "node": ">=4.0"
+ "node": ">=6"
+ },
+ "peerDependencies": {
+ "jest-resolve": "*"
+ },
+ "peerDependenciesMeta": {
+ "jest-resolve": {
+ "optional": true
+ }
}
},
- "node_modules/esutils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
- "dev": true,
+ "node_modules/jest-regex-util": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz",
+ "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==",
"engines": {
- "node": ">=0.10.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "node_modules/etag": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
- "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+ "node_modules/jest-resolve": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz",
+ "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==",
+ "dependencies": {
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.9",
+ "jest-haste-map": "^29.7.0",
+ "jest-pnp-resolver": "^1.2.2",
+ "jest-util": "^29.7.0",
+ "jest-validate": "^29.7.0",
+ "resolve": "^1.20.0",
+ "resolve.exports": "^2.0.0",
+ "slash": "^3.0.0"
+ },
"engines": {
- "node": ">= 0.6"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "node_modules/eventemitter3": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz",
- "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==",
- "dev": true
+ "node_modules/jest-resolve-dependencies": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz",
+ "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==",
+ "dependencies": {
+ "jest-regex-util": "^29.6.3",
+ "jest-snapshot": "^29.7.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
},
- "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,
+ "node_modules/jest-resolve/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
"engines": {
- "node": ">=0.8.x"
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "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/jest-resolve/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": {
- "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"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
},
"engines": {
"node": ">=10"
},
"funding": {
- "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/exit": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
- "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==",
- "dev": true,
+ "node_modules/jest-resolve/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
"engines": {
- "node": ">= 0.8.0"
+ "node": ">=7.0.0"
}
},
- "node_modules/expect": {
+ "node_modules/jest-resolve/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "node_modules/jest-resolve/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/jest-resolve/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/jest-runner": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz",
- "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==",
- "dev": true,
+ "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz",
+ "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==",
"dependencies": {
- "@jest/expect-utils": "^29.7.0",
- "jest-get-type": "^29.6.3",
- "jest-matcher-utils": "^29.7.0",
+ "@jest/console": "^29.7.0",
+ "@jest/environment": "^29.7.0",
+ "@jest/test-result": "^29.7.0",
+ "@jest/transform": "^29.7.0",
+ "@jest/types": "^29.6.3",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "emittery": "^0.13.1",
+ "graceful-fs": "^4.2.9",
+ "jest-docblock": "^29.7.0",
+ "jest-environment-node": "^29.7.0",
+ "jest-haste-map": "^29.7.0",
+ "jest-leak-detector": "^29.7.0",
"jest-message-util": "^29.7.0",
- "jest-util": "^29.7.0"
+ "jest-resolve": "^29.7.0",
+ "jest-runtime": "^29.7.0",
+ "jest-util": "^29.7.0",
+ "jest-watcher": "^29.7.0",
+ "jest-worker": "^29.7.0",
+ "p-limit": "^3.1.0",
+ "source-map-support": "0.5.13"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "node_modules/express": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz",
- "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==",
+ "node_modules/jest-runner/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dependencies": {
- "accepts": "~1.3.8",
- "array-flatten": "1.1.1",
- "body-parser": "1.20.3",
- "content-disposition": "0.5.4",
- "content-type": "~1.0.4",
- "cookie": "0.7.1",
- "cookie-signature": "1.0.6",
- "debug": "2.6.9",
- "depd": "2.0.0",
- "encodeurl": "~2.0.0",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "finalhandler": "1.3.1",
- "fresh": "0.5.2",
- "http-errors": "2.0.0",
- "merge-descriptors": "1.0.3",
- "methods": "~1.1.2",
- "on-finished": "2.4.1",
- "parseurl": "~1.3.3",
- "path-to-regexp": "0.1.12",
- "proxy-addr": "~2.0.7",
- "qs": "6.13.0",
- "range-parser": "~1.2.1",
- "safe-buffer": "5.2.1",
- "send": "0.19.0",
- "serve-static": "1.16.2",
- "setprototypeof": "1.2.0",
- "statuses": "2.0.1",
- "type-is": "~1.6.18",
- "utils-merge": "1.0.1",
- "vary": "~1.1.2"
+ "color-convert": "^2.0.1"
},
"engines": {
- "node": ">= 0.10.0"
+ "node": ">=8"
},
"funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/express"
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/express-actuator": {
- "version": "1.8.2",
- "resolved": "https://registry.npmjs.org/express-actuator/-/express-actuator-1.8.2.tgz",
- "integrity": "sha512-lUinp8lijZJIcY9yxXHw16N38fVD93OzU5ozSTFRTgbYWiGzfX+25QzbVMi3z2uvCV79IZ5QHCK29nI6BhjMdA==",
+ "node_modules/jest-runner/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": {
- "dayjs": "^1.11.3",
- "properties-reader": "^2.2.0"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
},
"engines": {
- "node": ">=8.0.0"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/express/node_modules/body-parser": {
- "version": "1.20.3",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz",
- "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==",
+ "node_modules/jest-runner/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dependencies": {
- "bytes": "3.1.2",
- "content-type": "~1.0.5",
- "debug": "2.6.9",
- "depd": "2.0.0",
- "destroy": "1.2.0",
- "http-errors": "2.0.0",
- "iconv-lite": "0.4.24",
- "on-finished": "2.4.1",
- "qs": "6.13.0",
- "raw-body": "2.5.2",
- "type-is": "~1.6.18",
- "unpipe": "1.0.0"
+ "color-name": "~1.1.4"
},
"engines": {
- "node": ">= 0.8",
- "npm": "1.2.8000 || >= 1.4.16"
+ "node": ">=7.0.0"
}
},
- "node_modules/express/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/jest-runner/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "node_modules/jest-runner/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/jest-runner/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": {
- "ms": "2.0.0"
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "node_modules/express/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ "node_modules/jest-runtime": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz",
+ "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==",
+ "dependencies": {
+ "@jest/environment": "^29.7.0",
+ "@jest/fake-timers": "^29.7.0",
+ "@jest/globals": "^29.7.0",
+ "@jest/source-map": "^29.6.3",
+ "@jest/test-result": "^29.7.0",
+ "@jest/transform": "^29.7.0",
+ "@jest/types": "^29.6.3",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "cjs-module-lexer": "^1.0.0",
+ "collect-v8-coverage": "^1.0.0",
+ "glob": "^7.1.3",
+ "graceful-fs": "^4.2.9",
+ "jest-haste-map": "^29.7.0",
+ "jest-message-util": "^29.7.0",
+ "jest-mock": "^29.7.0",
+ "jest-regex-util": "^29.6.3",
+ "jest-resolve": "^29.7.0",
+ "jest-snapshot": "^29.7.0",
+ "jest-util": "^29.7.0",
+ "slash": "^3.0.0",
+ "strip-bom": "^4.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
},
- "node_modules/express/node_modules/path-to-regexp": {
- "version": "0.1.12",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz",
- "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ=="
+ "node_modules/jest-runtime/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
},
- "node_modules/express/node_modules/qs": {
- "version": "6.13.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz",
- "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==",
+ "node_modules/jest-runtime/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": {
- "side-channel": "^1.0.6"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
},
"engines": {
- "node": ">=0.6"
+ "node": ">=10"
},
"funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/express/node_modules/raw-body": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
- "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
+ "node_modules/jest-runtime/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dependencies": {
- "bytes": "3.1.2",
- "http-errors": "2.0.0",
- "iconv-lite": "0.4.24",
- "unpipe": "1.0.0"
+ "color-name": "~1.1.4"
},
"engines": {
- "node": ">= 0.8"
+ "node": ">=7.0.0"
}
},
- "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/jest-runtime/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
- "node_modules/ext-list": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz",
- "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==",
- "dev": true,
+ "node_modules/jest-runtime/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/jest-runtime/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": {
- "mime-db": "^1.28.0"
+ "has-flag": "^4.0.0"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=8"
}
},
- "node_modules/ext-name": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz",
- "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==",
- "dev": true,
+ "node_modules/jest-snapshot": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz",
+ "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==",
"dependencies": {
- "ext-list": "^2.0.0",
- "sort-keys-length": "^1.0.0"
+ "@babel/core": "^7.11.6",
+ "@babel/generator": "^7.7.2",
+ "@babel/plugin-syntax-jsx": "^7.7.2",
+ "@babel/plugin-syntax-typescript": "^7.7.2",
+ "@babel/types": "^7.3.3",
+ "@jest/expect-utils": "^29.7.0",
+ "@jest/transform": "^29.7.0",
+ "@jest/types": "^29.6.3",
+ "babel-preset-current-node-syntax": "^1.0.0",
+ "chalk": "^4.0.0",
+ "expect": "^29.7.0",
+ "graceful-fs": "^4.2.9",
+ "jest-diff": "^29.7.0",
+ "jest-get-type": "^29.6.3",
+ "jest-matcher-utils": "^29.7.0",
+ "jest-message-util": "^29.7.0",
+ "jest-util": "^29.7.0",
+ "natural-compare": "^1.4.0",
+ "pretty-format": "^29.7.0",
+ "semver": "^7.5.3"
},
"engines": {
- "node": ">=4"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "node_modules/extend": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
- "dev": true
- },
- "node_modules/external-editor": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
- "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
- "dev": true,
+ "node_modules/jest-snapshot/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dependencies": {
- "chardet": "^0.7.0",
- "iconv-lite": "^0.4.24",
- "tmp": "^0.0.33"
+ "color-convert": "^2.0.1"
},
"engines": {
- "node": ">=4"
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/fancy-log": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz",
- "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==",
- "dev": true,
+ "node_modules/jest-snapshot/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": {
- "ansi-gray": "^0.1.1",
- "color-support": "^1.1.3",
- "parse-node-version": "^1.0.0",
- "time-stamp": "^1.0.0"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
},
"engines": {
- "node": ">= 0.10"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/fast-deep-equal": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
- "dev": true
- },
- "node_modules/fast-diff": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz",
- "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==",
- "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==",
- "dev": true,
+ "node_modules/jest-snapshot/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dependencies": {
- "@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"
+ "color-name": "~1.1.4"
},
"engines": {
- "node": ">=8.6.0"
+ "node": ">=7.0.0"
}
},
- "node_modules/fast-json-stable-stringify": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
- "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
- "dev": true
- },
- "node_modules/fast-levenshtein": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
- "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
- "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-uri": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.1.tgz",
- "integrity": "sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==",
- "dev": true,
- "license": "MIT"
+ "node_modules/jest-snapshot/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
- "node_modules/fastq": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz",
- "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==",
- "dev": true,
- "dependencies": {
- "reusify": "^1.0.4"
+ "node_modules/jest-snapshot/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/fb-watchman": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz",
- "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==",
- "dev": true,
+ "node_modules/jest-snapshot/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dependencies": {
- "bser": "2.1.1"
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
}
},
- "node_modules/fd-slicer": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
- "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
- "dev": true,
+ "node_modules/jest-snapshot/node_modules/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
"dependencies": {
- "pend": "~1.2.0"
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
}
},
- "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,
+ "node_modules/jest-snapshot/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": {
- "escape-string-regexp": "^1.0.5"
+ "has-flag": "^4.0.0"
},
"engines": {
"node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/figures/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": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true,
- "engines": {
- "node": ">=0.8.0"
- }
+ "node_modules/jest-snapshot/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
},
- "node_modules/file-entry-cache": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
- "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
- "dev": true,
+ "node_modules/jest-sonar": {
+ "version": "0.2.16",
+ "resolved": "https://registry.npmjs.org/jest-sonar/-/jest-sonar-0.2.16.tgz",
+ "integrity": "sha512-ES6Z9BbIVDELtbz+/b6pv41B2qOfp38cQpoCLqei21FtlkG/GzhyQ0M3egEIM+erpJOkpRKM8Tc8/YQtHdiTXA==",
"dependencies": {
- "flat-cache": "^3.0.4"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
+ "entities": "4.3.0",
+ "strip-ansi": "6.0.1"
}
},
- "node_modules/file-type": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz",
- "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==",
+ "node_modules/jest-sonar-reporter": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/jest-sonar-reporter/-/jest-sonar-reporter-2.0.0.tgz",
+ "integrity": "sha512-ZervDCgEX5gdUbdtWsjdipLN3bKJwpxbvhkYNXTAYvAckCihobSLr9OT/IuyNIRT1EZMDDwR6DroWtrq+IL64w==",
"dev": true,
+ "dependencies": {
+ "xml": "^1.0.1"
+ },
"engines": {
- "node": ">=4"
+ "node": ">=8.0.0"
}
},
- "node_modules/filename-reserved-regex": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz",
- "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==",
- "dev": true,
+ "node_modules/jest-sonar/node_modules/entities": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.3.0.tgz",
+ "integrity": "sha512-/iP1rZrSEJ0DTlPiX+jbzlA3eVkY/e8L8SozroF395fIqE3TYF/Nz7YOMAawta+vLmyJ/hkGNNPcSbMADCCXbg==",
"engines": {
- "node": ">=4"
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
}
},
- "node_modules/filenamify": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-2.1.0.tgz",
- "integrity": "sha512-ICw7NTT6RsDp2rnYKVd8Fu4cr6ITzGy3+u4vUujPkabyaz+03F24NWEX7fs5fp+kBonlaqPH8fAO2NM+SXt/JA==",
- "dev": true,
+ "node_modules/jest-util": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz",
+ "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==",
"dependencies": {
- "filename-reserved-regex": "^2.0.0",
- "strip-outer": "^1.0.0",
- "trim-repeated": "^1.0.0"
+ "@jest/types": "^29.6.3",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "graceful-fs": "^4.2.9",
+ "picomatch": "^2.2.3"
},
"engines": {
- "node": ">=4"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "node_modules/fill-range": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
- "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
- "dev": true,
+ "node_modules/jest-util/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dependencies": {
- "to-regex-range": "^5.0.1"
+ "color-convert": "^2.0.1"
},
"engines": {
"node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/finalhandler": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz",
- "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==",
+ "node_modules/jest-util/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": {
- "debug": "2.6.9",
- "encodeurl": "~2.0.0",
- "escape-html": "~1.0.3",
- "on-finished": "2.4.1",
- "parseurl": "~1.3.3",
- "statuses": "2.0.1",
- "unpipe": "~1.0.0"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
},
"engines": {
- "node": ">= 0.8"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/finalhandler/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/jest-util/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dependencies": {
- "ms": "2.0.0"
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
}
},
- "node_modules/finalhandler/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ "node_modules/jest-util/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
- "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,
+ "node_modules/jest-util/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/jest-util/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": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
+ "has-flag": "^4.0.0"
},
"engines": {
"node": ">=8"
}
},
- "node_modules/flat-cache": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.1.tgz",
- "integrity": "sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==",
- "dev": true,
+ "node_modules/jest-validate": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz",
+ "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==",
"dependencies": {
- "flatted": "^3.2.9",
- "keyv": "^4.5.3",
- "rimraf": "^3.0.2"
+ "@jest/types": "^29.6.3",
+ "camelcase": "^6.2.0",
+ "chalk": "^4.0.0",
+ "jest-get-type": "^29.6.3",
+ "leven": "^3.1.0",
+ "pretty-format": "^29.7.0"
},
"engines": {
- "node": ">=12.0.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "node_modules/flatted": {
- "version": "3.2.9",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz",
- "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==",
- "dev": true
- },
- "node_modules/follow-redirects": {
- "version": "1.15.9",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz",
- "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==",
- "funding": [
- {
- "type": "individual",
- "url": "https://github.com/sponsors/RubenVerborgh"
- }
- ],
+ "node_modules/jest-validate/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
"engines": {
- "node": ">=4.0"
+ "node": ">=8"
},
- "peerDependenciesMeta": {
- "debug": {
- "optional": true
- }
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/fork-ts-checker-webpack-plugin": {
- "version": "7.2.13",
- "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-7.2.13.tgz",
- "integrity": "sha512-fR3WRkOb4bQdWB/y7ssDUlVdrclvwtyCUIHCfivAoYxq9dF7XfrDKbMdZIfwJ7hxIAqkYSGeU7lLJE6xrxIBdg==",
- "dev": true,
- "dependencies": {
- "@babel/code-frame": "^7.16.7",
- "chalk": "^4.1.2",
- "chokidar": "^3.5.3",
- "cosmiconfig": "^7.0.1",
- "deepmerge": "^4.2.2",
- "fs-extra": "^10.0.0",
- "memfs": "^3.4.1",
- "minimatch": "^3.0.4",
- "node-abort-controller": "^3.0.1",
- "schema-utils": "^3.1.1",
- "semver": "^7.3.5",
- "tapable": "^2.2.1"
- },
+ "node_modules/jest-validate/node_modules/camelcase": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
+ "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
"engines": {
- "node": ">=12.13.0",
- "yarn": ">=1.0.0"
- },
- "peerDependencies": {
- "typescript": ">3.6.0",
- "vue-template-compiler": "*",
- "webpack": "^5.11.0"
+ "node": ">=10"
},
- "peerDependenciesMeta": {
- "vue-template-compiler": {
- "optional": true
- }
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/fork-ts-checker-webpack-plugin/node_modules/chalk": {
+ "node_modules/jest-validate/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"
@@ -6611,1211 +16062,1568 @@
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "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/jest-validate/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dependencies": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.8",
- "mime-types": "^2.1.12"
+ "color-name": "~1.1.4"
},
"engines": {
- "node": ">= 6"
+ "node": ">=7.0.0"
}
},
- "node_modules/formidable": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.2.tgz",
- "integrity": "sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==",
- "dev": true,
+ "node_modules/jest-validate/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "node_modules/jest-validate/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/jest-validate/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": {
- "dezalgo": "^1.0.4",
- "hexoid": "^1.0.0",
- "once": "^1.4.0",
- "qs": "^6.11.0"
+ "has-flag": "^4.0.0"
},
- "funding": {
- "url": "https://ko-fi.com/tunnckoCore/commissions"
+ "engines": {
+ "node": ">=8"
}
},
- "node_modules/formidable/node_modules/qs": {
- "version": "6.11.2",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz",
- "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==",
- "dev": true,
+ "node_modules/jest-watch-select-projects": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/jest-watch-select-projects/-/jest-watch-select-projects-2.0.0.tgz",
+ "integrity": "sha512-j00nW4dXc2NiCW6znXgFLF9g8PJ0zP25cpQ1xRro/HU2GBfZQFZD0SoXnAlaoKkIY4MlfTMkKGbNXFpvCdjl1w==",
"dependencies": {
- "side-channel": "^1.0.4"
+ "ansi-escapes": "^4.3.0",
+ "chalk": "^3.0.0",
+ "prompts": "^2.2.1"
+ }
+ },
+ "node_modules/jest-watch-select-projects/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
},
"engines": {
- "node": ">=0.6"
+ "node": ">=8"
},
"funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/forwarded": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
- "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
+ "node_modules/jest-watch-select-projects/node_modules/chalk": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
+ "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
"engines": {
- "node": ">= 0.6"
+ "node": ">=8"
}
},
- "node_modules/fresh": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
- "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
+ "node_modules/jest-watch-select-projects/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
"engines": {
- "node": ">= 0.6"
+ "node": ">=7.0.0"
}
},
- "node_modules/fs-constants": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
- "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
- "dev": true
+ "node_modules/jest-watch-select-projects/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
- "node_modules/fs-extra": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
- "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
- "dev": true,
+ "node_modules/jest-watch-select-projects/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/jest-watch-select-projects/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": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
+ "has-flag": "^4.0.0"
},
"engines": {
- "node": ">=12"
+ "node": ">=8"
}
},
- "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/jest-watch-typeahead": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-2.2.1.tgz",
+ "integrity": "sha512-jYpYmUnTzysmVnwq49TAxlmtOAwp8QIqvZyoofQFn8fiWhEDZj33ZXzg3JA4nGnzWFm1hbWf3ADpteUokvXgFA==",
"dependencies": {
- "minipass": "^3.0.0"
+ "ansi-escapes": "^6.0.0",
+ "chalk": "^4.0.0",
+ "jest-regex-util": "^29.0.0",
+ "jest-watcher": "^29.0.0",
+ "slash": "^5.0.0",
+ "string-length": "^5.0.1",
+ "strip-ansi": "^7.0.1"
},
"engines": {
- "node": ">= 8"
+ "node": "^14.17.0 || ^16.10.0 || >=18.0.0"
+ },
+ "peerDependencies": {
+ "jest": "^27.0.0 || ^28.0.0 || ^29.0.0"
}
},
- "node_modules/fs-minipass/node_modules/minipass": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
- "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "node_modules/jest-watch-typeahead/node_modules/ansi-escapes": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.0.tgz",
+ "integrity": "sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==",
"dependencies": {
- "yallist": "^4.0.0"
+ "type-fest": "^3.0.0"
},
"engines": {
- "node": ">=8"
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/fs-monkey": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz",
- "integrity": "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==",
- "dev": true
- },
- "node_modules/fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
+ "node_modules/jest-watch-typeahead/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==",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
},
- "node_modules/fsevents": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
- "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
- "dev": true,
- "hasInstallScript": true,
- "optional": true,
- "os": [
- "darwin"
- ],
+ "node_modules/jest-watch-typeahead/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
"engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/function-bind": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
- "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "node_modules/jest-watch-typeahead/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": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
"funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/functional-red-black-tree": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
- "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==",
- "dev": true
+ "node_modules/jest-watch-typeahead/node_modules/char-regex": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-2.0.1.tgz",
+ "integrity": "sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw==",
+ "engines": {
+ "node": ">=12.20"
+ }
},
- "node_modules/gauge": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz",
- "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==",
+ "node_modules/jest-watch-typeahead/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dependencies": {
- "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"
+ "color-name": "~1.1.4"
},
"engines": {
- "node": ">=10"
+ "node": ">=7.0.0"
}
},
- "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,
+ "node_modules/jest-watch-typeahead/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "node_modules/jest-watch-typeahead/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.9.0"
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-watch-typeahead/node_modules/slash": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz",
+ "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==",
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/get-caller-file": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
- "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "node_modules/jest-watch-typeahead/node_modules/string-length": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/string-length/-/string-length-5.0.1.tgz",
+ "integrity": "sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow==",
+ "dependencies": {
+ "char-regex": "^2.0.0",
+ "strip-ansi": "^7.0.1"
+ },
"engines": {
- "node": "6.* || 8.* || >= 10.*"
+ "node": ">=12.20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/get-intrinsic": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.5.tgz",
- "integrity": "sha512-Y4+pKa7XeRUPWFNvOOYHkRYrfzW07oraURSvjDmRVOJ748OrVmeXtpE4+GCEHncjCjkTxPNRt8kEbxDhsn6VTg==",
+ "node_modules/jest-watch-typeahead/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
"dependencies": {
- "call-bind-apply-helpers": "^1.0.0",
- "dunder-proto": "^1.0.0",
- "es-define-property": "^1.0.1",
- "es-errors": "^1.3.0",
- "function-bind": "^1.1.2",
- "gopd": "^1.2.0",
- "has-symbols": "^1.1.0",
- "hasown": "^2.0.2"
+ "ansi-regex": "^6.0.1"
},
"engines": {
- "node": ">= 0.4"
+ "node": ">=12"
},
"funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
}
},
- "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,
+ "node_modules/jest-watch-typeahead/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.0.0"
+ "node": ">=8"
}
},
- "node_modules/get-proxy": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/get-proxy/-/get-proxy-2.1.0.tgz",
- "integrity": "sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw==",
- "dev": true,
+ "node_modules/jest-watch-typeahead/node_modules/type-fest": {
+ "version": "3.13.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz",
+ "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==",
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/jest-watcher": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz",
+ "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==",
"dependencies": {
- "npm-conf": "^1.1.0"
+ "@jest/test-result": "^29.7.0",
+ "@jest/types": "^29.6.3",
+ "@types/node": "*",
+ "ansi-escapes": "^4.2.1",
+ "chalk": "^4.0.0",
+ "emittery": "^0.13.1",
+ "jest-util": "^29.7.0",
+ "string-length": "^4.0.1"
},
"engines": {
- "node": ">=4"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "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==",
- "dev": true,
+ "node_modules/jest-watcher/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
"engines": {
- "node": ">=10"
+ "node": ">=8"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "node_modules/jest-watcher/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": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
},
"engines": {
- "node": "*"
+ "node": ">=10"
},
"funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
+ "node_modules/jest-watcher/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dependencies": {
- "is-glob": "^4.0.1"
+ "color-name": "~1.1.4"
},
"engines": {
- "node": ">= 6"
+ "node": ">=7.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/jest-watcher/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
- "node_modules/globals": {
- "version": "13.23.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz",
- "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==",
- "dev": true,
+ "node_modules/jest-watcher/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/jest-watcher/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": {
- "type-fest": "^0.20.2"
+ "has-flag": "^4.0.0"
},
"engines": {
"node": ">=8"
+ }
+ },
+ "node_modules/jest-worker": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz",
+ "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==",
+ "dependencies": {
+ "@types/node": "*",
+ "jest-util": "^29.7.0",
+ "merge-stream": "^2.0.0",
+ "supports-color": "^8.0.0"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "node_modules/globby": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
- "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
- "dev": true,
+ "node_modules/jest-worker/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/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==",
"dependencies": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
+ "has-flag": "^4.0.0"
},
"engines": {
"node": ">=10"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
}
},
- "node_modules/gopd": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
- "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
- "engines": {
- "node": ">= 0.4"
+ "node_modules/jimp-compact": {
+ "version": "0.16.1",
+ "resolved": "https://registry.npmjs.org/jimp-compact/-/jimp-compact-0.16.1.tgz",
+ "integrity": "sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww=="
+ },
+ "node_modules/joi": {
+ "version": "17.13.3",
+ "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz",
+ "integrity": "sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==",
+ "dependencies": {
+ "@hapi/hoek": "^9.3.0",
+ "@hapi/topo": "^5.1.0",
+ "@sideway/address": "^4.1.5",
+ "@sideway/formula": "^3.0.1",
+ "@sideway/pinpoint": "^2.0.0"
+ }
+ },
+ "node_modules/join-component": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/join-component/-/join-component-1.1.0.tgz",
+ "integrity": "sha512-bF7vcQxbODoGK1imE2P9GS9aw4zD0Sd+Hni68IMZLj7zRnquH7dXUmMw9hDI5S/Jzt7q+IyTXN0rSg2GI0IKhQ=="
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
+ },
+ "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==",
+ "dependencies": {
+ "argparse": "^2.0.1"
},
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
}
},
- "node_modules/got": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz",
- "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==",
- "dev": true,
- "dependencies": {
- "decompress-response": "^3.2.0",
- "duplexer3": "^0.1.4",
- "get-stream": "^3.0.0",
- "is-plain-obj": "^1.1.0",
- "is-retry-allowed": "^1.0.0",
- "is-stream": "^1.0.0",
- "isurl": "^1.0.0-alpha5",
- "lowercase-keys": "^1.0.0",
- "p-cancelable": "^0.3.0",
- "p-timeout": "^1.1.1",
- "safe-buffer": "^5.0.1",
- "timed-out": "^4.0.0",
- "url-parse-lax": "^1.0.0",
- "url-to-options": "^1.0.1"
+ "node_modules/jsc-android": {
+ "version": "250231.0.0",
+ "resolved": "https://registry.npmjs.org/jsc-android/-/jsc-android-250231.0.0.tgz",
+ "integrity": "sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw=="
+ },
+ "node_modules/jsc-safe-url": {
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/jsc-safe-url/-/jsc-safe-url-0.2.4.tgz",
+ "integrity": "sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q=="
+ },
+ "node_modules/jscodeshift": {
+ "version": "0.14.0",
+ "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.14.0.tgz",
+ "integrity": "sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==",
+ "dependencies": {
+ "@babel/core": "^7.13.16",
+ "@babel/parser": "^7.13.16",
+ "@babel/plugin-proposal-class-properties": "^7.13.0",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8",
+ "@babel/plugin-proposal-optional-chaining": "^7.13.12",
+ "@babel/plugin-transform-modules-commonjs": "^7.13.8",
+ "@babel/preset-flow": "^7.13.13",
+ "@babel/preset-typescript": "^7.13.0",
+ "@babel/register": "^7.13.16",
+ "babel-core": "^7.0.0-bridge.0",
+ "chalk": "^4.1.2",
+ "flow-parser": "0.*",
+ "graceful-fs": "^4.2.4",
+ "micromatch": "^4.0.4",
+ "neo-async": "^2.5.0",
+ "node-dir": "^0.1.17",
+ "recast": "^0.21.0",
+ "temp": "^0.8.4",
+ "write-file-atomic": "^2.3.0"
},
- "engines": {
- "node": ">=4"
+ "bin": {
+ "jscodeshift": "bin/jscodeshift.js"
+ },
+ "peerDependencies": {
+ "@babel/preset-env": "^7.1.6"
}
},
- "node_modules/got/node_modules/get-stream": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
- "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==",
- "dev": true,
+ "node_modules/jscodeshift/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
"engines": {
- "node": ">=4"
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/got/node_modules/is-stream": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
- "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
- "dev": true,
+ "node_modules/jscodeshift/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": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
"engines": {
- "node": ">=0.10.0"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/graceful-fs": {
- "version": "4.2.11",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
- "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
- "dev": true
- },
- "node_modules/graphql": {
- "version": "16.6.0",
- "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.6.0.tgz",
- "integrity": "sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw==",
- "dev": true,
+ "node_modules/jscodeshift/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
"engines": {
- "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0"
+ "node": ">=7.0.0"
}
},
- "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,
+ "node_modules/jscodeshift/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "node_modules/jscodeshift/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/jscodeshift/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": {
- "tslib": "^2.1.0"
+ "has-flag": "^4.0.0"
},
"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": ">=8"
}
},
- "node_modules/graphql-ws": {
- "version": "5.5.5",
- "resolved": "https://registry.npmjs.org/graphql-ws/-/graphql-ws-5.5.5.tgz",
- "integrity": "sha512-hvyIS71vs4Tu/yUYHPvGXsTgo0t3arU820+lT5VjZS2go0ewp2LqyCgxEN56CzOG7Iys52eRhHBiD1gGRdiQtw==",
- "dev": true,
+ "node_modules/jsdom": {
+ "version": "20.0.3",
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz",
+ "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==",
+ "dependencies": {
+ "abab": "^2.0.6",
+ "acorn": "^8.8.1",
+ "acorn-globals": "^7.0.0",
+ "cssom": "^0.5.0",
+ "cssstyle": "^2.3.0",
+ "data-urls": "^3.0.2",
+ "decimal.js": "^10.4.2",
+ "domexception": "^4.0.0",
+ "escodegen": "^2.0.0",
+ "form-data": "^4.0.0",
+ "html-encoding-sniffer": "^3.0.0",
+ "http-proxy-agent": "^5.0.0",
+ "https-proxy-agent": "^5.0.1",
+ "is-potential-custom-element-name": "^1.0.1",
+ "nwsapi": "^2.2.2",
+ "parse5": "^7.1.1",
+ "saxes": "^6.0.0",
+ "symbol-tree": "^3.2.4",
+ "tough-cookie": "^4.1.2",
+ "w3c-xmlserializer": "^4.0.0",
+ "webidl-conversions": "^7.0.0",
+ "whatwg-encoding": "^2.0.0",
+ "whatwg-mimetype": "^3.0.0",
+ "whatwg-url": "^11.0.0",
+ "ws": "^8.11.0",
+ "xml-name-validator": "^4.0.0"
+ },
"engines": {
- "node": ">=10"
+ "node": ">=14"
},
"peerDependencies": {
- "graphql": ">=0.11 <=16"
+ "canvas": "^2.5.0"
+ },
+ "peerDependenciesMeta": {
+ "canvas": {
+ "optional": true
+ }
}
},
- "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==",
+ "node_modules/jsesc": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+ "bin": {
+ "jsesc": "bin/jsesc"
+ },
"engines": {
- "node": ">=8"
+ "node": ">=4"
}
},
- "node_modules/has-property-descriptors": {
+ "node_modules/json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+ "dev": true
+ },
+ "node_modules/json-parse-better-errors": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
- "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
+ "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
+ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw=="
+ },
+ "node_modules/json-parse-even-better-errors": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="
+ },
+ "node_modules/json-schema-deref-sync": {
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/json-schema-deref-sync/-/json-schema-deref-sync-0.13.0.tgz",
+ "integrity": "sha512-YBOEogm5w9Op337yb6pAT6ZXDqlxAsQCanM3grid8lMWNxRJO/zWEJi3ZzqDL8boWfwhTFym5EFrNgWwpqcBRg==",
"dependencies": {
- "es-define-property": "^1.0.0"
+ "clone": "^2.1.2",
+ "dag-map": "~1.0.0",
+ "is-valid-path": "^0.1.1",
+ "lodash": "^4.17.13",
+ "md5": "~2.2.0",
+ "memory-cache": "~0.2.0",
+ "traverse": "~0.6.6",
+ "valid-url": "~1.0.9"
},
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "engines": {
+ "node": ">=6.0.0"
}
},
- "node_modules/has-symbol-support-x": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz",
- "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==",
- "dev": true,
- "engines": {
- "node": "*"
+ "node_modules/json-schema-deref-sync/node_modules/md5": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz",
+ "integrity": "sha512-PlGG4z5mBANDGCKsYQe0CaUYHdZYZt8ZPZLmEt+Urf0W4GlpTX4HescwHU+dc9+Z/G/vZKYZYFrwgm9VxK6QOQ==",
+ "dependencies": {
+ "charenc": "~0.0.1",
+ "crypt": "~0.0.1",
+ "is-buffer": "~1.1.1"
}
},
- "node_modules/has-symbols": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
- "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
- "engines": {
- "node": ">= 0.4"
+ "node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
+ },
+ "node_modules/json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+ "dev": true
+ },
+ "node_modules/json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+ "bin": {
+ "json5": "lib/cli.js"
},
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "engines": {
+ "node": ">=6"
}
},
- "node_modules/has-to-string-tag-x": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz",
- "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==",
+ "node_modules/jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/jsx-ast-utils": {
+ "version": "3.3.5",
+ "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz",
+ "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==",
"dev": true,
"dependencies": {
- "has-symbol-support-x": "^1.4.1"
+ "array-includes": "^3.1.6",
+ "array.prototype.flat": "^1.3.1",
+ "object.assign": "^4.1.4",
+ "object.values": "^1.1.6"
},
"engines": {
- "node": "*"
+ "node": ">=4.0"
}
},
- "node_modules/has-unicode": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
- "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ=="
- },
- "node_modules/hasown": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
- "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "node_modules/keyv": {
+ "version": "4.5.4",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+ "dev": true,
"dependencies": {
- "function-bind": "^1.1.2"
- },
+ "json-buffer": "3.0.1"
+ }
+ },
+ "node_modules/kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
"engines": {
- "node": ">= 0.4"
+ "node": ">=0.10.0"
}
},
- "node_modules/helmet": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/helmet/-/helmet-6.0.0.tgz",
- "integrity": "sha512-FO9RpR1wNJepH/GbLPQVtkE2eESglXL641p7SdyoT4LngHFJcZheHMoyUcjCZF4qpuMMO1u5q6RK0l9Ux8JBcg==",
+ "node_modules/kleur": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
+ "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
"engines": {
- "node": ">=14.0.0"
+ "node": ">=6"
}
},
- "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,
+ "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==",
"engines": {
- "node": ">=8"
+ "node": ">=6"
}
},
- "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==",
+ "node_modules/levn": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
+ },
"engines": {
- "node": "*"
+ "node": ">= 0.8.0"
}
},
- "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/lighthouse-logger": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.4.2.tgz",
+ "integrity": "sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==",
+ "dependencies": {
+ "debug": "^2.6.9",
+ "marky": "^1.2.2"
+ }
},
- "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/lighthouse-logger/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/http-errors": {
+ "node_modules/lighthouse-logger/node_modules/ms": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
- "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ },
+ "node_modules/lightningcss": {
+ "version": "1.19.0",
+ "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.19.0.tgz",
+ "integrity": "sha512-yV5UR7og+Og7lQC+70DA7a8ta1uiOPnWPJfxa0wnxylev5qfo4P+4iMpzWAdYWOca4jdNQZii+bDL/l+4hUXIA==",
"dependencies": {
- "depd": "2.0.0",
- "inherits": "2.0.4",
- "setprototypeof": "1.2.0",
- "statuses": "2.0.1",
- "toidentifier": "1.0.1"
+ "detect-libc": "^1.0.3"
},
"engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/https-proxy-agent": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
- "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
- "dependencies": {
- "agent-base": "6",
- "debug": "4"
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
},
+ "optionalDependencies": {
+ "lightningcss-darwin-arm64": "1.19.0",
+ "lightningcss-darwin-x64": "1.19.0",
+ "lightningcss-linux-arm-gnueabihf": "1.19.0",
+ "lightningcss-linux-arm64-gnu": "1.19.0",
+ "lightningcss-linux-arm64-musl": "1.19.0",
+ "lightningcss-linux-x64-gnu": "1.19.0",
+ "lightningcss-linux-x64-musl": "1.19.0",
+ "lightningcss-win32-x64-msvc": "1.19.0"
+ }
+ },
+ "node_modules/lightningcss-darwin-arm64": {
+ "version": "1.19.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.19.0.tgz",
+ "integrity": "sha512-wIJmFtYX0rXHsXHSr4+sC5clwblEMji7HHQ4Ub1/CznVRxtCFha6JIt5JZaNf8vQrfdZnBxLLC6R8pC818jXqg==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
"engines": {
- "node": ">= 6"
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "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,
+ "node_modules/lightningcss-darwin-x64": {
+ "version": "1.19.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.19.0.tgz",
+ "integrity": "sha512-Lif1wD6P4poaw9c/4Uh2z+gmrWhw/HtXFoeZ3bEsv6Ia4tt8rOJBdkfVaUJ6VXmpKHALve+iTyP2+50xY1wKPw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
"engines": {
- "node": ">=10.17.0"
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "node_modules/iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
- "dependencies": {
- "safer-buffer": ">= 2.1.2 < 3"
+ "node_modules/lightningcss-linux-arm-gnueabihf": {
+ "version": "1.19.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.19.0.tgz",
+ "integrity": "sha512-P15VXY5682mTXaiDtbnLYQflc8BYb774j2R84FgDLJTN6Qp0ZjWEFyN1SPqyfTj2B2TFjRHRUvQSSZ7qN4Weig==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
},
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-arm64-gnu": {
+ "version": "1.19.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.19.0.tgz",
+ "integrity": "sha512-zwXRjWqpev8wqO0sv0M1aM1PpjHz6RVIsBcxKszIG83Befuh4yNysjgHVplF9RTU7eozGe3Ts7r6we1+Qkqsww==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=0.10.0"
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "node_modules/ieee754": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
- "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
- "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/lightningcss-linux-arm64-musl": {
+ "version": "1.19.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.19.0.tgz",
+ "integrity": "sha512-vSCKO7SDnZaFN9zEloKSZM5/kC5gbzUjoJQ43BvUpyTFUX7ACs/mDfl2Eq6fdz2+uWhUh7vf92c4EaaP4udEtA==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
},
- "node_modules/ignore": {
- "version": "5.2.4",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
- "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==",
- "dev": true,
+ "node_modules/lightningcss-linux-x64-gnu": {
+ "version": "1.19.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.19.0.tgz",
+ "integrity": "sha512-0AFQKvVzXf9byrXUq9z0anMGLdZJS+XSDqidyijI5njIwj6MdbvX2UZK/c4FfNmeRa2N/8ngTffoIuOUit5eIQ==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">= 4"
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "node_modules/import-fresh": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
- "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
- "dev": true,
- "dependencies": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
+ "node_modules/lightningcss-linux-x64-musl": {
+ "version": "1.19.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.19.0.tgz",
+ "integrity": "sha512-SJoM8CLPt6ECCgSuWe+g0qo8dqQYVcPiW2s19dxkmSI5+Uu1GIRzyKA0b7QqmEXolA+oSJhQqCmJpzjY4CuZAg==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
},
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-win32-x64-msvc": {
+ "version": "1.19.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.19.0.tgz",
+ "integrity": "sha512-C+VuUTeSUOAaBZZOPT7Etn/agx/MatzJzGRkeV+zEABmPuntv1zihncsi+AyGmjkkzq3wVedEy7h0/4S84mUtg==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
"engines": {
- "node": ">=6"
+ "node": ">= 12.0.0"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "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,
+ "node_modules/lines-and-columns": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="
+ },
+ "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==",
"dependencies": {
- "pkg-dir": "^4.2.0",
- "resolve-cwd": "^3.0.0"
- },
- "bin": {
- "import-local-fixture": "fixtures/cli.js"
+ "p-locate": "^5.0.0"
},
"engines": {
- "node": ">=8"
+ "node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/imurmurhash": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
- "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
- "dev": true,
- "engines": {
- "node": ">=0.8.19"
- }
+ "node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
},
- "node_modules/inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
- "dependencies": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
+ "node_modules/lodash.debounce": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
+ "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow=="
},
- "node_modules/inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+ "node_modules/lodash.memoize": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
+ "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag=="
},
- "node_modules/ini": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
- "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+ "node_modules/lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
"dev": true
},
- "node_modules/inquirer": {
- "version": "7.3.3",
- "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz",
- "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==",
- "dev": true,
+ "node_modules/lodash.throttle": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz",
+ "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ=="
+ },
+ "node_modules/log-symbols": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz",
+ "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==",
"dependencies": {
- "ansi-escapes": "^4.2.1",
- "chalk": "^4.1.0",
- "cli-cursor": "^3.1.0",
- "cli-width": "^3.0.0",
- "external-editor": "^3.0.3",
- "figures": "^3.0.0",
- "lodash": "^4.17.19",
- "mute-stream": "0.0.8",
- "run-async": "^2.4.0",
- "rxjs": "^6.6.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0",
- "through": "^2.3.6"
+ "chalk": "^2.0.1"
},
"engines": {
- "node": ">=8.0.0"
+ "node": ">=4"
}
},
- "node_modules/inquirer/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,
+ "node_modules/logkitty": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/logkitty/-/logkitty-0.7.1.tgz",
+ "integrity": "sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==",
"dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
+ "ansi-fragments": "^0.2.1",
+ "dayjs": "^1.8.15",
+ "yargs": "^15.1.0"
},
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
+ "bin": {
+ "logkitty": "bin/logkitty.js"
}
},
- "node_modules/inquirer/node_modules/rxjs": {
- "version": "6.6.7",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
- "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
- "dev": true,
+ "node_modules/logkitty/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dependencies": {
- "tslib": "^1.9.0"
+ "color-convert": "^2.0.1"
},
"engines": {
- "npm": ">=2.0.0"
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/inquirer/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/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"
+ "node_modules/logkitty/node_modules/cliui": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
+ "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^6.2.0"
}
},
- "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==",
+ "node_modules/logkitty/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
"engines": {
- "node": ">= 0.10"
+ "node": ">=7.0.0"
}
},
- "node_modules/is-arrayish": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
- "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
- "dev": true
+ "node_modules/logkitty/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
- "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,
+ "node_modules/logkitty/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==",
"dependencies": {
- "binary-extensions": "^2.0.0"
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
},
"engines": {
"node": ">=8"
}
},
- "node_modules/is-core-module": {
- "version": "2.13.1",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz",
- "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",
- "dev": true,
+ "node_modules/logkitty/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==",
"dependencies": {
- "hasown": "^2.0.0"
+ "p-locate": "^4.1.0"
},
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "engines": {
+ "node": ">=8"
}
},
- "node_modules/is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
- "dev": true,
+ "node_modules/logkitty/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==",
+ "dependencies": {
+ "p-try": "^2.0.0"
+ },
"engines": {
- "node": ">=0.10.0"
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "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/logkitty/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==",
+ "dependencies": {
+ "p-limit": "^2.2.0"
+ },
"engines": {
"node": ">=8"
}
},
- "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,
+ "node_modules/logkitty/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==",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
"engines": {
- "node": ">=6"
+ "node": ">=8"
}
},
- "node_modules/is-glob": {
+ "node_modules/logkitty/node_modules/y18n": {
"version": "4.0.3",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
- "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
- "dev": true,
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
+ "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ=="
+ },
+ "node_modules/logkitty/node_modules/yargs": {
+ "version": "15.4.1",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
+ "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
"dependencies": {
- "is-extglob": "^2.1.1"
+ "cliui": "^6.0.0",
+ "decamelize": "^1.2.0",
+ "find-up": "^4.1.0",
+ "get-caller-file": "^2.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
+ "string-width": "^4.2.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^18.1.2"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=8"
}
},
- "node_modules/is-interactive": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz",
- "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==",
- "dev": true,
+ "node_modules/logkitty/node_modules/yargs-parser": {
+ "version": "18.1.3",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
+ "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
+ "dependencies": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ },
"engines": {
- "node": ">=8"
+ "node": ">=6"
}
},
- "node_modules/is-natural-number": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz",
- "integrity": "sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==",
- "dev": true
+ "node_modules/lokijs": {
+ "name": "@nozbe/lokijs",
+ "version": "1.5.12-wmelon6",
+ "resolved": "https://registry.npmjs.org/@nozbe/lokijs/-/lokijs-1.5.12-wmelon6.tgz",
+ "integrity": "sha512-GXsaqY8qTJ6xdCrGyno2t+ON2aj6PrUDdvhbrkxK/0Fp12C4FGvDg1wS+voLU9BANYHEnr7KRWfItDZnQkjoAg=="
},
- "node_modules/is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true,
- "engines": {
- "node": ">=0.12.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==",
+ "dependencies": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ },
+ "bin": {
+ "loose-envify": "cli.js"
}
},
- "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,
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "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/is-plain-obj": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
- "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
+ "node_modules/make-error": {
+ "version": "1.3.6",
+ "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
+ "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw=="
+ },
+ "node_modules/makeerror": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz",
+ "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==",
+ "dependencies": {
+ "tmpl": "1.0.5"
}
},
- "node_modules/is-retry-allowed": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz",
- "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
+ "node_modules/marky": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.5.tgz",
+ "integrity": "sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q=="
+ },
+ "node_modules/md5": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz",
+ "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==",
+ "dependencies": {
+ "charenc": "0.0.2",
+ "crypt": "0.0.2",
+ "is-buffer": "~1.1.6"
}
},
- "node_modules/is-stream": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
- "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
- "dev": true,
- "engines": {
- "node": ">=8"
+ "node_modules/md5-file": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/md5-file/-/md5-file-3.2.3.tgz",
+ "integrity": "sha512-3Tkp1piAHaworfcCgH0jKbTvj1jWWFgbvh2cXaNCgHwyTCBxxvD1Y04rmfpvdPm1P4oXMOpm6+2H7sr7v9v8Fw==",
+ "dependencies": {
+ "buffer-alloc": "^1.1.0"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "bin": {
+ "md5-file": "cli.js"
+ },
+ "engines": {
+ "node": ">=0.10"
}
},
- "node_modules/is-unicode-supported": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
- "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
- "dev": true,
+ "node_modules/md5hex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/md5hex/-/md5hex-1.0.0.tgz",
+ "integrity": "sha512-c2YOUbp33+6thdCUi34xIyOU/a7bvGKj/3DB1iaPMTuPHf/Q2d5s4sn1FaCOO43XkXggnb08y5W2PU8UNYNLKQ=="
+ },
+ "node_modules/memoize-one": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz",
+ "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q=="
+ },
+ "node_modules/memory-cache": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/memory-cache/-/memory-cache-0.2.0.tgz",
+ "integrity": "sha512-OcjA+jzjOYzKmKS6IQVALHLVz+rNTMPoJvCztFaZxwG14wtAW7VRZjwTQu06vKCYOxh4jVnik7ya0SXTB0W+xA=="
+ },
+ "node_modules/merge-options": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-3.0.4.tgz",
+ "integrity": "sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==",
+ "dependencies": {
+ "is-plain-obj": "^2.1.0"
+ },
"engines": {
"node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/isarray": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ=="
- },
- "node_modules/isexe": {
+ "node_modules/merge-stream": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
- "dev": true
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="
},
- "node_modules/istanbul-lib-coverage": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz",
- "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==",
- "dev": true,
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
"engines": {
- "node": ">=8"
+ "node": ">= 8"
}
},
- "node_modules/istanbul-lib-instrument": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz",
- "integrity": "sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==",
- "dev": true,
+ "node_modules/metro": {
+ "version": "0.80.10",
+ "resolved": "https://registry.npmjs.org/metro/-/metro-0.80.10.tgz",
+ "integrity": "sha512-FDPi0X7wpafmDREXe1lgg3WzETxtXh6Kpq8+IwsG35R2tMyp2kFIqDdshdohuvDt1J/qDARcEPq7V/jElTb1kA==",
"dependencies": {
- "@babel/core": "^7.12.3",
- "@babel/parser": "^7.14.7",
- "@istanbuljs/schema": "^0.1.2",
- "istanbul-lib-coverage": "^3.2.0",
- "semver": "^7.5.4"
+ "@babel/code-frame": "^7.0.0",
+ "@babel/core": "^7.20.0",
+ "@babel/generator": "^7.20.0",
+ "@babel/parser": "^7.20.0",
+ "@babel/template": "^7.0.0",
+ "@babel/traverse": "^7.20.0",
+ "@babel/types": "^7.20.0",
+ "accepts": "^1.3.7",
+ "chalk": "^4.0.0",
+ "ci-info": "^2.0.0",
+ "connect": "^3.6.5",
+ "debug": "^2.2.0",
+ "denodeify": "^1.2.1",
+ "error-stack-parser": "^2.0.6",
+ "flow-enums-runtime": "^0.0.6",
+ "graceful-fs": "^4.2.4",
+ "hermes-parser": "0.23.0",
+ "image-size": "^1.0.2",
+ "invariant": "^2.2.4",
+ "jest-worker": "^29.6.3",
+ "jsc-safe-url": "^0.2.2",
+ "lodash.throttle": "^4.1.1",
+ "metro-babel-transformer": "0.80.10",
+ "metro-cache": "0.80.10",
+ "metro-cache-key": "0.80.10",
+ "metro-config": "0.80.10",
+ "metro-core": "0.80.10",
+ "metro-file-map": "0.80.10",
+ "metro-resolver": "0.80.10",
+ "metro-runtime": "0.80.10",
+ "metro-source-map": "0.80.10",
+ "metro-symbolicate": "0.80.10",
+ "metro-transform-plugins": "0.80.10",
+ "metro-transform-worker": "0.80.10",
+ "mime-types": "^2.1.27",
+ "node-fetch": "^2.2.0",
+ "nullthrows": "^1.1.1",
+ "serialize-error": "^2.1.0",
+ "source-map": "^0.5.6",
+ "strip-ansi": "^6.0.0",
+ "throat": "^5.0.0",
+ "ws": "^7.5.10",
+ "yargs": "^17.6.2"
+ },
+ "bin": {
+ "metro": "src/cli.js"
},
"engines": {
- "node": ">=10"
+ "node": ">=18"
}
},
- "node_modules/istanbul-lib-report": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz",
- "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==",
- "dev": true,
+ "node_modules/metro-babel-transformer": {
+ "version": "0.80.10",
+ "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.80.10.tgz",
+ "integrity": "sha512-GXHueUzgzcazfzORDxDzWS9jVVRV6u+cR6TGvHOfGdfLzJCj7/D0PretLfyq+MwN20twHxLW+BUXkoaB8sCQBg==",
"dependencies": {
- "istanbul-lib-coverage": "^3.0.0",
- "make-dir": "^4.0.0",
- "supports-color": "^7.1.0"
+ "@babel/core": "^7.20.0",
+ "flow-enums-runtime": "^0.0.6",
+ "hermes-parser": "0.23.0",
+ "nullthrows": "^1.1.1"
},
"engines": {
- "node": ">=10"
+ "node": ">=18"
}
},
- "node_modules/istanbul-lib-report/node_modules/make-dir": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz",
- "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==",
- "dev": true,
+ "node_modules/metro-babel-transformer/node_modules/hermes-estree": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.23.0.tgz",
+ "integrity": "sha512-Rkp0PNLGpORw4ktsttkVbpYJbrYKS3hAnkxu8D9nvQi6LvSbuPa+tYw/t2u3Gjc35lYd/k95YkjqyTcN4zspag=="
+ },
+ "node_modules/metro-babel-transformer/node_modules/hermes-parser": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.23.0.tgz",
+ "integrity": "sha512-xLwM4ylfHGwrm+2qXfO1JT/fnqEDGSnpS/9hQ4VLtqTexSviu2ZpBgz07U8jVtndq67qdb/ps0qvaWDZ3fkTyg==",
"dependencies": {
- "semver": "^7.5.3"
+ "hermes-estree": "0.23.0"
+ }
+ },
+ "node_modules/metro-cache": {
+ "version": "0.80.10",
+ "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.80.10.tgz",
+ "integrity": "sha512-8CBtDJwMguIE5RvV3PU1QtxUG8oSSX54mIuAbRZmcQ0MYiOl9JdrMd4JCBvIyhiZLoSStph425SMyCSnjtJsdA==",
+ "dependencies": {
+ "exponential-backoff": "^3.1.1",
+ "flow-enums-runtime": "^0.0.6",
+ "metro-core": "0.80.10"
},
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=18"
}
},
- "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,
+ "node_modules/metro-cache-key": {
+ "version": "0.80.10",
+ "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.80.10.tgz",
+ "integrity": "sha512-57qBhO3zQfoU/hP4ZlLW5hVej2jVfBX6B4NcSfMj4LgDPL3YknWg80IJBxzQfjQY/m+fmMLmPy8aUMHzUp/guA==",
"dependencies": {
- "debug": "^4.1.1",
- "istanbul-lib-coverage": "^3.0.0",
- "source-map": "^0.6.1"
+ "flow-enums-runtime": "^0.0.6"
},
"engines": {
- "node": ">=10"
+ "node": ">=18"
}
},
- "node_modules/istanbul-lib-source-maps/node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
+ "node_modules/metro-config": {
+ "version": "0.80.10",
+ "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.80.10.tgz",
+ "integrity": "sha512-0GYAw0LkmGbmA81FepKQepL1KU/85Cyv7sAiWm6QWeV6AcVCpsKg6jGLqGHJ0LLPL60rWzA4TV1DQAlzdJAEtA==",
+ "dependencies": {
+ "connect": "^3.6.5",
+ "cosmiconfig": "^5.0.5",
+ "flow-enums-runtime": "^0.0.6",
+ "jest-validate": "^29.6.3",
+ "metro": "0.80.10",
+ "metro-cache": "0.80.10",
+ "metro-core": "0.80.10",
+ "metro-runtime": "0.80.10"
+ },
"engines": {
- "node": ">=0.10.0"
+ "node": ">=18"
}
},
- "node_modules/istanbul-reports": {
- "version": "3.1.6",
- "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz",
- "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==",
- "dev": true,
+ "node_modules/metro-core": {
+ "version": "0.80.10",
+ "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.80.10.tgz",
+ "integrity": "sha512-nwBB6HbpGlNsZMuzxVqxqGIOsn5F3JKpsp8PziS7Z4mV8a/jA1d44mVOgYmDa2q5WlH5iJfRIIhdz24XRNDlLA==",
"dependencies": {
- "html-escaper": "^2.0.0",
- "istanbul-lib-report": "^3.0.0"
+ "flow-enums-runtime": "^0.0.6",
+ "lodash.throttle": "^4.1.1",
+ "metro-resolver": "0.80.10"
},
"engines": {
- "node": ">=8"
+ "node": ">=18"
}
},
- "node_modules/isurl": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz",
- "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==",
- "dev": true,
+ "node_modules/metro-file-map": {
+ "version": "0.80.10",
+ "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.80.10.tgz",
+ "integrity": "sha512-ytsUq8coneaN7ZCVk1IogojcGhLIbzWyiI2dNmw2nnBgV/0A+M5WaTTgZ6dJEz3dzjObPryDnkqWPvIGLCPtiw==",
"dependencies": {
- "has-to-string-tag-x": "^1.2.0",
- "is-object": "^1.0.1"
+ "anymatch": "^3.0.3",
+ "debug": "^2.2.0",
+ "fb-watchman": "^2.0.0",
+ "flow-enums-runtime": "^0.0.6",
+ "graceful-fs": "^4.2.4",
+ "invariant": "^2.2.4",
+ "jest-worker": "^29.6.3",
+ "micromatch": "^4.0.4",
+ "node-abort-controller": "^3.1.1",
+ "nullthrows": "^1.1.1",
+ "walker": "^1.0.7"
},
"engines": {
- "node": ">= 4"
+ "node": ">=18"
+ },
+ "optionalDependencies": {
+ "fsevents": "^2.3.2"
}
},
- "node_modules/iterall": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.3.0.tgz",
- "integrity": "sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==",
- "dev": true
- },
- "node_modules/iterare": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz",
- "integrity": "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==",
- "engines": {
- "node": ">=6"
+ "node_modules/metro-file-map/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/jest": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz",
- "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==",
- "dev": true,
+ "node_modules/metro-file-map/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ },
+ "node_modules/metro-minify-terser": {
+ "version": "0.80.10",
+ "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.80.10.tgz",
+ "integrity": "sha512-Xyv9pEYpOsAerrld7cSLIcnCCpv8ItwysOmTA+AKf1q4KyE9cxrH2O2SA0FzMCkPzwxzBWmXwHUr+A89BpEM6g==",
"dependencies": {
- "@jest/core": "^29.7.0",
- "@jest/types": "^29.6.3",
- "import-local": "^3.0.2",
- "jest-cli": "^29.7.0"
- },
- "bin": {
- "jest": "bin/jest.js"
+ "flow-enums-runtime": "^0.0.6",
+ "terser": "^5.15.0"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- },
- "peerDependencies": {
- "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
- },
- "peerDependenciesMeta": {
- "node-notifier": {
- "optional": true
- }
+ "node": ">=18"
}
},
- "node_modules/jest-changed-files": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz",
- "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==",
- "dev": true,
+ "node_modules/metro-resolver": {
+ "version": "0.80.10",
+ "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.80.10.tgz",
+ "integrity": "sha512-EYC5CL7f+bSzrqdk1bylKqFNGabfiI5PDctxoPx70jFt89Jz+ThcOscENog8Jb4LEQFG6GkOYlwmPpsi7kx3QA==",
"dependencies": {
- "execa": "^5.0.0",
- "jest-util": "^29.7.0",
- "p-limit": "^3.1.0"
+ "flow-enums-runtime": "^0.0.6"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": ">=18"
}
},
- "node_modules/jest-circus": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz",
- "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==",
- "dev": true,
+ "node_modules/metro-runtime": {
+ "version": "0.80.10",
+ "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.80.10.tgz",
+ "integrity": "sha512-Xh0N589ZmSIgJYAM+oYwlzTXEHfASZac9TYPCNbvjNTn0EHKqpoJ/+Im5G3MZT4oZzYv4YnvzRtjqS5k0tK94A==",
"dependencies": {
- "@jest/environment": "^29.7.0",
- "@jest/expect": "^29.7.0",
- "@jest/test-result": "^29.7.0",
- "@jest/types": "^29.6.3",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "co": "^4.6.0",
- "dedent": "^1.0.0",
- "is-generator-fn": "^2.0.0",
- "jest-each": "^29.7.0",
- "jest-matcher-utils": "^29.7.0",
- "jest-message-util": "^29.7.0",
- "jest-runtime": "^29.7.0",
- "jest-snapshot": "^29.7.0",
- "jest-util": "^29.7.0",
- "p-limit": "^3.1.0",
- "pretty-format": "^29.7.0",
- "pure-rand": "^6.0.0",
- "slash": "^3.0.0",
- "stack-utils": "^2.0.3"
+ "@babel/runtime": "^7.0.0",
+ "flow-enums-runtime": "^0.0.6"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": ">=18"
}
},
- "node_modules/jest-circus/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,
+ "node_modules/metro-source-map": {
+ "version": "0.80.10",
+ "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.80.10.tgz",
+ "integrity": "sha512-EyZswqJW8Uukv/HcQr6K19vkMXW1nzHAZPWJSEyJFKIbgp708QfRZ6vnZGmrtFxeJEaFdNup4bGnu8/mIOYlyA==",
"dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
+ "@babel/traverse": "^7.20.0",
+ "@babel/types": "^7.20.0",
+ "flow-enums-runtime": "^0.0.6",
+ "invariant": "^2.2.4",
+ "metro-symbolicate": "0.80.10",
+ "nullthrows": "^1.1.1",
+ "ob1": "0.80.10",
+ "source-map": "^0.5.6",
+ "vlq": "^1.0.0"
},
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
+ "node": ">=18"
}
},
- "node_modules/jest-cli": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz",
- "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==",
- "dev": true,
- "dependencies": {
- "@jest/core": "^29.7.0",
- "@jest/test-result": "^29.7.0",
- "@jest/types": "^29.6.3",
- "chalk": "^4.0.0",
- "create-jest": "^29.7.0",
- "exit": "^0.1.2",
- "import-local": "^3.0.2",
- "jest-config": "^29.7.0",
- "jest-util": "^29.7.0",
- "jest-validate": "^29.7.0",
- "yargs": "^17.3.1"
- },
- "bin": {
- "jest": "bin/jest.js"
- },
+ "node_modules/metro-source-map/node_modules/source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- },
- "peerDependencies": {
- "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
- },
- "peerDependenciesMeta": {
- "node-notifier": {
- "optional": true
- }
+ "node": ">=0.10.0"
}
},
- "node_modules/jest-cli/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,
+ "node_modules/metro-symbolicate": {
+ "version": "0.80.10",
+ "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.80.10.tgz",
+ "integrity": "sha512-qAoVUoSxpfZ2DwZV7IdnQGXCSsf2cAUExUcZyuCqGlY5kaWBb0mx2BL/xbMFDJ4wBp3sVvSBPtK/rt4J7a0xBA==",
"dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
+ "flow-enums-runtime": "^0.0.6",
+ "invariant": "^2.2.4",
+ "metro-source-map": "0.80.10",
+ "nullthrows": "^1.1.1",
+ "source-map": "^0.5.6",
+ "through2": "^2.0.1",
+ "vlq": "^1.0.0"
},
- "engines": {
- "node": ">=10"
+ "bin": {
+ "metro-symbolicate": "src/index.js"
},
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
+ "engines": {
+ "node": ">=18"
}
},
- "node_modules/jest-cli/node_modules/cliui": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
- "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
- "dev": true,
+ "node_modules/metro-symbolicate/node_modules/source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/metro-transform-plugins": {
+ "version": "0.80.10",
+ "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.80.10.tgz",
+ "integrity": "sha512-leAx9gtA+2MHLsCeWK6XTLBbv2fBnNFu/QiYhWzMq8HsOAP4u1xQAU0tSgPs8+1vYO34Plyn79xTLUtQCRSSUQ==",
"dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.1",
- "wrap-ansi": "^7.0.0"
+ "@babel/core": "^7.20.0",
+ "@babel/generator": "^7.20.0",
+ "@babel/template": "^7.0.0",
+ "@babel/traverse": "^7.20.0",
+ "flow-enums-runtime": "^0.0.6",
+ "nullthrows": "^1.1.1"
},
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
- "node_modules/jest-cli/node_modules/yargs": {
- "version": "17.7.2",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
- "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
- "dev": true,
+ "node_modules/metro-transform-worker": {
+ "version": "0.80.10",
+ "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.80.10.tgz",
+ "integrity": "sha512-zNfNLD8Rz99U+JdOTqtF2o7iTjcDMMYdVS90z6+81Tzd2D0lDWVpls7R1hadS6xwM+ymgXFQTjM6V6wFoZaC0g==",
"dependencies": {
- "cliui": "^8.0.1",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.3",
- "y18n": "^5.0.5",
- "yargs-parser": "^21.1.1"
+ "@babel/core": "^7.20.0",
+ "@babel/generator": "^7.20.0",
+ "@babel/parser": "^7.20.0",
+ "@babel/types": "^7.20.0",
+ "flow-enums-runtime": "^0.0.6",
+ "metro": "0.80.10",
+ "metro-babel-transformer": "0.80.10",
+ "metro-cache": "0.80.10",
+ "metro-cache-key": "0.80.10",
+ "metro-minify-terser": "0.80.10",
+ "metro-source-map": "0.80.10",
+ "metro-transform-plugins": "0.80.10",
+ "nullthrows": "^1.1.1"
},
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
- "node_modules/jest-config": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz",
- "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==",
- "dev": true,
+ "node_modules/metro/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dependencies": {
- "@babel/core": "^7.11.6",
- "@jest/test-sequencer": "^29.7.0",
- "@jest/types": "^29.6.3",
- "babel-jest": "^29.7.0",
- "chalk": "^4.0.0",
- "ci-info": "^3.2.0",
- "deepmerge": "^4.2.2",
- "glob": "^7.1.3",
- "graceful-fs": "^4.2.9",
- "jest-circus": "^29.7.0",
- "jest-environment-node": "^29.7.0",
- "jest-get-type": "^29.6.3",
- "jest-regex-util": "^29.6.3",
- "jest-resolve": "^29.7.0",
- "jest-runner": "^29.7.0",
- "jest-util": "^29.7.0",
- "jest-validate": "^29.7.0",
- "micromatch": "^4.0.4",
- "parse-json": "^5.2.0",
- "pretty-format": "^29.7.0",
- "slash": "^3.0.0",
- "strip-json-comments": "^3.1.1"
+ "color-convert": "^2.0.1"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- },
- "peerDependencies": {
- "@types/node": "*",
- "ts-node": ">=9.0.0"
+ "node": ">=8"
},
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- },
- "ts-node": {
- "optional": true
- }
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/jest-config/node_modules/chalk": {
+ "node_modules/metro/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"
@@ -7827,526 +17635,456 @@
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/jest-diff": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz",
- "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==",
- "dev": true,
+ "node_modules/metro/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=="
+ },
+ "node_modules/metro/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dependencies": {
- "chalk": "^4.0.0",
- "diff-sequences": "^29.6.3",
- "jest-get-type": "^29.6.3",
- "pretty-format": "^29.7.0"
+ "color-name": "~1.1.4"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": ">=7.0.0"
}
},
- "node_modules/jest-diff/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,
+ "node_modules/metro/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "node_modules/metro/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/metro/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": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
+ "node": ">=8"
}
},
- "node_modules/jest-docblock": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz",
- "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==",
- "dev": true,
+ "node_modules/metro/node_modules/hermes-estree": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.23.0.tgz",
+ "integrity": "sha512-Rkp0PNLGpORw4ktsttkVbpYJbrYKS3hAnkxu8D9nvQi6LvSbuPa+tYw/t2u3Gjc35lYd/k95YkjqyTcN4zspag=="
+ },
+ "node_modules/metro/node_modules/hermes-parser": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.23.0.tgz",
+ "integrity": "sha512-xLwM4ylfHGwrm+2qXfO1JT/fnqEDGSnpS/9hQ4VLtqTexSviu2ZpBgz07U8jVtndq67qdb/ps0qvaWDZ3fkTyg==",
"dependencies": {
- "detect-newline": "^3.0.0"
- },
+ "hermes-estree": "0.23.0"
+ }
+ },
+ "node_modules/metro/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ },
+ "node_modules/metro/node_modules/source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": ">=0.10.0"
}
},
- "node_modules/jest-each": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz",
- "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==",
- "dev": true,
+ "node_modules/metro/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": {
- "@jest/types": "^29.6.3",
- "chalk": "^4.0.0",
- "jest-get-type": "^29.6.3",
- "jest-util": "^29.7.0",
- "pretty-format": "^29.7.0"
+ "has-flag": "^4.0.0"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": ">=8"
}
},
- "node_modules/jest-each/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"
- },
+ "node_modules/metro/node_modules/ws": {
+ "version": "7.5.10",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz",
+ "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==",
"engines": {
- "node": ">=10"
+ "node": ">=8.3.0"
},
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": "^5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
}
},
- "node_modules/jest-environment-node": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz",
- "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==",
- "dev": true,
+ "node_modules/micromatch": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
"dependencies": {
- "@jest/environment": "^29.7.0",
- "@jest/fake-timers": "^29.7.0",
- "@jest/types": "^29.6.3",
- "@types/node": "*",
- "jest-mock": "^29.7.0",
- "jest-util": "^29.7.0"
+ "braces": "^3.0.3",
+ "picomatch": "^2.3.1"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": ">=8.6"
}
},
- "node_modules/jest-get-type": {
- "version": "29.6.3",
- "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz",
- "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==",
- "dev": true,
+ "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": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": ">=4.0.0"
}
},
- "node_modules/jest-haste-map": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz",
- "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==",
- "dev": true,
- "dependencies": {
- "@jest/types": "^29.6.3",
- "@types/graceful-fs": "^4.1.3",
- "@types/node": "*",
- "anymatch": "^3.0.3",
- "fb-watchman": "^2.0.0",
- "graceful-fs": "^4.2.9",
- "jest-regex-util": "^29.6.3",
- "jest-util": "^29.7.0",
- "jest-worker": "^29.7.0",
- "micromatch": "^4.0.4",
- "walker": "^1.0.8"
- },
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- },
- "optionalDependencies": {
- "fsevents": "^2.3.2"
+ "node": ">= 0.6"
}
},
- "node_modules/jest-haste-map/node_modules/jest-worker": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz",
- "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==",
- "dev": true,
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
"dependencies": {
- "@types/node": "*",
- "jest-util": "^29.7.0",
- "merge-stream": "^2.0.0",
- "supports-color": "^8.0.0"
+ "mime-db": "1.52.0"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mimic-fn": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
+ "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
+ "engines": {
+ "node": ">=4"
}
},
- "node_modules/jest-haste-map/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/mimic-response": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
+ "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
"dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
"engines": {
"node": ">=10"
},
"funding": {
- "url": "https://github.com/chalk/supports-color?sponsor=1"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/jest-leak-detector": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz",
- "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==",
- "dev": true,
- "dependencies": {
- "jest-get-type": "^29.6.3",
- "pretty-format": "^29.7.0"
- },
+ "node_modules/min-indent": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
+ "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==",
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": ">=4"
}
},
- "node_modules/jest-matcher-utils": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz",
- "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==",
- "dev": true,
+ "node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dependencies": {
- "chalk": "^4.0.0",
- "jest-diff": "^29.7.0",
- "jest-get-type": "^29.6.3",
- "pretty-format": "^29.7.0"
+ "brace-expansion": "^1.1.7"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "*"
}
},
- "node_modules/jest-matcher-utils/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"
- },
+ "node_modules/minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
"funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/jest-message-util": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz",
- "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==",
- "dev": true,
- "dependencies": {
- "@babel/code-frame": "^7.12.13",
- "@jest/types": "^29.6.3",
- "@types/stack-utils": "^2.0.0",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.9",
- "micromatch": "^4.0.4",
- "pretty-format": "^29.7.0",
- "slash": "^3.0.0",
- "stack-utils": "^2.0.3"
- },
+ "node_modules/minipass": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": ">=16 || 14 >=14.17"
}
},
- "node_modules/jest-message-util/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,
+ "node_modules/minipass-collect": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz",
+ "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==",
"dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
+ "minipass": "^7.0.3"
},
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
+ "node": ">=16 || 14 >=14.17"
}
},
- "node_modules/jest-mock": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz",
- "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==",
- "dev": true,
+ "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==",
"dependencies": {
- "@jest/types": "^29.6.3",
- "@types/node": "*",
- "jest-util": "^29.7.0"
+ "minipass": "^3.0.0"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": ">= 8"
}
},
- "node_modules/jest-mock-extended": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/jest-mock-extended/-/jest-mock-extended-3.0.5.tgz",
- "integrity": "sha512-/eHdaNPUAXe7f65gHH5urc8SbRVWjYxBqmCgax2uqOBJy8UUcCBMN1upj1eZ8y/i+IqpyEm4Kq0VKss/GCCTdw==",
- "dev": true,
+ "node_modules/minipass-flush/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
"dependencies": {
- "ts-essentials": "^7.0.3"
+ "yallist": "^4.0.0"
},
- "peerDependencies": {
- "jest": "^24.0.0 || ^25.0.0 || ^26.0.0 || ^27.0.0 || ^28.0.0 || ^29.0.0",
- "typescript": "^3.0.0 || ^4.0.0 || ^5.0.0"
- }
- },
- "node_modules/jest-pnp-resolver": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz",
- "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==",
- "dev": true,
"engines": {
- "node": ">=6"
- },
- "peerDependencies": {
- "jest-resolve": "*"
- },
- "peerDependenciesMeta": {
- "jest-resolve": {
- "optional": true
- }
+ "node": ">=8"
}
},
- "node_modules/jest-regex-util": {
- "version": "29.6.3",
- "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz",
- "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==",
- "dev": true,
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
+ "node_modules/minipass-flush/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
},
- "node_modules/jest-resolve": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz",
- "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==",
- "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==",
"dependencies": {
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.9",
- "jest-haste-map": "^29.7.0",
- "jest-pnp-resolver": "^1.2.2",
- "jest-util": "^29.7.0",
- "jest-validate": "^29.7.0",
- "resolve": "^1.20.0",
- "resolve.exports": "^2.0.0",
- "slash": "^3.0.0"
+ "minipass": "^3.0.0"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": ">=8"
}
},
- "node_modules/jest-resolve-dependencies": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz",
- "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==",
- "dev": true,
+ "node_modules/minipass-pipeline/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
"dependencies": {
- "jest-regex-util": "^29.6.3",
- "jest-snapshot": "^29.7.0"
+ "yallist": "^4.0.0"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": ">=8"
}
},
- "node_modules/jest-resolve/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,
+ "node_modules/minipass-pipeline/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ },
+ "node_modules/minizlib": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
+ "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
"dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
+ "minipass": "^3.0.0",
+ "yallist": "^4.0.0"
},
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
+ "node": ">= 8"
}
},
- "node_modules/jest-runner": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz",
- "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==",
- "dev": true,
+ "node_modules/minizlib/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
"dependencies": {
- "@jest/console": "^29.7.0",
- "@jest/environment": "^29.7.0",
- "@jest/test-result": "^29.7.0",
- "@jest/transform": "^29.7.0",
- "@jest/types": "^29.6.3",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "emittery": "^0.13.1",
- "graceful-fs": "^4.2.9",
- "jest-docblock": "^29.7.0",
- "jest-environment-node": "^29.7.0",
- "jest-haste-map": "^29.7.0",
- "jest-leak-detector": "^29.7.0",
- "jest-message-util": "^29.7.0",
- "jest-resolve": "^29.7.0",
- "jest-runtime": "^29.7.0",
- "jest-util": "^29.7.0",
- "jest-watcher": "^29.7.0",
- "jest-worker": "^29.7.0",
- "p-limit": "^3.1.0",
- "source-map-support": "0.5.13"
+ "yallist": "^4.0.0"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": ">=8"
}
},
- "node_modules/jest-runner/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,
+ "node_modules/minizlib/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ },
+ "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==",
"dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
+ "minimist": "^1.2.6"
},
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ }
+ },
+ "node_modules/mkdirp-classic": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
+ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==",
+ "dev": true
+ },
+ "node_modules/moment": {
+ "version": "2.29.4",
+ "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz",
+ "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/mrmime": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz",
+ "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==",
"engines": {
"node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/jest-runner/node_modules/jest-worker": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz",
- "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==",
- "dev": true,
+ "node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "node_modules/mz": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
+ "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
"dependencies": {
- "@types/node": "*",
- "jest-util": "^29.7.0",
- "merge-stream": "^2.0.0",
- "supports-color": "^8.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "any-promise": "^1.0.0",
+ "object-assign": "^4.0.1",
+ "thenify-all": "^1.0.0"
}
},
- "node_modules/jest-runner/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"
+ "node_modules/nanoid": {
+ "version": "3.3.7",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
+ "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
},
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/supports-color?sponsor=1"
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
},
- "node_modules/jest-runner/node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
+ "node_modules/napi-build-utils": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz",
+ "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==",
+ "dev": true
+ },
+ "node_modules/native-notify": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/native-notify/-/native-notify-3.2.4.tgz",
+ "integrity": "sha512-PeQmmeUXedClHhEwbPra0u0itmpvfZORzNvye8wXcehIOPWFzK8LNnGczdyNumxHQn59w/7AlzjVZ8eEb2iPag==",
+ "dependencies": {
+ "axios": "^1.5.1",
+ "expo-device": "~5.6.0",
+ "expo-notifications": "~0.18.1"
}
},
- "node_modules/jest-runner/node_modules/source-map-support": {
- "version": "0.5.13",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz",
- "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==",
- "dev": true,
+ "node_modules/native-notify/node_modules/@babel/code-frame": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz",
+ "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==",
"dependencies": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
+ "@babel/highlight": "^7.10.4"
}
},
- "node_modules/jest-runtime": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz",
- "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==",
- "dev": true,
+ "node_modules/native-notify/node_modules/@expo/config": {
+ "version": "8.0.5",
+ "resolved": "https://registry.npmjs.org/@expo/config/-/config-8.0.5.tgz",
+ "integrity": "sha512-3CnLmtAQUWqLZwTRliS23QoFwdyhg4AWtp6gZ0qfcXthR84RvlZKcCDQQIyPiRUgu8dZa+gQDcdRJtgE+GM5XQ==",
"dependencies": {
- "@jest/environment": "^29.7.0",
- "@jest/fake-timers": "^29.7.0",
- "@jest/globals": "^29.7.0",
- "@jest/source-map": "^29.6.3",
- "@jest/test-result": "^29.7.0",
- "@jest/transform": "^29.7.0",
- "@jest/types": "^29.6.3",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "cjs-module-lexer": "^1.0.0",
- "collect-v8-coverage": "^1.0.0",
- "glob": "^7.1.3",
- "graceful-fs": "^4.2.9",
- "jest-haste-map": "^29.7.0",
- "jest-message-util": "^29.7.0",
- "jest-mock": "^29.7.0",
- "jest-regex-util": "^29.6.3",
- "jest-resolve": "^29.7.0",
- "jest-snapshot": "^29.7.0",
- "jest-util": "^29.7.0",
+ "@babel/code-frame": "~7.10.4",
+ "@expo/config-plugins": "~6.0.0",
+ "@expo/config-types": "^48.0.0",
+ "@expo/json-file": "^8.2.37",
+ "getenv": "^1.0.0",
+ "glob": "7.1.6",
+ "require-from-string": "^2.0.2",
+ "resolve-from": "^5.0.0",
+ "semver": "7.3.2",
+ "slugify": "^1.3.4",
+ "sucrase": "^3.20.0"
+ }
+ },
+ "node_modules/native-notify/node_modules/@expo/config-plugins": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-6.0.2.tgz",
+ "integrity": "sha512-Cn01fXMHwjU042EgO9oO3Mna0o/UCrW91MQLMbJa4pXM41CYGjNgVy1EVXiuRRx/upegHhvltBw5D+JaUm8aZQ==",
+ "dependencies": {
+ "@expo/config-types": "^48.0.0",
+ "@expo/json-file": "~8.2.37",
+ "@expo/plist": "^0.0.20",
+ "@expo/sdk-runtime-versions": "^1.0.0",
+ "@react-native/normalize-color": "^2.0.0",
+ "chalk": "^4.1.2",
+ "debug": "^4.3.1",
+ "find-up": "~5.0.0",
+ "getenv": "^1.0.0",
+ "glob": "7.1.6",
+ "resolve-from": "^5.0.0",
+ "semver": "^7.3.5",
"slash": "^3.0.0",
- "strip-bom": "^4.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "xcode": "^3.0.1",
+ "xml2js": "0.4.23"
}
},
- "node_modules/jest-runtime/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,
+ "node_modules/native-notify/node_modules/@expo/config-plugins/node_modules/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
"dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
},
"engines": {
"node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/jest-snapshot": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz",
- "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==",
- "dev": true,
+ "node_modules/native-notify/node_modules/@expo/config-types": {
+ "version": "48.0.0",
+ "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-48.0.0.tgz",
+ "integrity": "sha512-DwyV4jTy/+cLzXGAo1xftS6mVlSiLIWZjl9DjTCLPFVgNYQxnh7htPilRv4rBhiNs7KaznWqKU70+4zQoKVT9A=="
+ },
+ "node_modules/native-notify/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dependencies": {
- "@babel/core": "^7.11.6",
- "@babel/generator": "^7.7.2",
- "@babel/plugin-syntax-jsx": "^7.7.2",
- "@babel/plugin-syntax-typescript": "^7.7.2",
- "@babel/types": "^7.3.3",
- "@jest/expect-utils": "^29.7.0",
- "@jest/transform": "^29.7.0",
- "@jest/types": "^29.6.3",
- "babel-preset-current-node-syntax": "^1.0.0",
- "chalk": "^4.0.0",
- "expect": "^29.7.0",
- "graceful-fs": "^4.2.9",
- "jest-diff": "^29.7.0",
- "jest-get-type": "^29.6.3",
- "jest-matcher-utils": "^29.7.0",
- "jest-message-util": "^29.7.0",
- "jest-util": "^29.7.0",
- "natural-compare": "^1.4.0",
- "pretty-format": "^29.7.0",
- "semver": "^7.5.3"
+ "color-convert": "^2.0.1"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/jest-snapshot/node_modules/chalk": {
+ "node_modules/native-notify/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"
@@ -8358,1077 +18096,947 @@
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/jest-sonar": {
- "version": "0.2.16",
- "resolved": "https://registry.npmjs.org/jest-sonar/-/jest-sonar-0.2.16.tgz",
- "integrity": "sha512-ES6Z9BbIVDELtbz+/b6pv41B2qOfp38cQpoCLqei21FtlkG/GzhyQ0M3egEIM+erpJOkpRKM8Tc8/YQtHdiTXA==",
- "dev": true,
- "dependencies": {
- "entities": "4.3.0",
- "strip-ansi": "6.0.1"
- }
- },
- "node_modules/jest-sonar-reporter": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/jest-sonar-reporter/-/jest-sonar-reporter-2.0.0.tgz",
- "integrity": "sha512-ZervDCgEX5gdUbdtWsjdipLN3bKJwpxbvhkYNXTAYvAckCihobSLr9OT/IuyNIRT1EZMDDwR6DroWtrq+IL64w==",
+ "node_modules/native-notify/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dependencies": {
- "xml": "^1.0.1"
+ "color-name": "~1.1.4"
},
"engines": {
- "node": ">=8.0.0"
+ "node": ">=7.0.0"
}
},
- "node_modules/jest-util": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz",
- "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==",
- "dev": true,
- "dependencies": {
- "@jest/types": "^29.6.3",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "ci-info": "^3.2.0",
- "graceful-fs": "^4.2.9",
- "picomatch": "^2.2.3"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node_modules/native-notify/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "node_modules/native-notify/node_modules/expo-application": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/expo-application/-/expo-application-5.1.1.tgz",
+ "integrity": "sha512-aDatTcTTCdTbHw8h4/Tq2ilc6InM5ntF9xWCJdOcnUEcglxxGphVI/lzJKBaBF6mJECA8mEOjpVg2EGxOctTwg==",
+ "peerDependencies": {
+ "expo": "*"
}
},
- "node_modules/jest-util/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,
+ "node_modules/native-notify/node_modules/expo-constants": {
+ "version": "14.2.1",
+ "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-14.2.1.tgz",
+ "integrity": "sha512-DD5u4QmBds2U7uYo409apV7nX+XjudARcgqe7S9aRFJ/6kyftmuxvk1DpaU4X42Av8z/tfKwEpuxl+vl7HHx/Q==",
"dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
+ "@expo/config": "~8.0.0",
+ "uuid": "^3.3.2"
},
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
+ "peerDependencies": {
+ "expo": "*"
}
},
- "node_modules/jest-validate": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz",
- "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==",
- "dev": true,
+ "node_modules/native-notify/node_modules/expo-device": {
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/expo-device/-/expo-device-5.6.0.tgz",
+ "integrity": "sha512-tWERUBJQ7LbBqQOr1dNyG+63iSYSYhhqhbIlA44sgRwlhUjLGPj6pfNUrniPFiggATDtIacaS5Nx5kTI69tuGg==",
"dependencies": {
- "@jest/types": "^29.6.3",
- "camelcase": "^6.2.0",
- "chalk": "^4.0.0",
- "jest-get-type": "^29.6.3",
- "leven": "^3.1.0",
- "pretty-format": "^29.7.0"
+ "ua-parser-js": "^0.7.33"
},
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "peerDependencies": {
+ "expo": "*"
}
},
- "node_modules/jest-validate/node_modules/camelcase": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
- "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
- "dev": true,
- "engines": {
- "node": ">=10"
+ "node_modules/native-notify/node_modules/expo-notifications": {
+ "version": "0.18.1",
+ "resolved": "https://registry.npmjs.org/expo-notifications/-/expo-notifications-0.18.1.tgz",
+ "integrity": "sha512-lOEiuPE6ubkS5u7Nj/57gkmUGD/MxsRTC6bg9SGJqXIitBQZk3Tmv9y8bjTrn71n7DsrH8K7xCZTbVwr+kLQGg==",
+ "dependencies": {
+ "@expo/image-utils": "^0.3.18",
+ "@ide/backoff": "^1.0.0",
+ "abort-controller": "^3.0.0",
+ "assert": "^2.0.0",
+ "badgin": "^1.1.5",
+ "expo-application": "~5.1.0",
+ "expo-constants": "~14.2.0",
+ "fs-extra": "^9.1.0",
+ "uuid": "^3.4.0"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "peerDependencies": {
+ "expo": "*"
}
},
- "node_modules/jest-validate/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,
+ "node_modules/native-notify/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==",
"dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
},
"engines": {
"node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/jest-watcher": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz",
- "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==",
- "dev": true,
+ "node_modules/native-notify/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/native-notify/node_modules/jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
"dependencies": {
- "@jest/test-result": "^29.7.0",
- "@jest/types": "^29.6.3",
- "@types/node": "*",
- "ansi-escapes": "^4.2.1",
- "chalk": "^4.0.0",
- "emittery": "^0.13.1",
- "jest-util": "^29.7.0",
- "string-length": "^4.0.1"
+ "universalify": "^2.0.0"
},
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
}
},
- "node_modules/jest-watcher/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,
+ "node_modules/native-notify/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
+ "yallist": "^4.0.0"
},
"engines": {
"node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "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": {
- "@types/node": "*",
- "merge-stream": "^2.0.0",
- "supports-color": "^8.0.0"
+ "node_modules/native-notify/node_modules/semver": {
+ "version": "7.3.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz",
+ "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==",
+ "bin": {
+ "semver": "bin/semver.js"
},
"engines": {
- "node": ">= 10.13.0"
+ "node": ">=10"
}
},
- "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,
+ "node_modules/native-notify/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": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/supports-color?sponsor=1"
+ "node": ">=8"
}
},
- "node_modules/js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
- "dev": true
+ "node_modules/native-notify/node_modules/ua-parser-js": {
+ "version": "0.7.37",
+ "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.37.tgz",
+ "integrity": "sha512-xV8kqRKM+jhMvcHWUKthV9fNebIzrNy//2O9ZwWcfiBFR5f25XVZPLlEajk/sf3Ra15V92isyQqnIEXRDaZWEA==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/ua-parser-js"
+ },
+ {
+ "type": "paypal",
+ "url": "https://paypal.me/faisalman"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/faisalman"
+ }
+ ],
+ "engines": {
+ "node": "*"
+ }
},
- "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/native-notify/node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/native-notify/node_modules/xml2js": {
+ "version": "0.4.23",
+ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz",
+ "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==",
"dependencies": {
- "argparse": "^2.0.1"
+ "sax": ">=0.6.0",
+ "xmlbuilder": "~11.0.0"
},
- "bin": {
- "js-yaml": "bin/js-yaml.js"
+ "engines": {
+ "node": ">=4.0.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"
- },
+ "node_modules/native-notify/node_modules/xmlbuilder": {
+ "version": "11.0.1",
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
+ "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==",
"engines": {
- "node": ">=4"
+ "node": ">=4.0"
}
},
- "node_modules/json-buffer": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
- "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
- "dev": true
+ "node_modules/native-notify/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
},
- "node_modules/json-parse-even-better-errors": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
- "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
- "dev": true
+ "node_modules/natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="
},
- "node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "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==",
+ "engines": {
+ "node": ">= 0.6"
+ }
},
- "node_modules/json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
- "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
- "dev": true
+ "node_modules/neo-async": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
+ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="
},
- "node_modules/json5": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
- "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
- "dev": true,
- "bin": {
- "json5": "lib/cli.js"
- },
+ "node_modules/nested-error-stacks": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.0.1.tgz",
+ "integrity": "sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A=="
+ },
+ "node_modules/nice-try": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ=="
+ },
+ "node_modules/nocache": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/nocache/-/nocache-3.0.4.tgz",
+ "integrity": "sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==",
"engines": {
- "node": ">=6"
+ "node": ">=12.0.0"
}
},
- "node_modules/jsonc-parser": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz",
- "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==",
- "dev": true
- },
- "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/node-abi": {
+ "version": "3.67.0",
+ "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.67.0.tgz",
+ "integrity": "sha512-bLn/fU/ALVBE9wj+p4Y21ZJWYFjUXLXPi/IewyLZkx3ApxKDNBWCKdReeKOtD8dWpOdDCeMyLh6ZewzcLsG2Nw==",
"dev": true,
"dependencies": {
- "universalify": "^2.0.0"
+ "semver": "^7.3.5"
},
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
+ "engines": {
+ "node": ">=10"
}
},
- "node_modules/jsonwebtoken": {
- "version": "8.5.1",
- "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz",
- "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==",
- "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"
+ "node_modules/node-abi/node_modules/semver": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
},
"engines": {
- "node": ">=4",
- "npm": ">=1.4.28"
+ "node": ">=10"
}
},
- "node_modules/jsonwebtoken/node_modules/semver": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
- "bin": {
- "semver": "bin/semver"
- }
+ "node_modules/node-abort-controller": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz",
+ "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ=="
},
- "node_modules/jwa": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
- "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
+ "node_modules/node-dir": {
+ "version": "0.1.17",
+ "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz",
+ "integrity": "sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==",
"dependencies": {
- "buffer-equal-constant-time": "1.0.1",
- "ecdsa-sig-formatter": "1.0.11",
- "safe-buffer": "^5.0.1"
+ "minimatch": "^3.0.2"
+ },
+ "engines": {
+ "node": ">= 0.10.5"
}
},
- "node_modules/jws": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
- "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
+ "node_modules/node-fetch": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
+ "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
"dependencies": {
- "jwa": "^1.4.1",
- "safe-buffer": "^5.0.1"
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
}
},
- "node_modules/keyv": {
- "version": "4.5.4",
- "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
- "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
- "dev": true,
+ "node_modules/node-fetch/node_modules/tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
+ },
+ "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": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
+ },
+ "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": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
"dependencies": {
- "json-buffer": "3.0.1"
+ "tr46": "~0.0.3",
+ "webidl-conversions": "^3.0.0"
}
},
- "node_modules/kleur": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
- "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
- "dev": true,
+ "node_modules/node-forge": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz",
+ "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==",
"engines": {
- "node": ">=6"
+ "node": ">= 6.13.0"
}
},
- "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,
+ "node_modules/node-git-hooks": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/node-git-hooks/-/node-git-hooks-1.0.7.tgz",
+ "integrity": "sha512-IgIbLXsONu4sfHVaaTxQvVbNfo36ZxqCbzmataI/4hbwqmX2Eth4Vdxw9NvAAeroVuxzzmHqjVlV9TeHb3U2yw==",
+ "bin": {
+ "node-git-hooks": "bin/install.js"
+ },
"engines": {
- "node": ">=6"
+ "node": ">=4.0.0"
}
},
- "node_modules/levn": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
- "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
- "dev": true,
- "dependencies": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
+ "node_modules/node-int64": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
+ "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw=="
+ },
+ "node_modules/node-releases": {
+ "version": "2.0.18",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz",
+ "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g=="
+ },
+ "node_modules/node-stream-zip": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz",
+ "integrity": "sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==",
+ "engines": {
+ "node": ">=0.12.0"
},
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/antelle"
+ }
+ },
+ "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==",
"engines": {
- "node": ">= 0.8.0"
+ "node": ">=0.10.0"
}
},
- "node_modules/libphonenumber-js": {
- "version": "1.10.48",
- "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.10.48.tgz",
- "integrity": "sha512-Vvcgt4+o8+puIBJZLdMshPYx9nRN3/kTT7HPtOyfYrSQuN9PGBF1KUv0g07fjNzt4E4GuA7FnsLb+WeAMzyRQg=="
+ "node_modules/npm-package-arg": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-7.0.0.tgz",
+ "integrity": "sha512-xXxr8y5U0kl8dVkz2oK7yZjPBvqM2fwaO5l3Yg13p03v8+E3qQcD0JNhHzjL1vyGgxcKkD0cco+NLR72iuPk3g==",
+ "dependencies": {
+ "hosted-git-info": "^3.0.2",
+ "osenv": "^0.1.5",
+ "semver": "^5.6.0",
+ "validate-npm-package-name": "^3.0.0"
+ }
},
- "node_modules/lines-and-columns": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
- "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
- "dev": true
+ "node_modules/npm-package-arg/node_modules/semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "bin": {
+ "semver": "bin/semver"
+ }
},
- "node_modules/load-json-file": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
- "integrity": "sha512-3p6ZOGNbiX4CdvEd1VcE6yi78UrGNpjHO33noGwHCnT/o2fyllJDepsm8+mFFv/DvtwFHht5HIHSyOy5a+ChVQ==",
- "dev": true,
+ "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": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==",
"dependencies": {
- "graceful-fs": "^4.1.2",
- "parse-json": "^2.2.0",
- "pify": "^2.0.0",
- "strip-bom": "^3.0.0"
+ "path-key": "^2.0.0"
},
"engines": {
"node": ">=4"
}
},
- "node_modules/load-json-file/node_modules/parse-json": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
- "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==",
- "dev": true,
- "dependencies": {
- "error-ex": "^1.2.0"
- },
+ "node_modules/npm-run-path/node_modules/path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
"engines": {
- "node": ">=0.10.0"
+ "node": ">=4"
}
},
- "node_modules/load-json-file/node_modules/pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
- "dev": true,
+ "node_modules/nullthrows": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz",
+ "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw=="
+ },
+ "node_modules/nwsapi": {
+ "version": "2.2.7",
+ "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz",
+ "integrity": "sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ=="
+ },
+ "node_modules/ob1": {
+ "version": "0.80.10",
+ "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.80.10.tgz",
+ "integrity": "sha512-dJHyB0S6JkMorUSfSGcYGkkg9kmq3qDUu3ygZUKIfkr47XOPuG35r2Sk6tbwtHXbdKIXmcMvM8DF2CwgdyaHfQ==",
+ "dependencies": {
+ "flow-enums-runtime": "^0.0.6"
+ },
"engines": {
- "node": ">=0.10.0"
+ "node": ">=18"
}
},
- "node_modules/load-json-file/node_modules/strip-bom": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
- "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
- "dev": true,
+ "node_modules/object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
"engines": {
- "node": ">=4"
+ "node": ">=0.10.0"
}
},
- "node_modules/loader-runner": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz",
- "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==",
- "dev": true,
- "engines": {
- "node": ">=6.11.5"
+ "node_modules/object-inspect": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
+ "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "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,
+ "node_modules/object-is": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz",
+ "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
"dependencies": {
- "p-locate": "^4.1.0"
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3"
},
"engines": {
- "node": ">=8"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
- },
- "node_modules/lodash.camelcase": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
- "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA=="
- },
- "node_modules/lodash.get": {
- "version": "4.4.2",
- "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
- "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==",
- "dev": true
- },
- "node_modules/lodash.includes": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
- "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w=="
- },
- "node_modules/lodash.isboolean": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
- "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg=="
- },
- "node_modules/lodash.isinteger": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
- "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA=="
- },
- "node_modules/lodash.isnumber": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
- "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw=="
- },
- "node_modules/lodash.isplainobject": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
- "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA=="
- },
- "node_modules/lodash.isstring": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
- "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw=="
- },
- "node_modules/lodash.memoize": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
- "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==",
- "dev": true
- },
- "node_modules/lodash.merge": {
- "version": "4.6.2",
- "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
- "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
- "dev": true
- },
- "node_modules/lodash.omit": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz",
- "integrity": "sha512-XeqSp49hNGmlkj2EJlfrQFIzQ6lXdNro9sddtQzcJY8QaoC2GO0DT7xaIokHeyM+mIT0mPMlPvkYzg2xCuHdZg==",
- "dev": true
- },
- "node_modules/lodash.once": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
- "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg=="
- },
- "node_modules/lodash.sortby": {
- "version": "4.7.0",
- "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
- "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==",
- "dev": true
- },
- "node_modules/lodash.uniq": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
- "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==",
- "dev": true
+ "node_modules/object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "engines": {
+ "node": ">= 0.4"
+ }
},
- "node_modules/log-symbols": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
- "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
- "dev": true,
+ "node_modules/object.assign": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz",
+ "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==",
"dependencies": {
- "chalk": "^4.1.0",
- "is-unicode-supported": "^0.1.0"
+ "call-bind": "^1.0.5",
+ "define-properties": "^1.2.1",
+ "has-symbols": "^1.0.3",
+ "object-keys": "^1.1.1"
},
"engines": {
- "node": ">=10"
+ "node": ">= 0.4"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/log-symbols/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/object.entries": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz",
+ "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==",
"dev": true,
"dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
},
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
+ "node": ">= 0.4"
}
},
- "node_modules/loglevel": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.1.tgz",
- "integrity": "sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==",
+ "node_modules/object.fromentries": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz",
+ "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==",
"dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
+ },
"engines": {
- "node": ">= 0.6.0"
+ "node": ">= 0.4"
},
"funding": {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/loglevel"
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/long": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
- "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
- },
- "node_modules/lowercase-keys": {
+ "node_modules/object.groupby": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
- "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
+ "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz",
+ "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==",
"dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "get-intrinsic": "^1.2.1"
}
},
- "node_modules/macos-release": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.5.1.tgz",
- "integrity": "sha512-DXqXhEM7gW59OjZO8NIjBCz9AQ1BEMrfiOAl4AYByHCtVHRF4KoGNO8mqQeM8lRCtQe/UnJ4imO/d2HdkKsd+A==",
+ "node_modules/object.hasown": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz",
+ "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==",
"dev": true,
- "engines": {
- "node": ">=6"
+ "dependencies": {
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/magic-string": {
- "version": "0.26.2",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.2.tgz",
- "integrity": "sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==",
+ "node_modules/object.values": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz",
+ "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==",
"dev": true,
"dependencies": {
- "sourcemap-codec": "^1.4.8"
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
},
"engines": {
- "node": ">=12"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/make-dir": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
- "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+ "node_modules/on-finished": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
"dependencies": {
- "semver": "^6.0.0"
+ "ee-first": "1.1.1"
},
"engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">= 0.8"
}
},
- "node_modules/make-dir/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "bin": {
- "semver": "bin/semver.js"
+ "node_modules/on-headers": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
+ "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
+ "engines": {
+ "node": ">= 0.8"
}
},
- "node_modules/make-error": {
- "version": "1.3.6",
- "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
- "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
- "dev": true
- },
- "node_modules/makeerror": {
- "version": "1.0.12",
- "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz",
- "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==",
- "dev": true,
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
"dependencies": {
- "tmpl": "1.0.5"
+ "wrappy": "1"
}
},
- "node_modules/media-typer": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
- "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
+ "node_modules/onetime": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
+ "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==",
+ "dependencies": {
+ "mimic-fn": "^1.0.0"
+ },
"engines": {
- "node": ">= 0.6"
+ "node": ">=4"
}
},
- "node_modules/memfs": {
- "version": "3.5.3",
- "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz",
- "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==",
- "dev": true,
+ "node_modules/open": {
+ "version": "8.4.2",
+ "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz",
+ "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==",
"dependencies": {
- "fs-monkey": "^1.0.4"
+ "define-lazy-prop": "^2.0.0",
+ "is-docker": "^2.1.1",
+ "is-wsl": "^2.2.0"
},
"engines": {
- "node": ">= 4.0.0"
- }
- },
- "node_modules/merge-descriptors": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz",
- "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==",
+ "node": ">=12"
+ },
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "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",
- "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
- "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
- "dev": true,
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/methods": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
- "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/micromatch": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
- "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+ "node_modules/optionator": {
+ "version": "0.9.3",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
+ "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
"dev": true,
"dependencies": {
- "braces": "^3.0.3",
- "picomatch": "^2.3.1"
+ "@aashutoshrathi/word-wrap": "^1.2.3",
+ "deep-is": "^0.1.3",
+ "fast-levenshtein": "^2.0.6",
+ "levn": "^0.4.1",
+ "prelude-ls": "^1.2.1",
+ "type-check": "^0.4.0"
},
"engines": {
- "node": ">=8.6"
+ "node": ">= 0.8.0"
}
},
- "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/ora": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz",
+ "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==",
+ "dependencies": {
+ "chalk": "^2.4.2",
+ "cli-cursor": "^2.1.0",
+ "cli-spinners": "^2.0.0",
+ "log-symbols": "^2.2.0",
+ "strip-ansi": "^5.2.0",
+ "wcwidth": "^1.0.1"
},
"engines": {
- "node": ">=4"
+ "node": ">=6"
}
},
- "node_modules/mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "node_modules/ora/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==",
"engines": {
- "node": ">= 0.6"
+ "node": ">=6"
}
},
- "node_modules/mime-types": {
- "version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "node_modules/ora/node_modules/strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
"dependencies": {
- "mime-db": "1.52.0"
+ "ansi-regex": "^4.1.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",
- "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
- "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
- "dev": true,
+ "node_modules/os-homedir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+ "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==",
"engines": {
- "node": ">=4"
+ "node": ">=0.10.0"
}
},
- "node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
+ "node_modules/os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==",
"engines": {
- "node": "*"
+ "node": ">=0.10.0"
}
},
- "node_modules/minimist": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
- "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "node_modules/osenv": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
+ "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
+ "deprecated": "This package is no longer supported.",
+ "dependencies": {
+ "os-homedir": "^1.0.0",
+ "os-tmpdir": "^1.0.0"
}
},
- "node_modules/minipass": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
- "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
+ "node_modules/p-finally": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+ "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==",
"engines": {
- "node": ">=8"
+ "node": ">=4"
}
},
- "node_modules/minizlib": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
- "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
+ "node_modules/p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
"dependencies": {
- "minipass": "^3.0.0",
- "yallist": "^4.0.0"
+ "yocto-queue": "^0.1.0"
},
"engines": {
- "node": ">= 8"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/minizlib/node_modules/minipass": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
- "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "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==",
"dependencies": {
- "yallist": "^4.0.0"
+ "p-limit": "^3.0.2"
},
"engines": {
- "node": ">=8"
- }
- },
- "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==",
- "dependencies": {
- "minimist": "^1.2.6"
+ "node": ">=10"
},
- "bin": {
- "mkdirp": "bin/cmd.js"
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
- },
- "node_modules/multer": {
- "version": "1.4.4-lts.1",
- "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.4-lts.1.tgz",
- "integrity": "sha512-WeSGziVj6+Z2/MwQo3GvqzgR+9Uc+qt8SwHKh3gvNPiISKfsMfG4SvCOFYlxxgkXt7yIV2i1yczehm0EOKIxIg==",
+ "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==",
"dependencies": {
- "append-field": "^1.0.0",
- "busboy": "^1.0.0",
- "concat-stream": "^1.5.2",
- "mkdirp": "^0.5.4",
- "object-assign": "^4.1.1",
- "type-is": "^1.6.4",
- "xtend": "^4.0.0"
+ "aggregate-error": "^3.0.0"
},
"engines": {
- "node": ">= 6.0.0"
- }
- },
- "node_modules/mute-stream": {
- "version": "0.0.8",
- "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
- "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
- "dev": true
- },
- "node_modules/mz": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
- "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
- "dependencies": {
- "any-promise": "^1.0.0",
- "object-assign": "^4.0.1",
- "thenify-all": "^1.0.0"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/natural-compare": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
- "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
- "dev": true
- },
- "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/p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
"engines": {
- "node": ">= 0.6"
+ "node": ">=6"
}
},
- "node_modules/neo-async": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
- "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
- "dev": true
- },
- "node_modules/node-abort-controller": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz",
- "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==",
- "dev": true
- },
- "node_modules/node-addon-api": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz",
- "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A=="
+ "node_modules/package-json-from-dist": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
+ "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw=="
},
- "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/parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
"dev": true,
"dependencies": {
- "lodash": "^4.17.21"
+ "callsites": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
}
},
- "node_modules/node-fetch": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
- "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+ "node_modules/parse-json": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+ "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
"dependencies": {
- "whatwg-url": "^5.0.0"
+ "@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": "4.x || >=6.0.0"
- },
- "peerDependencies": {
- "encoding": "^0.1.0"
+ "node": ">=8"
},
- "peerDependenciesMeta": {
- "encoding": {
- "optional": true
- }
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/node-fetch/node_modules/tr46": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
- "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
- },
- "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": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
- },
- "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": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+ "node_modules/parse-png": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/parse-png/-/parse-png-2.1.0.tgz",
+ "integrity": "sha512-Nt/a5SfCLiTnQAjx3fHlqp8hRgTL3z7kTQZzvIMS9uCAepnCyjpdEc6M/sz69WqMBdaDBw9sF1F1UaHROYzGkQ==",
"dependencies": {
- "tr46": "~0.0.3",
- "webidl-conversions": "^3.0.0"
- }
- },
- "node_modules/node-int64": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
- "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==",
- "dev": true
- },
- "node_modules/node-releases": {
- "version": "2.0.13",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz",
- "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==",
- "dev": true
- },
- "node_modules/nodemailer": {
- "version": "4.7.0",
- "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-4.7.0.tgz",
- "integrity": "sha512-IludxDypFpYw4xpzKdMAozBSkzKHmNBvGanUREjJItgJ2NYcK/s8+PggVhj7c2yGFQykKsnnmv1+Aqo0ZfjHmw==",
+ "pngjs": "^3.3.0"
+ },
"engines": {
- "node": ">=6.0.0"
+ "node": ">=10"
}
},
- "node_modules/nopt": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz",
- "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==",
+ "node_modules/parse5": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz",
+ "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==",
"dependencies": {
- "abbrev": "1"
+ "entities": "^4.4.0"
},
- "bin": {
- "nopt": "bin/nopt.js"
+ "funding": {
+ "url": "https://github.com/inikulin/parse5?sponsor=1"
+ }
+ },
+ "node_modules/parse5/node_modules/entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "engines": {
+ "node": ">=0.12"
},
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
"engines": {
- "node": ">=6"
+ "node": ">= 0.8"
}
},
- "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,
+ "node_modules/password-prompt": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/password-prompt/-/password-prompt-1.1.3.tgz",
+ "integrity": "sha512-HkrjG2aJlvF0t2BMH0e2LB/EHf3Lcq3fNMzy4GYHcQblAvOl+QQji1Lx7WRBMqpVK8p+KR7bCg7oqAMXtdgqyw==",
"dependencies": {
- "hosted-git-info": "^2.1.4",
- "resolve": "^1.10.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
+ "ansi-escapes": "^4.3.2",
+ "cross-spawn": "^7.0.3"
+ }
+ },
+ "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==",
+ "engines": {
+ "node": ">=8"
}
},
- "node_modules/normalize-package-data/node_modules/semver": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
- "dev": true,
- "bin": {
- "semver": "bin/semver"
+ "node_modules/path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "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,
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
"engines": {
- "node": ">=0.10.0"
+ "node": ">=8"
}
},
- "node_modules/npm-conf": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz",
- "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==",
- "dev": true,
+ "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-scurry": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
+ "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
"dependencies": {
- "config-chain": "^1.1.11",
- "pify": "^3.0.0"
+ "lru-cache": "^10.2.0",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=16 || 14 >=14.18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "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"
- },
+ "node_modules/path-scurry/node_modules/lru-cache": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="
+ },
+ "node_modules/path-type": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
"engines": {
"node": ">=8"
}
},
- "node_modules/npmlog": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz",
- "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==",
- "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/picocolors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz",
+ "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew=="
},
- "node_modules/object-assign": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
"engines": {
- "node": ">=0.10.0"
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
}
},
- "node_modules/object-hash": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
- "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
+ "node_modules/pify": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
"engines": {
- "node": ">= 6"
+ "node": ">=6"
}
},
- "node_modules/object-inspect": {
- "version": "1.13.1",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
- "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "node_modules/pirates": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz",
+ "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==",
+ "engines": {
+ "node": ">= 6"
}
},
- "node_modules/on-finished": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
- "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+ "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==",
"dependencies": {
- "ee-first": "1.1.1"
+ "find-up": "^4.0.0"
},
"engines": {
- "node": ">= 0.8"
+ "node": ">=8"
}
},
- "node_modules/on-headers": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
- "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
+ "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==",
+ "dependencies": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ },
"engines": {
- "node": ">= 0.8"
+ "node": ">=8"
}
},
- "node_modules/once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "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==",
"dependencies": {
- "wrappy": "1"
+ "p-locate": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "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/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==",
"dependencies": {
- "mimic-fn": "^2.1.0"
+ "p-try": "^2.0.0"
},
"engines": {
"node": ">=6"
@@ -9437,152 +19045,169 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/optionator": {
- "version": "0.9.3",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
- "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
- "dev": true,
+ "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==",
"dependencies": {
- "@aashutoshrathi/word-wrap": "^1.2.3",
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0"
+ "p-limit": "^2.2.0"
},
"engines": {
- "node": ">= 0.8.0"
+ "node": ">=8"
}
},
- "node_modules/ora": {
- "version": "5.4.1",
- "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz",
- "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==",
- "dev": true,
+ "node_modules/plist": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz",
+ "integrity": "sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==",
"dependencies": {
- "bl": "^4.1.0",
- "chalk": "^4.1.0",
- "cli-cursor": "^3.1.0",
- "cli-spinners": "^2.5.0",
- "is-interactive": "^1.0.0",
- "is-unicode-supported": "^0.1.0",
- "log-symbols": "^4.1.0",
- "strip-ansi": "^6.0.0",
- "wcwidth": "^1.0.1"
+ "@xmldom/xmldom": "^0.8.8",
+ "base64-js": "^1.5.1",
+ "xmlbuilder": "^15.1.1"
},
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=10.4.0"
}
},
- "node_modules/ora/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"
- },
+ "node_modules/plist/node_modules/@xmldom/xmldom": {
+ "version": "0.8.10",
+ "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz",
+ "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==",
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
+ "node": ">=10.0.0"
}
},
- "node_modules/os-name": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/os-name/-/os-name-4.0.1.tgz",
- "integrity": "sha512-xl9MAoU97MH1Xt5K9ERft2YfCAoaO6msy1OBA0ozxEC0x0TmIoE6K3QvgJMMZA9yKGLmHXNY/YZoDbiGDj4zYw==",
- "dev": true,
- "dependencies": {
- "macos-release": "^2.5.0",
- "windows-release": "^4.0.0"
- },
+ "node_modules/plist/node_modules/xmlbuilder": {
+ "version": "15.1.1",
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz",
+ "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==",
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=8.0"
}
},
- "node_modules/os-tmpdir": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
- "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==",
- "dev": true,
+ "node_modules/pngjs": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz",
+ "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==",
"engines": {
- "node": ">=0.10.0"
+ "node": ">=4.0.0"
}
},
- "node_modules/p-cancelable": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz",
- "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==",
- "dev": true,
+ "node_modules/possible-typed-array-names": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz",
+ "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==",
"engines": {
- "node": ">=4"
+ "node": ">= 0.4"
}
},
- "node_modules/p-event": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/p-event/-/p-event-1.3.0.tgz",
- "integrity": "sha512-hV1zbA7gwqPVFcapfeATaNjQ3J0NuzorHPyG8GPL9g/Y/TplWVBVoCKCXL6Ej2zscrCEv195QNWJXuBH6XZuzA==",
+ "node_modules/postcss": {
+ "version": "8.4.41",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.41.tgz",
+ "integrity": "sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "nanoid": "^3.3.7",
+ "picocolors": "^1.0.1",
+ "source-map-js": "^1.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "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=="
+ },
+ "node_modules/prebuild-install": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.2.tgz",
+ "integrity": "sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==",
"dev": true,
"dependencies": {
- "p-timeout": "^1.1.1"
+ "detect-libc": "^2.0.0",
+ "expand-template": "^2.0.3",
+ "github-from-package": "0.0.0",
+ "minimist": "^1.2.3",
+ "mkdirp-classic": "^0.5.3",
+ "napi-build-utils": "^1.0.1",
+ "node-abi": "^3.3.0",
+ "pump": "^3.0.0",
+ "rc": "^1.2.7",
+ "simple-get": "^4.0.0",
+ "tar-fs": "^2.0.0",
+ "tunnel-agent": "^0.6.0"
+ },
+ "bin": {
+ "prebuild-install": "bin.js"
},
"engines": {
- "node": ">=4"
+ "node": ">=10"
}
},
- "node_modules/p-finally": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
- "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==",
+ "node_modules/prebuild-install/node_modules/detect-libc": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz",
+ "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==",
"dev": true,
"engines": {
- "node": ">=4"
+ "node": ">=8"
}
},
- "node_modules/p-limit": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
- "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "node_modules/prelude-ls": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
"dev": true,
- "dependencies": {
- "yocto-queue": "^0.1.0"
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/prettier": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz",
+ "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==",
+ "dev": true,
+ "bin": {
+ "prettier": "bin/prettier.cjs"
},
"engines": {
- "node": ">=10"
+ "node": ">=14"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://github.com/prettier/prettier?sponsor=1"
}
},
- "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/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": {
- "p-limit": "^2.2.0"
+ "fast-diff": "^1.1.2"
},
"engines": {
- "node": ">=8"
+ "node": ">=6.0.0"
}
},
- "node_modules/p-locate/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"
- },
+ "node_modules/pretty-bytes": {
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz",
+ "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==",
"engines": {
"node": ">=6"
},
@@ -9590,785 +19215,950 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/p-timeout": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz",
- "integrity": "sha512-gb0ryzr+K2qFqFv6qi3khoeqMZF/+ajxQipEF6NteZVnvz9tzdsfAVj3lYtn1gAXvH5lfLwfxEII799gt/mRIA==",
- "dev": true,
+ "node_modules/pretty-format": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz",
+ "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==",
"dependencies": {
- "p-finally": "^1.0.0"
+ "@jest/schemas": "^29.6.3",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^18.0.0"
},
"engines": {
- "node": ">=4"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "node_modules/p-try": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
- "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
- "dev": true,
+ "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": ">=6"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/packet-reader": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz",
- "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ=="
+ "node_modules/pretty-format/node_modules/react-is": {
+ "version": "18.2.0",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
+ "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w=="
},
- "node_modules/parent-module": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
- "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
- "dev": true,
- "dependencies": {
- "callsites": "^3.0.0"
- },
+ "node_modules/proc-log": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz",
+ "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==",
"engines": {
- "node": ">=6"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
- "node_modules/parse-json": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
- "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
- "dev": true,
+ "node_modules/process-nextick-args": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
+ },
+ "node_modules/progress": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
+ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/promise": {
+ "version": "7.3.1",
+ "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
+ "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
"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"
+ "asap": "~2.0.3"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "kleur": "^3.0.3",
+ "sisteransi": "^1.0.5"
},
"engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">= 6"
}
},
- "node_modules/parse-node-version": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz",
- "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==",
- "dev": true,
- "engines": {
- "node": ">= 0.10"
+ "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==",
+ "dependencies": {
+ "loose-envify": "^1.4.0",
+ "object-assign": "^4.1.1",
+ "react-is": "^16.13.1"
}
},
- "node_modules/parse5": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
- "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw=="
+ "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/parse5-htmlparser2-tree-adapter": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz",
- "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==",
+ "node_modules/psl": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
+ "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag=="
+ },
+ "node_modules/pump": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
"dependencies": {
- "parse5": "^6.0.1"
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
}
},
- "node_modules/parseurl": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
- "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+ "node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
"engines": {
- "node": ">= 0.8"
+ "node": ">=6"
}
},
- "node_modules/passport": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/passport/-/passport-0.5.2.tgz",
- "integrity": "sha512-w9n/Ot5I7orGD4y+7V3EFJCQEznE5RxHamUxcqLT2QoJY0f2JdN8GyHonYFvN0Vz+L6lUJfVhrk2aZz2LbuREw==",
+ "node_modules/pure-rand": {
+ "version": "6.0.4",
+ "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz",
+ "integrity": "sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/dubzzz"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/fast-check"
+ }
+ ]
+ },
+ "node_modules/qrcode-terminal": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.11.0.tgz",
+ "integrity": "sha512-Uu7ii+FQy4Qf82G4xu7ShHhjhGahEpCWc3x8UavY3CTcWV+ufmmCtwkr7ZKsX42jdL0kr1B5FKUeqJvAn51jzQ==",
+ "bin": {
+ "qrcode-terminal": "bin/qrcode-terminal.js"
+ }
+ },
+ "node_modules/query-string": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.3.tgz",
+ "integrity": "sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==",
"dependencies": {
- "passport-strategy": "1.x.x",
- "pause": "0.0.1"
+ "decode-uri-component": "^0.2.2",
+ "filter-obj": "^1.1.0",
+ "split-on-first": "^1.0.0",
+ "strict-uri-encode": "^2.0.0"
},
"engines": {
- "node": ">= 0.4.0"
+ "node": ">=6"
},
"funding": {
- "type": "github",
- "url": "https://github.com/sponsors/jaredhanson"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/passport-jwt": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/passport-jwt/-/passport-jwt-4.0.0.tgz",
- "integrity": "sha512-BwC0n2GP/1hMVjR4QpnvqA61TxenUMlmfNjYNgK0ZAs0HK4SOQkHcSv4L328blNTLtHq7DbmvyNJiH+bn6C5Mg==",
- "dependencies": {
- "jsonwebtoken": "^8.2.0",
- "passport-strategy": "^1.0.0"
+ "node_modules/querystring": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz",
+ "integrity": "sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==",
+ "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.",
+ "engines": {
+ "node": ">=0.4.x"
}
},
- "node_modules/passport-local": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/passport-local/-/passport-local-1.0.0.tgz",
- "integrity": "sha512-9wCE6qKznvf9mQYYbgJ3sVOHmCWoUNMVFoZzNoznmISbhnNNPhN9xfY3sLmScHMetEJeoY7CXwfhCe7argfQow==",
+ "node_modules/querystringify": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
+ "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ=="
+ },
+ "node_modules/queue": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz",
+ "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==",
"dependencies": {
- "passport-strategy": "1.x.x"
- },
- "engines": {
- "node": ">= 0.4.0"
+ "inherits": "~2.0.3"
}
},
- "node_modules/passport-strategy": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz",
- "integrity": "sha512-CB97UUvDKJde2V0KDWWB3lyf6PC3FaZP7YxZ2G8OAtn9p4HI9j9JLP9qjOGZFvyl8uwNT8qM+hGnz/n16NI7oA==",
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "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/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.4.0"
+ "node": ">= 0.6"
}
},
- "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/rc": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
+ "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
+ "dependencies": {
+ "deep-extend": "^0.6.0",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
+ },
+ "bin": {
+ "rc": "cli.js"
}
},
- "node_modules/path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "node_modules/rc/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": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
"engines": {
"node": ">=0.10.0"
}
},
- "node_modules/path-key": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true,
+ "node_modules/react": {
+ "version": "18.2.0",
+ "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
+ "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
+ "dependencies": {
+ "loose-envify": "^1.1.0"
+ },
"engines": {
- "node": ">=8"
+ "node": ">=0.10.0"
}
},
- "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==",
- "dev": true
- },
- "node_modules/path-to-regexp": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz",
- "integrity": "sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA=="
+ "node_modules/react-devtools-core": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-5.3.1.tgz",
+ "integrity": "sha512-7FSb9meX0btdBQLwdFOwt6bGqvRPabmVMMslv8fgoSPqXyuGpgQe36kx8gR86XPw7aV1yVouTp6fyZ0EH+NfUw==",
+ "dependencies": {
+ "shell-quote": "^1.6.1",
+ "ws": "^7"
+ }
},
- "node_modules/path-type": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
- "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
- "dev": true,
+ "node_modules/react-devtools-core/node_modules/ws": {
+ "version": "7.5.10",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz",
+ "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==",
"engines": {
- "node": ">=8"
+ "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/pause": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz",
- "integrity": "sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg=="
+ "node_modules/react-dom": {
+ "version": "18.2.0",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
+ "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
+ "dependencies": {
+ "loose-envify": "^1.1.0",
+ "scheduler": "^0.23.0"
+ },
+ "peerDependencies": {
+ "react": "^18.2.0"
+ }
},
- "node_modules/pend": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
- "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
- "dev": true
+ "node_modules/react-fast-compare": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz",
+ "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ=="
+ },
+ "node_modules/react-freeze": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/react-freeze/-/react-freeze-1.0.3.tgz",
+ "integrity": "sha512-ZnXwLQnGzrDpHBHiC56TXFXvmolPeMjTn1UOm610M4EXGzbEDR7oOIyS2ZiItgbs6eZc4oU/a0hpk8PrcKvv5g==",
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "react": ">=17.0.0"
+ }
},
- "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"
+ "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=="
+ },
+ "node_modules/react-native": {
+ "version": "0.74.5",
+ "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.74.5.tgz",
+ "integrity": "sha512-Bgg2WvxaGODukJMTZFTZBNMKVaROHLwSb8VAGEdrlvKwfb1hHg/3aXTUICYk7dwgAnb+INbGMwnF8yeAgIUmqw==",
+ "dependencies": {
+ "@jest/create-cache-key-function": "^29.6.3",
+ "@react-native-community/cli": "13.6.9",
+ "@react-native-community/cli-platform-android": "13.6.9",
+ "@react-native-community/cli-platform-ios": "13.6.9",
+ "@react-native/assets-registry": "0.74.87",
+ "@react-native/codegen": "0.74.87",
+ "@react-native/community-cli-plugin": "0.74.87",
+ "@react-native/gradle-plugin": "0.74.87",
+ "@react-native/js-polyfills": "0.74.87",
+ "@react-native/normalize-colors": "0.74.87",
+ "@react-native/virtualized-lists": "0.74.87",
+ "abort-controller": "^3.0.0",
+ "anser": "^1.4.9",
+ "ansi-regex": "^5.0.0",
+ "base64-js": "^1.5.1",
+ "chalk": "^4.0.0",
+ "event-target-shim": "^5.0.1",
+ "flow-enums-runtime": "^0.0.6",
+ "invariant": "^2.2.4",
+ "jest-environment-node": "^29.6.3",
+ "jsc-android": "^250231.0.0",
+ "memoize-one": "^5.0.0",
+ "metro-runtime": "^0.80.3",
+ "metro-source-map": "^0.80.3",
+ "mkdirp": "^0.5.1",
+ "nullthrows": "^1.1.1",
+ "pretty-format": "^26.5.2",
+ "promise": "^8.3.0",
+ "react-devtools-core": "^5.0.0",
+ "react-refresh": "^0.14.0",
+ "react-shallow-renderer": "^16.15.0",
+ "regenerator-runtime": "^0.13.2",
+ "scheduler": "0.24.0-canary-efb381bbf-20230505",
+ "stacktrace-parser": "^0.1.10",
+ "whatwg-fetch": "^3.0.0",
+ "ws": "^6.2.2",
+ "yargs": "^17.6.2"
+ },
+ "bin": {
+ "react-native": "cli.js"
},
"engines": {
- "node": ">= 8.0.0"
+ "node": ">=18"
},
"peerDependencies": {
- "pg-native": ">=2.0.0"
+ "@types/react": "^18.2.6",
+ "react": "18.2.0"
},
"peerDependenciesMeta": {
- "pg-native": {
+ "@types/react": {
"optional": true
}
}
},
- "node_modules/pg-connection-string": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.2.tgz",
- "integrity": "sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA=="
- },
- "node_modules/pg-int8": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz",
- "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==",
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/pg-pool": {
- "version": "3.6.1",
- "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.1.tgz",
- "integrity": "sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og==",
+ "node_modules/react-native-calendar-strip": {
+ "version": "2.2.6",
+ "resolved": "https://registry.npmjs.org/react-native-calendar-strip/-/react-native-calendar-strip-2.2.6.tgz",
+ "integrity": "sha512-VYSgv59W3o5wQsZOIfC5mi9vv7afgAaT9+PjJEs6CfnuLFjopSl395+1dkm4oR7Cm4JZap4WxxVlywzge1EDVA==",
+ "hasInstallScript": true,
+ "dependencies": {
+ "moment": ">=2.0.0",
+ "node-git-hooks": "^1.0.1",
+ "prop-types": "^15.6.0",
+ "recyclerlistview": "^3.0.0"
+ },
"peerDependencies": {
- "pg": ">=8.0"
+ "react": "*",
+ "react-native": "*"
}
},
- "node_modules/pg-protocol": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.0.tgz",
- "integrity": "sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q=="
+ "node_modules/react-native-calendar-strip/node_modules/fbjs": {
+ "version": "0.8.18",
+ "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.18.tgz",
+ "integrity": "sha512-EQaWFK+fEPSoibjNy8IxUtaFOMXcWsY0JaVrQoZR9zC8N2Ygf9iDITPWjUTVIax95b6I742JFLqASHfsag/vKA==",
+ "dependencies": {
+ "core-js": "^1.0.0",
+ "isomorphic-fetch": "^2.1.1",
+ "loose-envify": "^1.0.0",
+ "object-assign": "^4.1.0",
+ "promise": "^7.1.1",
+ "setimmediate": "^1.0.5",
+ "ua-parser-js": "^0.7.30"
+ }
},
- "node_modules/pg-types": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz",
- "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==",
+ "node_modules/react-native-calendar-strip/node_modules/recyclerlistview": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/recyclerlistview/-/recyclerlistview-3.0.5.tgz",
+ "integrity": "sha512-JVHz13u520faEsbVqFrJOMuJjc4mJlOXODe5QdqAJHdl5/IpyYeo83uiHrpzxyLb8QtJ0889JMlDik+Z1Ed0QQ==",
"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"
+ "lodash.debounce": "4.0.8",
+ "prop-types": "15.5.8",
+ "ts-object-utils": "0.0.5"
},
- "engines": {
- "node": ">=4"
+ "peerDependencies": {
+ "react": ">= 15.2.1",
+ "react-native": ">= 0.30.0"
}
},
- "node_modules/pgpass": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz",
- "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==",
+ "node_modules/react-native-calendar-strip/node_modules/recyclerlistview/node_modules/prop-types": {
+ "version": "15.5.8",
+ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.5.8.tgz",
+ "integrity": "sha512-QiDx7s0lWoAVxmEmOYnn3rIZGduup2PZgj3rta5O5y0NfPKu3ApWi+GdMfTto7PmO/5+p4yamSLMZkj0jaTL4A==",
"dependencies": {
- "split2": "^4.1.0"
+ "fbjs": "^0.8.9"
}
},
- "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/picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
- "dev": true,
+ "node_modules/react-native-calendar-strip/node_modules/ua-parser-js": {
+ "version": "0.7.37",
+ "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.37.tgz",
+ "integrity": "sha512-xV8kqRKM+jhMvcHWUKthV9fNebIzrNy//2O9ZwWcfiBFR5f25XVZPLlEajk/sf3Ra15V92isyQqnIEXRDaZWEA==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/ua-parser-js"
+ },
+ {
+ "type": "paypal",
+ "url": "https://paypal.me/faisalman"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/faisalman"
+ }
+ ],
"engines": {
- "node": ">=8.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
+ "node": "*"
}
},
- "node_modules/pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
- "dev": true,
- "engines": {
- "node": ">=4"
+ "node_modules/react-native-calendars": {
+ "version": "1.1302.0",
+ "resolved": "https://registry.npmjs.org/react-native-calendars/-/react-native-calendars-1.1302.0.tgz",
+ "integrity": "sha512-QZdkFYVKafxjc/oHmbmzyEhMkF0sWl+1hYd9FbKQFcf/c3D0K+sfG81A40C1YsOR8nxb1nq2OpsNT81CGd1L4Q==",
+ "dependencies": {
+ "hoist-non-react-statics": "^3.3.1",
+ "lodash": "^4.17.15",
+ "memoize-one": "^5.2.1",
+ "prop-types": "^15.5.10",
+ "react-native-swipe-gestures": "^1.0.5",
+ "recyclerlistview": "^4.0.0",
+ "xdate": "^0.8.0"
+ },
+ "optionalDependencies": {
+ "moment": "^2.29.4"
}
},
- "node_modules/pinkie": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
- "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
+ "node_modules/react-native-draggable-gridview": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/react-native-draggable-gridview/-/react-native-draggable-gridview-1.0.3.tgz",
+ "integrity": "sha512-zfnSDJxjbgHNxBndqf0n6N4S5aztxBMETuxh5qqtQnkp7GX/47yjCJmggPDxkMltJkptQR5dpNgD6/m8AU/TQg==",
+ "dependencies": {
+ "lodash": "^4.17.19"
}
},
- "node_modules/pinkie-promise": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
- "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==",
- "dev": true,
+ "node_modules/react-native-dropdown-select-list": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/react-native-dropdown-select-list/-/react-native-dropdown-select-list-2.0.5.tgz",
+ "integrity": "sha512-TepbcagQVUMB6nLuIlVU2ghRpQHAECOeZWe8K04ymW6NqbKbxuczZSDFfdCiABiiQ2dFD+8Dz65y4K7/uUEqGg=="
+ },
+ "node_modules/react-native-gesture-handler": {
+ "version": "2.16.2",
+ "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.16.2.tgz",
+ "integrity": "sha512-vGFlrDKlmyI+BT+FemqVxmvO7nqxU33cgXVsn6IKAFishvlG3oV2Ds67D5nPkHMea8T+s1IcuMm0bF8ntZtAyg==",
"dependencies": {
- "pinkie": "^2.0.0"
+ "@egjs/hammerjs": "^2.0.17",
+ "hoist-non-react-statics": "^3.3.0",
+ "invariant": "^2.2.4",
+ "lodash": "^4.17.21",
+ "prop-types": "^15.7.2"
},
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/pirates": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz",
- "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==",
- "dev": true,
- "engines": {
- "node": ">= 6"
+ "peerDependencies": {
+ "react": "*",
+ "react-native": "*"
}
},
- "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,
+ "node_modules/react-native-helmet-async": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/react-native-helmet-async/-/react-native-helmet-async-2.0.4.tgz",
+ "integrity": "sha512-m3CkXWss6B1dd6mCMleLpzDCJJGGaHOLQsUzZv8kAASJmMfmVT4d2fx375iXKTRWT25ThBfae3dECuX5cq/8hg==",
"dependencies": {
- "find-up": "^4.0.0"
+ "invariant": "^2.2.4",
+ "react-fast-compare": "^3.2.2",
+ "shallowequal": "^1.1.0"
},
- "engines": {
- "node": ">=8"
+ "peerDependencies": {
+ "react": "^16.6.0 || ^17.0.0 || ^18.0.0"
}
},
- "node_modules/pluralize": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz",
- "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==",
- "dev": true,
- "engines": {
- "node": ">=4"
+ "node_modules/react-native-mask-input": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/react-native-mask-input/-/react-native-mask-input-1.2.3.tgz",
+ "integrity": "sha512-RWx+gc1EaBslJWR6dsvGdILJ5XvnvZuyEsgJaH9uAMukB3Z9eOlxra1E7Ovck8NSMVcYWpBB/lzojO4LwqqXgA==",
+ "peerDependencies": {
+ "react": "*",
+ "react-native": "*"
}
},
- "node_modules/postgres-array": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz",
- "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==",
- "engines": {
- "node": ">=4"
+ "node_modules/react-native-paper": {
+ "version": "5.11.3",
+ "resolved": "https://registry.npmjs.org/react-native-paper/-/react-native-paper-5.11.3.tgz",
+ "integrity": "sha512-550W/B+2LdFt0wBucQQI7GKZJ4XD0DTJz1BxalMv87l8WKKdRrdxI8t1lTEbyFb4gsTHA/sqMVXpQXITh0yplw==",
+ "dependencies": {
+ "@callstack/react-theme-provider": "^3.0.9",
+ "color": "^3.1.2",
+ "use-latest-callback": "^0.1.5"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "react-native": "*",
+ "react-native-safe-area-context": "*",
+ "react-native-vector-icons": "*"
}
},
- "node_modules/postgres-bytea": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz",
- "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==",
- "engines": {
- "node": ">=0.10.0"
+ "node_modules/react-native-paper/node_modules/color": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz",
+ "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==",
+ "dependencies": {
+ "color-convert": "^1.9.3",
+ "color-string": "^1.6.0"
}
},
- "node_modules/postgres-date": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz",
- "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==",
- "engines": {
- "node": ">=0.10.0"
+ "node_modules/react-native-safe-area-context": {
+ "version": "4.10.5",
+ "resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-4.10.5.tgz",
+ "integrity": "sha512-Wyb0Nqw2XJ6oZxW/cK8k5q7/UAhg/wbEG6UVf89rQqecDZTDA5ic//P9J6VvJRVZerzGmxWQpVuM7f+PRYUM4g==",
+ "peerDependencies": {
+ "react": "*",
+ "react-native": "*"
}
},
- "node_modules/postgres-interval": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz",
- "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==",
+ "node_modules/react-native-screens": {
+ "version": "3.31.1",
+ "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-3.31.1.tgz",
+ "integrity": "sha512-8fRW362pfZ9y4rS8KY5P3DFScrmwo/vu1RrRMMx0PNHbeC9TLq0Kw1ubD83591yz64gLNHFLTVkTJmWeWCXKtQ==",
"dependencies": {
- "xtend": "^4.0.0"
+ "react-freeze": "^1.0.0",
+ "warn-once": "^0.1.0"
},
- "engines": {
- "node": ">=0.10.0"
+ "peerDependencies": {
+ "react": "*",
+ "react-native": "*"
}
},
- "node_modules/prelude-ls": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
- "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
- "dev": true,
- "engines": {
- "node": ">= 0.8.0"
+ "node_modules/react-native-swipe-gestures": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/react-native-swipe-gestures/-/react-native-swipe-gestures-1.0.5.tgz",
+ "integrity": "sha512-Ns7Bn9H/Tyw278+5SQx9oAblDZ7JixyzeOczcBK8dipQk2pD7Djkcfnf1nB/8RErAmMLL9iXgW0QHqiII8AhKw=="
+ },
+ "node_modules/react-native-swiper": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/react-native-swiper/-/react-native-swiper-1.6.0.tgz",
+ "integrity": "sha512-OnkTTZi+9uZUgy0uz1I9oYDhCU3z36lZn+LFsk9FXPRelxb/KeABzvPs3r3SrHWy1aA67KGtSFj0xNK2QD0NJQ==",
+ "dependencies": {
+ "prop-types": "^15.5.10"
}
},
- "node_modules/prepend-http": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz",
- "integrity": "sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
+ "node_modules/react-native-toast-message": {
+ "version": "2.1.7",
+ "resolved": "https://registry.npmjs.org/react-native-toast-message/-/react-native-toast-message-2.1.7.tgz",
+ "integrity": "sha512-5zX3T5buVpg4bn9KZYVZ2VUQiLQZ1FHSM2AFQHVpgeKMYb+Gq+jt7wjhfPqhuMkJElQr7XNrnRw/rBCdD+7Q9w==",
+ "peerDependencies": {
+ "react": "*",
+ "react-native": "*"
}
},
- "node_modules/prettier": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.5.1.tgz",
- "integrity": "sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==",
- "dev": true,
- "bin": {
- "prettier": "bin-prettier.js"
+ "node_modules/react-native-vector-icons": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/react-native-vector-icons/-/react-native-vector-icons-10.0.1.tgz",
+ "integrity": "sha512-oqVyhSgK1wLm7JuN5yep+BCWb4F4C6qi2/mHGsdNqneGWn3MI9VVMX+AIkw0q9GsbY6QjhNd5sUanjRyDJfuUg==",
+ "dependencies": {
+ "prop-types": "^15.7.2",
+ "yargs": "^16.1.1"
},
- "engines": {
- "node": ">=10.13.0"
+ "bin": {
+ "fa-upgrade.sh": "bin/fa-upgrade.sh",
+ "fa5-upgrade": "bin/fa5-upgrade.sh",
+ "fa6-upgrade": "bin/fa6-upgrade.sh",
+ "generate-icon": "bin/generate-icon.js"
}
},
- "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,
+ "node_modules/react-native-vector-icons/node_modules/cliui": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
+ "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
"dependencies": {
- "fast-diff": "^1.1.2"
- },
- "engines": {
- "node": ">=6.0.0"
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^7.0.0"
}
},
- "node_modules/pretty-format": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz",
- "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==",
- "dev": true,
+ "node_modules/react-native-vector-icons/node_modules/yargs": {
+ "version": "16.2.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
+ "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
"dependencies": {
- "@jest/schemas": "^29.6.3",
- "ansi-styles": "^5.0.0",
- "react-is": "^18.0.0"
+ "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": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": ">=10"
}
},
- "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==",
- "dev": true,
+ "node_modules/react-native-vector-icons/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==",
"engines": {
"node": ">=10"
+ }
+ },
+ "node_modules/react-native-web": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/react-native-web/-/react-native-web-0.19.12.tgz",
+ "integrity": "sha512-o2T0oztoVDQjztt4YksO9S1XRjoH/AqcSvifgWLrPJgGVbMWsfhILgl6lfUdEamVZzZSVV/2gqDVMAk/qq7mZw==",
+ "dependencies": {
+ "@babel/runtime": "^7.18.6",
+ "@react-native/normalize-colors": "^0.74.1",
+ "fbjs": "^3.0.4",
+ "inline-style-prefixer": "^6.0.1",
+ "memoize-one": "^6.0.0",
+ "nullthrows": "^1.1.1",
+ "postcss-value-parser": "^4.2.0",
+ "styleq": "^0.1.3"
},
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ "peerDependencies": {
+ "react": "^18.0.0",
+ "react-dom": "^18.0.0"
}
},
- "node_modules/process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
+ "node_modules/react-native-web/node_modules/memoize-one": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz",
+ "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw=="
},
- "node_modules/progress": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
- "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
- "dev": true,
+ "node_modules/react-native/node_modules/@jest/types": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz",
+ "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==",
+ "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": ">=0.4.0"
+ "node": ">= 10.14.2"
}
},
- "node_modules/promise-breaker": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/promise-breaker/-/promise-breaker-5.0.0.tgz",
- "integrity": "sha512-mgsWQuG4kJ1dtO6e/QlNDLFtMkMzzecsC69aI5hlLEjGHFNpHrvGhFi4LiK5jg2SMQj74/diH+wZliL9LpGsyA=="
+ "node_modules/react-native/node_modules/@react-native/normalize-colors": {
+ "version": "0.74.87",
+ "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.74.87.tgz",
+ "integrity": "sha512-Xh7Nyk/MPefkb0Itl5Z+3oOobeG9lfLb7ZOY2DKpFnoCE1TzBmib9vMNdFaLdSxLIP+Ec6icgKtdzYg8QUPYzA=="
},
- "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,
+ "node_modules/react-native/node_modules/@types/yargs": {
+ "version": "15.0.17",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.17.tgz",
+ "integrity": "sha512-cj53I8GUcWJIgWVTSVe2L7NJAB5XWGdsoMosVvUgv1jEnMbAcsbaCzt1coUcyi8Sda5PgTWAooG8jNyDTD+CWA==",
"dependencies": {
- "kleur": "^3.0.3",
- "sisteransi": "^1.0.5"
- },
- "engines": {
- "node": ">= 6"
+ "@types/yargs-parser": "*"
}
},
- "node_modules/properties-reader": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/properties-reader/-/properties-reader-2.3.0.tgz",
- "integrity": "sha512-z597WicA7nDZxK12kZqHr2TcvwNU1GCfA5UwfDY/HDp3hXPoPlb5rlEx9bwGTiJnc0OqbBTkU975jDToth8Gxw==",
+ "node_modules/react-native/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dependencies": {
- "mkdirp": "^1.0.4"
+ "color-convert": "^2.0.1"
},
"engines": {
- "node": ">=14"
+ "node": ">=8"
},
"funding": {
- "type": "github",
- "url": "https://github.com/steveukx/properties?sponsor=1"
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/properties-reader/node_modules/mkdirp": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
- "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
- "bin": {
- "mkdirp": "bin/cmd.js"
+ "node_modules/react-native/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": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
},
"engines": {
"node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/proto-list": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
- "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==",
- "dev": true
- },
- "node_modules/protobufjs": {
- "version": "7.2.5",
- "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.5.tgz",
- "integrity": "sha512-gGXRSXvxQ7UiPgfw8gevrfRWcTlSbOFg+p/N+JVJEK5VhueL2miT6qTymqAmjr1Q5WbOCyJbyrk6JfWKwlFn6A==",
- "hasInstallScript": true,
+ "node_modules/react-native/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dependencies": {
- "@protobufjs/aspromise": "^1.1.2",
- "@protobufjs/base64": "^1.1.2",
- "@protobufjs/codegen": "^2.0.4",
- "@protobufjs/eventemitter": "^1.1.0",
- "@protobufjs/fetch": "^1.1.0",
- "@protobufjs/float": "^1.0.2",
- "@protobufjs/inquire": "^1.1.0",
- "@protobufjs/path": "^1.1.2",
- "@protobufjs/pool": "^1.1.0",
- "@protobufjs/utf8": "^1.1.0",
- "@types/node": ">=13.7.0",
- "long": "^5.0.0"
+ "color-name": "~1.1.4"
},
"engines": {
- "node": ">=12.0.0"
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/react-native/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "node_modules/react-native/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/protobufjs/node_modules/long": {
- "version": "5.2.3",
- "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz",
- "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q=="
- },
- "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==",
+ "node_modules/react-native/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==",
"dependencies": {
- "forwarded": "0.2.0",
- "ipaddr.js": "1.9.1"
+ "@jest/types": "^26.6.2",
+ "ansi-regex": "^5.0.0",
+ "ansi-styles": "^4.0.0",
+ "react-is": "^17.0.1"
},
"engines": {
- "node": ">= 0.10"
+ "node": ">= 10"
}
},
- "node_modules/pump": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
- "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
- "dev": true,
+ "node_modules/react-native/node_modules/promise": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz",
+ "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==",
"dependencies": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
+ "asap": "~2.0.6"
}
},
- "node_modules/punycode": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
- "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
+ "node_modules/react-native/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/pure-rand": {
- "version": "6.0.4",
- "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz",
- "integrity": "sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==",
- "dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://github.com/sponsors/dubzzz"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/fast-check"
- }
- ]
+ "node_modules/react-native/node_modules/regenerator-runtime": {
+ "version": "0.13.11",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
+ "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="
},
- "node_modules/qs": {
- "version": "6.10.3",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz",
- "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==",
+ "node_modules/react-native/node_modules/scheduler": {
+ "version": "0.24.0-canary-efb381bbf-20230505",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.24.0-canary-efb381bbf-20230505.tgz",
+ "integrity": "sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA==",
"dependencies": {
- "side-channel": "^1.0.4"
+ "loose-envify": "^1.1.0"
+ }
+ },
+ "node_modules/react-native/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": ">=0.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "node": ">=8"
}
},
- "node_modules/querystringify": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
- "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ=="
- },
- "node_modules/queue-microtask": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
- "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
- "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/randombytes": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
- "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
- "dev": true,
+ "node_modules/react-native/node_modules/ws": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz",
+ "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==",
"dependencies": {
- "safe-buffer": "^5.1.0"
+ "async-limiter": "~1.0.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/react-refresh": {
+ "version": "0.14.2",
+ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz",
+ "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==",
"engines": {
- "node": ">= 0.6"
+ "node": ">=0.10.0"
}
},
- "node_modules/raw-body": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
- "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
+ "node_modules/react-shallow-renderer": {
+ "version": "16.15.0",
+ "resolved": "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz",
+ "integrity": "sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==",
"dependencies": {
- "bytes": "3.1.2",
- "http-errors": "2.0.0",
- "iconv-lite": "0.4.24",
- "unpipe": "1.0.0"
+ "object-assign": "^4.1.1",
+ "react-is": "^16.12.0 || ^17.0.0 || ^18.0.0"
},
- "engines": {
- "node": ">= 0.8"
+ "peerDependencies": {
+ "react": "^16.0.0 || ^17.0.0 || ^18.0.0"
}
},
- "node_modules/react-is": {
+ "node_modules/react-test-renderer": {
"version": "18.2.0",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
- "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==",
- "dev": true
- },
- "node_modules/read-pkg": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
- "integrity": "sha512-eFIBOPW7FGjzBuk3hdXEuNSiTZS/xEMlH49HxMyzb0hyPfu4EhVjT2DH32K1hSSmVq4sebAWnZuuY5auISUTGA==",
- "dev": true,
- "dependencies": {
- "load-json-file": "^2.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/read-pkg/node_modules/path-type": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
- "integrity": "sha512-dUnb5dXUf+kzhC/W/F4e5/SkluXIFf5VUHolW1Eg1irn1hGWjPGdsRcvYJ1nD6lhk8Ir7VM0bHJKsYTx8Jx9OQ==",
- "dev": true,
+ "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-18.2.0.tgz",
+ "integrity": "sha512-JWD+aQ0lh2gvh4NM3bBM42Kx+XybOxCpgYK7F8ugAlpaTSnWsX+39Z4XkOykGZAHrjwwTZT3x3KxswVWxHPUqA==",
"dependencies": {
- "pify": "^2.0.0"
+ "react-is": "^18.2.0",
+ "react-shallow-renderer": "^16.15.0",
+ "scheduler": "^0.23.0"
},
- "engines": {
- "node": ">=4"
+ "peerDependencies": {
+ "react": "^18.2.0"
}
},
- "node_modules/read-pkg/node_modules/pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
+ "node_modules/react-test-renderer/node_modules/react-is": {
+ "version": "18.2.0",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
+ "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w=="
},
"node_modules/readable-stream": {
- "version": "1.1.14",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
- "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==",
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
"dependencies": {
"core-util-is": "~1.0.0",
- "inherits": "~2.0.1",
- "isarray": "0.0.1",
- "string_decoder": "~0.10.x"
+ "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,
+ "node_modules/readable-stream/node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
+ },
+ "node_modules/readline": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz",
+ "integrity": "sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg=="
+ },
+ "node_modules/recast": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/recast/-/recast-0.21.5.tgz",
+ "integrity": "sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==",
"dependencies": {
- "picomatch": "^2.2.1"
+ "ast-types": "0.15.2",
+ "esprima": "~4.0.0",
+ "source-map": "~0.6.1",
+ "tslib": "^2.0.1"
},
"engines": {
- "node": ">=8.10.0"
+ "node": ">= 4"
}
},
- "node_modules/rechoir": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
- "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==",
- "dev": true,
+ "node_modules/recyclerlistview": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/recyclerlistview/-/recyclerlistview-4.2.0.tgz",
+ "integrity": "sha512-uuBCi0c+ggqHKwrzPX4Z/mJOzsBbjZEAwGGmlwpD/sD7raXixdAbdJ6BTcAmuWG50Cg4ru9p12M94Njwhr/27A==",
+ "dependencies": {
+ "lodash.debounce": "4.0.8",
+ "prop-types": "15.8.1",
+ "ts-object-utils": "0.0.5"
+ },
+ "peerDependencies": {
+ "react": ">= 15.2.1",
+ "react-native": ">= 0.30.0"
+ }
+ },
+ "node_modules/redent": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz",
+ "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==",
"dependencies": {
- "resolve": "^1.1.6"
+ "indent-string": "^4.0.0",
+ "strip-indent": "^3.0.0"
},
"engines": {
- "node": ">= 0.10"
+ "node": ">=8"
}
},
- "node_modules/redis": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/redis/-/redis-3.1.2.tgz",
- "integrity": "sha512-grn5KoZLr/qrRQVwoSkmzdbw6pwF+/rwODtrOr6vuBRiR/f3rjSTGupbF90Zpqm2oenix8Do6RV7pYEkGwlKkw==",
+ "node_modules/reflect.getprototypeof": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz",
+ "integrity": "sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==",
+ "dev": true,
"dependencies": {
- "denque": "^1.5.0",
- "redis-commands": "^1.7.0",
- "redis-errors": "^1.2.0",
- "redis-parser": "^3.0.0"
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "get-intrinsic": "^1.2.1",
+ "globalthis": "^1.0.3",
+ "which-builtin-type": "^1.1.3"
},
"engines": {
- "node": ">=10"
+ "node": ">= 0.4"
},
"funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/node-redis"
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/redis-commands": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.7.0.tgz",
- "integrity": "sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ=="
- },
- "node_modules/redis-errors": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz",
- "integrity": "sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==",
- "engines": {
- "node": ">=4"
- }
+ "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=="
},
- "node_modules/redis-parser": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz",
- "integrity": "sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==",
+ "node_modules/regenerate-unicode-properties": {
+ "version": "10.1.1",
+ "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz",
+ "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==",
"dependencies": {
- "redis-errors": "^1.0.0"
+ "regenerate": "^1.4.2"
},
"engines": {
"node": ">=4"
}
},
- "node_modules/reflect-metadata": {
- "version": "0.1.13",
- "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz",
- "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg=="
- },
"node_modules/regenerator-runtime": {
"version": "0.14.0",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz",
"integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA=="
},
+ "node_modules/regenerator-transform": {
+ "version": "0.15.2",
+ "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz",
+ "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==",
+ "peer": true,
+ "dependencies": {
+ "@babel/runtime": "^7.8.4"
+ }
+ },
+ "node_modules/regexp.prototype.flags": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz",
+ "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==",
+ "dependencies": {
+ "call-bind": "^1.0.6",
+ "define-properties": "^1.2.1",
+ "es-errors": "^1.3.0",
+ "set-function-name": "^2.0.1"
+ },
+ "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",
@@ -10381,6 +20171,46 @@
"url": "https://github.com/sponsors/mysticatea"
}
},
+ "node_modules/regexpu-core": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz",
+ "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==",
+ "dependencies": {
+ "@babel/regjsgen": "^0.8.0",
+ "regenerate": "^1.4.2",
+ "regenerate-unicode-properties": "^10.1.0",
+ "regjsparser": "^0.9.1",
+ "unicode-match-property-ecmascript": "^2.0.0",
+ "unicode-match-property-value-ecmascript": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/regjsparser": {
+ "version": "0.9.1",
+ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz",
+ "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==",
+ "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": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==",
+ "bin": {
+ "jsesc": "bin/jsesc"
+ }
+ },
+ "node_modules/remove-trailing-slash": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/remove-trailing-slash/-/remove-trailing-slash-0.1.1.tgz",
+ "integrity": "sha512-o4S4Qh6L2jpnCy83ysZDau+VORNvnFw07CKSAymkd6ICNVEPisMyzlc00KlvvicsxKck94SEwhDnMNdICzO+tA=="
+ },
"node_modules/require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
@@ -10393,12 +20223,36 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
"integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
- "dev": true,
- "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
+ "node_modules/require-main-filename": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
+ },
+ "node_modules/requireg": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/requireg/-/requireg-0.2.2.tgz",
+ "integrity": "sha512-nYzyjnFcPNGR3lx9lwPPPnuQxv6JWEZd2Ci0u9opN7N5zUEPIhY/GbL3vMGOr2UXwEg9WwSyV9X9Y/kLFgPsOg==",
+ "dependencies": {
+ "nested-error-stacks": "~2.0.1",
+ "rc": "~1.2.7",
+ "resolve": "~1.7.1"
+ },
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
+ "node_modules/requireg/node_modules/resolve": {
+ "version": "1.7.1",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz",
+ "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==",
+ "dependencies": {
+ "path-parse": "^1.0.5"
+ }
+ },
"node_modules/requires-port": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
@@ -10408,7 +20262,6 @@
"version": "1.22.8",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
"integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
- "dev": true,
"dependencies": {
"is-core-module": "^2.13.0",
"path-parse": "^1.0.7",
@@ -10425,7 +20278,6 @@
"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"
},
@@ -10433,93 +20285,165 @@
"node": ">=8"
}
},
- "node_modules/resolve-cwd/node_modules/resolve-from": {
+ "node_modules/resolve-from": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
+ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/resolve-workspace-root": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-workspace-root/-/resolve-workspace-root-2.0.0.tgz",
+ "integrity": "sha512-IsaBUZETJD5WsI11Wt8PKHwaIe45or6pwNc8yflvLJ4DWtImK9kuLoH5kUva/2Mmx/RdIyr4aONNSa2v9LTJsw=="
+ },
+ "node_modules/resolve.exports": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz",
+ "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/restore-cursor": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
+ "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==",
+ "dependencies": {
+ "onetime": "^2.0.0",
+ "signal-exit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "deprecated": "Rimraf versions prior to v4 are no longer supported",
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/run-applescript": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
- "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
+ "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz",
+ "integrity": "sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==",
"dev": true,
+ "dependencies": {
+ "execa": "^5.0.0"
+ },
"engines": {
- "node": ">=8"
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/resolve-from": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
- "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "node_modules/run-applescript/node_modules/execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
"dev": true,
+ "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": ">=4"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
}
},
- "node_modules/resolve.exports": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz",
- "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==",
+ "node_modules/run-applescript/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==",
"dev": true,
"engines": {
"node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "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/run-applescript/node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
"dev": true,
- "dependencies": {
- "onetime": "^5.1.0",
- "signal-exit": "^3.0.2"
- },
"engines": {
"node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/retry": {
- "version": "0.13.1",
- "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz",
- "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==",
+ "node_modules/run-applescript/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": ">= 4"
+ "node": ">=6"
}
},
- "node_modules/reusify": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
- "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "node_modules/run-applescript/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": {
- "iojs": ">=1.0.0",
- "node": ">=0.10.0"
+ "node": ">=8"
}
},
- "node_modules/rimraf": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "node_modules/run-applescript/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": {
- "glob": "^7.1.3"
+ "mimic-fn": "^2.1.0"
},
- "bin": {
- "rimraf": "bin.js"
+ "engines": {
+ "node": ">=6"
},
"funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/run-async": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz",
- "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==",
- "dev": true,
- "engines": {
- "node": ">=0.12.0"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/run-parallel": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
"integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
- "dev": true,
"funding": [
{
"type": "github",
@@ -10539,18 +20463,51 @@
}
},
"node_modules/rxjs": {
- "version": "7.5.7",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz",
- "integrity": "sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==",
+ "version": "7.8.1",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz",
+ "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==",
"dependencies": {
"tslib": "^2.1.0"
}
},
+ "node_modules/safe-array-concat": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz",
+ "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "get-intrinsic": "^1.2.4",
+ "has-symbols": "^1.0.3",
+ "isarray": "^2.0.5"
+ },
+ "engines": {
+ "node": ">=0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
},
+ "node_modules/safe-regex-test": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz",
+ "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==",
+ "dependencies": {
+ "call-bind": "^1.0.6",
+ "es-errors": "^1.3.0",
+ "is-regex": "^1.1.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
@@ -10561,61 +20518,49 @@
"resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz",
"integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA=="
},
- "node_modules/schema-utils": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz",
- "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==",
- "dev": true,
+ "node_modules/saxes": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz",
+ "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==",
"dependencies": {
- "@types/json-schema": "^7.0.8",
- "ajv": "^6.12.5",
- "ajv-keywords": "^3.5.2"
+ "xmlchars": "^2.2.0"
},
"engines": {
- "node": ">= 10.13.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
+ "node": ">=v12.22.7"
}
},
- "node_modules/seek-bzip": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz",
- "integrity": "sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==",
- "dev": true,
+ "node_modules/scheduler": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
+ "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
"dependencies": {
- "commander": "^2.8.1"
- },
- "bin": {
- "seek-bunzip": "bin/seek-bunzip",
- "seek-table": "bin/seek-bzip-table"
+ "loose-envify": "^1.1.0"
}
},
- "node_modules/seek-bzip/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/semver": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "node_modules/selfsigned": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz",
+ "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==",
"dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
+ "@types/node-forge": "^1.3.0",
+ "node-forge": "^1"
},
"engines": {
"node": ">=10"
}
},
+ "node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
"node_modules/send": {
- "version": "0.19.0",
- "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz",
- "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==",
+ "version": "0.18.0",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
+ "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
"dependencies": {
"debug": "2.6.9",
"depd": "2.0.0",
@@ -10648,12 +20593,15 @@
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
},
- "node_modules/send/node_modules/encodeurl": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
- "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+ "node_modules/send/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": ">= 0.8"
+ "node": ">=4"
}
},
"node_modules/send/node_modules/ms": {
@@ -10661,24 +20609,31 @@
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
},
- "node_modules/serialize-javascript": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz",
- "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==",
- "dev": true,
- "dependencies": {
- "randombytes": "^2.1.0"
+ "node_modules/send/node_modules/statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/serialize-error": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz",
+ "integrity": "sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==",
+ "engines": {
+ "node": ">=0.10.0"
}
},
"node_modules/serve-static": {
- "version": "1.16.2",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz",
- "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==",
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
+ "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
"dependencies": {
- "encodeurl": "~2.0.0",
+ "encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"parseurl": "~1.3.3",
- "send": "0.19.0"
+ "send": "0.18.0"
},
"engines": {
"node": ">= 0.8.0"
@@ -10689,6 +20644,11 @@
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
"integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
},
+ "node_modules/set-cookie-parser": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.0.tgz",
+ "integrity": "sha512-lXLOiqpkUumhRdFF3k1osNXCy9akgx/dyPZ5p8qAg9seJzXr5ZrlqZuWIMuY6ejOsVLE6flJ5/h3lsn57fQ/PQ=="
+ },
"node_modules/set-function-length": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
@@ -10705,28 +20665,49 @@
"node": ">= 0.4"
}
},
+ "node_modules/set-function-name": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz",
+ "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==",
+ "dependencies": {
+ "define-data-property": "^1.0.1",
+ "functions-have-names": "^1.2.3",
+ "has-property-descriptors": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/setimmediate": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
+ "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA=="
+ },
"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==",
+ "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==",
"dependencies": {
- "inherits": "^2.0.1",
- "safe-buffer": "^5.0.1"
+ "kind-of": "^6.0.2"
},
- "bin": {
- "sha.js": "bin.js"
+ "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=="
+ },
"node_modules/shebang-command": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "dev": true,
"dependencies": {
"shebang-regex": "^3.0.0"
},
@@ -10738,219 +20719,226 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
- "dev": true,
"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,
+ "node_modules/shell-quote": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz",
+ "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
+ "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+ "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/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/simple-concat": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
+ "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==",
+ "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/simple-get": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz",
+ "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==",
+ "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": {
+ "decompress-response": "^6.0.0",
+ "once": "^1.3.1",
+ "simple-concat": "^1.0.0"
+ }
+ },
+ "node_modules/simple-plist": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/simple-plist/-/simple-plist-1.3.1.tgz",
+ "integrity": "sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw==",
"dependencies": {
- "glob": "^7.0.0",
- "interpret": "^1.0.0",
- "rechoir": "^0.6.2"
- },
- "bin": {
- "shjs": "bin/shjs"
- },
- "engines": {
- "node": ">=4"
+ "bplist-creator": "0.1.0",
+ "bplist-parser": "0.3.1",
+ "plist": "^3.0.5"
}
},
- "node_modules/side-channel": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz",
- "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
+ "node_modules/simple-plist/node_modules/bplist-parser": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.1.tgz",
+ "integrity": "sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==",
"dependencies": {
- "call-bind": "^1.0.7",
- "es-errors": "^1.3.0",
- "get-intrinsic": "^1.2.4",
- "object-inspect": "^1.13.1"
+ "big-integer": "1.6.x"
},
"engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "node": ">= 5.10.0"
}
},
- "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/simple-swizzle": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
+ "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==",
+ "dependencies": {
+ "is-arrayish": "^0.3.1"
+ }
+ },
+ "node_modules/simple-swizzle/node_modules/is-arrayish": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
+ "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ=="
},
"node_modules/sisteransi": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
- "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
- "dev": true
+ "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg=="
},
"node_modules/slash": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
"integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
- "dev": true,
"engines": {
"node": ">=8"
}
},
+ "node_modules/slice-ansi": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
+ "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
+ "dependencies": {
+ "ansi-styles": "^3.2.0",
+ "astral-regex": "^1.0.0",
+ "is-fullwidth-code-point": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/slugify": {
"version": "1.6.6",
"resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.6.tgz",
"integrity": "sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==",
- "dev": true,
"engines": {
"node": ">=8.0.0"
}
},
- "node_modules/sonarqube-scanner": {
- "version": "2.8.1",
- "resolved": "https://registry.npmjs.org/sonarqube-scanner/-/sonarqube-scanner-2.8.1.tgz",
- "integrity": "sha512-TPeHnkegi0lbb46Jk6TBqiHz09kco2AUZQLOvLzs0/9pEknQQFwfoaYqSfW7GSOYAn+BBJaD271golJaqVGHyw==",
- "dev": true,
- "dependencies": {
- "download": "^6.2.5",
- "extend": "3.0.2",
- "fancy-log": "^1.3.3",
- "lodash.get": "^4.4.2",
- "lodash.uniq": "^4.5.0",
- "mkdirp": "^1.0.3",
- "progress": "^2.0.3",
- "read-pkg": "2.0.0",
- "slugify": "^1.4.0"
- },
- "bin": {
- "sonar-scanner": "dist/bin/sonar-scanner"
- },
+ "node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"engines": {
- "node": ">= 0.10"
+ "node": ">=0.10.0"
}
},
- "node_modules/sonarqube-scanner/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/source-map-js": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
+ "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==",
"engines": {
- "node": ">=10"
+ "node": ">=0.10.0"
}
},
- "node_modules/sort-keys": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz",
- "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==",
- "dev": true,
+ "node_modules/source-map-support": {
+ "version": "0.5.13",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz",
+ "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==",
"dependencies": {
- "is-plain-obj": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
}
},
- "node_modules/sort-keys-length": {
+ "node_modules/split": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz",
- "integrity": "sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==",
- "dev": true,
+ "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz",
+ "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==",
"dependencies": {
- "sort-keys": "^1.0.0"
+ "through": "2"
},
"engines": {
- "node": ">=0.10.0"
+ "node": "*"
}
},
- "node_modules/source-map": {
- "version": "0.7.4",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
- "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
- "dev": true,
+ "node_modules/split-on-first": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz",
+ "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==",
"engines": {
- "node": ">= 8"
- }
- },
- "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": ">=6"
}
},
- "node_modules/source-map-support/node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
+ "node_modules/sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="
},
- "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==",
- "deprecated": "Please use @jridgewell/sourcemap-codec instead",
- "dev": true
+ "node_modules/sql-escape-string": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/sql-escape-string/-/sql-escape-string-1.1.0.tgz",
+ "integrity": "sha512-/kqO4pLZSLfV0KsBM2xkVh2S3GbjJJone37d7gYwLyP0c+REh3vnmkhQ7VwNrX76igC0OhJWpTg0ukkdef9vvA=="
},
- "node_modules/spdx-correct": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz",
- "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==",
- "dev": true,
+ "node_modules/ssri": {
+ "version": "10.0.6",
+ "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz",
+ "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==",
"dependencies": {
- "spdx-expression-parse": "^3.0.0",
- "spdx-license-ids": "^3.0.0"
+ "minipass": "^7.0.3"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
- "node_modules/spdx-exceptions": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
- "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
- "dev": true
- },
- "node_modules/spdx-expression-parse": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
- "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
- "dev": true,
+ "node_modules/stack-generator": {
+ "version": "2.0.10",
+ "resolved": "https://registry.npmjs.org/stack-generator/-/stack-generator-2.0.10.tgz",
+ "integrity": "sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==",
"dependencies": {
- "spdx-exceptions": "^2.1.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "node_modules/spdx-license-ids": {
- "version": "3.0.16",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz",
- "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==",
- "dev": true
- },
- "node_modules/split2": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz",
- "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==",
- "engines": {
- "node": ">= 10.x"
+ "stackframe": "^1.3.4"
}
},
- "node_modules/sprintf-js": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
- "dev": true
- },
"node_modules/stack-utils": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz",
"integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==",
- "dev": true,
"dependencies": {
"escape-string-regexp": "^2.0.0"
},
@@ -10962,37 +20950,102 @@
"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/stackframe": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz",
+ "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw=="
+ },
+ "node_modules/stacktrace-gps": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/stacktrace-gps/-/stacktrace-gps-3.1.2.tgz",
+ "integrity": "sha512-GcUgbO4Jsqqg6RxfyTHFiPxdPqF+3LFmQhm7MgCuYQOYuWyqxo5pwRPz5d/u6/WYJdEnWfK4r+jGbyD8TSggXQ==",
+ "dependencies": {
+ "source-map": "0.5.6",
+ "stackframe": "^1.3.4"
+ }
+ },
+ "node_modules/stacktrace-gps/node_modules/source-map": {
+ "version": "0.5.6",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz",
+ "integrity": "sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/stacktrace-js": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/stacktrace-js/-/stacktrace-js-2.0.2.tgz",
+ "integrity": "sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg==",
+ "dependencies": {
+ "error-stack-parser": "^2.0.6",
+ "stack-generator": "^2.0.5",
+ "stacktrace-gps": "^3.0.4"
+ }
+ },
+ "node_modules/stacktrace-parser": {
+ "version": "0.1.10",
+ "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz",
+ "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==",
+ "dependencies": {
+ "type-fest": "^0.7.1"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/stacktrace-parser/node_modules/type-fest": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz",
+ "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==",
"engines": {
"node": ">=8"
}
},
"node_modules/statuses": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
- "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+ "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
"engines": {
- "node": ">= 0.8"
+ "node": ">= 0.6"
}
},
- "node_modules/streamsearch": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz",
- "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==",
+ "node_modules/stream-buffers": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz",
+ "integrity": "sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==",
"engines": {
- "node": ">=10.0.0"
+ "node": ">= 0.10.0"
+ }
+ },
+ "node_modules/stream-slice": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/stream-slice/-/stream-slice-0.1.2.tgz",
+ "integrity": "sha512-QzQxpoacatkreL6jsxnVb7X5R/pGw9OUv2qWTYWnmLpg4NdN31snPy/f3TdQE1ZUXaThRvj1Zw4/OGg0ZkaLMA=="
+ },
+ "node_modules/strict-uri-encode": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz",
+ "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==",
+ "engines": {
+ "node": ">=4"
}
},
"node_modules/string_decoder": {
- "version": "0.10.31",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
- "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ=="
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
},
"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"
@@ -11014,6 +21067,102 @@
"node": ">=8"
}
},
+ "node_modules/string-width-cjs": {
+ "name": "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==",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/string-width-cjs/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==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/string-width/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==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/string.prototype.matchall": {
+ "version": "4.0.10",
+ "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz",
+ "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "get-intrinsic": "^1.2.1",
+ "has-symbols": "^1.0.3",
+ "internal-slot": "^1.0.5",
+ "regexp.prototype.flags": "^1.5.0",
+ "set-function-name": "^2.0.0",
+ "side-channel": "^1.0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trim": {
+ "version": "1.2.9",
+ "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz",
+ "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.0",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trimend": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz",
+ "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trimstart": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz",
+ "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/strip-ansi": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
@@ -11025,38 +21174,57 @@
"node": ">=8"
}
},
+ "node_modules/strip-ansi-cjs": {
+ "name": "strip-ansi",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/strip-bom": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz",
"integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
- "dev": true,
"engines": {
"node": ">=8"
}
},
- "node_modules/strip-dirs": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz",
- "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==",
- "dev": true,
- "dependencies": {
- "is-natural-number": "^4.0.1"
- }
- },
+ "node_modules/strip-eof": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+ "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==",
+ "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",
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
+ "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==",
+ "dependencies": {
+ "min-indent": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"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"
},
@@ -11064,165 +21232,87 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/strip-outer": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz",
- "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==",
- "dev": true,
- "dependencies": {
- "escape-string-regexp": "^1.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/strip-outer/node_modules/escape-string-regexp": {
+ "node_modules/strnum": {
"version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true,
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/subscriptions-transport-ws": {
- "version": "0.11.0",
- "resolved": "https://registry.npmjs.org/subscriptions-transport-ws/-/subscriptions-transport-ws-0.11.0.tgz",
- "integrity": "sha512-8D4C6DIH5tGiAIpp5I0wD/xRlNiZAPGHygzCe7VzyzUoxHtawzjNAY9SUTXU05/EY2NMY9/9GF0ycizkXr1CWQ==",
- "deprecated": "The `subscriptions-transport-ws` package is no longer maintained. We recommend you use `graphql-ws` instead. For help migrating Apollo software to `graphql-ws`, see https://www.apollographql.com/docs/apollo-server/data/subscriptions/#switching-from-subscriptions-transport-ws For general help using `graphql-ws`, see https://github.com/enisdenjo/graphql-ws/blob/master/README.md",
- "dev": true,
- "dependencies": {
- "backo2": "^1.0.2",
- "eventemitter3": "^3.1.0",
- "iterall": "^1.2.1",
- "symbol-observable": "^1.0.4",
- "ws": "^5.2.0 || ^6.0.0 || ^7.0.0"
- },
- "peerDependencies": {
- "graphql": "^15.7.2 || ^16.0.0"
- }
+ "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz",
+ "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA=="
},
- "node_modules/subscriptions-transport-ws/node_modules/symbol-observable": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz",
- "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
+ "node_modules/structured-headers": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/structured-headers/-/structured-headers-0.4.1.tgz",
+ "integrity": "sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg=="
},
- "node_modules/subscriptions-transport-ws/node_modules/ws": {
- "version": "7.5.10",
- "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz",
- "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==",
- "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/styleq": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/styleq/-/styleq-0.1.3.tgz",
+ "integrity": "sha512-3ZUifmCDCQanjeej1f6kyl/BeP/Vae5EYkQ9iJfUm/QwZvlgnZzyflqAsAWYURdtea8Vkvswu2GrC57h3qffcA=="
},
- "node_modules/superagent": {
- "version": "7.1.5",
- "resolved": "https://registry.npmjs.org/superagent/-/superagent-7.1.5.tgz",
- "integrity": "sha512-HQYyGuDRFGmZ6GNC4hq2f37KnsY9Lr0/R1marNZTgMweVDQLTLJJ6DGQ9Tj/xVVs5HEnop9EMmTbywb5P30aqw==",
- "dev": true,
+ "node_modules/sucrase": {
+ "version": "3.34.0",
+ "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz",
+ "integrity": "sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==",
"dependencies": {
- "component-emitter": "^1.3.0",
- "cookiejar": "^2.1.3",
- "debug": "^4.3.4",
- "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.3",
- "readable-stream": "^3.6.0",
- "semver": "^7.3.7"
+ "@jridgewell/gen-mapping": "^0.3.2",
+ "commander": "^4.0.0",
+ "glob": "7.1.6",
+ "lines-and-columns": "^1.1.6",
+ "mz": "^2.7.0",
+ "pirates": "^4.0.1",
+ "ts-interface-checker": "^0.1.9"
},
- "engines": {
- "node": ">=6.4.0 <13 || >=14"
- }
- },
- "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==",
- "dev": true,
"bin": {
- "mime": "cli.js"
+ "sucrase": "bin/sucrase",
+ "sucrase-node": "bin/sucrase-node"
},
"engines": {
- "node": ">=4.0.0"
+ "node": ">=8"
}
},
- "node_modules/superagent/node_modules/readable-stream": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
- "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
- "dev": true,
- "dependencies": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- },
+ "node_modules/sucrase/node_modules/commander": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
+ "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
"engines": {
"node": ">= 6"
}
},
- "node_modules/superagent/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,
- "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/sudo-prompt": {
+ "version": "8.2.5",
+ "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-8.2.5.tgz",
+ "integrity": "sha512-rlBo3HU/1zAJUrkY6jNxDOC9eVYliG6nS4JA8u8KAshITd07tafMc/Br7xQwCSseXwJ2iCcHCE8SNWX3q8Z+kw=="
},
- "node_modules/superagent/node_modules/string_decoder": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
- "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
- "dev": true,
+ "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": {
- "safe-buffer": "~5.2.0"
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
}
},
- "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,
+ "node_modules/supports-hyperlinks": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz",
+ "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==",
"dependencies": {
- "methods": "^1.1.2",
- "superagent": "^7.1.0"
+ "has-flag": "^4.0.0",
+ "supports-color": "^7.0.0"
},
"engines": {
- "node": ">=6.0.0"
+ "node": ">=8"
}
},
- "node_modules/supports-color": {
+ "node_modules/supports-hyperlinks/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/supports-hyperlinks/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==",
@@ -11237,7 +21327,6 @@
"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==",
- "dev": true,
"engines": {
"node": ">= 0.4"
},
@@ -11245,22 +21334,25 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/symbol-observable": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz",
- "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10"
- }
+ "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=="
},
- "node_modules/tapable": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
- "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
+ "node_modules/synckit": {
+ "version": "0.8.5",
+ "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz",
+ "integrity": "sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==",
"dev": true,
+ "dependencies": {
+ "@pkgr/utils": "^2.3.1",
+ "tslib": "^2.5.0"
+ },
"engines": {
- "node": ">=6"
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/unts"
}
},
"node_modules/tar": {
@@ -11279,62 +21371,82 @@
"node": ">=10"
}
},
+ "node_modules/tar-fs": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz",
+ "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==",
+ "dev": true,
+ "dependencies": {
+ "chownr": "^1.1.1",
+ "mkdirp-classic": "^0.5.2",
+ "pump": "^3.0.0",
+ "tar-stream": "^2.1.4"
+ }
+ },
+ "node_modules/tar-fs/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/tar-stream": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz",
- "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
+ "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
"dev": true,
"dependencies": {
- "bl": "^1.0.0",
- "buffer-alloc": "^1.2.0",
- "end-of-stream": "^1.0.0",
+ "bl": "^4.0.3",
+ "end-of-stream": "^1.4.1",
"fs-constants": "^1.0.0",
- "readable-stream": "^2.3.0",
- "to-buffer": "^1.1.1",
- "xtend": "^4.0.0"
+ "inherits": "^2.0.3",
+ "readable-stream": "^3.1.1"
},
"engines": {
- "node": ">= 0.8.0"
+ "node": ">=6"
}
},
- "node_modules/tar-stream/node_modules/bl": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz",
- "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==",
+ "node_modules/tar-stream/node_modules/readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
"dev": true,
"dependencies": {
- "readable-stream": "^2.3.5",
- "safe-buffer": "^5.1.1"
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
}
},
- "node_modules/tar-stream/node_modules/isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
- "dev": true
- },
- "node_modules/tar-stream/node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dev": true,
+ "node_modules/tar/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==",
"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"
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
}
},
- "node_modules/tar-stream/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
+ "node_modules/tar/node_modules/fs-minipass/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
"dependencies": {
- "safe-buffer": "~5.1.0"
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/tar/node_modules/minipass": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
+ "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
+ "engines": {
+ "node": ">=8"
}
},
"node_modules/tar/node_modules/mkdirp": {
@@ -11345,14 +21457,103 @@
"mkdirp": "bin/cmd.js"
},
"engines": {
- "node": ">=10"
+ "node": ">=10"
+ }
+ },
+ "node_modules/tar/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ },
+ "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==",
+ "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==",
+ "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==",
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ }
+ },
+ "node_modules/tempy": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.7.1.tgz",
+ "integrity": "sha512-vXPxwOyaNVi9nyczO16mxmHGpl6ASC5/TVhRRHpqeYHvKQm58EaWNvZXxAhR0lYYnBOQFjXjhzeLsaXdjxLjRg==",
+ "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/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "engines": {
+ "node": ">=8"
+ },
+ "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==",
+ "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==",
+ "dependencies": {
+ "ansi-escapes": "^4.2.1",
+ "supports-hyperlinks": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/terser": {
- "version": "5.22.0",
- "resolved": "https://registry.npmjs.org/terser/-/terser-5.22.0.tgz",
- "integrity": "sha512-hHZVLgRA2z4NWcN6aS5rQDc+7Dcy58HOf2zbYwmFcQ+ua3h6eEFf5lIDKTzbWwlazPyOZsFQO8V80/IjVNExEw==",
- "dev": true,
+ "version": "5.31.6",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.6.tgz",
+ "integrity": "sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg==",
"dependencies": {
"@jridgewell/source-map": "^0.3.3",
"acorn": "^8.8.2",
@@ -11366,51 +21567,24 @@
"node": ">=10"
}
},
- "node_modules/terser-webpack-plugin": {
- "version": "5.3.9",
- "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz",
- "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==",
- "dev": true,
- "dependencies": {
- "@jridgewell/trace-mapping": "^0.3.17",
- "jest-worker": "^27.4.5",
- "schema-utils": "^3.1.1",
- "serialize-javascript": "^6.0.1",
- "terser": "^5.16.8"
- },
- "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/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
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
+ },
+ "node_modules/terser/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==",
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
},
"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",
@@ -11423,8 +21597,7 @@
"node_modules/text-table": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
- "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
- "dev": true
+ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw=="
},
"node_modules/thenify": {
"version": "3.3.1",
@@ -11445,35 +21618,41 @@
"node": ">=0.8"
}
},
+ "node_modules/throat": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz",
+ "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA=="
+ },
"node_modules/through": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
- "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
- "dev": true
+ "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg=="
},
- "node_modules/time-stamp": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz",
- "integrity": "sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
+ "node_modules/through2": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
+ "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
+ "dependencies": {
+ "readable-stream": "~2.3.6",
+ "xtend": "~4.0.1"
}
},
- "node_modules/timed-out": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz",
- "integrity": "sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==",
+ "node_modules/titleize": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz",
+ "integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==",
"dev": true,
"engines": {
- "node": ">=0.10.0"
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/tmp": {
"version": "0.0.33",
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
"integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
- "dev": true,
"dependencies": {
"os-tmpdir": "~1.0.2"
},
@@ -11484,29 +21663,12 @@
"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-buffer": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz",
- "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==",
- "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": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
+ "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw=="
},
"node_modules/to-regex-range": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dev": true,
"dependencies": {
"is-number": "^7.0.0"
},
@@ -11522,50 +21684,92 @@
"node": ">=0.6"
}
},
- "node_modules/tree-kill": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz",
- "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==",
- "dev": true,
- "bin": {
- "tree-kill": "cli.js"
+ "node_modules/tough-cookie": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz",
+ "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==",
+ "dependencies": {
+ "psl": "^1.1.33",
+ "punycode": "^2.1.1",
+ "universalify": "^0.2.0",
+ "url-parse": "^1.5.3"
+ },
+ "engines": {
+ "node": ">=6"
}
},
- "node_modules/trim-repeated": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz",
- "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==",
- "dev": true,
+ "node_modules/tough-cookie/node_modules/universalify": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz",
+ "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==",
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
+ "node_modules/tr46": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz",
+ "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==",
"dependencies": {
- "escape-string-regexp": "^1.0.2"
+ "punycode": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/traverse": {
+ "version": "0.6.10",
+ "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.10.tgz",
+ "integrity": "sha512-hN4uFRxbK+PX56DxYiGHsTn2dME3TVr9vbNqlQGcGcPhJAn+tdP126iA+TArMpI4YSgnTkMWyoLl5bf81Hi5TA==",
+ "dependencies": {
+ "gopd": "^1.0.1",
+ "typedarray.prototype.slice": "^1.0.3",
+ "which-typed-array": "^1.1.15"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/trim-right": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
+ "integrity": "sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw==",
"engines": {
"node": ">=0.10.0"
}
},
- "node_modules/trim-repeated/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": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "node_modules/ts-api-utils": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz",
+ "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==",
"dev": true,
"engines": {
- "node": ">=0.8.0"
+ "node": ">=16.13.0"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.2.0"
}
},
"node_modules/ts-essentials": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-7.0.3.tgz",
"integrity": "sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==",
- "dev": true,
"peerDependencies": {
"typescript": ">=3.7.0"
}
},
+ "node_modules/ts-interface-checker": {
+ "version": "0.1.13",
+ "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
+ "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA=="
+ },
"node_modules/ts-jest": {
"version": "29.1.1",
"resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz",
"integrity": "sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==",
- "dev": true,
"dependencies": {
"bs-logger": "0.x",
"fast-json-stable-stringify": "2.x",
@@ -11604,157 +21808,51 @@
}
}
},
- "node_modules/ts-loader": {
- "version": "9.2.7",
- "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.2.7.tgz",
- "integrity": "sha512-Fxh44mKli9QezgbdCXkEJWxnedQ0ead7DXTH+lfXEPedu+Y9EtMJ2aQ9G3Dj1j7Q612E8931rww8NDZha4Tibg==",
- "dev": true,
- "dependencies": {
- "chalk": "^4.1.0",
- "enhanced-resolve": "^5.0.0",
- "micromatch": "^4.0.0",
- "semver": "^7.3.4"
- },
- "engines": {
- "node": ">=12.0.0"
- },
- "peerDependencies": {
- "typescript": "*",
- "webpack": "^5.0.0"
- }
- },
- "node_modules/ts-loader/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,
+ "node_modules/ts-jest/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
+ "yallist": "^4.0.0"
},
"engines": {
"node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/ts-node": {
- "version": "10.9.2",
- "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz",
- "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==",
- "dev": true,
- "license": "MIT",
+ "node_modules/ts-jest/node_modules/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
"dependencies": {
- "@cspotcode/source-map-support": "^0.8.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.1",
- "yn": "3.1.1"
+ "lru-cache": "^6.0.0"
},
"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"
+ "semver": "bin/semver.js"
},
- "peerDependenciesMeta": {
- "@swc/core": {
- "optional": true
- },
- "@swc/wasm": {
- "optional": true
- }
- }
- },
- "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==",
- "dev": true,
"engines": {
- "node": ">=0.4.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": ">=10"
}
},
- "node_modules/tsconfig-paths-webpack-plugin": {
+ "node_modules/ts-jest/node_modules/yallist": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.0.0.tgz",
- "integrity": "sha512-fw/7265mIWukrSHd0i+wSwx64kYUSAKPfxRDksjKIYTxSAp9W9/xcZVBF4Kl0eqQd5eBpAQ/oQrc5RyM/0c1GQ==",
- "dev": true,
- "dependencies": {
- "chalk": "^4.1.0",
- "enhanced-resolve": "^5.7.0",
- "tsconfig-paths": "^4.0.0"
- },
- "engines": {
- "node": ">=10.13.0"
- }
- },
- "node_modules/tsconfig-paths-webpack-plugin/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"
- }
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
},
- "node_modules/tsconfig-paths-webpack-plugin/node_modules/strip-bom": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
- "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
+ "node_modules/ts-object-utils": {
+ "version": "0.0.5",
+ "resolved": "https://registry.npmjs.org/ts-object-utils/-/ts-object-utils-0.0.5.tgz",
+ "integrity": "sha512-iV0GvHqOmilbIKJsfyfJY9/dNHCs969z3so90dQWsO1eMMozvTpnB1MEaUbb3FYtZTGjv5sIy/xmslEz0Rg2TA=="
},
- "node_modules/tsconfig-paths-webpack-plugin/node_modules/tsconfig-paths": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz",
- "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==",
+ "node_modules/tsconfig-paths": {
+ "version": "3.14.2",
+ "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz",
+ "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==",
"dev": true,
"dependencies": {
- "json5": "^2.2.2",
+ "@types/json5": "^0.0.29",
+ "json5": "^1.0.2",
"minimist": "^1.2.6",
"strip-bom": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
}
},
"node_modules/tsconfig-paths/node_modules/json5": {
@@ -11779,30 +21877,9 @@
}
},
"node_modules/tslib": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
- "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
- },
- "node_modules/tsutils": {
- "version": "3.21.0",
- "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
- "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
- "dev": true,
- "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",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
- "dev": true
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
},
"node_modules/tunnel-agent": {
"version": "0.6.0",
@@ -11816,6 +21893,11 @@
"node": "*"
}
},
+ "node_modules/turbo-stream": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/turbo-stream/-/turbo-stream-2.3.0.tgz",
+ "integrity": "sha512-PhEr9mdexoVv+rJkQ3c8TjrN3DUghX37GNJkSMksoPR4KrXIPnM2MnqRt07sViIqX9IdlhrgtTSyjoVOASq6cg=="
+ },
"node_modules/type-check": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
@@ -11832,283 +21914,245 @@
"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.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,
+ "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==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/typed-array-buffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz",
+ "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "es-errors": "^1.3.0",
+ "is-typed-array": "^1.1.13"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/typed-array-byte-length": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz",
+ "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-proto": "^1.0.3",
+ "is-typed-array": "^1.1.13"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/typed-array-byte-offset": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz",
+ "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==",
+ "dependencies": {
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.7",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-proto": "^1.0.3",
+ "is-typed-array": "^1.1.13"
+ },
"engines": {
- "node": ">=10"
+ "node": ">= 0.4"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "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==",
+ "node_modules/typed-array-length": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz",
+ "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==",
"dependencies": {
- "media-typer": "0.3.0",
- "mime-types": "~2.1.24"
+ "call-bind": "^1.0.7",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-proto": "^1.0.3",
+ "is-typed-array": "^1.1.13",
+ "possible-typed-array-names": "^1.0.0"
},
"engines": {
- "node": ">= 0.6"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/typedarray": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
- "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA=="
- },
- "node_modules/typeorm": {
- "version": "0.3.10",
- "resolved": "https://registry.npmjs.org/typeorm/-/typeorm-0.3.10.tgz",
- "integrity": "sha512-VMKiM84EpJQ+Mz9xDIPqnfplWhyUy1d8ccaKdMY9obifxJOTFnv8GYVyPsGwG8Lk7Nb8MlttHyHWENGAhBA3WA==",
+ "node_modules/typedarray.prototype.slice": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/typedarray.prototype.slice/-/typedarray.prototype.slice-1.0.3.tgz",
+ "integrity": "sha512-8WbVAQAUlENo1q3c3zZYuy5k9VzBQvp8AX9WOtbvyWlLM1v5JaSRmjubLjzHF4JFtptjH/5c/i95yaElvcjC0A==",
"dependencies": {
- "@sqltools/formatter": "^1.2.2",
- "app-root-path": "^3.0.0",
- "buffer": "^6.0.3",
- "chalk": "^4.1.0",
- "cli-highlight": "^2.1.11",
- "date-fns": "^2.28.0",
- "debug": "^4.3.3",
- "dotenv": "^16.0.0",
- "glob": "^7.2.0",
- "js-yaml": "^4.1.0",
- "mkdirp": "^1.0.4",
- "reflect-metadata": "^0.1.13",
- "sha.js": "^2.4.11",
- "tslib": "^2.3.1",
- "uuid": "^8.3.2",
- "xml2js": "^0.4.23",
- "yargs": "^17.3.1"
- },
- "bin": {
- "typeorm": "cli.js",
- "typeorm-ts-node-commonjs": "cli-ts-node-commonjs.js",
- "typeorm-ts-node-esm": "cli-ts-node-esm.js"
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.0",
+ "es-errors": "^1.3.0",
+ "typed-array-buffer": "^1.0.2",
+ "typed-array-byte-offset": "^1.0.2"
},
"engines": {
- "node": ">= 12.9.0"
+ "node": ">= 0.4"
},
"funding": {
- "url": "https://opencollective.com/typeorm"
- },
- "peerDependencies": {
- "@google-cloud/spanner": "^5.18.0",
- "@sap/hana-client": "^2.12.25",
- "better-sqlite3": "^7.1.2",
- "hdb-pool": "^0.1.6",
- "ioredis": "^5.0.4",
- "mongodb": "^3.6.0",
- "mssql": "^7.3.0",
- "mysql2": "^2.2.5",
- "oracledb": "^5.1.0",
- "pg": "^8.5.1",
- "pg-native": "^3.0.0",
- "pg-query-stream": "^4.0.0",
- "redis": "^3.1.1 || ^4.0.0",
- "sql.js": "^1.4.0",
- "sqlite3": "^5.0.3",
- "ts-node": "^10.7.0",
- "typeorm-aurora-data-api-driver": "^2.0.0"
- },
- "peerDependenciesMeta": {
- "@google-cloud/spanner": {
- "optional": true
- },
- "@sap/hana-client": {
- "optional": true
- },
- "better-sqlite3": {
- "optional": true
- },
- "hdb-pool": {
- "optional": true
- },
- "ioredis": {
- "optional": true
- },
- "mongodb": {
- "optional": true
- },
- "mssql": {
- "optional": true
- },
- "mysql2": {
- "optional": true
- },
- "oracledb": {
- "optional": true
- },
- "pg": {
- "optional": true
- },
- "pg-native": {
- "optional": true
- },
- "pg-query-stream": {
- "optional": true
- },
- "redis": {
- "optional": true
- },
- "sql.js": {
- "optional": true
- },
- "sqlite3": {
- "optional": true
- },
- "ts-node": {
- "optional": true
- },
- "typeorm-aurora-data-api-driver": {
- "optional": true
- }
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/typeorm-naming-strategies": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/typeorm-naming-strategies/-/typeorm-naming-strategies-4.1.0.tgz",
- "integrity": "sha512-vPekJXzZOTZrdDvTl1YoM+w+sUIfQHG4kZTpbFYoTsufyv9NIBRe4Q+PdzhEAFA2std3D9LZHEb1EjE9zhRpiQ==",
- "peerDependencies": {
- "typeorm": "^0.2.0 || ^0.3.0"
+ "node_modules/typescript": {
+ "version": "5.3.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz",
+ "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==",
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
}
},
- "node_modules/typeorm/node_modules/buffer": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
- "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
+ "node_modules/ua-parser-js": {
+ "version": "1.0.37",
+ "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.37.tgz",
+ "integrity": "sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==",
"funding": [
{
- "type": "github",
- "url": "https://github.com/sponsors/feross"
+ "type": "opencollective",
+ "url": "https://opencollective.com/ua-parser-js"
},
{
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
+ "type": "paypal",
+ "url": "https://paypal.me/faisalman"
},
{
- "type": "consulting",
- "url": "https://feross.org/support"
+ "type": "github",
+ "url": "https://github.com/sponsors/faisalman"
}
],
- "dependencies": {
- "base64-js": "^1.3.1",
- "ieee754": "^1.2.1"
+ "engines": {
+ "node": "*"
}
},
- "node_modules/typeorm/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/unbox-primitive": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
+ "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
"dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
+ "call-bind": "^1.0.2",
+ "has-bigints": "^1.0.2",
+ "has-symbols": "^1.0.3",
+ "which-boxed-primitive": "^1.0.2"
},
"funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/typeorm/node_modules/cliui": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
- "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
- "dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.1",
- "wrap-ansi": "^7.0.0"
- },
+ "node_modules/undici": {
+ "version": "6.19.7",
+ "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.7.tgz",
+ "integrity": "sha512-HR3W/bMGPSr90i8AAp2C4DM3wChFdJPLrWYpIS++LxS8K+W535qftjt+4MyjNYHeWabMj1nvtmLIi7l++iq91A==",
"engines": {
- "node": ">=12"
+ "node": ">=18.17"
}
},
- "node_modules/typeorm/node_modules/dotenv": {
- "version": "16.3.1",
- "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz",
- "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==",
+ "node_modules/undici-types": {
+ "version": "5.26.5",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="
+ },
+ "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==",
"engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/motdotla/dotenv?sponsor=1"
+ "node": ">=4"
}
},
- "node_modules/typeorm/node_modules/mkdirp": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
- "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
- "bin": {
- "mkdirp": "bin/cmd.js"
+ "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==",
+ "dependencies": {
+ "unicode-canonical-property-names-ecmascript": "^2.0.0",
+ "unicode-property-aliases-ecmascript": "^2.0.0"
},
"engines": {
- "node": ">=10"
+ "node": ">=4"
}
},
- "node_modules/typeorm/node_modules/uuid": {
- "version": "8.3.2",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
- "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
- "bin": {
- "uuid": "dist/bin/uuid"
+ "node_modules/unicode-match-property-value-ecmascript": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz",
+ "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==",
+ "engines": {
+ "node": ">=4"
}
},
- "node_modules/typeorm/node_modules/yargs": {
- "version": "17.7.2",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
- "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
+ "node_modules/unicode-property-aliases-ecmascript": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz",
+ "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/unique-filename": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz",
+ "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==",
"dependencies": {
- "cliui": "^8.0.1",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.3",
- "y18n": "^5.0.5",
- "yargs-parser": "^21.1.1"
+ "unique-slug": "^4.0.0"
},
"engines": {
- "node": ">=12"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
- "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==",
- "dev": true,
- "bin": {
- "tsc": "bin/tsc",
- "tsserver": "bin/tsserver"
+ "node_modules/unique-slug": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz",
+ "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==",
+ "dependencies": {
+ "imurmurhash": "^0.1.4"
},
"engines": {
- "node": ">=4.2.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
- "node_modules/unbzip2-stream": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz",
- "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==",
- "dev": true,
+ "node_modules/unique-string": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz",
+ "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==",
"dependencies": {
- "buffer": "^5.2.1",
- "through": "^2.3.8"
+ "crypto-random-string": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
"node_modules/universalify": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
- "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
- "dev": true,
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
"engines": {
- "node": ">= 10.0.0"
+ "node": ">= 4.0.0"
}
},
"node_modules/unpipe": {
@@ -12119,11 +22163,19 @@
"node": ">= 0.8"
}
},
- "node_modules/update-browserslist-db": {
- "version": "1.0.13",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
- "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==",
+ "node_modules/untildify": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz",
+ "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==",
"dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/update-browserslist-db": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz",
+ "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==",
"funding": [
{
"type": "opencollective",
@@ -12139,8 +22191,8 @@
}
],
"dependencies": {
- "escalade": "^3.1.1",
- "picocolors": "^1.0.0"
+ "escalade": "^3.1.2",
+ "picocolors": "^1.0.1"
},
"bin": {
"update-browserslist-db": "cli.js"
@@ -12153,11 +22205,15 @@
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
"integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
- "dev": true,
"dependencies": {
"punycode": "^2.1.0"
}
},
+ "node_modules/url-join": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.0.tgz",
+ "integrity": "sha512-EGXjXJZhIHiQMK2pQukuFcL303nskqIRzWvPvV5O8miOfwoUb9G+a/Cld60kUyeaybEI94wvVClT10DtfeAExA=="
+ },
"node_modules/url-parse": {
"version": "1.5.10",
"resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
@@ -12167,25 +22223,24 @@
"requires-port": "^1.0.0"
}
},
- "node_modules/url-parse-lax": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz",
- "integrity": "sha512-BVA4lR5PIviy2PMseNd2jbFQ+jwSwQGdJejf5ctd1rEXt0Ypd7yanUK9+lYechVlN5VaTJGsu2U/3MDDu6KgBA==",
- "dev": true,
- "dependencies": {
- "prepend-http": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
+ "node_modules/use-latest-callback": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/use-latest-callback/-/use-latest-callback-0.1.7.tgz",
+ "integrity": "sha512-Hlrl0lskgZZpo2vIpZ4rA7qA/rAGn2PcDvDH1M47AogqMPB0qlGEdsa66AVkIUiEEDpfxA9/N6hY6MqtaNoqWA==",
+ "peerDependencies": {
+ "react": ">=16.8"
}
},
- "node_modules/url-to-options": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz",
- "integrity": "sha512-0kQLIzG4fdk/G5NONku64rSH/x32NOA39LVQqlK8Le6lvTF6GGRJpqaQFGgU+CLwySIqBSMdwYM0sYcW9f6P4A==",
- "dev": true,
- "engines": {
- "node": ">= 4"
+ "node_modules/util": {
+ "version": "0.12.5",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz",
+ "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==",
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "is-arguments": "^1.0.4",
+ "is-generator-function": "^1.0.7",
+ "is-typed-array": "^1.1.3",
+ "which-typed-array": "^1.1.2"
}
},
"node_modules/util-deprecate": {
@@ -12202,30 +22257,18 @@
}
},
"node_modules/uuid": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz",
- "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==",
+ "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.",
"bin": {
- "uuid": "dist/bin/uuid"
+ "uuid": "bin/uuid"
}
},
- "node_modules/v8-compile-cache": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz",
- "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==",
- "dev": true
- },
- "node_modules/v8-compile-cache-lib": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz",
- "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==",
- "dev": true
- },
"node_modules/v8-to-istanbul": {
- "version": "9.2.0",
- "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz",
- "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==",
- "dev": true,
+ "version": "9.1.3",
+ "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.3.tgz",
+ "integrity": "sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg==",
"dependencies": {
"@jridgewell/trace-mapping": "^0.3.12",
"@types/istanbul-lib-coverage": "^2.0.1",
@@ -12235,31 +22278,17 @@
"node": ">=10.12.0"
}
},
- "node_modules/validate-npm-package-license": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
- "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
- "dev": true,
- "dependencies": {
- "spdx-correct": "^3.0.0",
- "spdx-expression-parse": "^3.0.0"
- }
- },
- "node_modules/validator": {
- "version": "13.11.0",
- "resolved": "https://registry.npmjs.org/validator/-/validator-13.11.0.tgz",
- "integrity": "sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==",
- "engines": {
- "node": ">= 0.10"
- }
+ "node_modules/valid-url": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz",
+ "integrity": "sha512-QQDsV8OnSf5Uc30CKSwG9lnhMPe6exHtTXLRYX8uMwKENy640pU+2BgBL0LRbDh/eYRahNCS7aewCx0wf3NYVA=="
},
- "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==",
- "dev": true,
- "engines": {
- "node": ">=12"
+ "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": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==",
+ "dependencies": {
+ "builtins": "^1.0.3"
}
},
"node_modules/vary": {
@@ -12270,116 +22299,142 @@
"node": ">= 0.8"
}
},
+ "node_modules/vlq": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz",
+ "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w=="
+ },
+ "node_modules/w3c-xmlserializer": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz",
+ "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==",
+ "dependencies": {
+ "xml-name-validator": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
"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/watchpack": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz",
- "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==",
- "dev": true,
+ "node_modules/warn-once": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/warn-once/-/warn-once-0.1.1.tgz",
+ "integrity": "sha512-VkQZJbO8zVImzYFteBXvBOZEl1qL175WH8VmZcxF2fZAoudNhNDvHi+doCaAEdU2l2vtcIwa2zn0QK5+I1HQ3Q=="
+ },
+ "node_modules/wcwidth": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
+ "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==",
+ "dependencies": {
+ "defaults": "^1.0.3"
+ }
+ },
+ "node_modules/web-encoding": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/web-encoding/-/web-encoding-1.1.5.tgz",
+ "integrity": "sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==",
+ "dependencies": {
+ "util": "^0.12.3"
+ },
+ "optionalDependencies": {
+ "@zxing/text-encoding": "0.9.0"
+ }
+ },
+ "node_modules/web-streams-polyfill": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz",
+ "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/webidl-conversions": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
+ "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/whatwg-encoding": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz",
+ "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==",
"dependencies": {
- "glob-to-regexp": "^0.4.1",
- "graceful-fs": "^4.1.2"
+ "iconv-lite": "0.6.3"
},
"engines": {
- "node": ">=10.13.0"
+ "node": ">=12"
}
},
- "node_modules/wcwidth": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
- "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==",
- "dev": true,
+ "node_modules/whatwg-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==",
"dependencies": {
- "defaults": "^1.0.3"
- }
- },
- "node_modules/webpack": {
- "version": "5.74.0",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz",
- "integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==",
- "dev": 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.7.1",
- "acorn-import-assertions": "^1.7.6",
- "browserslist": "^4.14.5",
- "chrome-trace-event": "^1.0.2",
- "enhanced-resolve": "^5.10.0",
- "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-even-better-errors": "^2.3.1",
- "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.4.0",
- "webpack-sources": "^3.2.3"
- },
- "bin": {
- "webpack": "bin/webpack.js"
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
},
"engines": {
- "node": ">=10.13.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
- },
- "peerDependenciesMeta": {
- "webpack-cli": {
- "optional": true
- }
+ "node": ">=0.10.0"
}
},
- "node_modules/webpack-node-externals": {
+ "node_modules/whatwg-fetch": {
+ "version": "3.6.19",
+ "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.19.tgz",
+ "integrity": "sha512-d67JP4dHSbm2TrpFj8AbO8DnL1JXL5J9u0Kq2xW6d0TFDbCA3Muhdt8orXC22utleTVj7Prqt82baN6RBvnEgw=="
+ },
+ "node_modules/whatwg-mimetype": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz",
- "integrity": "sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==",
- "dev": true,
+ "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz",
+ "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==",
"engines": {
- "node": ">=6"
+ "node": ">=12"
}
},
- "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,
+ "node_modules/whatwg-url": {
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz",
+ "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==",
+ "dependencies": {
+ "tr46": "^3.0.0",
+ "webidl-conversions": "^7.0.0"
+ },
"engines": {
- "node": ">=10.13.0"
+ "node": ">=12"
}
},
- "node_modules/whatwg-mimetype": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz",
- "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==",
- "dev": true,
+ "node_modules/whatwg-url-without-unicode": {
+ "version": "8.0.0-3",
+ "resolved": "https://registry.npmjs.org/whatwg-url-without-unicode/-/whatwg-url-without-unicode-8.0.0-3.tgz",
+ "integrity": "sha512-HoKuzZrUlgpz35YO27XgD28uh/WJH4B0+3ttFqRo//lmq+9T/mIOJ6kqmINI9HpUpz1imRC/nR/lxKpJiv0uig==",
+ "dependencies": {
+ "buffer": "^5.4.3",
+ "punycode": "^2.1.1",
+ "webidl-conversions": "^5.0.0"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=10"
+ }
+ },
+ "node_modules/whatwg-url-without-unicode/node_modules/webidl-conversions": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz",
+ "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==",
+ "engines": {
+ "node": ">=8"
}
},
"node_modules/which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
"dependencies": {
"isexe": "^2.0.0"
},
@@ -12390,77 +22445,108 @@
"node": ">= 8"
}
},
- "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/which-boxed-primitive": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
+ "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
"dependencies": {
- "string-width": "^1.0.2 || 2 || 3 || 4"
+ "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/windows-release": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-4.0.0.tgz",
- "integrity": "sha512-OxmV4wzDKB1x7AZaZgXMVsdJ1qER1ed83ZrTYd5Bwq2HfJVg3DJS8nqlAG4sMoJ7mu8cuRmLEYyU13BKwctRAg==",
+ "node_modules/which-builtin-type": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz",
+ "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==",
"dev": true,
"dependencies": {
- "execa": "^4.0.2"
+ "function.prototype.name": "^1.1.5",
+ "has-tostringtag": "^1.0.0",
+ "is-async-function": "^2.0.0",
+ "is-date-object": "^1.0.5",
+ "is-finalizationregistry": "^1.0.2",
+ "is-generator-function": "^1.0.10",
+ "is-regex": "^1.1.4",
+ "is-weakref": "^1.0.2",
+ "isarray": "^2.0.5",
+ "which-boxed-primitive": "^1.0.2",
+ "which-collection": "^1.0.1",
+ "which-typed-array": "^1.1.9"
},
"engines": {
- "node": ">=10"
+ "node": ">= 0.4"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/windows-release/node_modules/execa": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz",
- "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==",
+ "node_modules/which-collection": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz",
+ "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==",
"dev": true,
"dependencies": {
- "cross-spawn": "^7.0.0",
- "get-stream": "^5.0.0",
- "human-signals": "^1.1.1",
- "is-stream": "^2.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^4.0.0",
- "onetime": "^5.1.0",
- "signal-exit": "^3.0.2",
- "strip-final-newline": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
+ "is-map": "^2.0.1",
+ "is-set": "^2.0.1",
+ "is-weakmap": "^2.0.1",
+ "is-weakset": "^2.0.1"
},
"funding": {
- "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/windows-release/node_modules/get-stream": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
- "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
- "dev": true,
+ "node_modules/which-module": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz",
+ "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ=="
+ },
+ "node_modules/which-typed-array": {
+ "version": "1.1.15",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz",
+ "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==",
"dependencies": {
- "pump": "^3.0.0"
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.7",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-tostringtag": "^1.0.2"
},
"engines": {
- "node": ">=8"
+ "node": ">= 0.4"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/windows-release/node_modules/human-signals": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz",
- "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==",
- "dev": true,
+ "node_modules/wonka": {
+ "version": "4.0.15",
+ "resolved": "https://registry.npmjs.org/wonka/-/wonka-4.0.15.tgz",
+ "integrity": "sha512-U0IUQHKXXn6PFo9nqsHphVCE5m3IntqZNB9Jjn7EB1lrR7YTDY3YWgFvEvwniTzXSvOH/XMzAZaIfJF/LvHYXg=="
+ },
+ "node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
"engines": {
- "node": ">=8.12.0"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
- "node_modules/wrap-ansi": {
+ "node_modules/wrap-ansi-cjs": {
+ "name": "wrap-ansi",
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
@@ -12476,35 +22562,91 @@
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
+ "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "node_modules/wrap-ansi/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
"node_modules/wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
},
"node_modules/write-file-atomic": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz",
- "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==",
- "dev": true,
+ "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==",
"dependencies": {
+ "graceful-fs": "^4.1.11",
"imurmurhash": "^0.1.4",
- "signal-exit": "^3.0.7"
- },
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "signal-exit": "^3.0.2"
}
},
"node_modules/ws": {
- "version": "8.8.1",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz",
- "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==",
- "dev": true,
+ "version": "8.14.2",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz",
+ "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==",
"engines": {
"node": ">=10.0.0"
},
"peerDependencies": {
"bufferutil": "^4.0.1",
- "utf-8-validate": "^5.0.2"
+ "utf-8-validate": ">=5.0.2"
},
"peerDependenciesMeta": {
"bufferutil": {
@@ -12515,15 +22657,49 @@
}
}
},
+ "node_modules/xcode": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/xcode/-/xcode-3.0.1.tgz",
+ "integrity": "sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==",
+ "dependencies": {
+ "simple-plist": "^1.1.0",
+ "uuid": "^7.0.3"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/xcode/node_modules/uuid": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz",
+ "integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==",
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
+ "node_modules/xdate": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/xdate/-/xdate-0.8.2.tgz",
+ "integrity": "sha512-sNBlLfOC8S3V0vLDEUianQOXcTsc9j4lfeKU/klHe0RjHAYn0CXsSttumTot8dzalboV8gZbH38B+WcCIBjhFQ=="
+ },
"node_modules/xml": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz",
- "integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw=="
+ "integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==",
+ "dev": true
+ },
+ "node_modules/xml-name-validator": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz",
+ "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==",
+ "engines": {
+ "node": ">=12"
+ }
},
"node_modules/xml2js": {
- "version": "0.4.23",
- "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz",
- "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==",
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.0.tgz",
+ "integrity": "sha512-eLTh0kA8uHceqesPqSE+VvO1CDDJWMwlQfB6LuN6T8w6MaDJ8Txm8P7s5cHD0miF0V+GGTZrDQfxPZQVsur33w==",
"dependencies": {
"sax": ">=0.6.0",
"xmlbuilder": "~11.0.0"
@@ -12532,7 +22708,7 @@
"node": ">=4.0.0"
}
},
- "node_modules/xmlbuilder": {
+ "node_modules/xml2js/node_modules/xmlbuilder": {
"version": "11.0.1",
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
"integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==",
@@ -12540,27 +22716,18 @@
"node": ">=4.0"
}
},
- "node_modules/xss": {
- "version": "1.0.14",
- "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.14.tgz",
- "integrity": "sha512-og7TEJhXvn1a7kzZGQ7ETjdQVS2UfZyTlsEdDOqvQF7GoxNfY+0YLCzBy1kPdsDDx4QuNAonQPddpsn6Xl/7sw==",
- "dev": true,
- "dependencies": {
- "commander": "^2.20.3",
- "cssfilter": "0.0.10"
- },
- "bin": {
- "xss": "bin/xss"
- },
+ "node_modules/xmlbuilder": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-14.0.0.tgz",
+ "integrity": "sha512-ts+B2rSe4fIckR6iquDjsKbQFK2NlUk6iG5nf14mDEyldgoc2nEKZ3jZWMPTxGQwVgToSjt6VGIho1H8/fNFTg==",
"engines": {
- "node": ">= 0.10.0"
+ "node": ">=8.0"
}
},
- "node_modules/xss/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/xmlchars": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz",
+ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw=="
},
"node_modules/xtend": {
"version": "4.0.2",
@@ -12579,34 +22746,36 @@
}
},
"node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
},
"node_modules/yaml": {
- "version": "1.10.2",
- "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
- "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
- "dev": true,
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.0.tgz",
+ "integrity": "sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==",
+ "bin": {
+ "yaml": "bin.mjs"
+ },
"engines": {
- "node": ">= 6"
+ "node": ">= 14"
}
},
"node_modules/yargs": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
- "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+ "version": "17.7.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
"dependencies": {
- "cliui": "^7.0.2",
+ "cliui": "^8.0.1",
"escalade": "^3.1.1",
"get-caller-file": "^2.0.5",
"require-directory": "^2.1.1",
- "string-width": "^4.2.0",
+ "string-width": "^4.2.3",
"y18n": "^5.0.5",
- "yargs-parser": "^20.2.2"
+ "yargs-parser": "^21.1.1"
},
"engines": {
- "node": ">=10"
+ "node": ">=12"
}
},
"node_modules/yargs-parser": {
@@ -12617,44 +22786,35 @@
"node": ">=12"
}
},
- "node_modules/yargs/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==",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/yauzl": {
- "version": "2.10.0",
- "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
- "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
- "dev": true,
- "dependencies": {
- "buffer-crc32": "~0.2.3",
- "fd-slicer": "~1.1.0"
- }
- },
- "node_modules/yn": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
- "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/yocto-queue": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
"integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
- "dev": true,
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
+ },
+ "node_modules/zod": {
+ "version": "3.23.8",
+ "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz",
+ "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==",
+ "funding": {
+ "url": "https://github.com/sponsors/colinhacks"
+ }
+ },
+ "node_modules/zod-validation-error": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-2.1.0.tgz",
+ "integrity": "sha512-VJh93e2wb4c3tWtGgTa0OF/dTt/zoPCPzXq4V11ZjxmEAFaPi/Zss1xIZdEB5RD8GD00U0/iVXgqkF77RV7pdQ==",
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "zod": "^3.18.0"
+ }
}
}
}
diff --git a/package.json b/package.json
index d4746cac..0d28588a 100644
--- a/package.json
+++ b/package.json
@@ -1,132 +1,98 @@
{
- "name": "gerocuidado-usuario-api",
- "version": "0.0.1",
- "description": "",
- "author": "",
- "private": true,
- "license": "UNLICENSED",
+ "name": "gerocuidado",
+ "version": "1.0.0",
+ "main": "expo-router/entry",
"scripts": {
- "prebuild": "rimraf dist",
- "build": "nest build",
- "format": "prettier --write \"src/**/*.ts\" \"e2e/**/*.ts\"",
- "start": "nest start --preserveWatchOutput",
- "start:dev": "nest start --watch --preserveWatchOutput",
- "start:debug": "nest start --debug 0.0.0.0:7001 --watch --preserveWatchOutput",
- "start:prod": "node dist/main",
- "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
+ "start": "expo start",
+ "start:tunnel": "expo start --tunnel",
+ "android": "expo run:android",
+ "ios": "expo run:ios",
+ "web": "expo start --web",
+ "test": "TZ=UTC jest --passWithNoTests --no-cache --runInBand --detectOpenHandles --coverage --colors",
"test:all": "CI=true npm run test -- --coverage",
- "test": "jest --passWithNoTests --no-cache --runInBand --detectOpenHandles --coverage --colors",
- "test:watch": "jest --watchAll",
- "test:cov": "jest --runInBand --coverage --colors",
- "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
- "test:e2e": "jest --forceExit --detectOpenHandles --colors --config ./e2e/jest-e2e.json",
- "test:e2e:cov": "jest --runInBand --forceExit --detectOpenHandles --colors --coverage --config ./e2e/jest-e2e.json",
- "test:e2e:watch": "jest --detectOpenHandles --config ./e2e/jest-e2e.json --watchAll",
- "typeorm": "node --require ts-node/register ./node_modules/typeorm/cli.js",
- "typeorm:create": "npm run typeorm migration:create",
- "typeorm:revert": "npm run typeorm migration:revert -- -d src/ormconfig.ts",
- "typeorm:migrate": "npm run typeorm migration:generate -- -d src/ormconfig.ts",
- "typeorm:run": "./node_modules/.bin/typeorm-ts-node-commonjs migration:run -d src/ormconfig.ts",
- "schema:drop": "npm run typeorm schema:drop",
- "sonar": "sonar-scanner",
- "schema:sync": "npm run typeorm schema:sync"
+ "lint": "eslint . --fix",
+ "lint:report": "eslint . --format json --output-file reports/lint-report.json",
+ "test:cov": "jest --runInBand --coverage --colors"
},
"dependencies": {
- "@grpc/grpc-js": "1.7.3",
- "@grpc/proto-loader": "0.7.3",
- "@nestjs/axios": "0.1.0",
- "@nestjs/common": "9.1.2",
- "@nestjs/config": "2.2.0",
- "@nestjs/core": "9.1.2",
- "@nestjs/jwt": "9.0.0",
- "@nestjs/mapped-types": "1.1.0",
- "@nestjs/microservices": "9.1.2",
- "@nestjs/passport": "9.0.3",
- "@nestjs/platform-express": "9.1.2",
- "@nestjs/typeorm": "9.0.1",
- "amqp-connection-manager": "4.1.3",
- "amqplib": "0.10.0",
- "bcrypt": "5.0.1",
- "cache-manager": "3.4.3",
- "cache-manager-redis-store": "2.0.0",
- "class-transformer": "0.5.1",
- "class-validator": "0.13.2",
- "compression": "1.7.4",
- "cors": "^2.8.5",
- "dotenv": "10.0.0",
- "express": "^4.21.2",
- "express-actuator": "1.8.2",
- "helmet": "6.0.0",
+ "@expo/metro-config": "^0.18.11",
+ "@expo/vector-icons": "^14.0.2",
+ "@nozbe/watermelondb": "^0.27.1",
+ "@react-native-async-storage/async-storage": "1.23.1",
+ "@shopify/flash-list": "1.6.4",
+ "@testing-library/jest-native": "^5.4.3",
+ "axios": "^1.5.1",
+ "date-fns": "^2.30.0",
+ "expo": "^51.0.39",
+ "expo-build-properties": "~0.12.5",
+ "expo-constants": "~16.0.2",
+ "expo-dev-client": "~4.0.23",
+ "expo-device": "~6.0.2",
+ "expo-image": "~1.12.13",
+ "expo-image-picker": "~15.0.7",
+ "expo-jwt": "^1.6.5",
+ "expo-linking": "~6.3.1",
+ "expo-notifications": "~0.28.15",
+ "expo-router": "^3.5.23",
+ "expo-splash-screen": "~0.27.5",
+ "expo-status-bar": "~1.12.1",
+ "expo-updates": "~0.25.22",
+ "jest": "^29.2.1",
+ "jest-expo": "~51.0.3",
+ "jest-mock-extended": "^3.0.5",
+ "jest-sonar": "^0.2.16",
"jest-sonar-reporter": "^2.0.0",
- "nodemailer": "^4.7.0",
- "passport": "0.5.2",
- "passport-jwt": "4.0.0",
- "passport-local": "1.0.0",
- "pg": "8.7.3",
- "reflect-metadata": "0.1.13",
- "rimraf": "3.0.2",
- "rxjs": "7.5.7",
- "typeorm": "0.3.10",
- "typeorm-naming-strategies": "^4.1.0"
+ "native-notify": "^3.2.4",
+ "react": "18.2.0",
+ "react-dom": "18.2.0",
+ "react-native": "0.74.5",
+ "react-native-calendar-strip": "^2.2.6",
+ "react-native-calendars": "^1.1302.0",
+ "react-native-draggable-gridview": "^1.0.3",
+ "react-native-dropdown-select-list": "^2.0.5",
+ "react-native-gesture-handler": "~2.16.1",
+ "react-native-mask-input": "^1.2.3",
+ "react-native-paper": "^5.11.2",
+ "react-native-safe-area-context": "4.10.5",
+ "react-native-screens": "3.31.1",
+ "react-native-swiper": "^1.6.0",
+ "react-native-toast-message": "^2.1.7",
+ "react-native-vector-icons": "^10.0.0",
+ "react-native-web": "~0.19.10",
+ "ts-jest": "^29.1.1"
},
"devDependencies": {
- "@faker-js/faker": "8.0.2",
- "@nestjs/apollo": "10.1.0",
- "@nestjs/cli": "9.1.2",
- "@nestjs/graphql": "10.1.1",
- "@nestjs/schematics": "9.0.3",
- "@nestjs/testing": "9.1.2",
- "@types/bcrypt": "5.0.0",
- "@types/cache-manager": "3.4.0",
- "@types/compression": "1.7.2",
- "@types/cors": "2.8.12",
- "@types/express": "^4.17.13",
- "@types/express-actuator": "1.8.0",
+ "@babel/core": "^7.24.0",
+ "@babel/plugin-proposal-decorators": "^7.24.7",
+ "@testing-library/react-native": "^12.3.1",
"@types/jest": "^29.5.6",
- "@types/node": "^18.17.0",
- "@types/nodemailer": "^6.4.17",
- "@types/passport-jwt": "3.0.6",
- "@types/passport-local": "1.0.34",
- "@types/supertest": "2.0.11",
- "@typescript-eslint/eslint-plugin": "5.13.0",
- "@typescript-eslint/parser": "5.13.0",
- "apollo-server-express": "3.10.2",
- "eslint": "8.10.0",
- "eslint-config-prettier": "8.4.0",
- "eslint-plugin-prettier": "4.0.0",
- "graphql": "16.6.0",
- "jest": "^29.2.1",
- "jest-mock-extended": "^3.0.5",
- "jest-sonar": "^0.2.16",
- "prettier": "2.5.1",
- "sonarqube-scanner": "2.8.1",
- "source-map-support": "0.5.21",
- "supertest": "6.2.2",
- "ts-jest": "^29.1.1",
- "ts-loader": "9.2.7",
- "ts-node": "^10.9.2",
- "tsconfig-paths": "3.12.0",
- "typescript": "^4.6.2"
+ "@types/react": "~18.2.79",
+ "@types/react-native-vector-icons": "^6.4.16",
+ "better-sqlite3": "^11.2.1",
+ "eslint": "^8.52.0",
+ "eslint-config-universe": "^12.0.0",
+ "jest-sonar-reporter": "^2.0.0",
+ "prettier": "^3.0.3",
+ "typescript": "~5.3.3"
},
- "extensionDependencies": [
- "dbaeumer.vscode-eslint",
- "esbenp.prettier-vscode",
- "rbbit.typescript-hero"
- ],
+ "private": true,
"jest": {
- "moduleFileExtensions": [
- "js",
- "json",
- "ts"
+ "preset": "jest-expo",
+ "setupFiles": [
+ "./jest-setup.js"
+ ],
+ "coverageDirectory": "./coverage",
+ "transformIgnorePatterns": [
+ "node_modules/(?!((jest-)?react-native|@react-native(-community)?)|expo(nent)?|@expo(nent)?/.*|@expo-google-fonts/.*|react-navigation|@react-navigation/.*|@unimodules/.*|unimodules|sentry-expo|native-base|react-native-svg)"
],
- "rootDir": "src",
- "testRegex": ".*\\.spec\\.ts$",
- "transform": {
- "^.+\\.(t|j)s$": "ts-jest"
- },
"collectCoverage": true,
"collectCoverageFrom": [
- "**/*.(t|j)s"
+ "**/*.{ts,tsx}",
+ "!**/coverage/**",
+ "!**/node_modules/**",
+ "!**/babel.config.js",
+ "!**/jest.setup.js",
+ "!**/__tests__/**"
],
"reporters": [
"default",
@@ -135,23 +101,9 @@
{
"outputDirectory": "reports",
"outputName": "sonar-report.xml",
- "relativeRootDir": "."
+ "sonarQubeVersion": "LATEST"
}
]
- ],
- "coverageDirectory": "../coverage/unit",
- "coveragePathIgnorePatterns": [
- "src/migration",
- ".module.ts$",
- ".spec.ts$",
- ".dto.ts$",
- ".entity.ts$",
- "main.ts$",
- "ormconfig.ts$",
- ".seed.ts$",
- ".factory.ts$",
- "src/migration"
- ],
- "testEnvironment": "node"
+ ]
}
}
diff --git a/parser.py b/parser.py
index a48d63a0..c56ff2d3 100644
--- a/parser.py
+++ b/parser.py
@@ -28,19 +28,16 @@
if __name__ == "__main__":
REPO_COMPONENT_KEY = sys.argv[1]
- RELEASE_VERSION = sys.argv[2].replace('/', '')
- REPO = sys.argv[3]
+ REPO = sys.argv[2]
+ RELEASE_VERSION = sys.argv[3].replace('/', '')
response = requests.get(
f'{BASE_URL}{REPO_COMPONENT_KEY}&metricKeys={",".join(METRICS_SONAR)}&ps=500'
)
-
- print(response.text)
-
j = json.loads(response.text)
file_path = f'./analytics-raw-data/fga-eps-mds-{REPO}-{TODAY.strftime("%m-%d-%Y-%H-%M-%S")}-{RELEASE_VERSION}.json'
with open(file_path, "w") as fp:
fp.write(json.dumps(j))
- fp.close()
+ fp.close()
\ No newline at end of file
diff --git a/sonar-project.properties b/sonar-project.properties
index 90f2a8f0..324908c2 100644
--- a/sonar-project.properties
+++ b/sonar-project.properties
@@ -1,18 +1,22 @@
-sonar.projectKey=fga-eps-mds-1_2024-1-gerocuidado-apiusuario
+sonar.projectKey=fga-eps-mds-1_2024-1-gerocuidado-front
sonar.organization=fga-eps-mds-1
-
-sonar.projectName=2024-1-GEROcuidado-APIUsuario
+sonar.projectName=2024-1-GEROcuidado-Front
sonar.host.url=https://sonarcloud.io
+sonar.language=ts
sonar.sourceEncoding=UTF-8
sonar.python.version=3
-sonar.sources=src
-sonar.exclusions=**/main.ts,**/ormconfig.ts,**/*.module.ts,src/migration/*.ts,src/migrations.ts
+sonar.sources=./src/app
+sonar.inclusions=**
+sonar.exclusions=**/__tests__/**,src/app/db/*.ts
-sonar.javascript.lcov.reportPaths=coverage/unit/lcov.info
+sonar.javascript.lcov.reportPaths=./coverage/lcov.info
+sonar.core.codeCoveragePlugin=cobertura
+sonar.junit.reportPaths=junit.xml
sonar.tests=src
-sonar.test.inclusions=**/*.spec.ts
+sonar.test.inclusions=**/*.spec.ts,**/*.spec.tsx,**/*.spec.js,**/*.test.ts,**/*.test.tsx
sonar.testExecutionReportPaths=reports/sonar-report.xml
+sonar.typescript.eslint.reportPaths=reports/eslint-report.json
diff --git a/src/app.controller.spec.ts b/src/app.controller.spec.ts
deleted file mode 100644
index 95f22dc2..00000000
--- a/src/app.controller.spec.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-import { Test, TestingModule } from '@nestjs/testing';
-import { AppController } from './app.controller';
-import { AppService } from './app.service';
-
-describe('AppController', () => {
- let controller: AppController;
-
- beforeEach(async () => {
- const module: TestingModule = await Test.createTestingModule({
- controllers: [AppController],
- providers: [AppService],
- }).compile();
-
- controller = module.get(AppController);
- });
-
- it('should be defined', () => {
- expect(controller).toBeDefined();
- });
-
- it('should make health check', () => {
- expect(controller.healthCheck()).toEqual({
- message: 'GEROcuidadoApiUsuario health check Ok!',
- data: {},
- });
- });
-});
diff --git a/src/app.controller.ts b/src/app.controller.ts
deleted file mode 100644
index 93678349..00000000
--- a/src/app.controller.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import { Controller, Get } from '@nestjs/common';
-import { AppService } from './app.service';
-import { PublicRoute } from './shared/decorators/public-route.decorator';
-
-@Controller()
-export class AppController {
- constructor(private readonly service: AppService) { }
-
- @Get('health-check')
- @PublicRoute()
- healthCheck() {
- return this.service.healthCheck();
- }
-}
diff --git a/src/app.module.ts b/src/app.module.ts
deleted file mode 100644
index 236a21d1..00000000
--- a/src/app.module.ts
+++ /dev/null
@@ -1,38 +0,0 @@
-import { Module } from '@nestjs/common';
-import { ConfigModule } from '@nestjs/config';
-import { APP_GUARD } from '@nestjs/core';
-import { TypeOrmModule } from '@nestjs/typeorm';
-import { AppController } from './app.controller';
-import { AppService } from './app.service';
-import { AutenticacaoModule } from './autenticacao/autenticacao.module';
-import { JwtAuthGuard } from './autenticacao/jwt-auth.guard';
-import { DbModule } from './config/db/db.module';
-import { DbService } from './config/db/db.service';
-import { UsuarioModule } from './usuario/usuario.module';
-
-const ENV = process.env.NODE_ENV;
-
-@Module({
- imports: [
- ConfigModule.forRoot({
- isGlobal: true,
- envFilePath: !ENV ? '.env' : `.env.${ENV}`,
- }),
- TypeOrmModule.forRootAsync({
- imports: [ConfigModule, DbModule],
- useClass: DbService,
- }),
- DbModule,
- UsuarioModule,
- AutenticacaoModule,
- ],
- controllers: [AppController],
- providers: [
- AppService,
- {
- provide: APP_GUARD,
- useClass: JwtAuthGuard,
- },
- ],
-})
-export class AppModule {}
diff --git a/src/app.service.spec.ts b/src/app.service.spec.ts
deleted file mode 100644
index 9c2005fa..00000000
--- a/src/app.service.spec.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-import { Test, TestingModule } from '@nestjs/testing';
-import { AppService } from './app.service';
-
-describe('AppService', () => {
- let service: AppService;
-
- beforeEach(async () => {
- const module: TestingModule = await Test.createTestingModule({
- providers: [AppService],
- }).compile();
- service = module.get(AppService);
- });
-
- it('should be defined', () => {
- expect(service).toBeDefined();
- });
-
- it('should make health check', () => {
- expect(service.healthCheck()).toEqual({
- message: 'GEROcuidadoApiUsuario health check Ok!',
- data: {},
- });
- });
-});
diff --git a/src/app.service.ts b/src/app.service.ts
deleted file mode 100644
index fb773a7b..00000000
--- a/src/app.service.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import { Injectable } from '@nestjs/common';
-
-@Injectable()
-export class AppService {
- healthCheck() {
- return {
- message: 'GEROcuidadoApiUsuario health check Ok!',
- data: {},
- };
- }
-}
diff --git a/src/app/__tests__/BackButton.spec.tsx b/src/app/__tests__/BackButton.spec.tsx
new file mode 100644
index 00000000..f747e251
--- /dev/null
+++ b/src/app/__tests__/BackButton.spec.tsx
@@ -0,0 +1,35 @@
+import React from "react";
+import { render, fireEvent } from "@testing-library/react-native";
+import BackButton from "../components/BackButton";
+import router from "expo-router";
+
+jest.mock("expo-router", () => ({
+ router: {
+ canGoBack: jest.fn().mockReturnValue(true), // Simula que pode voltar
+ back: jest.fn(),
+ push: jest.fn(),
+ },
+}));
+
+describe("BackButton", () => {
+ it("chama router.back() quando pressionado", () => {
+ const { getByTestId } = render();
+ const pressableElement = getByTestId("back-button-pressable");
+
+ fireEvent.press(pressableElement);
+
+ // Verifica se a função router.back() é chamada quando o botão é pressionado
+ expect(router.router.back).toHaveBeenCalled();
+ });
+
+ it("chama router.push() com a rota correta quando route é fornecido", () => {
+ const route = "pagina-anterior";
+ const { getByTestId } = render();
+ const pressableElement = getByTestId("back-button-pressable");
+
+ fireEvent.press(pressableElement);
+
+ // Verifica se a função router.push() é chamada com a rota fornecida
+ expect(router.router.push).toHaveBeenCalledWith(route);
+ });
+});
diff --git a/src/app/__tests__/BarraPesquisa.spec.tsx b/src/app/__tests__/BarraPesquisa.spec.tsx
new file mode 100644
index 00000000..0f859fe1
--- /dev/null
+++ b/src/app/__tests__/BarraPesquisa.spec.tsx
@@ -0,0 +1,65 @@
+import React from "react";
+import { render, fireEvent } from "@testing-library/react-native";
+import BarraPesquisa from "../components/BarraPesquisa";
+
+describe("BarraPesquisa", () => {
+ it("deve renderizar corretamente", () => {
+ const { getByPlaceholderText } = render(
+ {}} />,
+ );
+ const inputElement = getByPlaceholderText("Pesquise uma publicação");
+ expect(inputElement).toBeTruthy();
+ });
+
+ it("deve chamar a função de retorno (callbackFn) com o valor do campo de pesquisa", () => {
+ const callbackFn = jest.fn();
+ const { getByPlaceholderText, getByDisplayValue } = render(
+ ,
+ );
+ const inputElement = getByPlaceholderText("Pesquise uma publicação");
+
+ // Simula a digitação de texto no campo de pesquisa
+ fireEvent.changeText(inputElement, "Texto de pesquisa");
+
+ // Verifica se o valor do campo de pesquisa foi atualizado corretamente
+ expect(getByDisplayValue("Texto de pesquisa")).toBeTruthy();
+
+ // Verifica se a função de retorno (callbackFn) foi chamada com o valor correto
+ expect(callbackFn).toHaveBeenCalledWith("Texto de pesquisa");
+ });
+
+ it("deve limpar o campo de pesquisa quando o texto for apagado", () => {
+ const callbackFn = jest.fn();
+ const { getByPlaceholderText, queryByDisplayValue } = render(
+ ,
+ );
+ const inputElement = getByPlaceholderText("Pesquise uma publicação");
+
+ // Simula a digitação de texto no campo de pesquisa
+ fireEvent.changeText(inputElement, "Texto de pesquisa");
+
+ // Simula a limpeza do campo de pesquisa
+ fireEvent.changeText(inputElement, "");
+
+ // Verifica se o campo de pesquisa foi limpo
+ expect(queryByDisplayValue("Texto de pesquisa")).toBeNull();
+ expect(callbackFn).toHaveBeenCalledWith("");
+ });
+
+ it("deve chamar a função de retorno (callbackFn) quando o usuário pressionar Enter", () => {
+ const callbackFn = jest.fn();
+ const { getByPlaceholderText } = render(
+ ,
+ );
+ const inputElement = getByPlaceholderText("Pesquise uma publicação");
+
+ // Simula a digitação de texto no campo de pesquisa
+ fireEvent.changeText(inputElement, "Texto de pesquisa");
+
+ // Simula o envio do texto ao pressionar Enter
+ fireEvent(inputElement, "submitEditing");
+
+ // Verifica se a função de retorno foi chamada corretamente
+ expect(callbackFn).toHaveBeenCalledWith("Texto de pesquisa");
+ });
+});
diff --git a/src/app/__tests__/CardIdoso.spec.tsx b/src/app/__tests__/CardIdoso.spec.tsx
new file mode 100644
index 00000000..43d29272
--- /dev/null
+++ b/src/app/__tests__/CardIdoso.spec.tsx
@@ -0,0 +1,68 @@
+import React from "react";
+import { render, fireEvent, screen } from "@testing-library/react-native";
+import CardIdoso from "../components/CardIdoso";
+
+const mockItem = {
+ id: 1,
+ nome: "Nome do Idoso",
+ foto: "data:image/png;base64,base64-encoded-image-data",
+ dataNascimento: "1990-01-01",
+ idUsuario: 123,
+ telefoneResponsavel: "123456789",
+ dataHora: "2023-01-01T12:00:00",
+};
+
+jest.mock("expo-router", () => ({
+ router: {
+ push: jest.fn(),
+ replace: jest.fn(),
+ },
+}));
+
+describe("CardIdoso", () => {
+ it("renderiza o componente CardIdoso com o nome correto", () => {
+ render();
+ const nameElement = screen.getByText("Nome do Idoso");
+ expect(nameElement).toBeTruthy();
+ });
+
+ it("navega para a edição do Idoso ao pressionar o ícone de lápis", () => {
+ render();
+ const pencilIcon = screen.getByTestId("pencil-icon");
+ fireEvent.press(pencilIcon);
+
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
+ expect(require("expo-router").router.push).toHaveBeenCalledWith({
+ pathname: "/private/pages/editarIdoso",
+ params: {
+ id: mockItem.id,
+ nome: mockItem.nome,
+ foto: expect.any(String),
+ dataNascimento: mockItem.dataNascimento,
+ idUsuario: mockItem.idUsuario,
+ telefoneResponsavel: mockItem.telefoneResponsavel,
+ dataHora: mockItem.dataHora,
+ },
+ });
+ });
+
+ it("seleciona o Idoso ao pressionar o componente CardIdoso", () => {
+ render();
+ const cardIdosoPressable = screen.getByTestId("cardIdosoPressable");
+ fireEvent.press(cardIdosoPressable);
+
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
+ expect(require("expo-router").router.push).toHaveBeenCalledWith({
+ params: {
+ dataHora: "2023-01-01T12:00:00",
+ dataNascimento: "1990-01-01",
+ foto: "data:image/png;base64,base64-encoded-image-data",
+ id: 1,
+ idUsuario: 123,
+ nome: "Nome do Idoso",
+ telefoneResponsavel: "123456789",
+ },
+ pathname: "/private/pages/editarIdoso",
+ });
+ });
+});
diff --git a/src/app/__tests__/CustomButton.spec.tsx b/src/app/__tests__/CustomButton.spec.tsx
new file mode 100644
index 00000000..069b8e87
--- /dev/null
+++ b/src/app/__tests__/CustomButton.spec.tsx
@@ -0,0 +1,22 @@
+import React from "react";
+import { fireEvent, render } from "@testing-library/react-native";
+import CustomButton from "../components/CustomButton";
+
+describe("CustomButton", () => {
+ it("renderiza corretamente", () => {
+ const { toJSON } = render(
+ ,
+ );
+ expect(toJSON()).toBeTruthy();
+ });
+
+ it("Chama a função de callback quando pressionado", () => {
+ const callbackFn = jest.fn();
+ const { getByText } = render(
+ ,
+ );
+ const button = getByText("Test");
+ fireEvent.press(button);
+ expect(callbackFn).toHaveBeenCalled();
+ });
+});
diff --git a/src/app/__tests__/EmConstrucao.spec.tsx b/src/app/__tests__/EmConstrucao.spec.tsx
new file mode 100644
index 00000000..e20bc5ca
--- /dev/null
+++ b/src/app/__tests__/EmConstrucao.spec.tsx
@@ -0,0 +1,17 @@
+import React from "react";
+import { render } from "@testing-library/react-native";
+import EmConstrucao from "../components/EmConstrucao";
+
+describe("EmConstrucao component", () => {
+ test("renders correctly", () => {
+ const { getByTestId, getByText } = render();
+
+ // Check if the component is rendered
+ const container = getByTestId("em-construcao-container");
+ expect(container).toBeTruthy();
+
+ // Check if the text is rendered
+ const text = getByText("Página em construção!");
+ expect(text).toBeTruthy();
+ });
+});
diff --git a/src/app/__tests__/ErrorMessage.spec.tsx b/src/app/__tests__/ErrorMessage.spec.tsx
new file mode 100644
index 00000000..13ebde8c
--- /dev/null
+++ b/src/app/__tests__/ErrorMessage.spec.tsx
@@ -0,0 +1,10 @@
+import React from "react";
+import { render } from "@testing-library/react-native";
+import ErrorMessage from "../components/ErrorMessage";
+
+describe("ErrorMessage", () => {
+ it("renderiza corretamente", () => {
+ const { toJSON } = render();
+ expect(toJSON());
+ });
+});
diff --git a/src/app/__tests__/FiltroDropdown.spec.tsx b/src/app/__tests__/FiltroDropdown.spec.tsx
new file mode 100644
index 00000000..9db5079b
--- /dev/null
+++ b/src/app/__tests__/FiltroDropdown.spec.tsx
@@ -0,0 +1,68 @@
+import React from 'react';
+import { render, fireEvent, screen, waitFor } from '@testing-library/react-native';
+import FiltroDropdown from '../components/FiltroDropdown'; // ajuste o caminho conforme necessário
+
+describe('FiltroDropdown Component', () => {
+ it('should render the dropdown with default label', () => {
+ render( {}} />);
+ expect(screen.getByText('Filtro')).toBeTruthy();
+ });
+
+ it('should display options when dropdown is clicked', () => {
+ render( {}} />);
+ const dropdownButton = screen.getByText('Filtro');
+ fireEvent.press(dropdownButton);
+
+ expect(screen.getByText('Alimentação')).toBeTruthy();
+ expect(screen.getByText('Exercícios')).toBeTruthy();
+ expect(screen.getByText('Medicamentos')).toBeTruthy();
+ expect(screen.getByText('Geral')).toBeTruthy();
+ });
+
+
+ it('should toggle dropdown visibility when dropdown button is clicked', () => {
+ render( {}} />);
+
+ const dropdownButton = screen.getByText('Filtro');
+ fireEvent.press(dropdownButton);
+
+ expect(screen.getByText('Alimentação')).toBeTruthy();
+
+ fireEvent.press(dropdownButton);
+
+ expect(screen.queryByText('Alimentação')).toBeNull();
+ });
+
+ it('should show selected option when a filter is provided', () => {
+ render( {}} />);
+ expect(screen.getByText('Alimentação')).toBeTruthy();
+ });
+
+ it('should update button dimensions on dropdown visibility change', () => {
+ const { rerender } = render( {}} />);
+ const dropdownButton = screen.getByText('Filtro');
+
+ fireEvent.press(dropdownButton); // Open dropdown
+ rerender( {}} />);
+ });
+
+ it('should correctly handle selection toggling', async () => {
+ const mockSetFiltro = jest.fn();
+
+ render();
+
+ const dropdownButton = screen.getByText('Filtro');
+ fireEvent.press(dropdownButton);
+
+ const optionButton = screen.getByText('Alimentação');
+ fireEvent.press(optionButton);
+
+ expect(mockSetFiltro).toHaveBeenCalledWith('Alimentação');
+
+ expect(screen.getByText('Alimentação')).toBeTruthy();
+
+ await waitFor(() => {
+ expect(screen.queryByText('Alimentação')).toBeTruthy();
+ });
+ });
+});
diff --git a/src/app/__tests__/ItemTutorial.spec.tsx b/src/app/__tests__/ItemTutorial.spec.tsx
new file mode 100644
index 00000000..a53fd749
--- /dev/null
+++ b/src/app/__tests__/ItemTutorial.spec.tsx
@@ -0,0 +1,16 @@
+import React from "react";
+import { render } from "@testing-library/react-native";
+import ItemTutorial from "../components/ItemTutorial";
+import { Text } from "react-native";
+
+describe("ItemTutorial", () => {
+ it("renderiza corretamente", () => {
+ const { toJSON } = render(
+ Teste}
+ />,
+ );
+ expect(toJSON());
+ });
+});
diff --git a/src/app/__tests__/LinkButton.spec.tsx b/src/app/__tests__/LinkButton.spec.tsx
new file mode 100644
index 00000000..2de5d26b
--- /dev/null
+++ b/src/app/__tests__/LinkButton.spec.tsx
@@ -0,0 +1,52 @@
+import React from "react";
+import { render, fireEvent } from "@testing-library/react-native";
+import LinkButton from "../components/LinkButton";
+
+// Importe o módulo do router (ou arquivo real) que contém a função 'push'
+import { router } from "expo-router";
+
+describe("LinkButton", () => {
+ it("deve renderizar corretamente", () => {
+ const { getByText, getByTestId } = render(
+ ,
+ );
+
+ // Verifica se o componente foi renderizado corretamente
+ const button = getByTestId("link-button");
+ const buttonText = getByText("Teste");
+
+ expect(button).toBeDefined();
+ expect(buttonText).toBeDefined();
+ });
+
+ it("deve usar a cor de fundo personalizada", () => {
+ const backgroundColor = "red";
+ const { getByTestId } = render(
+ ,
+ );
+
+ const button = getByTestId("link-button");
+
+ // Verifica se o estilo de fundo personalizado foi aplicado corretamente
+ const style = button.props.style;
+ expect(style).toEqual(expect.objectContaining({ backgroundColor }));
+ });
+
+ it("deve chamar a função de navegação corretamente", () => {
+ const href = "/test";
+ const pushMock = jest.fn();
+ // Substitua 'router.push' pela função de mock
+ router.push = pushMock;
+
+ const { getByTestId } = render();
+
+ const button = getByTestId("link-button");
+ fireEvent.press(button);
+
+ expect(pushMock).toHaveBeenCalledWith(href);
+ });
+});
diff --git a/src/app/__tests__/Loading.spec.tsx b/src/app/__tests__/Loading.spec.tsx
new file mode 100644
index 00000000..0af3c52a
--- /dev/null
+++ b/src/app/__tests__/Loading.spec.tsx
@@ -0,0 +1,23 @@
+import React from "react";
+import { render, screen } from "@testing-library/react-native";
+import Loading from "../components/Loading";
+
+describe("Loading", () => {
+ it("deve renderizar o componente de carregamento corretamente", () => {
+ render();
+
+ // Verifique se o componente ActivityIndicator está presente
+ const activityIndicator = screen.getByTestId("loading-indicator");
+ expect(activityIndicator).toBeTruthy();
+
+ // Verifique se o componente ActivityIndicator tem o tamanho correto
+ expect(activityIndicator.props.size).toBe("large");
+
+ // Verifique se o componente ActivityIndicator tem a cor correta
+ expect(activityIndicator.props.color).toBe("#fff");
+
+ // Verifique se o contêiner (View) tem a cor de fundo correta
+ const container = screen.getByTestId("loading-container");
+ expect(container.props.style.backgroundColor).toBe("#00000098");
+ });
+});
diff --git a/src/app/__tests__/MaskHour.spec.tsx b/src/app/__tests__/MaskHour.spec.tsx
new file mode 100644
index 00000000..b5dd0e11
--- /dev/null
+++ b/src/app/__tests__/MaskHour.spec.tsx
@@ -0,0 +1,151 @@
+import React from "react";
+import { render, fireEvent } from "@testing-library/react-native";
+import MaskInput from "../components/MaskHour"; // ajuste o caminho se necessário
+import MaskHour from "../components/MaskHour";
+
+// Mock da função inputMaskChange
+const mockInputMaskChange = jest.fn();
+
+describe("MaskInput", () => {
+ beforeEach(() => {
+ jest.clearAllMocks(); // Limpa chamadas anteriores dos mocks antes de cada teste
+ });
+
+ test("aplica a máscara corretamente", () => {
+ const { getByTestId } = render(
+
+ );
+
+ const input = getByTestId("mask-input");
+
+ // Simula a mudança do texto
+ fireEvent.changeText(input, "1234");
+
+ // Verifica se inputMaskChange foi chamado com o valor mascarado correto
+ expect(mockInputMaskChange).toHaveBeenCalledWith("12:34");
+ });
+
+ test("não permite horas inválidas", () => {
+ const { getByTestId } = render(
+
+ );
+
+ const input = getByTestId("mask-input");
+
+ // Simula a mudança do texto
+ fireEvent.changeText(input, "9999");
+
+ // Verifica se inputMaskChange foi chamado com uma string vazia
+ expect(mockInputMaskChange).toHaveBeenCalledWith("");
+ });
+
+ test("verifica se o valor do input é atualizado corretamente", () => {
+ const { getByTestId } = render(
+
+ );
+
+ const input = getByTestId("mask-input");
+
+ // Simula a mudança do texto
+ fireEvent.changeText(input, "0959");
+
+ // Verifica se inputMaskChange foi chamado com o valor mascarado correto
+ expect(mockInputMaskChange).toHaveBeenCalledWith("09:59");
+ });
+
+ test("não permite que o segundo dígito seja maior que 9", () => {
+ const { getByTestId } = render(
+
+ );
+
+ const input = getByTestId("mask-input");
+
+ // Simula a mudança do texto
+ fireEvent.changeText(input, "2990");
+
+ // Verifica se inputMaskChange foi chamado apenas com o primeiro dígito
+ expect(mockInputMaskChange).toHaveBeenCalledWith("29:");
+ });
+
+ test("não permite que o quarto dígito (minuto) seja maior que 5", () => {
+ const { getByTestId } = render(
+
+ );
+
+ const input = getByTestId("mask-input");
+
+ // Simula a mudança do texto
+ fireEvent.changeText(input, "2359");
+
+ // Verifica se inputMaskChange foi chamado com o valor adequado (23:59)
+ expect(mockInputMaskChange).toHaveBeenCalledWith("23:59");
+
+ // Simula a mudança do texto para um valor inválido nos minutos
+ fireEvent.changeText(input, "2369");
+
+ // Verifica se inputMaskChange foi chamado apenas com os três primeiros dígitos
+ expect(mockInputMaskChange).toHaveBeenCalledWith("23:");
+ });
+
+ test("mantém apenas o primeiro dígito quando o segundo dígito é maior que 9", () => {
+ const { getByTestId } = render(
+
+ );
+
+ const input = getByTestId("mask-input");
+
+ // Simula a mudança do texto com um segundo dígito maior que 9
+ fireEvent.changeText(input, "1990");
+
+ // Verifica se inputMaskChange foi chamado apenas com o primeiro dígito
+ expect(mockInputMaskChange).toHaveBeenCalledWith("19:");
+ });
+
+ test("chama inputMaskChange corretamente com valor inicial vazio", () => {
+ const { getByTestId } = render(
+
+ );
+
+ const input = getByTestId("mask-input");
+
+ // Simula a mudança do texto para uma string vazia
+ fireEvent.changeText(input, "");
+
+ // Verifica se inputMaskChange foi chamado com uma string vazia
+ expect(mockInputMaskChange).toHaveBeenCalledWith("");
+ });
+
+ test("aplica a máscara parcialmente com dígito único", () => {
+ const { getByTestId } = render(
+
+ );
+
+ const input = getByTestId("mask-input");
+
+ // Simula a mudança do texto com um único dígito
+ fireEvent.changeText(input, "1");
+
+ // Verifica se inputMaskChange foi chamado corretamente
+ expect(mockInputMaskChange).toHaveBeenCalledWith("1");
+ });
+
+ test("permite uma sequência correta sem alterações", () => {
+ const { getByTestId } = render(
+
+ );
+
+ const input = getByTestId("mask-input");
+
+ // Simula a mudança do texto para "12:34"
+ fireEvent.changeText(input, "1234");
+
+ // Verifica se inputMaskChange foi chamado corretamente
+ expect(mockInputMaskChange).toHaveBeenCalledWith("12:34");
+
+ // Simula a mudança do texto para "12:34" novamente
+ fireEvent.changeText(input, "1234");
+
+ // Verifica se inputMaskChange foi chamado novamente com o mesmo valor
+ expect(mockInputMaskChange).toHaveBeenCalledWith("12:34");
+ });
+});
\ No newline at end of file
diff --git a/src/app/__tests__/ModalConfirmation.spec.tsx b/src/app/__tests__/ModalConfirmation.spec.tsx
new file mode 100644
index 00000000..973d967b
--- /dev/null
+++ b/src/app/__tests__/ModalConfirmation.spec.tsx
@@ -0,0 +1,55 @@
+import React from "react";
+import { render, fireEvent } from "@testing-library/react-native";
+import ModalConfirmation from "../components/ModalConfirmation";
+
+describe("ModalConfirmation", () => {
+ it("deve renderizar corretamente quando visível", () => {
+ const message = "Prosseguir com a exclusão da conta?"; // Mensagem esperada
+ const { getByText } = render(
+ {}}
+ closeModal={() => {}}
+ message={message} // Passa a mensagem como prop
+ messageButton={"Teste"}
+ />,
+ );
+
+ // Verifica se o texto da mensagem é exibido quando o modal está visível
+ expect(getByText(message)).toBeTruthy();
+ });
+
+ it('deve chamar a função de fechamento do modal ao pressionar "Cancelar"', () => {
+ const closeModal = jest.fn();
+ const { getByText } = render(
+ {}}
+ closeModal={closeModal}
+ message="Qualquer mensagem" // Você pode usar qualquer mensagem aqui
+ messageButton={"Teste"}
+ />,
+ );
+
+ // Simula o pressionar do botão "Cancelar"
+ fireEvent.press(getByText("Cancelar"));
+
+ // Verifica se a função de fechamento do modal foi chamada
+ expect(closeModal).toHaveBeenCalled();
+ });
+
+ it("não deve renderizar quando não visível", () => {
+ const { queryByText } = render(
+ {}}
+ closeModal={() => {}}
+ message="Qualquer mensagem" // Você pode usar qualquer mensagem aqui
+ messageButton={"Teste"}
+ />,
+ );
+
+ // Verifica se o texto da mensagem não está presente quando o modal não está visível
+ expect(queryByText("Qualquer mensagem")).toBeNull();
+ });
+});
diff --git a/src/app/__tests__/ModalMeta.spec.tsx b/src/app/__tests__/ModalMeta.spec.tsx
new file mode 100644
index 00000000..3f310b42
--- /dev/null
+++ b/src/app/__tests__/ModalMeta.spec.tsx
@@ -0,0 +1,114 @@
+import React from 'react';
+import { render, fireEvent, screen } from '@testing-library/react-native';
+import ModalMeta from '../components/ModalMeta';
+import { EMetricas, IMetrica } from '../interfaces/metricas.interface';
+
+describe('ModalMeta Component', () => {
+ const mockCallbackFn = jest.fn();
+ const mockCloseModal = jest.fn();
+
+ const metrica: IMetrica = {
+ id: 1,
+ idIdoso: 1,
+ categoria: EMetricas.HIDRATACAO,
+ valorMaximo: '1000',
+ };
+
+ beforeEach(() => {
+ jest.clearAllMocks();
+ });
+
+ it('should render modal when visible prop is true', () => {
+ render(
+
+ );
+
+ expect(screen.getByText('Adicionar uma nova meta')).toBeTruthy();
+ });
+
+ it('should not render modal when visible prop is false', () => {
+ render(
+
+ );
+
+ expect(screen.queryByText('Adicionar uma nova meta')).toBeNull();
+ });
+
+ it('should show error message when input is empty and Save button is pressed', () => {
+ render(
+
+ );
+
+ fireEvent.press(screen.getByTestId('callbackBtn'));
+
+ expect(screen.getByText('Campo obrigatório!')).toBeTruthy();
+ });
+
+ it('should show error message when input is invalid format and Save button is pressed', () => {
+ render(
+
+ );
+
+ fireEvent.changeText(screen.getByTestId('modal-input'), 'invalid');
+ fireEvent.press(screen.getByTestId('callbackBtn'));
+
+ expect(screen.getByText('Formato inválido!')).toBeTruthy();
+ });
+
+ it('should call callbackFn with input value when input is valid and Save button is pressed', () => {
+ render(
+
+ );
+
+ fireEvent.changeText(screen.getByTestId('modal-input'), '100');
+ fireEvent.press(screen.getByTestId('callbackBtn'));
+
+ expect(mockCallbackFn).toHaveBeenCalledWith('100');
+ });
+
+ it('should call closeModal when Cancel button is pressed', () => {
+ render(
+
+ );
+
+ fireEvent.press(screen.getByTestId('cancelarBtn'));
+
+ expect(mockCloseModal).toHaveBeenCalled();
+ });
+ });
diff --git a/src/app/__tests__/NaoAutenticado.spec.tsx b/src/app/__tests__/NaoAutenticado.spec.tsx
new file mode 100644
index 00000000..00c6a06c
--- /dev/null
+++ b/src/app/__tests__/NaoAutenticado.spec.tsx
@@ -0,0 +1,19 @@
+import React from "react";
+import { render, screen } from "@testing-library/react-native";
+import NaoAutenticado from "../components/NaoAutenticado";
+
+describe("NaoAutenticado", () => {
+ it("deve renderizar o componente 'NaoAutenticado' corretamente", () => {
+ render();
+
+ // Verifique se o texto está presente
+ const textElement = screen.getByText(
+ "Você precisar efetuar login para acessar essa página!",
+ );
+ expect(textElement).toBeTruthy();
+
+ // Verifique se o botão 'Efetuar Login' está presente
+ const linkButtonElement = screen.getByText("Efetuar Login");
+ expect(linkButtonElement).toBeTruthy();
+ });
+});
diff --git a/src/app/__tests__/Publicacao.spec.tsx b/src/app/__tests__/Publicacao.spec.tsx
new file mode 100644
index 00000000..998bb66a
--- /dev/null
+++ b/src/app/__tests__/Publicacao.spec.tsx
@@ -0,0 +1,85 @@
+import React from "react";
+import { render, screen, fireEvent } from "@testing-library/react-native";
+import Publicacao from "../components/Publicacao";
+import { router } from "expo-router";
+
+// Mock do router.push
+jest.mock("expo-router", () => ({
+ router: {
+ push: jest.fn(),
+ },
+}));
+
+const mockItem = {
+ id: 1,
+ titulo: "Título da publicação",
+ categoria: "Categoria da publicação",
+ descricao: "Descrição da publicação",
+ dataHora: "2023-11-04T12:00:00Z",
+ idUsuarioReporte: [],
+ usuario: {
+ id: 1,
+ nome: "Nome do Usuário",
+ foto: "data:image/png;base64,base64-encoded-image-data",
+ },
+};
+
+const mockItemComFoto = {
+ id: 1,
+ titulo: "Título da publicação",
+ categoria: "Categoria da publicação",
+ descricao: "Descrição da publicação",
+ dataHora: "2023-11-04T12:00:00Z",
+ idUsuarioReporte: [],
+ usuario: {
+ id: 1,
+ nome: "Nome do Usuário",
+ foto: "data:image/png;base64,base64-encoded-image-data",
+ },
+};
+
+const mockItemSemFoto = {
+ id: 1,
+ titulo: "Título da publicação",
+ categoria: "Categoria da publicação",
+ descricao: "Descrição da publicação",
+ dataHora: "2023-11-04T12:00:00Z",
+ idUsuarioReporte: [],
+ usuario: {
+ id: 1,
+ nome: "Nome do Usuário",
+ foto: null, // Sem foto
+ },
+};
+
+const hasFoto = (foto: string | null | undefined) => {
+ if (!foto) return false;
+
+ const raw = foto.split("data:image/png;base64,")[1];
+ return raw.length > 0;
+};
+
+describe("Publicacao", () => {
+
+ it("deve formatar o nome corretamente com crop ativado", () => {
+ render();
+
+ // Verifique se o nome foi cortado corretamente
+ const usernameElement = screen.getByText("Nome do Usuário");
+ expect(usernameElement).toBeTruthy();
+ });
+
+ it("deve chamar o router.push com os parâmetros corretos ao clicar na publicação", () => {
+ render();
+
+ // Simula o clique na publicação
+ fireEvent.press(screen.getByText("Título da publicação"));
+
+ // Verifique se o router.push foi chamado com os parâmetros esperados
+ const expectedParams = { ...mockItem, ...mockItem.usuario, id: mockItem.id };
+ expect(router.push).toHaveBeenCalledWith({
+ pathname: "/private/pages/visualizarPublicacao",
+ params: expectedParams,
+ });
+ });
+});
diff --git a/src/app/__tests__/PublicacaoVisualizar.spec.tsx b/src/app/__tests__/PublicacaoVisualizar.spec.tsx
new file mode 100644
index 00000000..8b8cafda
--- /dev/null
+++ b/src/app/__tests__/PublicacaoVisualizar.spec.tsx
@@ -0,0 +1,34 @@
+import React from "react";
+import { render, screen } from "@testing-library/react-native";
+import PublicacaoVisualizar from "../components/PublicacaoVisualizar";
+
+const mockItem = {
+ usuario: {
+ id: 1,
+ nome: "Nome do Usuário",
+ foto: "data:image/png;base64,base64-encoded-image-data",
+ },
+ idUsuarioReporte: [],
+ titulo: "Título da publicação",
+ descricao: "Descrição da publicação",
+ categoria: "Categoria da publicação",
+ dataHora: "2023-11-04T12:00:00Z",
+};
+
+describe("PublicacaoVisualizar", () => {
+ it("não deve renderizar a imagem do usuário quando não há foto", () => {
+ const itemSemFoto = {
+ ...mockItem,
+ usuario: { nome: "Nome do Usuário", foto: null },
+ };
+ render();
+ const imageElement = screen.queryByRole("img");
+ expect(imageElement).toBeNull();
+ });
+
+ it("deve formatar a data corretamente", () => {
+ render();
+ const dateElement = screen.getByText("04/11/2023");
+ expect(dateElement).toBeTruthy();
+ });
+});
diff --git a/src/app/__tests__/UploadImage.spec.tsx b/src/app/__tests__/UploadImage.spec.tsx
new file mode 100644
index 00000000..ff340787
--- /dev/null
+++ b/src/app/__tests__/UploadImage.spec.tsx
@@ -0,0 +1,43 @@
+import React from "react";
+import { render, fireEvent, waitFor } from "@testing-library/react-native";
+import UploadImage from "../components/UploadImage";
+
+// Mock do ImagePicker
+jest.mock("expo-image-picker", () => ({
+ launchImageLibraryAsync: jest.fn().mockResolvedValue({
+ cancelled: false,
+ assets: [{ uri: "mocked-image-uri", base64: "mocked-base64-data" }],
+ }),
+ MediaTypeOptions: {
+ All: "All",
+ },
+}));
+
+describe("UploadImage", () => {
+ it("renderiza corretamente sem imagem inicial", () => {
+ const { queryByTestId } = render( {}} />);
+ const imagemElement = queryByTestId("upload-image-imagem");
+ expect(imagemElement).toBeNull();
+ });
+ it("deve renderizar corretamente", () => {
+ const setFoto = jest.fn();
+ const { toJSON } = render();
+ expect(toJSON()).toMatchSnapshot();
+ });
+
+ it("escolher imagem e chamar setFoto corretamente", async () => {
+ const setFotoMock = jest.fn();
+ const { getByTestId } = render();
+
+ const pickImageButton = getByTestId("upload-image-botao");
+
+ // Simule o clique no botão para acionar a função pickImage
+ fireEvent.press(pickImageButton);
+
+ // Aguarde a resolução da promessa após a seleção da imagem
+ await waitFor(() => {
+ expect(setFotoMock).toHaveBeenCalled();
+ expect(setFotoMock).toHaveBeenCalledWith("mocked-base64-data");
+ });
+ });
+});
diff --git a/src/app/__tests__/UploadImageV2.spec.tsx b/src/app/__tests__/UploadImageV2.spec.tsx
new file mode 100644
index 00000000..3ea234c9
--- /dev/null
+++ b/src/app/__tests__/UploadImageV2.spec.tsx
@@ -0,0 +1,36 @@
+import React from "react";
+import { render, fireEvent } from "@testing-library/react-native";
+import UploadImageV2 from "../components/UploadImageV2";
+
+// Importe isto para garantir que o mock seja definido antes de importar o componente
+jest.mock("expo-image-picker");
+import * as ImagePicker from "expo-image-picker";
+
+const launchImageLibraryAsyncMock = jest.fn().mockResolvedValueOnce({
+ assets: [
+ {
+ uri: "fakeImageUri",
+ base64: "fakeBase64",
+ },
+ ],
+});
+
+ImagePicker.launchImageLibraryAsync = launchImageLibraryAsyncMock;
+
+describe("UploadImageV2", () => {
+ it("deve renderizar corretamente e chamar a função de callback ao selecionar uma imagem", async () => {
+ const setPhotoCallbackMock = jest.fn();
+ const { getByTestId } = render(
+ ,
+ );
+
+ fireEvent.press(getByTestId("uploadImageButton"));
+
+ await Promise.resolve();
+
+ expect(setPhotoCallbackMock).toHaveBeenCalledWith("fakeBase64");
+ });
+});
diff --git a/src/app/__tests__/__snapshots__/UploadImage.spec.tsx.snap b/src/app/__tests__/__snapshots__/UploadImage.spec.tsx.snap
new file mode 100644
index 00000000..83e7385a
--- /dev/null
+++ b/src/app/__tests__/__snapshots__/UploadImage.spec.tsx.snap
@@ -0,0 +1,91 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`UploadImage deve renderizar corretamente 1`] = `
+
+
+
+
+
+
+`;
diff --git a/src/app/__tests__/__snapshots__/index.spec.tsx.snap b/src/app/__tests__/__snapshots__/index.spec.tsx.snap
new file mode 100644
index 00000000..3a1c8db6
--- /dev/null
+++ b/src/app/__tests__/__snapshots__/index.spec.tsx.snap
@@ -0,0 +1,198 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`Home renderiza corretamente 1`] = `
+
+
+
+ Seja um GEROcuidador!
+
+
+
+ Acessar Fórum
+
+
+
+
+ Login
+
+
+
+
+ Cadastre-se
+
+
+
+`;
diff --git a/src/app/__tests__/_layout.spec.tsx b/src/app/__tests__/_layout.spec.tsx
new file mode 100644
index 00000000..6288fa65
--- /dev/null
+++ b/src/app/__tests__/_layout.spec.tsx
@@ -0,0 +1,124 @@
+import React from "react";
+import { render } from "@testing-library/react-native";
+import AppLayout from "../_layout";
+import TabsLayout from "../private/tabs/_layout";
+import Toast from "react-native-toast-message";
+import * as Notifications from "expo-notifications";
+import { iconComponent } from "../private/tabs/_layout"; // Ajuste o caminho conforme necessário
+
+// Mock do Stack
+jest.mock("expo-router", () => ({
+ Stack: jest.fn(({ screenOptions }) => (
+ <>{screenOptions?.header?.()}> // Renderiza o header se ele existir nas screenOptions
+ )),
+ Tabs: jest.fn(({ screenOptions }) => (
+ <>{screenOptions?.header?.()}> // Renderiza o header se ele existir nas screenOptions
+ )),
+ Screen: jest.fn(({ screenOptions }) => (
+ <>{screenOptions?.header?.()}> // Renderiza o header se ele existir nas screenOptions
+ )),
+}));
+
+// Mock do Toast
+jest.mock("react-native-toast-message", () => ({
+ __esModule: true,
+ default: jest.fn(() => null),
+}));
+
+// Mock das Notifications
+jest.mock("expo-notifications", () => ({
+ __esModule: true,
+ addNotificationReceivedListener: jest.fn(),
+ addNotificationResponseReceivedListener: jest.fn(),
+ removeNotificationSubscription: jest.fn(),
+ setNotificationHandler: jest.fn(),
+}));
+
+describe("AppLayout Component", () => {
+
+ beforeEach(() => {
+ jest.spyOn(console, "log").mockImplementation(() => {});
+ });
+
+ afterEach(() => {
+ jest.restoreAllMocks(); // Restaurar o comportamento original
+ });
+
+ it("deve renderizar o layout com Toast e Stack", () => {
+ const { getByTestId } = render();
+
+ // Verifica se o Toast foi renderizado (mesmo que seja um mock)
+ expect(Toast).toHaveBeenCalled();
+
+ // Verifica se o Stack foi renderizado
+ const toastView = getByTestId("toast-view");
+ expect(toastView).toBeTruthy();
+
+ // Verifica se o layout está configurado corretamente
+ const layoutView = getByTestId("layout-view");
+ expect(layoutView).toBeTruthy();
+ });
+
+ it("deve renderizar o header do Stack corretamente", () => {
+ const { getByTestId } = render();
+ const headerView = getByTestId("stack-header");
+ expect(headerView).toBeTruthy();
+ });
+
+ it("deve lidar com notificações corretamente", async () => {
+ const notification = { request: { content: { title: "Test Notification" } } };
+ Notifications.addNotificationReceivedListener.mock.calls[0][0](notification);
+
+ expect(Notifications.addNotificationReceivedListener).toHaveBeenCalled();
+ expect(console.log).toHaveBeenCalledWith(notification);
+
+ const response = { actionIdentifier: "default" };
+ Notifications.addNotificationResponseReceivedListener.mock.calls[0][0](response);
+
+ expect(Notifications.addNotificationResponseReceivedListener).toHaveBeenCalled();
+ expect(console.log).toHaveBeenCalledWith(response);
+ });
+
+ it("deve configurar o handler de notificação corretamente", async () => {
+ render();
+
+ // Verifica se o setNotificationHandler foi chamado
+ expect(Notifications.setNotificationHandler).toHaveBeenCalled();
+
+ // Extrai a configuração passada para setNotificationHandler
+ const handlerConfig = Notifications.setNotificationHandler.mock.calls[0][0];
+
+ // Verifica se handleNotification retorna o objeto esperado
+ const result = await handlerConfig.handleNotification();
+ expect(result).toEqual({
+ shouldShowAlert: true,
+ shouldPlaySound: false,
+ shouldSetBadge: false,
+ });
+ });
+});
+
+describe("TabsLayout", () => {
+ it("deve importar o componente TabsLayout corretamente", () => {
+ expect(TabsLayout).toBeDefined();
+ expect(typeof TabsLayout).toBe('function');
+ });
+
+ it('deve renderizar o componente Tabs e seus filhos', () => {
+ render();
+ });
+
+});
+
+// describe("TabsLayout Component", () => {
+// it("deve renderizar as abas com os ícones corretos", () => {
+// const { getByText } = render();
+
+// // Verifica se os títulos das abas estão presentes
+// expect(getByText("Rotinas")).toBeTruthy();
+// expect(getByText("Registros")).toBeTruthy();
+// expect(getByText("Forum")).toBeTruthy();
+// expect(getByText("Perfil")).toBeTruthy();
+// });
+
+// });
\ No newline at end of file
diff --git a/src/app/__tests__/cadastrarIdoso.spec.tsx b/src/app/__tests__/cadastrarIdoso.spec.tsx
new file mode 100644
index 00000000..f436c7e7
--- /dev/null
+++ b/src/app/__tests__/cadastrarIdoso.spec.tsx
@@ -0,0 +1,282 @@
+import React from "react";
+import { render, fireEvent, act, waitFor } from "@testing-library/react-native";
+import CadastrarIdoso from "../private/pages/cadastrarIdoso";
+import AsyncStorage from "@react-native-async-storage/async-storage";
+import { router, useLocalSearchParams, useRouter } from "expo-router";
+import database from "../db";
+
+jest.mock('../db', () => ({
+ get: jest.fn().mockReturnValue({
+ query: jest.fn(),
+ }),
+}));
+
+// Substituindo o módulo real do expo-router por uma versão mockada
+jest.mock('expo-router', () => ({
+ useLocalSearchParams: jest.fn().mockReturnValue({
+ id: "123",
+ nome: "Nome Teste",
+ foto: null,
+ }),
+ router: {
+ push: jest.fn(), // Mocka o método push para verificações de navegação
+ back: jest.fn(), // Mocka o método back para o caso de não haver a prop route
+ canGoBack: jest.fn().mockReturnValue(true), // Mocka o método canGoBack
+ },
+ useRouter: jest.fn().mockReturnValue({
+ push: jest.fn(), // Mocka novamente o push no caso do uso da função useRouter
+ back: jest.fn(),
+ canGoBack: jest.fn().mockReturnValue(true),
+ replace: jest.fn(),
+ }),
+}));
+
+// Mock AsyncStorage
+jest.mock("@react-native-async-storage/async-storage", () => ({
+ getItem: jest.fn(),
+}));
+
+jest.mock('react-native/Libraries/Components/ToastAndroid/ToastAndroid', () => ({
+ show: jest.fn(),
+}));
+
+describe("CadastrarIdoso component", () => {
+
+ test("renders correctly", () => {
+ (AsyncStorage.getItem as jest.Mock).mockImplementation((key) => {
+ if (key === "usuario") {
+ return Promise.resolve(JSON.stringify({ id: 1 }));
+ } else if (key === "token") {
+ return Promise.resolve("mockedToken");
+ }
+ return Promise.resolve(null);
+ });
+
+ const { getByText } = render();
+
+ const cadastrarButton = getByText("Cadastrar");
+ expect(cadastrarButton).toBeTruthy();
+ });
+
+ it("Salvar sem nome", async () => {
+ const { getByText, getByPlaceholderText, getByTestId } = render(
+ ,
+ );
+
+ const nome = getByPlaceholderText("Nome");
+ const cadastrar = getByText("Cadastrar");
+
+ act(() => {
+ fireEvent.changeText(nome, "");
+ fireEvent.press(cadastrar);
+ });
+ const erroTitulo = getByTestId("Erro-nome");
+
+ expect(erroTitulo.props.children.props.text).toBe("Campo obrigatório!");
+ });
+
+ it("Salvar com nome muito grande", async () => {
+ const { getByText, getByPlaceholderText, getByTestId } = render(
+ ,
+ );
+
+ const titulo = getByPlaceholderText("Nome");
+ const cadastrar = getByText("Cadastrar");
+
+ act(() => {
+ fireEvent.changeText(
+ titulo,
+ "Por que o livro de matemática está sempre triste? Porque tem muitos problemas!",
+ );
+ fireEvent.press(cadastrar);
+ });
+ const erroTitulo = getByText(
+ "O nome completo deve ter no máximo 60 caracteres.",
+ );
+
+ expect(erroTitulo).toBeTruthy();
+ });
+
+ it("Salvar com nome curto", async () => {
+ const { getByText, getByPlaceholderText, getByTestId } = render(
+ ,
+ );
+
+ const nome = getByPlaceholderText("Nome");
+ const cadastrar = getByText("Cadastrar");
+
+ act(() => {
+ fireEvent.changeText(nome, "Jo");
+ fireEvent.press(cadastrar);
+ });
+ const erroTitulo = getByTestId("Erro-nome");
+
+ expect(erroTitulo.props.children.props.text).toBe(
+ "O nome completo deve ter pelo menos 5 caracteres.",
+ );
+ });
+
+ it("Salvar data com formato errado", async () => {
+ const { getByText, getByPlaceholderText, getByTestId } = render(
+ ,
+ );
+
+ const data = getByPlaceholderText("Data de Nascimento");
+ const salvar = getByText("Cadastrar");
+
+ act(() => {
+ fireEvent.changeText(data, "2010");
+ fireEvent.press(salvar);
+ });
+ const erroData = getByTestId("Erro-data");
+
+ expect(erroData.props.children.props.text).toBe(
+ "Data deve ser no formato dd/mm/yyyy!",
+ );
+ });
+
+ it("Salvar com telefone errado", async () => {
+ const { getByText, getByPlaceholderText, getByTestId } = render(
+ ,
+ );
+
+ const data = getByPlaceholderText("Telefone Responsável");
+ const salvar = getByText("Cadastrar");
+
+ act(() => {
+ fireEvent.changeText(data, "55111");
+ fireEvent.press(salvar);
+ });
+ const erroData = getByTestId("Erro-telefone");
+
+ expect(erroData.props.children.props.text).toBe(
+ "Deve estar no formato (XX)XXXXX-XXXX",
+ );
+ });
+
+ // Novo teste para verificar a navegação ao clicar no botão de voltar na tela de cadastrar idoso
+ test("Navega para a tela anterior ao clicar no botão de voltar", async () => {
+ // Renderiza o componente EditarPerfil
+ const { getByTestId } = render();
+
+ // Obtendo o botão de voltar
+ const backButton = getByTestId("back-button-pressable");
+
+ // Simula o clique no botão de voltar
+ fireEvent.press(backButton);
+
+ // Verifica se a função de navegação foi chamada corretamente e se ele navega pra tela de listar idosos
+ await waitFor(() => {
+ // expect(router.push).toHaveBeenCalledWith("/private/pages/listarIdosos");
+ expect(router.push).toHaveBeenCalledWith("/private/pages/listarIdosos");
+ });
+ });
+
+ it("Cadastra um idoso com sucesso quando todos os dados estão válidos", async () => {
+ const { getByText, getByPlaceholderText } = render();
+
+ fireEvent.changeText(getByPlaceholderText("Nome"), "Nome Completo");
+ fireEvent.changeText(getByPlaceholderText("Data de Nascimento"), "01/01/1960");
+ fireEvent.changeText(getByPlaceholderText("Telefone Responsável"), "(11)12345-6789");
+
+ const cadastrarButton = getByText("Cadastrar");
+ fireEvent.press(cadastrarButton);
+
+ await waitFor(() => {
+ const { replace } = useRouter();
+ expect(replace).toHaveBeenCalledWith("/private/pages/listarIdosos");
+ });
+ });
+
+ it("Navega para a tela anterior ao clicar no botão de voltar quando canGoBack é falso", async () => {
+ (router.canGoBack as jest.Mock).mockReturnValue(false);
+
+ const { getByTestId } = render();
+
+ const backButton = getByTestId("back-button-pressable");
+ fireEvent.press(backButton);
+
+ await waitFor(() => {
+ expect(router.push).toHaveBeenCalledWith("/private/pages/listarIdosos");
+ });
+ });
+
+ it("Exibe mensagem de erro ao deixar campos obrigatórios em branco", async () => {
+ const { getByText, getByTestId, getByPlaceholderText } = render();
+
+ const nome = getByPlaceholderText("Nome");
+ const dataNascimento = getByPlaceholderText("Data de Nascimento");
+ const telefone = getByPlaceholderText("Telefone Responsável");
+ const cadastrar = getByText("Cadastrar");
+
+ act(() => {
+ fireEvent.changeText(nome, "");
+ fireEvent.changeText(dataNascimento, "");
+ fireEvent.changeText(telefone, "");
+ fireEvent.press(cadastrar);
+ });
+
+ await waitFor(() => {
+ const erroNome = getByTestId("Erro-nome");
+ const erroData = getByTestId("Erro-data");
+ const erroTelefone = getByTestId("Erro-telefone");
+
+ expect(erroNome.props.children.props.text).toBe("Campo obrigatório!");
+ expect(erroData.props.children.props.text).toBe("Campo obrigatório!");
+ expect(erroTelefone.props.children.props.text).toBe("Campo obrigatório!");
+ });
+ });
+
+ it("Exibe mensagem de erro se o AsyncStorage falhar", async () => {
+ // Spy no console.error para monitorar as chamadas
+ const consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation(() => {});
+
+ // Mock de erro na leitura do AsyncStorage
+ const erroSimulado = new Error("Erro ao ler AsyncStorage");
+ (AsyncStorage.getItem as jest.Mock).mockRejectedValueOnce(erroSimulado);
+
+ const { getByText } = render();
+
+ // Espera que o erro seja capturado corretamente
+ await waitFor(() => {
+ expect(consoleErrorSpy).toHaveBeenCalledWith("Erro ao obter usuário:", erroSimulado);
+ });
+
+ // Restaurar o console.error original após o teste
+ consoleErrorSpy.mockRestore();
+ });
+
+ it("Exibe mensagem de 'Usuário não encontrado' se não houver dados", async () => {
+ // Spy no console.log para monitorar as chamadas
+ const consoleLogSpy = jest.spyOn(console, 'log').mockImplementation(() => {});
+
+ // Mock para retornar null, simulando ausência de dados no AsyncStorage
+ (AsyncStorage.getItem as jest.Mock).mockResolvedValueOnce(null);
+
+ const { getByText } = render();
+
+ // Verifica se a mensagem de usuário não encontrado é exibida
+ await waitFor(() => {
+ expect(consoleLogSpy).toHaveBeenCalledWith("Usuário não encontrado no AsyncStorage.");
+ });
+
+ // Restaurar o comportamento original do console.log após o teste
+ consoleLogSpy.mockRestore();
+ });
+
+ test('Deve acionar a atualização de estado corretamente quando o usuário estiver logado', async () => {
+ const consoleLogSpy = jest.spyOn(console, 'log').mockImplementation(() => {});
+
+ const { getByText } = render();
+
+ await act(async () => {
+ fireEvent.press(getByText('Cadastrar'));
+ });
+
+ await waitFor(() => {
+ expect(console.log).toHaveBeenCalledWith("Usuário logado:", { id: 1 });
+ });
+
+ consoleLogSpy.mockRestore();
+ });
+});
diff --git a/src/app/__tests__/cadastrarMetrica.spec.tsx b/src/app/__tests__/cadastrarMetrica.spec.tsx
new file mode 100644
index 00000000..89708c5d
--- /dev/null
+++ b/src/app/__tests__/cadastrarMetrica.spec.tsx
@@ -0,0 +1,84 @@
+import React from "react";
+import { render, fireEvent, screen, waitFor } from "@testing-library/react-native";
+import CriarMetrica from "../private/pages/cadastrarMetrica";
+import AsyncStorage from "@react-native-async-storage/async-storage";
+import { postMetrica } from "../services/metrica.service";
+import { router } from "expo-router";
+import Toast from "react-native-toast-message";
+
+jest.mock("@react-native-async-storage/async-storage", () => ({
+ getItem: jest.fn(),
+}));
+
+jest.mock("expo-router", () => ({
+ useRouter: () => ({
+ replace: jest.fn(),
+ push: jest.fn(),
+ }),
+}));
+
+jest.mock("../services/metrica.service", () => ({
+ postMetrica: jest.fn(),
+}));
+
+jest.mock("react-native-toast-message", () => ({
+ show: jest.fn(),
+}));
+
+describe("criarMetrica Component", () => {
+
+ beforeEach(() => {
+ jest.clearAllMocks();
+ });
+
+ it("renderiza corretamente e interage com as métricas", async () => {
+ jest
+ .spyOn(require("@react-native-async-storage/async-storage"), "getItem")
+ .mockResolvedValueOnce("mockedToken");
+
+ jest
+ .spyOn(require("@react-native-async-storage/async-storage"), "getItem")
+ .mockResolvedValueOnce(JSON.stringify({ id: 1, nome: "Usuário Mock" }));
+
+ jest
+ .spyOn(require("@react-native-async-storage/async-storage"), "getItem")
+ .mockResolvedValueOnce(
+ JSON.stringify({ id: 2, nome: "Idoso Mock", foto: null }),
+ );
+
+ const { getByText } = render();
+ expect(getByText("Selecione a métrica a ser cadastrada")).toBeTruthy();
+ });
+
+ it("mostrar mensagem quando uma métrica é registrada com sucesso", async () => {
+ const router = require("expo-router").useRouter();
+
+ AsyncStorage.getItem
+ .mockResolvedValueOnce("mockedToken")
+ .mockResolvedValueOnce(JSON.stringify({ id: 1, nome: "Usuário Mock" }))
+ .mockResolvedValueOnce(JSON.stringify({ id: 2, nome: "Idoso Mock", foto: null }));
+
+ postMetrica.mockResolvedValue({
+ message: "Métrica cadastrada com sucesso!",
+ });
+
+ const toastShow = jest.spyOn(Toast, "show").mockImplementation(() => {});
+
+ render();
+
+ await waitFor(() => {
+ expect(screen.getByText("Frequência Cardíaca")).toBeTruthy();
+ });
+
+ fireEvent.press(screen.getByText("Frequência Cardíaca"));
+
+ await waitFor(() => {
+ expect(toastShow).toHaveBeenCalledWith({
+ type: "success",
+ text1: "Sucesso!",
+ text2: "Métrica cadastrada com sucesso!",
+ });
+ });
+ });
+
+});
diff --git a/src/app/__tests__/cadastrarRotina.spec.tsx b/src/app/__tests__/cadastrarRotina.spec.tsx
new file mode 100644
index 00000000..e910cbb6
--- /dev/null
+++ b/src/app/__tests__/cadastrarRotina.spec.tsx
@@ -0,0 +1,205 @@
+import React from 'react';
+import { render, fireEvent, act, screen, waitFor } from '@testing-library/react-native';
+import CadastrarRotina from '../private/pages/cadastrarRotina'; // Adjust path as needed
+import Toast from 'react-native-toast-message';
+import * as router from 'expo-router';
+import AsyncStorage from '@react-native-async-storage/async-storage';
+
+
+jest.mock('react-native-toast-message', () => ({
+ show: jest.fn(),
+}));
+
+jest.mock('expo-router', () => ({
+ router: {
+ replace: jest.fn(),
+ },
+}));
+
+jest.mock('@react-native-async-storage/async-storage', () => ({
+ getItem: jest.fn().mockResolvedValue(JSON.stringify({ id: '1', nome: 'Idoso Teste' })),
+}));
+
+describe('CadastrarRotina Component', () => {
+ beforeEach(() => {
+ jest.clearAllMocks();
+ });
+
+ // Test for succesfull register of routine
+ it('registers a routine if all values are valid', async () => {
+ const { getByPlaceholderText, getByText, queryByText } = render();
+
+ fireEvent.changeText(getByPlaceholderText('Adicionar título'), 'Minha Rotina');
+ fireEvent.changeText(getByPlaceholderText('Data da rotina'), '25/09/2024');
+ fireEvent.changeText(getByPlaceholderText('Horário de início'), '10:30');
+
+ fireEvent.press(getByText('Categoria'));
+
+ fireEvent.press(getByText('Medicamentos'));
+
+ fireEvent.changeText(getByPlaceholderText('Descrição'), 'Descrição da rotina');
+ fireEvent.press(getByText('Salvar'));
+
+ await waitFor(() => {
+ expect(Toast.show).toHaveBeenCalledWith({
+ type: 'success',
+ text1: 'Sucesso!',
+ text2: 'Rotina criada',
+ });
+ });
+
+ expect(router.router.replace).toHaveBeenCalledWith({
+ pathname: 'private/tabs/rotinas',
+ });
+ });
+
+
+ // Test for required title field
+ test('should show error if title is empty', async () => {
+ const { getByPlaceholderText, getByText, queryAllByText } = render();
+ const inputField = getByPlaceholderText('Adicionar título');
+ const saveButton = getByText('Salvar');
+
+ fireEvent.changeText(inputField, '');
+ fireEvent.press(saveButton);
+
+ const errorMessages = queryAllByText('Campo obrigatório!');
+ expect(errorMessages.length).toBeGreaterThan(0);
+ });
+
+ it("should show error if title is too long", async () => {
+ const { getByText, getByPlaceholderText, getByTestId } = render();
+
+ const titulo = getByPlaceholderText("Adicionar título");
+ const salvar = getByText("Salvar");
+
+ act(() => {
+ fireEvent.changeText(titulo, "A".repeat(101));
+ fireEvent.press(salvar);
+ });
+
+ const erroTitulo = getByTestId("Erro-titulo");
+ expect(erroTitulo.props.children.props.text).toBe("O título deve ter no máximo 100 caracteres.");
+ });
+
+ // Test that input field and button render correctly
+ test('should render input fields and save button', () => {
+ const { getByPlaceholderText, getByText } = render();
+ expect(getByPlaceholderText('Adicionar título')).toBeTruthy();
+ expect(getByText('Salvar')).toBeTruthy();
+ });
+
+ // Test to check if error is removed when valid input is given
+ test('should hide error message when input is corrected', async () => {
+ const { getByPlaceholderText, getByText, queryByText, queryAllByText } = render();
+ const inputField = getByPlaceholderText('Adicionar título');
+ const saveButton = getByText('Salvar');
+
+ fireEvent.changeText(inputField, '');
+ fireEvent.press(saveButton);
+
+ const errorMessages1 = queryAllByText('Campo obrigatório!');
+ expect(errorMessages1.length).toBeGreaterThan(0);
+
+ fireEvent.changeText(inputField, 'Título válido');
+ fireEvent.press(saveButton);
+
+ const errorMessages = queryAllByText('Campo obrigatório!');
+ expect(errorMessages.length).toBeGreaterThan(0);
+ });
+
+ // Test for wrong format "data" field validation
+ it("should show error if date has the wrong format", async () => {
+ const { getByText, getByPlaceholderText, getByTestId } = render();
+
+ const data = getByPlaceholderText("Data da rotina");
+ const salvar = getByText("Salvar");
+
+ act(() => {
+ fireEvent.changeText(data, "2010");
+ fireEvent.press(salvar);
+ });
+
+ const erroData = getByTestId("Erro-data");
+ expect(erroData.props.children.props.text).toBe("Data deve ser no formato dd/mm/yyyy!");
+ });
+
+ // Test for empty "data" field validation
+ it('should show error if date is empty', async () => {
+ render();
+
+ const dataInput = screen.getByPlaceholderText('Data da rotina');
+ const saveButton = screen.getByText('Salvar');
+
+ fireEvent.changeText(dataInput, '');
+ fireEvent.press(saveButton);
+
+ await waitFor(() => {
+ const erroData = screen.getByTestId('Erro-data');
+ expect(erroData.props.children.props.text).toBe('Campo obrigatório!');
+ });
+ });
+
+ // Test for wrong format "hora" field validation
+ it("should show error if time has the wrong format", async () => {
+ const { getByText, getByPlaceholderText, getByTestId } = render();
+
+ const hora = getByPlaceholderText("Horário de início");
+ const salvar = getByText("Salvar");
+
+ act(() => {
+ fireEvent.changeText(hora, "125:00");
+ fireEvent.press(salvar);
+ });
+
+ const erroHora = getByTestId("Erro-hora");
+ expect(erroHora.props.children.props.text).toBe("Hora deve ser no formato hh:mm!");
+ });
+
+ // Test for empty "hora" field validation
+ it("should show error if time is empty", async () => {
+ const { getByText, getByPlaceholderText, getByTestId } = render();
+
+ const hora = getByPlaceholderText("Horário de início");
+ const salvar = getByText("Salvar");
+
+ act(() => {
+ fireEvent.changeText(hora, '');
+ fireEvent.press(salvar);
+ });
+
+ const erroHora = getByTestId("Erro-hora");
+ expect(erroHora.props.children.props.text).toBe("Campo obrigatório!");
+ });
+
+ // Test for too long "descrição" field validation
+ it("should show error if description is too long", async () => {
+ const { getByText, getByPlaceholderText, getByTestId } = render();
+
+ const descricao = getByPlaceholderText("Descrição");
+ const salvar = getByText("Salvar");
+
+ act(() => {
+ fireEvent.changeText(descricao, "A".repeat(301));
+ fireEvent.press(salvar);
+ });
+
+ const erroDescricao = getByTestId("Erro-descricao");
+ expect(erroDescricao.props.children.props.text).toBe("A descrição deve ter no máximo 300 caracteres.");
+ });
+
+ // Test for empty "categoria" field validation
+ it("should show error if a category is not selected", async () => {
+ const { getByText, getByTestId } = render();
+
+ const salvar = getByText("Salvar");
+
+ act(() => {
+ fireEvent.press(salvar);
+ });
+
+ const erroCategoria = getByTestId("Erro-categoria");
+ expect(erroCategoria.props.children.props.text).toBe("Campo obrigatório!");
+ });
+
+});
diff --git a/src/app/__tests__/cadastro.spec.tsx b/src/app/__tests__/cadastro.spec.tsx
new file mode 100644
index 00000000..bbec55b6
--- /dev/null
+++ b/src/app/__tests__/cadastro.spec.tsx
@@ -0,0 +1,155 @@
+/* eslint-disable @typescript-eslint/no-var-requires */
+import React from "react";
+import { render, fireEvent, waitFor } from "@testing-library/react-native";
+import Cadastro from "../public/cadastro";
+
+jest.mock("../services/user.service", () => ({
+ postUser: jest.fn(),
+}));
+
+describe("Cadastro Component", () => {
+ beforeEach(() => {
+ jest.clearAllMocks();
+ });
+
+ it("renderiza corretamente", async () => {
+ await waitFor(() => render());
+ });
+
+ it("deve chamar a função 'postUser' quando não há erros nos campos", async () => {
+ require("../services/user.service").postUser.mockResolvedValue({
+ message: "Sucesso!",
+ });
+
+ await waitFor(() => {
+ const { getByPlaceholderText, getByText } = render();
+
+ const nomeInput = getByPlaceholderText("Nome completo");
+ const emailInput = getByPlaceholderText("Email");
+ const confirmEmailInput = getByPlaceholderText("Confirme seu Email");
+ const passwordInput = getByPlaceholderText("Senha");
+ const confirmPasswordInput = getByPlaceholderText("Confirme sua senha");
+ const cadastrarButton = getByText("Cadastrar");
+
+ fireEvent.changeText(nomeInput, "Seu Nome");
+ fireEvent.changeText(emailInput, "seuemail@gmail.com");
+ fireEvent.changeText(confirmEmailInput, "seuemail@gmail.com");
+ fireEvent.changeText(passwordInput, "suasenha");
+ fireEvent.changeText(confirmPasswordInput, "suasenha");
+
+ fireEvent.press(cadastrarButton);
+
+ expect(require("../services/user.service").postUser).toHaveBeenCalledWith(
+ {
+ nome: "Seu Nome",
+ email: "seuemail@gmail.com",
+ senha: "suasenha",
+ foto: "",
+ },
+ );
+ });
+ });
+
+ it("não deve chamar a função 'postUser' quando há específicos erros nos campos", async () => {
+ await waitFor(() => {
+ const { getByPlaceholderText, getByText } = render();
+ const cadastrarButton = getByText("Cadastrar");
+ const nomeInput = getByPlaceholderText("Nome completo");
+ const emailInput = getByPlaceholderText("Email");
+ const confirmEmailInput = getByPlaceholderText("Confirme seu Email");
+ const passwordInput = getByPlaceholderText("Senha");
+ const confirmPasswordInput = getByPlaceholderText("Confirme sua senha");
+
+ fireEvent.changeText(nomeInput, "a");
+ fireEvent.changeText(emailInput, "seuemail");
+ fireEvent.changeText(confirmEmailInput, "seuemail@gmail.com");
+ fireEvent.changeText(passwordInput, "1");
+ fireEvent.changeText(confirmPasswordInput, "2");
+
+ fireEvent.press(cadastrarButton);
+
+ expect(
+ require("../services/user.service").postUser,
+ ).not.toHaveBeenCalledWith({
+ nome: "Seu Nome",
+ email: "seuemail@gmail.com",
+ senha: "suasenha",
+ foto: "",
+ });
+ });
+ });
+
+ it("não deve chamar a função 'postUser' quando há erros nos campos", async () => {
+ await waitFor(() => {
+ const { getByText } = render();
+ const cadastrarButton = getByText("Cadastrar");
+
+ fireEvent.press(cadastrarButton);
+
+ expect(
+ require("../services/user.service").postUser,
+ ).not.toHaveBeenCalledWith({
+ nome: "Seu Nome",
+ email: "seuemail@gmail.com",
+ senha: "suasenha",
+ foto: "",
+ });
+ });
+ });
+
+ it("não deve chamar a função 'postUser' quando há erros específicos de nome nos campos", async () => {
+ await waitFor(() => {
+ const { getByText, getByPlaceholderText } = render();
+ const cadastrarButton = getByText("Cadastrar");
+ const nomeInput = getByPlaceholderText("Nome completo");
+ fireEvent.changeText(
+ nomeInput,
+ "nome grande nome grandenome grandenome grandenome grandenome grandenome grande",
+ );
+
+ fireEvent.press(cadastrarButton);
+
+ expect(
+ require("../services/user.service").postUser,
+ ).not.toHaveBeenCalled();
+ });
+ });
+
+ it("deve exibir o Toast de erro", async () => {
+ require("../services/user.service").postUser.mockRejectedValue({
+ message: "Erro!",
+ });
+
+ const { getByPlaceholderText, getByText } = render();
+ const nomeInput = getByPlaceholderText("Nome completo");
+ const emailInput = getByPlaceholderText("Email");
+ const confirmEmailInput = getByPlaceholderText("Confirme seu Email");
+ const passwordInput = getByPlaceholderText("Senha");
+ const confirmPasswordInput = getByPlaceholderText("Confirme sua senha");
+ const cadastrarButton = getByText("Cadastrar");
+
+ fireEvent.changeText(nomeInput, "Seu Nome");
+ fireEvent.changeText(emailInput, "seuemail@gmail.com");
+ fireEvent.changeText(confirmEmailInput, "seuemail@gmail.com");
+ fireEvent.changeText(passwordInput, "suasenha");
+ fireEvent.changeText(confirmPasswordInput, "senhaincorreta");
+
+ fireEvent.press(cadastrarButton);
+
+ // Adicione asserções para verificar se o Toast de erro é exibido
+ });
+
+ it("deve alterar o estado do escondeSenha", async () => {
+ await waitFor(() => {
+ const { getByTestId } = render();
+ const escondeSenha = getByTestId("escondeSenhaIcon");
+ const confirmaEscondeSenha = getByTestId("escondeConfirmaSenhaIcon");
+
+ fireEvent.press(escondeSenha);
+ fireEvent.press(confirmaEscondeSenha);
+
+ expect(escondeSenha).toBeDefined();
+ expect(confirmaEscondeSenha).toBeDefined();
+ });
+ });
+});
diff --git a/src/app/__tests__/cardMetrica.spec.tsx b/src/app/__tests__/cardMetrica.spec.tsx
new file mode 100644
index 00000000..c257ecf8
--- /dev/null
+++ b/src/app/__tests__/cardMetrica.spec.tsx
@@ -0,0 +1,208 @@
+import React from 'react';
+import { render, waitFor } from '@testing-library/react-native';
+import CardMetrica from '../components/CardMetrica';
+import { EMetricas, IMetrica } from '../interfaces/metricas.interface';
+import database from '../db';
+
+// Mock da função de consulta ao banco de dados
+jest.mock('../db', () => ({
+ get: jest.fn(() => ({
+ query: jest.fn().mockReturnValue({
+ fetch: jest.fn(() => Promise.resolve([{ valor: 80, dataHora: '2024-09-18T12:00:00+00:00' }])),
+ }),
+ })),
+}));
+
+describe('CardMetrica Component', () => {
+ const mockItemFrequencia: IMetrica = {
+ id: 1,
+ idIdoso: 123,
+ categoria: EMetricas.FREQ_CARDIACA,
+ };
+
+ const mockItemGlicemia: IMetrica = {
+ id: 1,
+ idIdoso: 123,
+ categoria: EMetricas.GLICEMIA,
+ };
+
+ const mockItemPeso: IMetrica = {
+ id: 1,
+ idIdoso: 123,
+ categoria: EMetricas.PESO,
+ };
+
+ const mockItemPressao: IMetrica = {
+ id: 1,
+ idIdoso: 123,
+ categoria: EMetricas.PRESSAO_SANGUINEA,
+ };
+
+ const mockItemSaturacao: IMetrica = {
+ id: 1,
+ idIdoso: 123,
+ categoria: EMetricas.SATURACAO_OXIGENIO,
+ };
+
+ const mockItemTemperatura: IMetrica = {
+ id: 1,
+ idIdoso: 123,
+ categoria: EMetricas.TEMPERATURA,
+ };
+
+ const mockItemHoras: IMetrica = {
+ id: 1,
+ idIdoso: 123,
+ categoria: EMetricas.HORAS_DORMIDAS,
+ };
+
+ const mockItemAltura: IMetrica = {
+ id: 1,
+ idIdoso: 123,
+ categoria: EMetricas.ALTURA,
+ };
+
+ const mockItemIMC: IMetrica = {
+ id: 1,
+ idIdoso: 123,
+ categoria: EMetricas.IMC,
+ };
+
+ const mockItemHidratacao: IMetrica = {
+ id: 1,
+ idIdoso: 123,
+ categoria: EMetricas.HIDRATACAO,
+ };
+
+ it('renderiza corretamente com um valor de métrica FREQ_CARDIACA', async () => {
+ const { getByText } = render();
+
+ await waitFor(() => {
+ expect(getByText('80')).toBeTruthy();
+ expect(getByText('bpm')).toBeTruthy();
+ });
+ },
+ 10000);
+
+ it('renderiza corretamente com um valor de métrica GLICEMIA', async () => {
+ const { getByText } = render();
+
+ await waitFor(() => {
+ expect(getByText('80')).toBeTruthy();
+ expect(getByText('mg/dL')).toBeTruthy();
+ });
+ });
+
+ it('renderiza corretamente com um valor de métrica PESO', async () => {
+ const { getByText } = render();
+
+ await waitFor(() => {
+ expect(getByText('80')).toBeTruthy();
+ expect(getByText('kg')).toBeTruthy();
+ });
+ });
+
+ it('renderiza corretamente com um valor de métrica PRESSAO_SANGUINEA', async () => {
+ const { getByText } = render();
+
+ await waitFor(() => {
+ expect(getByText('80')).toBeTruthy();
+ expect(getByText('mmHg')).toBeTruthy();
+ });
+ });
+
+ it('renderiza corretamente com um valor de métrica SATURACAO_OXIGENIO', async () => {
+ const { getByText } = render();
+
+ await waitFor(() => {
+ expect(getByText('80')).toBeTruthy();
+ expect(getByText('%')).toBeTruthy();
+ });
+ });
+
+ it('renderiza corretamente com um valor de métrica TEMPERATURA', async () => {
+ const { getByText } = render();
+
+ await waitFor(() => {
+ expect(getByText('80')).toBeTruthy();
+ expect(getByText('°C')).toBeTruthy();
+ });
+ });
+
+ it('renderiza corretamente com um valor de métrica HORAS_DORMIDAS', async () => {
+ const { getByText } = render();
+
+ await waitFor(() => {
+ expect(getByText('80')).toBeTruthy();
+ expect(getByText('h')).toBeTruthy();
+ });
+ });
+
+ it('renderiza corretamente com um valor de métrica ALTURA', async () => {
+ const { getByText } = render();
+
+ await waitFor(() => {
+ expect(getByText('80')).toBeTruthy();
+ expect(getByText('cm')).toBeTruthy();
+ });
+ });
+
+ it('renderiza corretamente com um valor de métrica IMC', async () => {
+ const { getByText } = render();
+
+ await waitFor(() => {
+ expect(getByText('80')).toBeTruthy();
+ expect(getByText('kg/m²')).toBeTruthy();
+ });
+ });
+
+ it('renderiza corretamente com um valor de métrica HIDRATACAO', async () => {
+ const { getByText } = render();
+
+ await waitFor(() => {
+ expect(getByText('80')).toBeTruthy();
+ expect(getByText('ml')).toBeTruthy();
+ });
+ });
+
+ it('renderiza corretamente quando não há valor de métrica', async () => {
+ // Simular o retorno vazio para não ter valores de métrica
+ (database.get as jest.Mock).mockReturnValueOnce({
+ query: jest.fn().mockReturnValue({
+ fetch: jest.fn(() => Promise.resolve([])),
+ }),
+ });
+
+ const { getByText } = render();
+
+ await waitFor(() => {
+ expect(getByText('Nenhum valor cadastrado')).toBeTruthy();
+ });
+ });
+
+ it('mostra a data e a hora corretas', async () => {
+ const { getByText } = render();
+
+ await waitFor(() => {
+ expect(getByText('18/09/2024 às 12:00')).toBeTruthy();
+ });
+ });
+
+ it('loga um erro no console quando ocorre uma exceção', async () => {
+ const consoleLogSpy = jest.spyOn(console, 'log').mockImplementation(() => {});
+
+ (database.get as jest.Mock).mockReturnValueOnce({
+ query: jest.fn().mockReturnValue({
+ fetch: jest.fn(() => Promise.reject(new Error('Erro de banco de dados'))),
+ }),
+ });
+
+ render();
+
+ await waitFor(() => {
+ expect(consoleLogSpy).toHaveBeenCalledWith("Erro ao buscar valor de metrica:", expect.any(Error));
+ });
+
+ consoleLogSpy.mockRestore(); // Restaurar a implementação original
+ });
+});
diff --git a/src/app/__tests__/cardRotina.spec.tsx b/src/app/__tests__/cardRotina.spec.tsx
new file mode 100644
index 00000000..48b6cbd6
--- /dev/null
+++ b/src/app/__tests__/cardRotina.spec.tsx
@@ -0,0 +1,101 @@
+import React from "react";
+import { act, render, fireEvent } from "@testing-library/react-native";
+import AsyncStorage from "@react-native-async-storage/async-storage";
+import "@react-native-async-storage/async-storage/jest/async-storage-mock";
+import CardRotina from "../components/CardRotina";
+import { ECategoriaRotina, EDiasSemana } from "../interfaces/rotina.interface";
+
+jest.mock("expo-router", () => ({
+ router: {
+ push: jest.fn(),
+ },
+}));
+
+// Usando timers falsos para simular a passagem do tempo
+jest.useFakeTimers();
+
+const rotina = {
+ id: "1",
+ titulo: "Título de Exemplo",
+ idIdoso: "123",
+ categoria: ECategoriaRotina.ALIMENTACAO,
+ descricao: "Descrição de Exemplo",
+ dataHoraConcluidos: [],
+ dataHora: new Date(),
+ dias: [EDiasSemana.Domingo],
+ notificacao: true,
+};
+
+const rotina_exercicios = {
+ id: "2",
+ titulo: "Card exercicio",
+ idIdoso: "456",
+ categoria: ECategoriaRotina.EXERCICIOS,
+ descricao: "caminhada",
+ dataHoraConcluidos: [],
+ dataHora: new Date(),
+ dias: [EDiasSemana.Domingo],
+ notificacao: true,
+};
+
+const rotina_medicamentos = {
+ id: "3",
+ titulo: "Card medicamento",
+ idIdoso: "789",
+ categoria: ECategoriaRotina.MEDICAMENTO,
+ descricao: "dipirona",
+ dataHoraConcluidos: [],
+ dataHora: new Date(),
+ dias: [EDiasSemana.Domingo],
+ notificacao: true,
+};
+
+describe("Teste Componente Card Rotina", () => {
+ act(() => {
+ test("Renderiza corretamente", () => {
+ const { getByText } = render(
+ ,
+ );
+ expect(getByText("Título de Exemplo")).toBeTruthy();
+ expect(getByText("Descrição de Exemplo")).toBeTruthy();
+ });
+ test("Renderiza corretamente Card de exercicios", () => {
+ const { getByText } = render(
+ ,
+ );
+ expect(getByText("Card exercicio")).toBeTruthy();
+ expect(getByText("caminhada")).toBeTruthy();
+ });
+ test("Renderiza corretamente Card de Medicamentos", () => {
+ const { getByText } = render(
+ ,
+ );
+ expect(getByText("Card medicamento")).toBeTruthy();
+ expect(getByText("dipirona")).toBeTruthy();
+ });
+
+ test("Verifica se debounceConcluido funciona corretamente", () => {
+
+ const { getByTestId, queryByTestId } = render(
+
+ );
+
+ const checkbox = getByTestId("checkbox");
+
+ // Inicialmente, o ícone de check não deve estar visível
+ expect(queryByTestId("check-icon")).toBeNull();
+
+ // Simulando o clique no Pressable
+ fireEvent.press(checkbox);
+
+ // Avança o tempo para que o debounce seja executado
+ act(() => {
+ jest.runAllTimers();
+ });
+
+ // Após o clique, o ícone de check deve aparecer
+ expect(queryByTestId("check-icon")).toBeTruthy();
+ });
+
+ });
+});
diff --git a/src/app/__tests__/cardValorMetrica.spec.tsx b/src/app/__tests__/cardValorMetrica.spec.tsx
new file mode 100644
index 00000000..7d10f5fa
--- /dev/null
+++ b/src/app/__tests__/cardValorMetrica.spec.tsx
@@ -0,0 +1,182 @@
+import React from "react";
+import { render } from "@testing-library/react-native";
+import CardValorMetrica from "../components/CardValorMetrica";
+import { EMetricas } from "../interfaces/metricas.interface";
+
+const mockItem = {
+ categoria: EMetricas.FREQ_CARDIACA,
+ id: 1,
+ valor: "80",
+ dataHora: "2023-01-01T12:30:00",
+ idMetrica: 123,
+};
+
+const mockItem1 = {
+ categoria: EMetricas.GLICEMIA,
+ id: 1,
+ valor: "80",
+ dataHora: "2023-01-01T12:30:00",
+ idMetrica: 123,
+};
+
+const mockItem2 = {
+ categoria: EMetricas.PESO,
+ id: 1,
+ valor: "80",
+ dataHora: "2023-01-01T12:30:00",
+ idMetrica: 123,
+};
+
+const mockItem3 = {
+ categoria: EMetricas.PRESSAO_SANGUINEA,
+ id: 1,
+ valor: "80",
+ dataHora: "2023-01-01T12:30:00",
+ idMetrica: 123,
+};
+
+const mockItem4 = {
+ categoria: EMetricas.SATURACAO_OXIGENIO,
+ id: 1,
+ valor: "80",
+ dataHora: "2023-01-01T12:30:00",
+ idMetrica: 123,
+};
+
+const mockItem5 = {
+ categoria: EMetricas.TEMPERATURA,
+ id: 1,
+ valor: "80",
+ dataHora: "2023-01-01T12:30:00",
+ idMetrica: 123,
+};
+
+const mockItem6 = {
+ categoria: EMetricas.ALTURA,
+ id: 1,
+ valor: "80",
+ dataHora: "2023-01-01T12:30:00",
+ idMetrica: 123,
+};
+
+const mockItem7 = {
+ categoria: EMetricas.HORAS_DORMIDAS,
+ id: 1,
+ valor: "80",
+ dataHora: "2023-01-01T12:30:00",
+ idMetrica: 123,
+};
+
+const mockItem8 = {
+ categoria: EMetricas.IMC,
+ id: 1,
+ valor: "80",
+ dataHora: "2023-01-01T12:30:00",
+ idMetrica: 123,
+};
+
+const mockItem9 = {
+ categoria: EMetricas.HIDRATACAO,
+ id: 1,
+ valor: "80",
+ dataHora: "2023-01-01T12:30:00",
+ idMetrica: 123,
+};
+
+describe("CardValorMetrica Component", () => {
+ it("renderiza corretamente", () => {
+ const { getByText } = render();
+
+ expect(getByText("80")).toBeDefined();
+ expect(getByText("bpm")).toBeDefined();
+ expect(getByText("01/01/2023")).toBeDefined();
+ expect(getByText("12:30")).toBeDefined();
+ });
+
+ it("exibe as unidades corretas 1", () => {
+ const { getByText } = render();
+
+ if (mockItem1.categoria === EMetricas.GLICEMIA) {
+ expect(getByText("mg/dL")).toBeTruthy();
+ } else {
+ expect(() => getByText("mg/dL")).toThrow();
+ }
+ });
+
+ it("exibe as unidades corretas 2", () => {
+ const { getByText } = render();
+
+ if (mockItem2.categoria === EMetricas.PESO) {
+ expect(getByText("kg")).toBeTruthy();
+ } else {
+ expect(() => getByText("kg")).toThrow();
+ }
+ });
+ it("exibe as unidades corretas 3", () => {
+ const { getByText } = render();
+
+ if (mockItem3.categoria === EMetricas.PRESSAO_SANGUINEA) {
+ expect(getByText("mmHg")).toBeTruthy();
+ } else {
+ expect(() => getByText("mmHg")).toThrow();
+ }
+ });
+ it("exibe as unidades corretas 4", () => {
+ const { getByText } = render();
+
+ if (mockItem4.categoria === EMetricas.SATURACAO_OXIGENIO) {
+ expect(getByText("%")).toBeTruthy();
+ } else {
+ expect(() => getByText("%")).toThrow();
+ }
+ });
+
+ it("exibe as unidades corretas 5", () => {
+ const { getByText } = render();
+
+ if (mockItem5.categoria === EMetricas.TEMPERATURA) {
+ expect(getByText("°C")).toBeTruthy();
+ } else {
+ expect(() => getByText("°C")).toThrow();
+ }
+ });
+
+ it("exibe as unidades corretas 6", () => {
+ const { getByText } = render();
+
+ if (mockItem6.categoria === EMetricas.ALTURA) {
+ expect(getByText("cm")).toBeTruthy();
+ } else {
+ expect(() => getByText("cm")).toThrow();
+ }
+ });
+
+ it("exibe as unidades corretas 7", () => {
+ const { getByText } = render();
+
+ if (mockItem7.categoria === EMetricas.HORAS_DORMIDAS) {
+ expect(getByText("h")).toBeTruthy();
+ } else {
+ expect(() => getByText("h")).toThrow();
+ }
+ });
+
+ it("exibe as unidades corretas 8", () => {
+ const { getByText } = render();
+
+ if (mockItem8.categoria === EMetricas.IMC) {
+ expect(getByText("kg/m²")).toBeTruthy();
+ } else {
+ expect(() => getByText("cmkg/m²")).toThrow();
+ }
+ });
+
+ it("renderiza corretamente HIDRATACAO", () => {
+ const { getByText } = render();
+
+ expect(getByText("80")).toBeDefined();
+ expect(getByText("ml")).toBeDefined();
+ expect(getByText("01/01/2023")).toBeDefined();
+ expect(getByText("12:30")).toBeDefined();
+ });
+});
diff --git a/src/app/__tests__/criaPublicacao.spec.tsx b/src/app/__tests__/criaPublicacao.spec.tsx
new file mode 100644
index 00000000..8cf17d60
--- /dev/null
+++ b/src/app/__tests__/criaPublicacao.spec.tsx
@@ -0,0 +1,99 @@
+import React from 'react';
+import { render, fireEvent, waitFor } from '@testing-library/react-native';
+import CriaPublicacao from '../private/pages/criaPublicacao'; // Corrija o caminho conforme necessário
+import Toast from 'react-native-toast-message';
+
+jest.mock('react-native-toast-message', () => ({
+ show: jest.fn(),
+}));
+
+jest.mock('@react-native-async-storage/async-storage', () => ({
+ getItem: jest
+ .fn()
+ .mockResolvedValueOnce(JSON.stringify({ id: 1 }))
+ .mockResolvedValueOnce('token123')
+ .mockResolvedValue(JSON.stringify({ id: 1 })), // Mock para chamadas subsequentes
+}));
+
+describe('CriaPublicacao', () => {
+ beforeEach(() => {
+ jest.clearAllMocks();
+ });
+
+ it('deve exibir erros de validação quando Título estiver vazio', async () => {
+ const { getByText, getByPlaceholderText } = render();
+
+ // Simular clique no botão Publicar sem preencher campos
+ fireEvent.changeText(getByPlaceholderText('Título'), '');
+ fireEvent.changeText(getByPlaceholderText('Descrição'), 'Teste');
+
+ // Simular a seleção da categoria usando o texto do placeholder
+ fireEvent.press(getByText('Categoria')); // Abre a lista de categorias
+ fireEvent.press(getByText('Geral')); // Seleciona "Geral"
+
+ fireEvent.press(getByText('Publicar'));
+
+ await waitFor(() => {
+ expect(getByText('Campo obrigatório!')).toBeTruthy(); // Verifica erro no campo Título
+ });
+ });
+
+ it('deve exibir erros de validação quando Descrição estiver vazio', async () => {
+ const { getByText, getByPlaceholderText } = render();
+
+ // Simular clique no botão Publicar sem preencher campos
+ fireEvent.changeText(getByPlaceholderText('Título'), 'Teste');
+ fireEvent.changeText(getByPlaceholderText('Descrição'), '');
+
+ // Simular a seleção da categoria usando o texto do placeholder
+ fireEvent.press(getByText('Categoria'));
+ fireEvent.press(getByText('Geral'));
+
+ fireEvent.press(getByText('Publicar'));
+
+ await waitFor(() => {
+ expect(getByText('Campo Obrigatório!')).toBeTruthy(); // Verifica erro no campo Descrição
+ });
+ });
+
+ it('não deve exibir erros de validação quando Título, Descrição e Categoria estão preenchidos', async () => {
+ const { getByText, getByPlaceholderText, queryByText } = render();
+
+ // Preencher campos corretamente
+ fireEvent.changeText(getByPlaceholderText('Título'), 'Título de teste');
+ fireEvent.changeText(getByPlaceholderText('Descrição'), 'Descrição de teste');
+
+ // Simular a seleção da categoria usando o texto do placeholder
+ fireEvent.press(getByText('Categoria'));
+ fireEvent.press(getByText('Geral'));
+
+ fireEvent.press(getByText('Publicar'));
+
+ await waitFor(() => {
+ // Verificar que os erros de validação não estão mais presentes
+ expect(queryByText('Campo obrigatório!')).toBeNull();
+ });
+ });
+
+ it('deve exibir mensagem de erro para publicação', async () => {
+ const { getByText, getByPlaceholderText } = render();
+
+ // Preencher campos corretamente
+ fireEvent.changeText(getByPlaceholderText('Título'), 'Título de teste');
+ fireEvent.changeText(getByPlaceholderText('Descrição'), 'Descrição de teste');
+
+ // Simular a seleção da categoria usando o texto do placeholder
+ fireEvent.press(getByText('Categoria'));
+ fireEvent.press(getByText('Geral'));
+
+ fireEvent.press(getByText('Publicar'));
+
+ await waitFor(() => {
+ expect(Toast.show).toHaveBeenCalledWith({
+ type: 'error',
+ text1: 'Erro!',
+ text2: 'fetch failed',
+ });
+ });
+ });
+});
diff --git a/src/app/__tests__/editarIdoso.spec.tsx b/src/app/__tests__/editarIdoso.spec.tsx
new file mode 100644
index 00000000..71024cd5
--- /dev/null
+++ b/src/app/__tests__/editarIdoso.spec.tsx
@@ -0,0 +1,170 @@
+import React from 'react';
+import { render, fireEvent, waitFor } from '@testing-library/react-native';
+import EditarIdoso from '../private/pages/editarIdoso';
+import AsyncStorage from '@react-native-async-storage/async-storage';
+import database from '../db';
+import Idoso from '../model/Idoso';
+import Toast from 'react-native-toast-message';
+import { Collection } from '@nozbe/watermelondb';
+
+// Mock para AsyncStorage e outros módulos
+jest.mock('@react-native-async-storage/async-storage', () => ({
+ getItem: jest.fn(),
+ setItem: jest.fn(),
+}));
+jest.mock('react-native-toast-message', () => ({
+ show: jest.fn(),
+}));
+jest.mock('../db', () => ({
+ get: jest.fn().mockImplementation((modelName: string) => {
+ return {
+ find: jest.fn().mockResolvedValue({
+ update: jest.fn().mockResolvedValue(null),
+ }),
+ };
+ }),
+}));
+
+describe('EditarIdoso', () => {
+ beforeEach(() => {
+ jest.clearAllMocks();
+ (AsyncStorage.getItem as jest.Mock).mockResolvedValue(
+ JSON.stringify({ id: 1 }) // Mock de retorno de AsyncStorage
+ );
+ });
+
+ it('deve renderizar o componente corretamente', async () => {
+ const { getByPlaceholderText, getByText, getByTestId } = render(
+
+ );
+
+ await waitFor(() => {
+ expect(getByPlaceholderText('Nome')).toBeTruthy();
+ expect(getByPlaceholderText('Data de Nascimento')).toBeTruthy();
+ expect(getByPlaceholderText('Telefone Responsável')).toBeTruthy();
+ expect(getByPlaceholderText('Descrição')).toBeTruthy();
+ expect(getByText('Salvar')).toBeTruthy();
+ expect(getByText('Apagar Idoso')).toBeTruthy();
+ expect(getByTestId('uploadImageButton')).toBeTruthy();
+ });
+ });
+
+ it('deve exibir erro quando Nome estiver vazio', async () => {
+ const { getByPlaceholderText, getByText } = render(
+
+ );
+
+ fireEvent.changeText(getByPlaceholderText('Nome'), '');
+ fireEvent.changeText(getByPlaceholderText('Data de Nascimento'), '15/10/1998');
+ fireEvent.changeText(getByPlaceholderText('Telefone Responsável'), '99999999999');
+
+ fireEvent.press(getByText('Salvar'));
+
+ await waitFor(() => {
+ expect(getByText('Campo obrigatório!')).toBeTruthy();
+ });
+ });
+
+ it('deve exibir erro quando Telefone Responsável estiver vazio', async () => {
+ const { getByPlaceholderText, getByText } = render(
+
+ );
+
+ fireEvent.changeText(getByPlaceholderText('Nome'), 'Ugor B');
+ fireEvent.changeText(getByPlaceholderText('Data de Nascimento'), '15/10/1998');
+ fireEvent.changeText(getByPlaceholderText('Telefone Responsável'), '');
+
+ fireEvent.press(getByText('Salvar'));
+
+ await waitFor(() => {
+ expect(getByText('Campo obrigatório!')).toBeTruthy();
+ });
+ });
+
+ it('deve exibir erro quando Data de Nascimento estiver vazio', async () => {
+ const { getByPlaceholderText, getByText } = render(
+
+ );
+
+ fireEvent.changeText(getByPlaceholderText('Nome'), 'Ugor B');
+ fireEvent.changeText(getByPlaceholderText('Data de Nascimento'), '');
+ fireEvent.changeText(getByPlaceholderText('Telefone Responsável'), '99999999999');
+
+ fireEvent.press(getByText('Salvar'));
+
+ await waitFor(() => {
+ expect(getByText('Campo obrigatório!')).toBeTruthy();
+ });
+ });
+
+ it('deve exibir um modal de confirmação ao tentar apagar um idoso', async () => {
+ const { getByText } = render(
+
+ );
+
+ fireEvent.press(getByText('Apagar Idoso'));
+
+ await waitFor(() => {
+ expect(getByText('Apagar')).toBeTruthy();
+ expect(getByText('Cancelar')).toBeTruthy();
+ });
+ });
+
+ it('Mensagem de erro recebida ao editar Idoso:', async () => {
+ const { getByPlaceholderText, getByText } = render(
+
+ );
+
+ fireEvent.changeText(getByPlaceholderText('Nome'), 'Ugor B');
+ fireEvent.changeText(getByPlaceholderText('Data de Nascimento'), '15/10/1998');
+ fireEvent.changeText(getByPlaceholderText('Telefone Responsável'), '99999999999');
+ fireEvent.changeText(getByPlaceholderText('Descrição'), 'Descrição Teste');
+
+ fireEvent.press(getByText('Salvar'));
+
+ await waitFor(() => {
+ const idosoCollection = database.get('idoso') as Collection;
+ const findMock = idosoCollection.find as jest.Mock;
+ const updateMock = findMock().update as jest.Mock;
+
+ expect(Toast.show).toHaveBeenCalledWith({
+ type: 'error',
+ text1: 'Erro!',
+ text2: '_db.default.write is not a function',
+ });
+ });
+
+ // Verifica se a navegação ocorreu
+ });
+
+ it('Mensagem de erro ao apagar Idoso', async () => {
+ // Mock para o registro de idoso
+ const mockIdoso = {
+ destroyPermanently: jest.fn().mockResolvedValue(null), // Mock para destroyPermanently
+ } as unknown as Idoso;
+
+ // Mock da coleção de idoso
+ const mockIdosoCollection = {
+ find: jest.fn().mockResolvedValue(mockIdoso), // Simular a busca do idoso
+ } as unknown as Collection;
+
+ (database.get as jest.Mock).mockReturnValue(mockIdosoCollection);
+
+ const { getByText } = render();
+
+ // Simular o clique no botão de apagar
+ fireEvent.press(getByText('Apagar Idoso'));
+
+ // Simular o clique no botão de confirmação de apagar
+ fireEvent.press(getByText('Apagar')); // Certifique-se de que esse texto corresponde ao botão de confirmação de exclusão no seu componente
+
+ await waitFor(() => {
+ expect(Toast.show).toHaveBeenCalledWith({
+ type: 'error',
+ text1: 'Erro!',
+ text2: '_db.default.write is not a function',
+ });
+ });
+ });
+
+});
diff --git a/src/app/__tests__/editarPerfil.spec.tsx b/src/app/__tests__/editarPerfil.spec.tsx
new file mode 100644
index 00000000..3e2e48aa
--- /dev/null
+++ b/src/app/__tests__/editarPerfil.spec.tsx
@@ -0,0 +1,201 @@
+import React from "react";
+import { render, fireEvent, waitFor } from "@testing-library/react-native";
+import EditarPerfil from "../private/pages/editarPerfil";
+import { router, useLocalSearchParams } from "expo-router";
+import * as ImagePicker from 'expo-image-picker';
+import Toast from "react-native-toast-message";
+
+// Mock for expo-image-picker
+jest.mock('expo-image-picker', () => ({
+ launchImageLibraryAsync: jest.fn().mockResolvedValue({
+ canceled: false,
+ assets: [
+ {
+ uri: 'file://path/to/photo.jpg',
+ base64: 'base64string',
+ }
+ ],
+ }),
+ MediaTypeOptions: {
+ Images: 'Images'
+ }
+}));
+
+// Mock for expo-router
+jest.mock('expo-router', () => ({
+ useLocalSearchParams: jest.fn().mockReturnValue({
+ id: "123",
+ nome: "Nome Teste",
+ foto: null,
+ }),
+ router: {
+ push: jest.fn(),
+ replace: jest.fn(),
+ },
+}));
+
+jest.mock('react-native-toast-message', () => ({
+ show: jest.fn(),
+}));
+
+describe("EditarPerfil component", () => {
+ test("Atualiza nome com o input", async () => {
+ const { getByPlaceholderText } = render();
+ const nameInput = getByPlaceholderText("Nome completo");
+ fireEvent.changeText(nameInput, "Gustavo A");
+
+ await waitFor(() => {
+ expect(nameInput.props.value).toBe("Gustavo A");
+ });
+ });
+
+ test("Exibe mensagem de erro ao tentar salvar com nome vazio", async () => {
+ const { getByText, getByPlaceholderText, queryByText } = render();
+ const nameInput = getByPlaceholderText("Nome completo");
+ fireEvent.changeText(nameInput, "");
+
+ const saveButton = getByText("Salvar");
+ fireEvent.press(saveButton);
+
+ await waitFor(() => {
+ expect(getByText("Campo obrigatório!")).toBeTruthy();
+ expect(queryByText("O nome completo deve ter pelo menos 5 caractéres.")).toBeNull();
+ expect(queryByText("O nome completo deve ter no máximo 60 caractéres.")).toBeNull();
+ });
+ });
+
+ test("Exibe mensagem de erro ao tentar salvar com nome muito curto", async () => {
+ const { getByText, getByPlaceholderText } = render();
+ const nameInput = getByPlaceholderText("Nome completo");
+ fireEvent.changeText(nameInput, "Jo");
+
+ const saveButton = getByText("Salvar");
+ fireEvent.press(saveButton);
+
+ await waitFor(() => {
+ expect(getByText("O nome completo deve ter pelo menos 5 caractéres.")).toBeTruthy();
+ });
+ });
+
+ test("Exibe mensagem de erro ao tentar salvar com nome muito longo", async () => {
+ const { getByText, getByPlaceholderText } = render();
+ const nameInput = getByPlaceholderText("Nome completo");
+ fireEvent.changeText(nameInput, "Lorem Ipsum é apenas um texto fictício da indústria de impressão e composição tipográfica.");
+
+ const saveButton = getByText("Salvar");
+ fireEvent.press(saveButton);
+
+ await waitFor(() => {
+ expect(getByText("O nome completo deve ter no máximo 60 caractéres.")).toBeTruthy();
+ });
+ });
+
+ test("Não exibe mensagem de erro ao salvar com nome válido", async () => {
+ const { getByText, getByPlaceholderText, queryByText } = render();
+ const nameInput = getByPlaceholderText("Nome completo");
+ fireEvent.changeText(nameInput, "Nome Válido");
+
+ const saveButton = getByText("Salvar");
+ fireEvent.press(saveButton);
+
+ await waitFor(() => {
+ expect(queryByText("Campo obrigatório!")).toBeNull();
+ expect(queryByText("O nome completo deve ter pelo menos 5 caractéres.")).toBeNull();
+ expect(queryByText("O nome completo deve ter no máximo 60 caractéres.")).toBeNull();
+ });
+ });
+
+ test("Exibe mensagem de confirmação ao apagar conta", async () => {
+ const { getByText, findByText } = render();
+ const apagarContaButton = getByText("Apagar Conta");
+
+ fireEvent.press(apagarContaButton);
+
+ await waitFor(() => {
+ expect(findByText("Prosseguir com a exclusão da conta?")).toBeTruthy();
+ });
+ });
+
+ test("Apaga a conta corretamente após confirmação", async () => {
+ const { getByText } = render();
+ const apagarContaButton = getByText("Apagar Conta");
+
+ fireEvent.press(apagarContaButton);
+ const confirmButton = getByText("Apagar");
+ fireEvent.press(confirmButton);
+
+ await waitFor(() => {
+ expect(router.replace).toHaveBeenCalledWith('/');
+ });
+ });
+
+ test("Navega para a tela anterior ao clicar no botão de voltar", async () => {
+ const { getByTestId } = render();
+ const backButton = getByTestId("back-button-pressable");
+
+ fireEvent.press(backButton);
+
+ await waitFor(() => {
+ expect(router.push).toHaveBeenCalledWith("/private/tabs/perfil");
+ });
+ });
+
+ test("Perfil editado com sucesso", async () => {
+ const { getByPlaceholderText, getByText, getByTestId } = render();
+
+ const nameInput = getByPlaceholderText("Nome completo");
+ fireEvent.changeText(nameInput, "Gustavo A");
+
+ const selectPhotoButton = getByTestId("upload-image-botao");
+ fireEvent.press(selectPhotoButton);
+
+ await waitFor(() => {
+ expect(ImagePicker.launchImageLibraryAsync).toHaveBeenCalledWith({
+ mediaTypes: ImagePicker.MediaTypeOptions.Images,
+ allowsEditing: true,
+ aspect: [1, 1],
+ base64: true,
+ quality: 0,
+ });
+ });
+
+ const saveButton = getByText("Salvar");
+ fireEvent.press(saveButton);
+
+ await waitFor(() => {
+ expect(Toast.show).toHaveBeenCalledWith({
+ type: "success",
+ text1: "Sucesso!",
+ text2: "Perfil atualizado com sucesso.",
+ });
+ });
+
+ expect(nameInput.props.value).toBe("Gustavo A");
+
+ await waitFor(() => {
+ expect(router.push).toHaveBeenCalledWith("/private/tabs/perfil");
+ });
+ });
+
+ test("Atualiza foto de perfil corretamente", async () => {
+ const { getByTestId, getByText } = render();
+
+ const selectPhotoButton = getByTestId("upload-image-botao");
+ fireEvent.press(selectPhotoButton);
+
+ await waitFor(() => {
+ expect(ImagePicker.launchImageLibraryAsync).toHaveBeenCalled();
+ });
+
+ const saveButton = getByText("Salvar");
+ fireEvent.press(saveButton);
+
+ await waitFor(() => {
+ expect(Toast.show).toHaveBeenCalledWith({
+ type: "success",
+ text1: "Sucesso!",
+ text2: "Perfil atualizado com sucesso.",
+ });
+ });
+ });
+});
diff --git a/src/app/__tests__/editarPublicacao.spec.tsx b/src/app/__tests__/editarPublicacao.spec.tsx
new file mode 100644
index 00000000..9019d598
--- /dev/null
+++ b/src/app/__tests__/editarPublicacao.spec.tsx
@@ -0,0 +1,95 @@
+// EditarPublicacao.test.tsx
+
+import React from 'react';
+import { render, fireEvent, waitFor, act } from '@testing-library/react-native';
+import { useLocalSearchParams } from 'expo-router';
+import EditarPublicacao from "../private/pages/editarPublicacao";
+import Toast from 'react-native-toast-message';
+
+// Mock de useLocalSearchParams
+jest.mock('expo-router', () => ({
+ useLocalSearchParams: jest.fn(),
+}));
+
+// Mock de updatePublicacao
+jest.mock('../services/forum.service', () => ({
+ updatePublicacao: jest.fn(),
+}));
+
+// Mock de AsyncStorage
+jest.mock('@react-native-async-storage/async-storage', () => ({
+ getItem: jest.fn(() => Promise.resolve('mocked-token')),
+}));
+
+// Mock de Toast
+jest.mock('react-native-toast-message', () => ({
+ show: jest.fn(),
+}));
+
+describe('EditarPublicacao', () => {
+ const mockPublicacao = {
+ id: '1',
+ titulo: 'Test Title',
+ descricao: 'Test Description',
+ categoria: 'GERAL',
+ // Adicione outros campos necessários aqui
+ };
+
+ beforeEach(() => {
+ (useLocalSearchParams as jest.Mock).mockReturnValue(mockPublicacao);
+ });
+
+ test('renders correctly', () => {
+ const { getByPlaceholderText, getByText } = render();
+
+ expect(getByPlaceholderText('Título')).toBeTruthy();
+ expect(getByPlaceholderText('Descrição')).toBeTruthy();
+ expect(getByText('Editar publicação')).toBeTruthy();
+ });
+
+// test('shows error messages for empty fields', async () => {
+// const { getByText, getByPlaceholderText } = render();
+//
+// // Envolva a mudança de texto e clique no botão em um act(...)
+// await act(async () => {
+// fireEvent.changeText(getByPlaceholderText('Título'), '');
+// fireEvent.changeText(getByPlaceholderText('Descrição'), '');
+//
+// // Simula o clique no botão de salvar
+// fireEvent.press(getByText('Salvar'));
+//
+// // Espera até que os erros apareçam
+// await waitFor(() => {
+// expect(getByText('Campo obrigatório!')).toBeTruthy();
+// expect(getByText('Campo Obrigatório!')).toBeTruthy();
+// });
+// });
+// });
+
+ test('calls save function and shows success toast', async () => {
+ // Mock da função updatePublicacao
+ const mockUpdatePublicacao = require('../services/forum.service').updatePublicacao;
+ mockUpdatePublicacao.mockResolvedValue({ message: 'Publicação atualizada com sucesso!' });
+
+ const { getByText, getByPlaceholderText } = render();
+
+ // Envolva a mudança de texto e clique no botão em um act(...)
+ await act(async () => {
+ fireEvent.changeText(getByPlaceholderText('Título'), 'New Title');
+ fireEvent.changeText(getByPlaceholderText('Descrição'), 'New Description');
+
+ // Simula o clique no botão de salvar
+ fireEvent.press(getByText('Salvar'));
+
+ // Espera até que o Toast apareça
+ await waitFor(() => {
+ expect(Toast.show).toHaveBeenCalledWith({
+ type: 'success',
+ text1: 'Sucesso!',
+ text2: 'Publicação atualizada com sucesso!',
+ });
+ });
+ });
+ });
+
+});
diff --git a/src/app/__tests__/editarRotina.spec.tsx b/src/app/__tests__/editarRotina.spec.tsx
new file mode 100644
index 00000000..e3cf0f00
--- /dev/null
+++ b/src/app/__tests__/editarRotina.spec.tsx
@@ -0,0 +1,290 @@
+import { waitFor, within, render, fireEvent, screen, act } from '@testing-library/react-native';
+import React from 'react';
+import EditarRotina from "../private/pages/editarRotina";
+import { useLocalSearchParams } from 'expo-router';
+import Toast from 'react-native-toast-message';
+import * as router from 'expo-router';
+import * as Notifications from 'expo-notifications';
+import { CustomPermissionStatus, CustomExpoPushToken } from '../../../__mocks__/notifications';
+import { PermissionStatus } from 'expo-notifications'; // Importa a enum PermissionStatus
+jest.mock('expo-notifications', () => require("../../../__mocks__/expo-notifications"));
+
+
+// Mock para useLocalSearchParams
+jest.mock('expo-router', () => ({
+ ...jest.requireActual('expo-router'),
+ useLocalSearchParams: jest.fn(),
+}));
+
+jest.mock('react-native-toast-message', () => ({
+ show: jest.fn(),
+}));
+
+// Mock para expo-notifications
+jest.mock('expo-notifications', () => ({
+ getPermissionsAsync: jest.fn().mockResolvedValue({ status: 'granted' }),
+ requestPermissionsAsync: jest.fn().mockResolvedValue({ status: 'granted' }),
+ getExpoPushTokenAsync: jest.fn().mockResolvedValue({ data: 'mockToken' }),
+ setNotificationChannelAsync: jest.fn(),
+}));
+
+/// Mock das funções de notificações com propriedades alinhadas
+jest.spyOn(Notifications, 'getPermissionsAsync').mockResolvedValueOnce({
+ status: 'granted', // Use o valor literal, se o enum não estiver disponível
+ expires: 'never',
+ granted: true,
+ canAskAgain: true,
+} as any); // Use `as any` se necessário para evitar erros de tipo
+
+jest.spyOn(Notifications, 'requestPermissionsAsync').mockResolvedValueOnce({
+ status: 'granted', // Use o valor literal, se o enum não estiver disponível
+ expires: 'never',
+ granted: true,
+ canAskAgain: true,
+} as any); // Use `as any` se necessário para evitar erros de tipo
+
+jest.spyOn(Notifications, 'getExpoPushTokenAsync').mockResolvedValueOnce({
+ data: 'mockToken',
+ type: 'expo', // Ajuste conforme o tipo esperado
+} as any); // Use `as any` se necessário para evitar erros de tipo
+
+
+describe("EditarRotina Component", () => {
+ beforeEach(() => {
+ (useLocalSearchParams as jest.Mock).mockReturnValue({
+ rotina: JSON.stringify({
+ id: 1,
+ titulo: 'Rotina Teste',
+ descricao: 'Descrição Teste',
+ categoria: 'GERAL',
+ dias: [1, 2, 3],
+ dataHora: new Date().toISOString(),
+ notificacao: 'true',
+ token: 'mockToken',
+ }),
+ });
+ });
+
+ test('deve renderizar todos os componentes', () => {
+ render();
+
+ // Verifica se o título está sendo exibido
+ expect(screen.getByText('Detalhes da rotina')).toBeTruthy();
+
+ // Verifica se os campos estão sendo renderizados
+ expect(screen.getByPlaceholderText('Adicionar título')).toBeTruthy();
+ expect(screen.getByPlaceholderText('Data da rotina')).toBeTruthy();
+ expect(screen.getByPlaceholderText('Horário de início')).toBeTruthy();
+ expect(screen.getByPlaceholderText('Descrição')).toBeTruthy();
+
+ // Verifica se o botão de salvar está presente
+ expect(screen.getByText('Salvar')).toBeTruthy();
+
+ // Verifica se o botão para apagar rotina está presente
+ expect(screen.getByText('Apagar Rotina')).toBeTruthy();
+ });
+
+ test('deve atualizar os valores dos inputs corretamente', () => {
+ render();
+
+ // Atualiza o título
+ fireEvent.changeText(screen.getByPlaceholderText('Adicionar título'), 'Novo Título');
+ expect(screen.getByPlaceholderText('Adicionar título').props.value).toBe('Novo Título');
+
+ // Atualiza a data
+ fireEvent.changeText(screen.getByPlaceholderText('Data da rotina'), '20/09/2024');
+ expect(screen.getByPlaceholderText('Data da rotina').props.value).toBe('20/09/2024');
+
+ // Atualiza a hora
+ fireEvent.changeText(screen.getByPlaceholderText('Horário de início'), '10:00');
+ expect(screen.getByPlaceholderText('Horário de início').props.value).toBe('10:00');
+
+ // Atualiza a categoria
+ fireEvent.press(screen.getByText('GERAL'));
+ fireEvent.press(screen.getByText('Medicamentos'));
+
+ const options = screen.getAllByText('Medicamentos');
+
+ // Verifique o primeiro ou o correto com base em sua ordem ou alguma condição
+ fireEvent.press(options[0]);
+
+ expect(options[0]).toBeTruthy();
+
+ // Atualiza a descrição
+ fireEvent.changeText(screen.getByPlaceholderText('Descrição'), 'Nova Descrição');
+ expect(screen.getByPlaceholderText('Descrição').props.value).toBe('Nova Descrição');
+ });
+
+ test('deve editar a rotina com sucesso', async () => {
+ const { getByText, getByPlaceholderText } = render();
+
+ const titulo = getByPlaceholderText("Adicionar título");
+ const data = getByPlaceholderText("Data da rotina");
+ const hora = getByPlaceholderText("Horário de início");
+ const descricao = getByPlaceholderText("Descrição");
+ const categoria = getByText('GERAL');
+ const salvar = getByText("Salvar");
+
+ await act(async () => {
+ fireEvent.changeText(titulo, 'Título Atualizado');
+ fireEvent.changeText(data, '25/09/2024');
+ fireEvent.changeText(hora, '14:30');
+ fireEvent.changeText(descricao, 'Descrição Atualizada');
+ fireEvent.press(categoria);
+ fireEvent.press(getByText('GERAL'));
+ fireEvent.press(salvar);
+ });
+
+ await waitFor(() => {
+ expect(screen.queryByDisplayValue('Título Atualizado')).toBeTruthy();
+ expect(screen.queryByDisplayValue('25/09/2024')).toBeTruthy();
+ expect(screen.queryByDisplayValue('14:30')).toBeTruthy();
+ expect(screen.queryByDisplayValue('Descrição Atualizada')).toBeTruthy();
+ expect(screen.getByText('GERAL')).toBeTruthy();
+ });
+ });
+
+ test('deve exibir mensagens de erro corretamente', async () => {
+ render();
+
+ // Deixa os campos de título e data vazios para disparar erros
+ fireEvent.changeText(screen.getByPlaceholderText('Adicionar título'), '');
+ fireEvent.changeText(screen.getByPlaceholderText('Data da rotina'), '');
+ fireEvent.changeText(screen.getByPlaceholderText('Horário de início'), '');
+
+ // Simula a validação
+ fireEvent.press(screen.getByText('Salvar'));
+
+ // Espera os erros aparecerem
+ await waitFor(() => {
+ const errorMessages = screen.getAllByText('Campo obrigatório!');
+ expect(errorMessages.length).toBe(3); // Espera 3 mensagens de erro
+ });
+ });
+
+ test('deve solicitar permissões de notificações e obter o token', async () => {
+ render();
+
+ // Espera que a função de notificações tenha sido chamada
+ await waitFor(() => {
+ expect(Notifications.getPermissionsAsync).toHaveBeenCalled();
+ expect(Notifications.getExpoPushTokenAsync).toHaveBeenCalled();
+ });
+ });
+
+ it("Salvar com descrição muito grande", async () => {
+ const { getByText, getByPlaceholderText } = render();
+
+ const descricao = getByPlaceholderText("Descrição");
+ const salvar = getByText("Salvar");
+
+ await act(async () => {
+ fireEvent.changeText(
+ descricao,
+ "Num universo vasto e misterioso, onde galáxias dançam em uma sinfonia cósmica, a teia da existência se entrelaça, conectando cada átomo e cada pensamento em uma tapeçaria intricada de tempo e espaço; neste intricado emaranhado, as histórias dos indivíduos se entrelaçam, tecendo um tecido social complexo onde sonhos se desdobram e destinos se entrelaçam, criando uma narrativa épica que transcende as fronteiras do tempo, desafiando a compreensão humana e convidando-nos a contemplar a beleza efêmera da vida, como se fôssemos observadores temporários de um espetáculo cósmico em constante evolução, onde cada escolha, cada suspiro, ecoa através das eras, deixando uma marca indelével na vastidão do infinito."
+ );
+ fireEvent.press(salvar);
+ });
+
+ await waitFor(() => {
+ const erroDescricao = getByText(
+ "A descrição deve ter no máximo 300 caracteres."
+ );
+ expect(erroDescricao).toBeTruthy();
+ });
+ });
+
+ it("Salvar hora com formato errado", async () => {
+ const { getByText, getByPlaceholderText, getByTestId } = render(
+
+ );
+
+ const hora = getByPlaceholderText("Horário de início");
+ const salvar = getByText("Salvar");
+
+ await act(async () => {
+ fireEvent.changeText(hora, "201");
+ fireEvent.press(salvar);
+ });
+
+ await waitFor(() => {
+ const erroHora = getByTestId("Erro-hora");
+ expect(erroHora.props.children.props.text).toBe(
+ "Hora deve ser no formato hh:mm!"
+ );
+ });
+ });
+
+ it("Salvar sem hora", async () => {
+ const { getByText, getByPlaceholderText, getByTestId } = render(
+
+ );
+
+ const hora = getByPlaceholderText("Horário de início");
+ const salvar = getByText("Salvar");
+
+ await act(async () => {
+ fireEvent.changeText(hora, "");
+ fireEvent.press(salvar);
+ });
+
+ await waitFor(() => {
+ const erroHora = getByTestId("Erro-hora");
+ expect(erroHora.props.children.props.text).toBe("Campo obrigatório!");
+ });
+ });
+
+ it("Salvar com título muito grande", async () => {
+ const { getByText, getByPlaceholderText } = render();
+
+ const titulo = getByPlaceholderText("Adicionar título");
+ const salvar = getByText("Salvar");
+
+ await act(async () => {
+ fireEvent.changeText(
+ titulo,
+ "Por que o livro de matemática está sempre triste? Porque tem muitos problemas! hahahahahahhahahahahhahahaahahahahahahhahahahahahahahahahahahhahaahahahahahahahahah"
+ );
+ fireEvent.press(salvar);
+ });
+
+ await waitFor(() => {
+ const erroTitulo = getByText(
+ "O título deve ter no máximo 100 caracteres."
+ );
+ expect(erroTitulo).toBeTruthy();
+ });
+ });
+
+ test('deve renderizar corretamente o botão de notificação quando notificacao está ativa', () => {
+ // Mock do retorno do useLocalSearchParams com notificacao ativada
+ (useLocalSearchParams as jest.Mock).mockReturnValue({
+ rotina: JSON.stringify({
+ id: 1,
+ titulo: 'Rotina Teste',
+ descricao: 'Descrição Teste',
+ categoria: 'GERAL',
+ dias: [1, 2, 3],
+ dataHora: new Date().toISOString(),
+ notificacao: true,
+ token: 'mockToken',
+ }),
+ });
+
+ render();
+
+ expect(screen.getByText('Ativar notificação')).toBeTruthy();
+ });
+
+ test('deve chamar a função de salvar com os dados corretos', async () => {
+ render();
+
+ fireEvent.changeText(screen.getByPlaceholderText('Adicionar título'), 'Título Teste');
+ fireEvent.changeText(screen.getByPlaceholderText('Data da rotina'), '25/09/2024');
+ fireEvent.changeText(screen.getByPlaceholderText('Horário de início'), '14:30');
+ fireEvent.changeText(screen.getByPlaceholderText('Descrição'), 'Descrição Teste');
+
+ fireEvent.press(screen.getByText('Salvar'));
+ });
+
+});
diff --git a/src/app/__tests__/editarValorMetrica.spec.tsx b/src/app/__tests__/editarValorMetrica.spec.tsx
new file mode 100644
index 00000000..3675201d
--- /dev/null
+++ b/src/app/__tests__/editarValorMetrica.spec.tsx
@@ -0,0 +1,21 @@
+import React from "react";
+import { render, fireEvent, waitFor } from "@testing-library/react-native";
+import AsyncStorage from "@react-native-async-storage/async-storage";
+import "@react-native-async-storage/async-storage/jest/async-storage-mock";
+import VisualizarMetrica from "../private/pages/visualizarMetrica";
+
+describe("EditarMetrica Component", () => {
+ test("The component rendered", () => {
+ // Mock the response for AsyncStorage.getItem
+ (AsyncStorage.getItem as jest.Mock).mockImplementation((key) => {
+ if (key === "usuario") {
+ return Promise.resolve(JSON.stringify({ id: 1 }));
+ } else if (key === "token") {
+ return Promise.resolve("mockedToken");
+ }
+ return Promise.resolve(null);
+ });
+
+ render();
+ });
+});
diff --git a/src/app/__tests__/event.spec.tsx b/src/app/__tests__/event.spec.tsx
new file mode 100644
index 00000000..19751ca9
--- /dev/null
+++ b/src/app/__tests__/event.spec.tsx
@@ -0,0 +1,20 @@
+import React from "react";
+import { render } from "@testing-library/react-native";
+import Event from "../private/pages/event";
+
+describe("Event component", () => {
+ const eventProps = {
+ title: "Sample Event",
+ time: "12:00 PM",
+ };
+
+ it("renders correctly with given props", () => {
+ const { getByText } = render();
+
+ const titleElement = getByText(eventProps.title);
+ const timeElement = getByText(eventProps.time);
+
+ expect(titleElement).toBeTruthy();
+ expect(timeElement).toBeTruthy();
+ });
+});
diff --git a/src/app/__tests__/forum.service.spec.tsx b/src/app/__tests__/forum.service.spec.tsx
new file mode 100644
index 00000000..c717a7b6
--- /dev/null
+++ b/src/app/__tests__/forum.service.spec.tsx
@@ -0,0 +1,314 @@
+import {
+ deletePublicacaoById,
+ getAllPublicacao,
+ postPublicacao,
+ updatePublicacao,
+} from "../services/forum.service";
+import { ECategoriaPublicacao } from "../interfaces/forum.interface";
+import { IOrder } from "../interfaces/forum.interface";
+
+global.fetch = jest.fn();
+
+const token =
+ "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6OSwiZW1haWwiOiJ0ZXNzc3RlQGdtYWlsLmNvbSIsIm5vbWUiOiJQZWRybyIsImFkbWluIjpmYWxzZSwiaWF0IjoxNjk5Mjk4NTY5LCJleHAiOjE2OTkzNDE3Njl9.U7i3VL8fdTH2xmYDrXCxrbp_5EeDXPdf3vAlgvcdNyY";
+
+describe("getAllPublicacao", () => {
+ it("Get: deve fazer uma chamada de API bem-sucedida", async () => {
+ // Mock para simular uma resposta de sucesso
+ global.fetch = jest.fn().mockResolvedValue({
+ json: async () => ({
+ data: [
+ /* seus dados de publicação aqui */
+ ],
+ message: null,
+ status: 200,
+ }),
+ status: 200,
+ });
+
+ const offset = 0; // Defina os valores necessários para os parâmetros da função
+ const filter = { titulo: "Exemplo" };
+ const order: IOrder = {
+ column: "descricao",
+ dir: "DESC",
+ };
+
+ const result = await getAllPublicacao(offset, filter, order);
+
+ expect(result.message).toBeNull();
+ });
+ it("deve lidar com uma chamada de API com erro", async () => {
+ // Mock para simular uma resposta de erro
+ global.fetch = jest.fn().mockResolvedValue({
+ json: async () => ({
+ data: null,
+ message: "Mensagem de erro",
+ status: 400,
+ }),
+ status: 400,
+ });
+
+ const id = 1; // Defina o ID da publicação que você deseja excluir
+
+ try {
+ await deletePublicacaoById(id, token);
+ } catch (error) {
+ if (error instanceof Error) {
+ expect(error.message).toBe("Mensagem de erro");
+ }
+ }
+ });
+
+ it("deve lançar um erro se o status da resposta não for 200", async () => {
+ global.fetch = jest.fn().mockResolvedValue({
+ json: async () => ({
+ data: null,
+ message: "Erro na API",
+ status: 400,
+ }),
+ status: 400,
+ });
+
+ const offset = 0;
+ const filter = { titulo: "Exemplo" };
+ const order: IOrder = {
+ column: "descricao",
+ dir: "DESC",
+ };
+
+ try {
+ await getAllPublicacao(offset, filter, order);
+ } catch (error) {
+ if (error instanceof Error) {
+ expect(error.message).toBe("Erro na API");
+ }
+ }
+ });
+});
+
+describe("postPublicacao", () => {
+ it("Post: deve fazer uma chamada de API bem-sucedida", async () => {
+ // Mock para simular uma resposta de sucesso
+ global.fetch = jest.fn().mockResolvedValue({
+ json: async () => ({
+ data: {
+ idUsuario: 1,
+ titulo: "Título de Exemplo",
+ descricao: "Descrição de Exemplo",
+ dataHora: "2023-11-06T12:00:00",
+ categoria: ECategoriaPublicacao.GERAL,
+ contagemReportes: 0,
+ },
+ message: null,
+ status: 201,
+ }),
+ status: 201,
+ });
+
+ const body = {
+ idUsuario: 1,
+ titulo: "Título de Exemplo",
+ descricao: "Descrição de Exemplo",
+ dataHora: "2023-11-06T12:00:00",
+ categoria: ECategoriaPublicacao.GERAL,
+ contagemReportes: 0,
+ };
+
+ const result = await postPublicacao(body, token);
+
+ expect(result.status).toBe(201);
+ expect(result.data).toEqual({
+ idUsuario: 1,
+ titulo: "Título de Exemplo",
+ descricao: "Descrição de Exemplo",
+ dataHora: "2023-11-06T12:00:00",
+ categoria: ECategoriaPublicacao.GERAL,
+ contagemReportes: 0,
+ });
+ expect(result.message).toBeNull();
+ });
+ it("deve lidar com uma chamada de API com erro", async () => {
+ // Mock para simular uma resposta de erro
+ global.fetch = jest.fn().mockResolvedValue({
+ json: async () => ({
+ data: null,
+ message: "Mensagem de erro",
+ status: 400,
+ }),
+ status: 400,
+ });
+
+ const id = 1; // Defina o ID da publicação que você deseja excluir
+
+ try {
+ await deletePublicacaoById(id, token);
+ } catch (error) {
+ if (error instanceof Error) {
+ expect(error.message).toBe("Mensagem de erro");
+ }
+ }
+ });
+
+ it("deve lançar um erro quando a resposta não for 201", async () => {
+ // Mock para simular uma resposta de erro
+ global.fetch = jest.fn().mockResolvedValue({
+ json: async () => ({
+ data: null,
+ message: "Erro ao criar publicação",
+ }),
+ status: 400, // status diferente de 201
+ });
+
+ const body = {
+ idUsuario: 1,
+ titulo: "Título de Exemplo",
+ descricao: "Descrição de Exemplo",
+ dataHora: "2023-11-06T12:00:00",
+ categoria: ECategoriaPublicacao.GERAL,
+ contagemReportes: 0,
+ };
+
+ try {
+ await postPublicacao(body, token);
+ } catch (error) {
+ if (error instanceof Error) {
+ expect(error.message).toBe("Erro ao criar publicação");
+ }
+ }
+ });
+});
+
+describe("updatePublicacao", () => {
+ it("deve fazer uma chamada de API bem-sucedida", async () => {
+ // Mock para simular uma resposta de sucesso
+ global.fetch = jest.fn().mockResolvedValue({
+ json: async () => ({
+ data: {
+ id: 1,
+ idUsuario: 1,
+ titulo: "Título Atualizado",
+ descricao: "Descrição Atualizada",
+ dataHora: "2023-11-06T14:00:00",
+ categoria: ECategoriaPublicacao.GERAL,
+ contagemReportes: 0,
+ },
+ message: null,
+ status: 200,
+ }),
+ status: 200,
+ });
+
+ const id = 1; // Defina o ID da publicação que você deseja atualizar
+ const body = {
+ titulo: "Título Atualizado",
+ descricao: "Descrição Atualizada",
+ dataHora: "2023-11-06T14:00:00",
+ categoria: ECategoriaPublicacao.GERAL,
+ contagemReportes: 0,
+ };
+
+ const result = await updatePublicacao(id, body, token);
+
+ expect(result.status).toBe(200);
+ expect(result.data).toEqual({
+ id: 1,
+ idUsuario: 1,
+ titulo: "Título Atualizado",
+ descricao: "Descrição Atualizada",
+ dataHora: "2023-11-06T14:00:00",
+ categoria: ECategoriaPublicacao.GERAL,
+ contagemReportes: 0,
+ });
+ expect(result.message).toBeNull();
+ });
+ it("deve lidar com uma chamada de API com erro", async () => {
+ // Mock para simular uma resposta de erro
+ global.fetch = jest.fn().mockResolvedValue({
+ json: async () => ({
+ data: null,
+ message: "Mensagem de erro",
+ status: 400,
+ }),
+ status: 400,
+ });
+
+ const id = 1; // Defina o ID da publicação que você deseja atualizar
+ const body = {
+ titulo: "Título Atualizado",
+ descricao: "Descrição Atualizada",
+ dataHora: "2023-11-06T14:00:00",
+ categoria: ECategoriaPublicacao.GERAL,
+ contagemReportes: 0,
+ };
+ const token = "seu_token_valido_aqui"; // Defina um token válido
+
+ try {
+ await updatePublicacao(id, body, token);
+ } catch (error) {
+ if (error instanceof Error) {
+ expect(error.message).toBe("Mensagem de erro");
+ }
+ }
+ });
+});
+
+describe("deletePublicacaoById", () => {
+ it("deve fazer uma chamada de API bem-sucedida", async () => {
+ // Mock para simular uma resposta de sucesso
+ global.fetch = jest.fn().mockResolvedValue({
+ json: async () => ({
+ data: {
+ id: 1,
+ idUsuario: 1,
+ titulo: "Título Exemplo",
+ descricao: "Descrição Exemplo",
+ dataHora: "2023-11-06T12:00:00",
+ categoria: ECategoriaPublicacao.GERAL,
+ contagemReportes: 0,
+ },
+ message: null,
+ status: 200,
+ }),
+ status: 200,
+ });
+
+ const id = 1; // Defina o ID da publicação que você deseja excluir
+ const result = await deletePublicacaoById(id, token);
+
+ expect(result.status).toBe(200);
+ expect(result.data).toEqual({
+ id: 1,
+ idUsuario: 1,
+ titulo: "Título Exemplo",
+ descricao: "Descrição Exemplo",
+ dataHora: "2023-11-06T12:00:00",
+ categoria: ECategoriaPublicacao.GERAL,
+ contagemReportes: 0,
+ });
+ expect(result.message).toBeNull();
+ });
+
+ it("deve lidar com uma chamada de API com erro", async () => {
+ // Mock para simular uma resposta de erro
+ global.fetch = jest.fn().mockResolvedValue({
+ json: async () => ({
+ data: null,
+ message: "Mensagem de erro",
+ status: 400,
+ }),
+ status: 400,
+ });
+
+ const id = 1; // Defina o ID da publicação que você deseja excluir
+
+ try {
+ await deletePublicacaoById(id, token);
+ } catch (error) {
+ if (error instanceof Error) {
+ expect(error.message).toBe("Mensagem de erro");
+ }
+ }
+ });
+});
+
+// npx jest forum.service.spec.tsx
\ No newline at end of file
diff --git a/src/app/__tests__/forum.spec.tsx b/src/app/__tests__/forum.spec.tsx
new file mode 100644
index 00000000..39342aa7
--- /dev/null
+++ b/src/app/__tests__/forum.spec.tsx
@@ -0,0 +1,154 @@
+import React from "react";
+import { render, fireEvent, waitFor, act } from "@testing-library/react-native";
+import Forum from "../private/tabs/forum";
+import { getAllPublicacao } from "../services/forum.service";
+import { router } from "expo-router";
+import Toast from "react-native-toast-message";
+import { useNavigation } from '@react-navigation/native';
+import { ECategoriaPesquisa } from "../interfaces/forum.interface";
+
+// Mockando as funções de serviço e navegação
+jest.mock("../services/forum.service");
+jest.mock("expo-router", () => ({
+ router: { push: jest.fn() },
+}));
+jest.mock("react-native-toast-message", () => ({
+ show: jest.fn(),
+}));
+
+// Mock da função de navegação
+jest.mock('@react-navigation/native', () => ({
+ useNavigation: () => ({
+ navigate: jest.fn(),
+ }),
+}));
+
+// Mock para a função que busca publicações
+jest.mock("../services/forum.service", () => ({
+ getAllPublicacao: jest.fn(() => Promise.resolve(mockPublicacoes)),
+}));
+
+const mockPublicacoes = [
+ { id: 1, titulo: "Publicação 1", descricao: "Descrição 1", categoria: "Saúde" },
+ { id: 2, titulo: "Publicação 2", descricao: "Descrição 2", categoria: "Geral" },
+];
+
+describe("Forum", () => {
+
+ beforeEach(() => {
+ (getAllPublicacao as jest.Mock).mockResolvedValue({
+ data: mockPublicacoes,
+ });
+ });
+
+ it("renderiza corretamente", async () => {
+ await waitFor(() => render());
+ });
+
+ it("carrega e exibe publicações", async () => {
+ const { getByText } = render();
+ await waitFor(() => {
+ expect(getByText("Publicação 1")).toBeTruthy();
+ expect(getByText("Publicação 2")).toBeTruthy();
+ });
+ });
+
+ it("exibe mensagem de erro quando falha ao carregar publicações", async () => {
+ (getAllPublicacao as jest.Mock).mockRejectedValueOnce({
+ message: "Erro ao carregar publicações",
+ });
+
+ const { getByText } = render();
+
+ await waitFor(() => expect(Toast.show).toHaveBeenCalledWith({
+ type: "error",
+ text1: "Erro!",
+ text2: "Erro ao carregar publicações",
+ }));
+ });
+
+ it("deve realizar pesquisa com debounce", async () => {
+ const { getByPlaceholderText } = render();
+
+ // Alterar para o placeholder correto
+ const searchInput = getByPlaceholderText("Pesquise uma publicação");
+
+ fireEvent.changeText(searchInput, "");
+
+ // Aguarda o debounce
+ await waitFor(() => {
+ expect(getAllPublicacao).toHaveBeenCalledWith(
+ 0,
+ { titulo: "", isReported: false },
+ expect.any(Object)
+ );
+ });
+ });
+
+ describe("Forum - Carregar Mais", () => {
+ it("desativa o botão 'Carregar Mais' quando não há novas publicações", async () => {
+ // Simulando a resposta com uma lista vazia de publicações
+ (getAllPublicacao as jest.Mock).mockResolvedValueOnce({
+ data: [],
+ });
+
+ const { queryByTestId } = render();
+
+ // Verifica se setShowCarregarMais(false) foi chamado (ou seja, o botão foi removido)
+ await waitFor(() => {
+ const botaoCarregarMais = queryByTestId("botaoCarregarMais");
+ expect(botaoCarregarMais).toBeNull(); // Verifica que o botão "Carregar Mais" foi removido
+ });
+ });
+ });
+
+ describe("Forum - Seleção de categoria", () => {
+ it("atualiza a categoria ao selecionar um item", async () => {
+ const { getByText, getByPlaceholderText } = render();
+
+ // Supondo que o dropdown tenha um placeholder "Todas"
+ const dropdown = getByText("Todas");
+
+ // Simula a abertura do dropdown
+ fireEvent.press(dropdown);
+
+ // Verifica se o dropdown foi aberto e se a opção "Saúde" está visível
+ await waitFor(() => {
+ const dropdownOption = getByText(ECategoriaPesquisa.SAUDE);
+ expect(dropdownOption).toBeTruthy();
+
+ // Simula a seleção da categoria "Saúde"
+ fireEvent.press(dropdownOption);
+ });
+
+ // Verifica se a função setCategoria foi chamada corretamente
+ await waitFor(() => {
+ expect(getAllPublicacao).toHaveBeenCalledWith(
+ expect.any(Number),
+ { titulo: expect.any(String), isReported: expect.any(Boolean), categoria: ECategoriaPesquisa.SAUDE },
+ expect.any(Object)
+ );
+ });
+ });
+ });
+
+ describe('Forum Page - Error Handling', () => {
+ it('deve exibir uma mensagem de erro quando a requisição falha', async () => {
+ const mockError = { message: 'Erro de conexão!' };
+
+ // Forçando o serviço a rejeitar com um erro
+ (getAllPublicacao as jest.Mock).mockRejectedValueOnce(mockError);
+
+ const { getByText } = render();
+
+ // Espera o Toast ser chamado após o erro
+ await waitFor(() => {
+ expect(Toast.show).toHaveBeenCalledWith({
+ type: 'error',
+ text1: 'Erro!',
+ text2: mockError.message,
+ });
+ });
+ });
+ });
+});
diff --git a/src/app/__tests__/idoso.service.spec.tsx b/src/app/__tests__/idoso.service.spec.tsx
new file mode 100644
index 00000000..5ed7dade
--- /dev/null
+++ b/src/app/__tests__/idoso.service.spec.tsx
@@ -0,0 +1,267 @@
+import { ETipoSanguineo, IOrder } from "../interfaces/idoso.interface";
+import {
+ postIdoso,
+ getAllIdoso,
+ updateIdoso,
+ deleteIdoso,
+} from "../services/idoso.service";
+
+global.fetch = jest.fn();
+
+const token =
+ "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6OSwiZW1haWwiOiJ0ZXNzc3RlQGdtYWlsLmNvbSIsIm5vbWUiOiJQZWRybyIsImFkbWluIjpmYWxzZSwiaWF0IjoxNjk5Mjk4NTY5LCJleHAiOjE2OTkzNDE3Njl9.U7i3VL8fdTH2xmYDrXCxrbp_5EeDXPdf3vAlgvcdNyY";
+
+describe("postIdoso", () => {
+ it("deve fazer uma chamada de API bem-sucedida", async () => {
+ // Mock para simular uma resposta de sucesso
+ global.fetch = jest.fn().mockResolvedValue({
+ json: async () => ({
+ data: {
+ nome: "Teste",
+ dataNascimento: "21/21/2023",
+ idUsuario: 1,
+ foto: "",
+ tipoSanguineo: ETipoSanguineo.A_POSITIVO,
+ telefoneResponsavel: "11111111111",
+ descricao: "Descrição de Exemplo",
+ dataHora: "2023-11-06T12:00:00",
+ },
+ message: null,
+ status: 201,
+ }),
+ status: 201,
+ });
+
+ const body = {
+ nome: "Teste",
+ dataNascimento: "21/21/2023",
+ idUsuario: 1,
+ foto: "",
+ tipoSanguineo: ETipoSanguineo.A_POSITIVO,
+ telefoneResponsavel: "11111111111",
+ descricao: "Descrição de Exemplo",
+ dataHora: "2023-11-06T12:00:00",
+ };
+
+ const result = await postIdoso(body, token);
+
+ expect(result.message).toBeNull();
+ });
+
+ it("deve lidar com uma chamada de API com erro", async () => {
+ // Mock para simular uma resposta de erro
+ global.fetch = jest.fn().mockResolvedValue({
+ json: async () => ({
+ data: null,
+ message: "Mensagem de erro",
+ status: 400,
+ }),
+ status: 400,
+ });
+
+ const body = {
+ nome: "Teste",
+ dataNascimento: "21/21/2023",
+ idUsuario: 1,
+ foto: "",
+ tipoSanguineo: ETipoSanguineo.A_POSITIVO,
+ telefoneResponsavel: "11111111111",
+ descricao: "Descrição de Exemplo",
+ dataHora: "2023-11-06T12:00:00",
+ };
+
+ try {
+ await postIdoso(body, token);
+ } catch (error) {
+ if (error instanceof Error) {
+ expect(error.message).toBe("Mensagem de erro");
+ }
+ }
+ });
+});
+
+describe("updateIdoso", () => {
+ it("deve fazer uma chamada de API bem-sucedida", async () => {
+ // Mock para simular uma resposta de sucesso
+ global.fetch = jest.fn().mockResolvedValue({
+ json: async () => ({
+ data: {
+ nome: "Teste",
+ dataNascimento: "21/21/2023",
+ idUsuario: 1,
+ foto: "",
+ tipoSanguineo: ETipoSanguineo.A_POSITIVO,
+ telefoneResponsavel: "11111111111",
+ descricao: "Descrição de Exemplo",
+ dataHora: "2023-11-06T12:00:00",
+ },
+ message: null,
+ status: 200,
+ }),
+ status: 200,
+ });
+
+ const id = 1; // Defina o ID do usuário que deseja atualizar
+ const userDataToUpdate = {
+ nome: "Teste",
+ dataNascimento: "21/21/2023",
+ idUsuario: 1,
+ foto: "",
+ tipoSanguineo: ETipoSanguineo.A_POSITIVO,
+ telefoneResponsavel: "11111111111",
+ descricao: "Descrição de Exemplo",
+ dataHora: "2023-11-06T12:00:00",
+ };
+
+ const result = await updateIdoso(id, userDataToUpdate, token);
+
+ expect(result.message).toBeNull();
+ });
+
+ it("deve lidar com uma chamada de API com erro", async () => {
+ // Mock para simular uma resposta de erro
+ global.fetch = jest.fn().mockResolvedValue({
+ json: async () => ({
+ data: null,
+ message: "Mensagem de erro",
+ status: 400,
+ }),
+ status: 400,
+ });
+
+ const id = 1; // Defina o ID do usuário que deseja atualizar
+ const userDataToUpdate = {
+ nome: "Teste",
+ dataNascimento: "21/21/2023",
+ idUsuario: 1,
+ foto: "",
+ tipoSanguineo: ETipoSanguineo.A_POSITIVO,
+ telefoneResponsavel: "11111111111",
+ descricao: "Descrição de Exemplo",
+ dataHora: "2023-11-06T12:00:00",
+ };
+
+ try {
+ await updateIdoso(id, userDataToUpdate, token);
+ } catch (error) {
+ if (error instanceof Error) {
+ expect(error.message).toBe("Mensagem de erro");
+ }
+ }
+ });
+});
+
+describe("getAllIdoso", () => {
+ it("Get: deve fazer uma chamada de API bem-sucedida", async () => {
+ // Mock para simular uma resposta de sucesso
+ global.fetch = jest.fn().mockResolvedValue({
+ json: async () => ({
+ data: [
+ /* seus dados de publicação aqui */
+ ],
+ message: null,
+ status: 200,
+ }),
+ status: 200,
+ });
+
+ const order: IOrder = {
+ column: "descricao",
+ dir: "DESC",
+ };
+
+ const result = await getAllIdoso(order);
+
+ expect(result.message).toBeNull();
+ });
+ it("deve lidar com uma chamada de API com erro", async () => {
+ // Mock para simular uma resposta de erro
+ global.fetch = jest.fn().mockResolvedValue({
+ json: async () => ({
+ data: null,
+ message: "Mensagem de erro",
+ status: 400,
+ }),
+ status: 400,
+ });
+
+ const id = 1; // Defina o ID da publicação que você deseja excluir
+
+ try {
+ await deleteIdoso(id, token);
+ } catch (error) {
+ if (error instanceof Error) {
+ expect(error.message).toBe("Mensagem de erro");
+ }
+ }
+ });
+
+ it("deve lançar um erro se o status da resposta não for 200", async () => {
+ const order: IOrder = {
+ column: "descricao",
+ dir: "DESC",
+ };
+ const idUsuario = 1;
+
+ // Mock para simular uma resposta de erro
+ global.fetch = jest.fn().mockResolvedValue({
+ json: async () => ({
+ data: null,
+ message: "Mensagem de erro",
+ status: 400,
+ }),
+ status: 400,
+ });
+
+ try {
+ await getAllIdoso(idUsuario, order);
+ } catch (error) {
+ if (error instanceof Error) {
+ expect(error.message).toBe("Mensagem de erro");
+ }
+ }
+ });
+});
+
+describe("deleteIdoso", () => {
+ it("deve fazer uma chamada de API bem-sucedida", async () => {
+ // Mock para simular uma resposta de sucesso
+ global.fetch = jest.fn().mockResolvedValue({
+ json: async () => ({
+ data: null, // Defina os dados retornados, que devem ser nulos após a exclusão bem-sucedida
+ message: null,
+ status: 200,
+ }),
+ status: 200,
+ });
+
+ const id = 1; // Defina o ID do usuário que deseja excluir
+
+ const result = await deleteIdoso(id, token);
+
+ expect(result.message).toBeNull();
+ expect(result.data).toBeNull(); // Verifica se os dados retornados são nulos após a exclusão bem-sucedida
+ });
+
+ it("deve lidar com uma chamada de API com erro", async () => {
+ // Mock para simular uma resposta de erro
+ global.fetch = jest.fn().mockResolvedValue({
+ json: async () => ({
+ data: null,
+ message: "Mensagem de erro",
+ status: 400,
+ }),
+ status: 400,
+ });
+
+ const id = 1; // Defina o ID do usuário que deseja excluir
+
+ try {
+ await deleteIdoso(id, token);
+ } catch (error) {
+ if (error instanceof Error) {
+ expect(error.message).toBe("Mensagem de erro");
+ }
+ }
+ });
+});
diff --git a/src/app/__tests__/image.helper.spec.tsx b/src/app/__tests__/image.helper.spec.tsx
new file mode 100644
index 00000000..7b1e8bcb
--- /dev/null
+++ b/src/app/__tests__/image.helper.spec.tsx
@@ -0,0 +1,32 @@
+import { getImageUri } from "../shared/helpers/image.helper";
+
+// Descreva o teste
+describe("getImageUri", () => {
+ it("deve retornar uma URI de imagem válida para um Buffer fornecido", () => {
+ // Crie um Buffer de teste (pode ser uma imagem simulada)
+ const buffer = Buffer.from("conteudo-do-buffer");
+
+ // Chame a função que você deseja testar
+ const result = getImageUri(buffer);
+
+ // Avalie o resultado esperado
+ expect(result).toMatch(/^data:image\/png;base64,/);
+ });
+
+ it("Imagem ja esta codificada", () => {
+ const base64Icon =
+ "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAwBQTFRF7c5J78kt+/Xm78lQ6stH5LI36bQh6rcf7sQp671G89ZZ8c9V8c5U9+u27MhJ/Pjv9txf8uCx57c937Ay5L1n58Nb67si8tVZ5sA68tJX/Pfr7dF58tBG9d5e8+Gc6chN6LM+7spN1pos6rYs6L8+47hE7cNG6bQc9uFj7sMn4rc17cMx3atG8duj+O7B686H7cAl7cEm7sRM26cq/vz5/v767NFY7tJM78Yq8s8y3agt9dte6sVD/vz15bY59Nlb8txY9+y86LpA5LxL67pE7L5H05Ai2Z4m58Vz89RI7dKr+/XY8Ms68dx/6sZE7sRCzIEN0YwZ67wi6rk27L4k9NZB4rAz7L0j5rM66bMb682a5sJG6LEm3asy3q0w3q026sqC8cxJ6bYd685U5a457cIn7MBJ8tZW7c1I7c5K7cQ18Msu/v3678tQ3aMq7tNe6chu6rgg79VN8tNH8c0w57Q83akq7dBb9Nld9d5g6cdC8dyb675F/v327NB6////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/LvB3QAAAMFJREFUeNpiqIcAbz0ogwFKm7GgCjgyZMihCLCkc0nkIAnIMVRw2UhDBGp5fcurGOyLfbhVtJwLdJkY8oscZCsFPBk5spiNaoTC4hnqk801Qi2zLQyD2NlcWWP5GepN5TOtSxg1QwrV01itpECG2kaLy3AYiCWxcRozQWyp9pNMDWePDI4QgVpbx5eo7a+mHFOqAxUQVeRhdrLjdFFQggqo5tqVeSS456UEQgWE4/RBboxyC4AKCEI9Wu9lUl8PEGAAV7NY4hyx8voAAAAASUVORK5CYII=";
+
+ const result = getImageUri(base64Icon);
+
+ expect(result).toMatch(
+ "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAwBQTFRF7c5J78kt+/Xm78lQ6stH5LI36bQh6rcf7sQp671G89ZZ8c9V8c5U9+u27MhJ/Pjv9txf8uCx57c937Ay5L1n58Nb67si8tVZ5sA68tJX/Pfr7dF58tBG9d5e8+Gc6chN6LM+7spN1pos6rYs6L8+47hE7cNG6bQc9uFj7sMn4rc17cMx3atG8duj+O7B686H7cAl7cEm7sRM26cq/vz5/v767NFY7tJM78Yq8s8y3agt9dte6sVD/vz15bY59Nlb8txY9+y86LpA5LxL67pE7L5H05Ai2Z4m58Vz89RI7dKr+/XY8Ms68dx/6sZE7sRCzIEN0YwZ67wi6rk27L4k9NZB4rAz7L0j5rM66bMb682a5sJG6LEm3asy3q0w3q026sqC8cxJ6bYd685U5a457cIn7MBJ8tZW7c1I7c5K7cQ18Msu/v3678tQ3aMq7tNe6chu6rgg79VN8tNH8c0w57Q83akq7dBb9Nld9d5g6cdC8dyb675F/v327NB6////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/LvB3QAAAMFJREFUeNpiqIcAbz0ogwFKm7GgCjgyZMihCLCkc0nkIAnIMVRw2UhDBGp5fcurGOyLfbhVtJwLdJkY8oscZCsFPBk5spiNaoTC4hnqk801Qi2zLQyD2NlcWWP5GepN5TOtSxg1QwrV01itpECG2kaLy3AYiCWxcRozQWyp9pNMDWePDI4QgVpbx5eo7a+mHFOqAxUQVeRhdrLjdFFQggqo5tqVeSS456UEQgWE4/RBboxyC4AKCEI9Wu9lUl8PEGAAV7NY4hyx8voAAAAASUVORK5CYII=",
+ );
+ });
+
+ it("Imagem vazia", () => {
+ const result = getImageUri();
+
+ expect(result).toMatch("data:image/png;base64,");
+ });
+});
diff --git a/src/app/__tests__/index.spec.tsx b/src/app/__tests__/index.spec.tsx
new file mode 100644
index 00000000..a910cfbd
--- /dev/null
+++ b/src/app/__tests__/index.spec.tsx
@@ -0,0 +1,25 @@
+import React from "react";
+import { render } from "@testing-library/react-native";
+import Home from "..";
+
+describe("Home", () => {
+ it("renderiza corretamente", () => {
+ const { toJSON } = render();
+ expect(toJSON()).toMatchSnapshot();
+ });
+ it("deve conter um título", () => {
+ const { getByText } = render();
+ const titleElement = getByText("Seja um GEROcuidador!");
+ expect(titleElement).toBeTruthy();
+ });
+
+ it("deve conter botões de ação", () => {
+ const { getByText } = render();
+ const forumButton = getByText("Acessar Fórum");
+ const loginButton = getByText("Login");
+ const cadastroButton = getByText("Cadastre-se");
+ expect(forumButton).toBeTruthy();
+ expect(loginButton).toBeTruthy();
+ expect(cadastroButton).toBeTruthy();
+ });
+});
diff --git a/src/app/__tests__/listarIdosos.spec.tsx b/src/app/__tests__/listarIdosos.spec.tsx
new file mode 100644
index 00000000..58e36d74
--- /dev/null
+++ b/src/app/__tests__/listarIdosos.spec.tsx
@@ -0,0 +1,76 @@
+import React from "react";
+import { render, waitFor, fireEvent } from "@testing-library/react-native";
+import ListarIdosos from "../private/pages/listarIdosos";
+import { getAllIdoso } from "../services/idoso.service";
+import AsyncStorage from "@react-native-async-storage/async-storage";
+import { router } from "expo-router";
+
+// Mockando o expo-router
+jest.mock('expo-router', () => ({
+ useLocalSearchParams: jest.fn().mockReturnValue({
+ id: "123",
+ nome: "Nome Teste",
+ foto: null,
+ }),
+ router: {
+ push: jest.fn(), // Mocka o método push para verificações de navegação
+ back: jest.fn(), // Mocka o método back para o caso de não haver a prop route
+ canGoBack: jest.fn().mockReturnValue(true), // Mocka o método canGoBack
+ },
+ useRouter: jest.fn().mockReturnValue({
+ push: jest.fn(), // Mocka novamente o push no caso do uso da função useRouter
+ back: jest.fn(),
+ canGoBack: jest.fn().mockReturnValue(true),
+ }),
+}));
+
+// Mockando o banco de dados e a função getIdosos
+jest.mock("../db/index", () => ({
+ get: jest.fn().mockReturnValue({
+ query: jest.fn().mockReturnValue({
+ fetch: jest.fn().mockResolvedValueOnce([
+ { _raw: { id: 1, nome: "Idoso 1", foto: "foto1.jpg" } },
+ { _raw: { id: 2, nome: "Idoso 2", foto: "foto2.jpg" } },
+ ]),
+ }),
+ }),
+}));
+
+jest.mock("@react-native-async-storage/async-storage", () => ({
+ getItem: jest.fn(),
+}));
+
+describe("ListarIdosos", () => {
+
+ it("deve exibir a lista de idosos após a conclusão da chamada da API", async () => {
+ // Mock do AsyncStorage para retornar um usuário com ID
+ (AsyncStorage.getItem as jest.Mock).mockImplementation((key) => {
+ if (key === "usuario") {
+ return Promise.resolve(JSON.stringify({ id: 1 }));
+ }
+ return Promise.resolve(null);
+ });
+
+ const { getByText } = render();
+
+ // Aguarda a resolução da promessa e a renderização dos dados
+ await waitFor(() => expect(getByText("Idoso 1")).toBeTruthy());
+ expect(getByText("Idoso 2")).toBeTruthy();
+ });
+
+ test("Navega para a tela anterior ao clicar no botão de voltar", async () => {
+ // Renderiza o componente ListarIdosos
+ const { getByTestId } = render();
+
+ // Obtendo o botão de voltar
+ const backButton = getByTestId("back-button-pressable");
+
+ // Simula o clique no botão de voltar
+ fireEvent.press(backButton);
+
+ // Verifica se a função de navegação foi chamada corretamente
+ await waitFor(() => {
+ expect(router.push).toHaveBeenCalledWith("/private/tabs/perfil");
+ });
+ });
+});
diff --git a/src/app/__tests__/login-success.spec.tsx b/src/app/__tests__/login-success.spec.tsx
new file mode 100644
index 00000000..3da78d40
--- /dev/null
+++ b/src/app/__tests__/login-success.spec.tsx
@@ -0,0 +1,65 @@
+import React from "react";
+import { render, fireEvent, act } from "@testing-library/react-native";
+import Login from "../public/login";
+
+// Mock do AsyncStorage
+jest.mock("@react-native-async-storage/async-storage", () => ({
+ setItem: jest.fn(),
+ getItem: jest.fn(),
+ removeItem: jest.fn(),
+}));
+jest.mock("expo-router", () => ({
+ router: {
+ push: jest.fn(),
+ },
+}));
+// Mock da função de login
+// eslint-disable-next-line @typescript-eslint/no-var-requires
+jest.mock("../services/user.service");
+
+describe("Login Component - Sucesso", () => {
+ it("deve lidar com campos vazios e inválidos", () => {
+ const { getByText, queryByTestId } = render();
+ const loginButton = getByText("Entrar");
+
+ act(() => {
+ fireEvent.press(loginButton);
+ });
+
+ // Verifique se as mensagens de erro são exibidas
+ expect(queryByTestId("error-email")).toBeNull();
+ expect(queryByTestId("error-senha")).toBeNull();
+ });
+
+ /*it("deve lidar com email inválido", () => {
+ const { getByPlaceholderText, getByText, queryByTestId } = render();
+ const emailInput = getByPlaceholderText("Email");
+ const loginButton = getByText("Entrar");
+
+ act(() => {
+ fireEvent.changeText(emailInput, "email_invalido");
+ fireEvent.press(loginButton);
+ });
+
+ // Verifique se a mensagem de erro de email inválido é exibida
+ expect(queryByTestId("error-email")).not.toBeNull();
+ });
+*/
+ it("deve lidar com senha inválida", () => {
+ const { getByPlaceholderText, getByText, queryByTestId } = render(
+ ,
+ );
+ const emailInput = getByPlaceholderText("Email");
+ const passwordInput = getByPlaceholderText("Senha");
+ const loginButton = getByText("Entrar");
+
+ act(() => {
+ fireEvent.changeText(emailInput, "seuemail@gmail.com");
+ fireEvent.changeText(passwordInput, "senha_curta");
+ fireEvent.press(loginButton);
+ });
+
+ // Verifique se a mensagem de erro de senha inválida é exibida
+ expect(queryByTestId("error-senha")).toBeNull();
+ });
+});
diff --git a/src/app/__tests__/login.spec.tsx b/src/app/__tests__/login.spec.tsx
new file mode 100644
index 00000000..2d369fd1
--- /dev/null
+++ b/src/app/__tests__/login.spec.tsx
@@ -0,0 +1,257 @@
+import React from 'react';
+import { render, fireEvent, waitFor} from '@testing-library/react-native';
+import Login from '../public/login';
+import AsyncStorage from '@react-native-async-storage/async-storage';
+import Toast from 'react-native-toast-message';
+import { router } from 'expo-router';
+import { loginUser, getUserById} from '../services/user.service';
+import JWT from 'expo-jwt';
+import database from "../db";
+import { syncDatabaseWithServer } from '../services/watermelon.service';
+import getUser from '../public/login';
+
+const mockUser = { id: 1, name: 'Usuário Teste' };
+
+// Mock do database e da função de sincronização
+jest.mock('../db', () => ({
+ get: jest.fn(),
+}));
+
+jest.mock('../services/watermelon.service', () => ({
+ syncDatabaseWithServer: jest.fn(),
+}));
+
+jest.mock('../services/user.service', () => ({
+ getUserById: jest.fn().mockResolvedValue({ data: mockUser }),
+ loginUser: jest.fn(),
+}));
+
+// Mock do Toast
+jest.mock('react-native-toast-message', () => ({
+ show: jest.fn(),
+}));
+
+// Mock do AsyncStorage
+jest.mock('@react-native-async-storage/async-storage', () => ({
+ setItem: jest.fn(),
+ getItem: jest.fn(),
+}));
+
+// Mock do router
+jest.mock('expo-router', () => ({
+ router: {
+ push: jest.fn(),
+ },
+}));
+
+// Mock do JWT
+jest.mock('expo-jwt', () => ({
+ decode: jest.fn(),
+}));
+
+describe('Login', () => {
+ const mockLoginResponse = {
+ data: 'mockToken',
+ };
+
+ beforeEach(() => {
+ jest.clearAllMocks();
+ });
+
+ it('deve exibir mensagem de erro se o login falhar', async () => {
+ const error = new Error('Erro de login');
+
+ // Mock da função loginUser para lançar um erro
+ (loginUser as jest.Mock).mockRejectedValue(error);
+ (Toast.show as jest.Mock).mockImplementation(() => {});
+
+ const { getByPlaceholderText, getByText } = render();
+
+ // Preenche os campos e tenta enviar o formulário
+ fireEvent.changeText(getByPlaceholderText('Email'), 'usuario@exemplo.com');
+ fireEvent.changeText(getByPlaceholderText('Senha'), 'senhaerrada');
+ fireEvent.press(getByText('Entrar'));
+
+ // Aguarda o erro ser exibido com um timeout de 5000ms
+ await waitFor(() => {
+ expect(Toast.show).toHaveBeenCalledWith({
+ type: 'error',
+ text1: 'Erro!',
+ text2: 'Erro de login',
+ });
+ }, { timeout: 5000 });
+
+ // Adicionalmente, você pode querer verificar se outras ações esperadas aconteceram
+ });
+
+ it('deve realizar login com sucesso', async () => {
+ const token = 'mockToken';
+ const userResponse = { data: token };
+ const userInfo = { id: 1, email: 'u@gmail.com', senha: 'teste1' };
+
+ // Mock dos retornos das funções
+ (loginUser as jest.Mock).mockResolvedValue(userResponse);
+ (JWT.decode as jest.Mock).mockReturnValue(userInfo);
+ (AsyncStorage.setItem as jest.Mock).mockResolvedValue(undefined);
+ (router.push as jest.Mock).mockImplementation(() => {});
+
+ const { getByPlaceholderText, getByText } = render();
+
+ fireEvent.changeText(getByPlaceholderText('Email'), 'u@gmail.com');
+ fireEvent.changeText(getByPlaceholderText('Senha'), 'teste1');
+ fireEvent.press(getByText('Entrar'));
+
+ await waitFor(() => {
+ expect(loginUser).toHaveBeenCalledWith({ email: 'u@gmail.com', senha: 'teste1' });
+ expect(router.push).toHaveBeenCalledWith('/private/pages/listarIdosos');
+ });
+ });
+
+ it('deve exibir mensagem de erro quando os campos estão vazios', async () => {
+ const { getByText } = render();
+ fireEvent.press(getByText('Entrar'));
+
+ await waitFor(() => {
+ expect(Toast.show).toHaveBeenCalledWith({
+ type: 'error',
+ text1: 'Erro!',
+ text2: 'O campo de email é obrigatório!',
+ });
+
+ expect(Toast.show).toHaveBeenCalledWith({
+ type: 'error',
+ text1: 'Erro!',
+ text2: 'O campo de senha é obrigatório!',
+ });
+ });
+ });
+
+ it('deve exibir mensagem de erro se o email estiver no formato inválido', async () => {
+ const invalidEmail = 'usuario#email.com';
+
+ const { getByPlaceholderText, getByText } = render();
+
+ fireEvent.changeText(getByPlaceholderText('Email'), invalidEmail);
+ fireEvent.changeText(getByPlaceholderText('Senha'), 'teste123');
+ fireEvent.press(getByText('Entrar'));
+
+ await waitFor(() => {
+ expect(Toast.show).toHaveBeenCalledWith({
+ type: 'error',
+ text1: 'Erro!',
+ text2: 'Formato de email inválido!',
+ });
+ });
+ });
+
+ it('deve alternar a visibilidade da senha ao clicar no ícone de olho', () => {
+ const { getByPlaceholderText, getByTestId } = render();
+
+ const senhaInput = getByPlaceholderText('Senha');
+ const eyeIcon = getByTestId('escondeSenhaIcon');
+
+ // Inicialmente, a senha deve estar escondida
+ expect(senhaInput.props.secureTextEntry).toBe(true);
+
+ // Clica no ícone para mostrar a senha
+ fireEvent.press(eyeIcon);
+ expect(senhaInput.props.secureTextEntry).toBe(false);
+
+ // Clica novamente para esconder a senha
+ fireEvent.press(eyeIcon);
+ expect(senhaInput.props.secureTextEntry).toBe(true);
+ });
+
+ it('deve tratar erro ao decodificar o token', async () => {
+ const token = 'mockToken';
+ const userResponse = { data: token };
+ const userInfo = { id: 1, email: 'u@gmail.com', senha: 'teste1' };
+
+ // Mock dos retornos das funções
+ (loginUser as jest.Mock).mockResolvedValue(userResponse);
+ (JWT.decode as jest.Mock).mockImplementation(() => {
+ throw new Error('Erro ao decodificar o token');
+ });
+ (AsyncStorage.setItem as jest.Mock).mockResolvedValue(undefined);
+ (router.push as jest.Mock).mockImplementation(() => {});
+
+ const consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation(() => {});
+
+ const { getByPlaceholderText, getByText } = render();
+
+ fireEvent.changeText(getByPlaceholderText('Email'), 'u@gmail.com');
+ fireEvent.changeText(getByPlaceholderText('Senha'), 'teste1');
+ fireEvent.press(getByText('Entrar'));
+
+ // Aguarda que o loginUser seja chamado
+ await waitFor(() => {
+ expect(loginUser).toHaveBeenCalledWith({ email: 'u@gmail.com', senha: 'teste1' });
+ });
+
+ // Verifica se console.error foi chamado com a mensagem esperada
+ expect(consoleErrorSpy).toHaveBeenCalledWith("Erro ao decodificar o token:", expect.any(Error));
+
+ // Limpa o spy
+ consoleErrorSpy.mockRestore();
+ });
+
+ it('deve tratar erro ao processar o token', async () => {
+ const mockToken = 'mockToken';
+
+ // Simula o retorno do loginUser
+ loginUser.mockResolvedValueOnce({ data: mockToken });
+
+ // Simula o AsyncStorage.setItem para lançar um erro
+ AsyncStorage.setItem.mockImplementationOnce(() => {
+ throw new Error('Erro ao salvar o token');
+ });
+
+ const { getByPlaceholderText, getByText } = render();
+
+ // Preenche os campos
+ fireEvent.changeText(getByPlaceholderText('Email'), 'u@gmail.com');
+ fireEvent.changeText(getByPlaceholderText('Senha'), 'teste1');
+
+ // Clica no botão de login
+ fireEvent.press(getByText('Entrar'));
+
+ // Verifica se o Toast foi chamado com a mensagem de erro
+ await waitFor(() => {
+ expect(Toast.show).toHaveBeenCalledWith({
+ type: 'error',
+ text1: 'Erro!',
+ text2: 'Erro ao salvar o token',
+ });
+ });
+ });
+
+ it('deve buscar o usuário no banco e salvar no AsyncStorage', async () => {
+ const mockUser = { id: 1, name: 'Usuário Teste' };
+ const mockId = 1;
+ const mockToken = 'mockToken';
+
+ // Mock do AsyncStorage
+ jest.spyOn(AsyncStorage, 'setItem');
+
+ // Simular a função getUserById
+ getUserById.mockResolvedValue({ data: mockUser });
+
+ // Renderizando o componente
+ const { getByText, getByPlaceholderText } = render();
+
+ // Simular preenchimento do formulário
+ fireEvent.changeText(getByPlaceholderText('Email'), 'teste@teste.com');
+ fireEvent.changeText(getByPlaceholderText('Senha'), '123456');
+
+ // Simular o clique no botão de login
+ fireEvent.press(getByText('Entrar')); // Mudei para 'Entrar'
+
+ // Verificar se o AsyncStorage foi chamado com os valores corretos
+ await waitFor(() => {
+ expect(AsyncStorage.setItem).toHaveBeenCalledWith(
+ 'token', // Altere para o token esperado
+ mockToken // Altere para o valor esperado do token
+ );
+ });
+ });
+});
\ No newline at end of file
diff --git a/src/app/__tests__/metrica.service.spec.tsx b/src/app/__tests__/metrica.service.spec.tsx
new file mode 100644
index 00000000..bb19d1ae
--- /dev/null
+++ b/src/app/__tests__/metrica.service.spec.tsx
@@ -0,0 +1,201 @@
+declare global {
+ namespace NodeJS {
+ interface Global {
+ fetch: jest.Mock;
+ }
+ }
+}
+
+import { postMetrica, getAllMetrica, updateMetrica, getSomaHidratacao } from "../services/metrica.service";
+const BASE_URL = `${process.env.EXPO_PUBLIC_API_URL}:${process.env.EXPO_PUBLIC_API_SAUDE_PORT}/api/saude/metrica`;
+
+global.fetch = jest.fn();
+
+describe("metricas.service", () => {
+ afterEach(() => {
+ jest.resetAllMocks();
+ });
+
+ describe("postMetrica", () => {
+ it("deve chamar a API corretamente ao criar uma métrica", async () => {
+ const mockBody = {
+ /* Seu corpo de exemplo aqui */
+ };
+ const mockToken = "seu-token-de-exemplo";
+
+ const mockResponse = {
+ status: 201,
+ json: jest.fn().mockResolvedValue({
+ /* Seu objeto de resposta aqui */
+ }),
+ };
+
+ global.fetch.mockResolvedValue(mockResponse);
+
+ await postMetrica(mockBody, mockToken);
+
+ expect(global.fetch).toHaveBeenCalledWith(
+ expect.any(String),
+ expect.objectContaining({
+ method: "POST",
+ headers: {
+ Accept: "application/json",
+ "Content-Type": "application/json",
+ Authorization: `Bearer ${mockToken}`,
+ },
+ body: JSON.stringify(mockBody),
+ }),
+ );
+ });
+
+ it("deve lançar um erro se a resposta da API não for bem-sucedida", async () => {
+ const mockBody = {};
+ const mockToken = "seu-token-de-exemplo";
+
+ const mockResponse = {
+ status: 500,
+ json: jest.fn().mockResolvedValue({ message: "Erro na API" }),
+ };
+
+ global.fetch.mockResolvedValue(mockResponse);
+
+ await expect(postMetrica(mockBody, mockToken)).rejects.toThrow(
+ "Erro na API",
+ );
+ });
+ });
+
+ describe("getAllMetrica", () => {
+ it("deve chamar a API corretamente ao obter todas as métricas", async () => {
+ const mockFilter = {};
+
+ const mockResponse = {
+ status: 200,
+ json: jest.fn().mockResolvedValue({}),
+ };
+
+ global.fetch.mockResolvedValue(mockResponse);
+
+ await getAllMetrica(mockFilter);
+
+ const expectedParams = `limit=20&offset=0&filter=${JSON.stringify(
+ mockFilter,
+ )}`;
+
+ expect(global.fetch).toHaveBeenCalledWith(
+ expect.stringContaining(expectedParams),
+ expect.objectContaining({
+ method: "GET",
+ headers: {
+ Accept: "application/json",
+ "Content-Type": "application/json",
+ },
+ }),
+ );
+ });
+
+ it("deve lançar um erro se a resposta da API não for bem-sucedida", async () => {
+ const mockFilter = {};
+
+ const mockResponse = {
+ status: 500,
+ json: jest.fn().mockResolvedValue({ message: "Erro na API" }),
+ };
+
+ global.fetch.mockResolvedValue(mockResponse);
+
+ await expect(getAllMetrica(mockFilter)).rejects.toThrow("Erro na API");
+ });
+ });
+});
+
+describe("updateMetrica", () => {
+ it("deve chamar a API corretamente ao atualizar uma métrica", async () => {
+ const mockId = 1;
+ const mockBody = { /* corpo da atualização */ };
+ const mockToken = "seu-token-de-exemplo";
+
+ const mockResponse = {
+ status: 200,
+ json: jest.fn().mockResolvedValue({
+ /* resposta esperada aqui */
+ }),
+ };
+
+ global.fetch.mockResolvedValue(mockResponse);
+
+ await updateMetrica(mockId, mockBody, mockToken);
+
+ expect(global.fetch).toHaveBeenCalledWith(
+ `${BASE_URL}/${mockId}`,
+ expect.objectContaining({
+ method: "PATCH",
+ headers: {
+ Accept: "application/json",
+ "Content-Type": "application/json",
+ Authorization: `Bearer ${mockToken}`,
+ },
+ body: JSON.stringify(mockBody),
+ }),
+ );
+ });
+
+ it("deve lançar um erro se a resposta da API não for bem-sucedida", async () => {
+ const mockId = 1;
+ const mockBody = {};
+ const mockToken = "seu-token-de-exemplo";
+
+ const mockResponse = {
+ status: 500,
+ json: jest.fn().mockResolvedValue({ message: "Erro na API" }),
+ };
+
+ global.fetch.mockResolvedValue(mockResponse);
+
+ await expect(updateMetrica(mockId, mockBody, mockToken)).rejects.toThrow("Erro na API");
+ });
+});
+
+describe("getSomaHidratacao", () => {
+ it("deve chamar a API corretamente ao obter a soma de hidratação", async () => {
+ const mockId = 1;
+ const mockToken = "seu-token-de-exemplo";
+
+ const mockResponse = {
+ status: 200,
+ json: jest.fn().mockResolvedValue({ data: 100 }),
+ };
+
+ global.fetch.mockResolvedValue(mockResponse);
+
+ const result = await getSomaHidratacao(mockId, mockToken);
+
+ expect(global.fetch).toHaveBeenCalledWith(
+ `${BASE_URL}/soma-hidratacao/${mockId}`,
+ expect.objectContaining({
+ method: "GET",
+ headers: {
+ Accept: "application/json",
+ "Content-Type": "application/json",
+ Authorization: `Bearer ${mockToken}`,
+ },
+ }),
+ );
+
+ expect(result).toBe(100);
+ });
+
+ it("deve lançar um erro se a resposta da API não for bem-sucedida", async () => {
+ const mockId = 1;
+ const mockToken = "seu-token-de-exemplo";
+
+ const mockResponse = {
+ status: 500,
+ json: jest.fn().mockResolvedValue({ message: "Erro na API" }),
+ };
+
+ global.fetch.mockResolvedValue(mockResponse);
+
+ await expect(getSomaHidratacao(mockId, mockToken)).rejects.toThrow("Erro na API");
+ });
+});
\ No newline at end of file
diff --git a/src/app/__tests__/metricaValue.service.spec.tsx b/src/app/__tests__/metricaValue.service.spec.tsx
new file mode 100644
index 00000000..56bc4786
--- /dev/null
+++ b/src/app/__tests__/metricaValue.service.spec.tsx
@@ -0,0 +1,144 @@
+import {getAllMetricaValues, postMetricaValue, deleteMetricaValue} from "../services/metricaValue.service";
+import { IValorMetricaBody, IMetricaValueFilter, IOrder } from "../interfaces/metricas.interface";
+
+ // Mocks de variáveis globais e funções
+ const BASE_URL = `${process.env.EXPO_PUBLIC_API_URL}:${process.env.EXPO_PUBLIC_API_SAUDE_PORT}/api/saude/valorMetrica`;
+ global.fetch = jest.fn();
+
+ describe("metricaValue.service", () => {
+ afterEach(() => {
+ jest.resetAllMocks();
+ });
+
+ describe("getAllMetricaValues", () => {
+ it("deve chamar a API corretamente ao obter todos os valores de métrica", async () => {
+ const mockFilter: IMetricaValueFilter = { };
+ const mockOrder: IOrder = { };
+
+ const mockResponse = {
+ status: 200,
+ json: jest.fn().mockResolvedValue({ data: [] }),
+ };
+
+ global.fetch.mockResolvedValue(mockResponse);
+
+ const result = await getAllMetricaValues(mockFilter, mockOrder);
+
+ expect(global.fetch).toHaveBeenCalledWith(
+ `${BASE_URL}?limit=20&offset=0&filter=${JSON.stringify(mockFilter)}&order=${JSON.stringify(mockOrder)}`,
+ expect.objectContaining({
+ method: "GET",
+ headers: {
+ Accept: "application/json",
+ "Content-Type": "application/json",
+ },
+ }),
+ );
+
+ expect(result).toEqual({ data: [] });
+ });
+ });
+
+ it("deve lançar um erro se a resposta da API não for bem-sucedida", async () => {
+ const mockFilter: IMetricaValueFilter = {};
+ const mockOrder: IOrder = {};
+
+ const mockResponse = {
+ status: 500,
+ json: jest.fn().mockResolvedValue({ message: "Erro na API" }),
+ };
+
+ global.fetch.mockResolvedValue(mockResponse);
+
+ await expect(getAllMetricaValues(mockFilter, mockOrder)).rejects.toThrow("Erro na API");
+ });
+ });
+
+ describe("postMetricaValue", () => {
+ it("deve chamar a API corretamente ao criar um valor de métrica", async () => {
+ const mockBody: IValorMetricaBody = { };
+ const mockToken = "token-exemplo";
+
+ const mockResponse = {
+ status: 201,
+ json: jest.fn().mockResolvedValue({ data: { id: 1 } }),
+ };
+
+ global.fetch.mockResolvedValue(mockResponse);
+
+ const result = await postMetricaValue(mockBody, mockToken);
+
+ expect(global.fetch).toHaveBeenCalledWith(
+ BASE_URL,
+ expect.objectContaining({
+ method: "POST",
+ headers: {
+ Accept: "application/json",
+ "Content-Type": "application/json",
+ Authorization: `Bearer ${mockToken}`,
+ },
+ body: JSON.stringify(mockBody),
+ }),
+ );
+
+ expect(result).toEqual({ data: { id: 1 } });
+ });
+
+ it("deve lançar um erro se a resposta da API não for bem-sucedida", async () => {
+ const mockBody: IValorMetricaBody = {};
+ const mockToken = "token-exemplo";
+
+ const mockResponse = {
+ status: 500,
+ json: jest.fn().mockResolvedValue({ message: "Erro na API" }),
+ };
+
+ global.fetch.mockResolvedValue(mockResponse);
+
+ await expect(postMetricaValue(mockBody, mockToken)).rejects.toThrow("Erro na API");
+ });
+ });
+
+ describe("deleteMetricaValue", () => {
+ it("deve chamar a API corretamente ao deletar um valor de métrica", async () => {
+ const mockId = 1;
+ const mockToken = "token-exemplo";
+
+ const mockResponse = {
+ status: 200,
+ json: jest.fn().mockResolvedValue({ message: "Deletado com sucesso" }),
+ };
+
+ global.fetch.mockResolvedValue(mockResponse);
+
+ const result = await deleteMetricaValue(mockId, mockToken);
+
+ expect(global.fetch).toHaveBeenCalledWith(
+ `${BASE_URL}/${mockId}`,
+ expect.objectContaining({
+ method: "DELETE",
+ headers: {
+ Accept: "application/json",
+ "Content-Type": "application/json",
+ Authorization: `Bearer ${mockToken}`,
+ },
+ }),
+ );
+
+ expect(result).toEqual({ message: "Deletado com sucesso" });
+ });
+
+ it("deve lançar um erro se a resposta da API não for bem-sucedida", async () => {
+ const mockId = 1;
+ const mockToken = "token-exemplo";
+
+ const mockResponse = {
+ status: 500,
+ json: jest.fn().mockResolvedValue({ message: "Erro ao deletar" }),
+ };
+
+ global.fetch.mockResolvedValue(mockResponse);
+
+ await expect(deleteMetricaValue(mockId, mockToken)).rejects.toThrow("Erro ao deletar");
+ });
+ });
diff --git a/src/app/__tests__/modalmetrica.spec.tsx b/src/app/__tests__/modalmetrica.spec.tsx
new file mode 100644
index 00000000..74d9468a
--- /dev/null
+++ b/src/app/__tests__/modalmetrica.spec.tsx
@@ -0,0 +1,390 @@
+import React from "react";
+import { render, fireEvent, act, waitFor } from "@testing-library/react-native";
+import ModalMetrica from "../components/ModalMetrica";
+import { EMetricas, IMetrica } from "../interfaces/metricas.interface";
+import { ETipoSanguineo } from "../interfaces/idoso.interface";
+
+const mockItem = {
+ id: 2,
+ idIdoso: 123,
+ nome: "João Silva",
+ dataNascimento: "1950-01-01",
+ idUsuario: 123,
+ foto: "url_da_foto.jpg",
+ tipoSanguineo: ETipoSanguineo.A_POSITIVO,
+ telefoneResponsavel: "123456789",
+ descricao: "Idoso com histórico de hipertensão",
+ dataHora: new Date(),
+ categoria: EMetricas.FREQ_CARDIACA,
+ valor: 75,
+};
+
+const mockItem1 = {
+ id: 1,
+ idIdoso: 123,
+ nome: "João Silva",
+ dataNascimento: "1950-01-01",
+ idUsuario: 123,
+ foto: "url_da_foto.jpg",
+ tipoSanguineo: ETipoSanguineo.A_POSITIVO,
+ telefoneResponsavel: "123456789",
+ descricao: "Idoso com histórico de hipertensão",
+ dataHora: new Date(),
+ categoria: EMetricas.GLICEMIA,
+ valor: 75,
+};
+
+const mockItem2 = {
+ id: 1,
+ idIdoso: 123,
+ nome: "João Silva",
+ dataNascimento: "1950-01-01",
+ idUsuario: 123,
+ foto: "url_da_foto.jpg",
+ tipoSanguineo: ETipoSanguineo.A_POSITIVO,
+ telefoneResponsavel: "123456789",
+ descricao: "Idoso com histórico de hipertensão",
+ dataHora: new Date(),
+ categoria: EMetricas.PESO,
+ valor: 75,
+};
+
+const mockItem3 = {
+ id: 1,
+ idIdoso: 123,
+ nome: "João Silva",
+ dataNascimento: "1950-01-01",
+ idUsuario: 1234,
+ foto: "url_da_foto.jpg",
+ tipoSanguineo: ETipoSanguineo.A_POSITIVO,
+ telefoneResponsavel: "123456789",
+ descricao: "Idoso com histórico de hipertensão",
+ dataHora: new Date(),
+ categoria: EMetricas.PRESSAO_SANGUINEA,
+ valor: 75,
+};
+
+const mockItem4 = {
+ id: 1,
+ idIdoso: 1234,
+ nome: "João Silva",
+ dataNascimento: "1950-01-01",
+ idUsuario: 123,
+ foto: "url_da_foto.jpg",
+ tipoSanguineo: ETipoSanguineo.A_POSITIVO,
+ telefoneResponsavel: "123456789",
+ descricao: "Idoso com histórico de hipertensão",
+ dataHora: new Date(),
+ categoria: EMetricas.SATURACAO_OXIGENIO,
+ valor: 75,
+};
+
+const mockItem5 = {
+ id: 1,
+ idIdoso: 123,
+ nome: "João Silva",
+ dataNascimento: "1950-01-01",
+ idUsuario: 123,
+ foto: "url_da_foto.jpg",
+ tipoSanguineo: ETipoSanguineo.A_POSITIVO,
+ telefoneResponsavel: "123456789",
+ descricao: "Idoso com histórico de hipertensão",
+ dataHora: new Date(),
+ categoria: EMetricas.TEMPERATURA,
+ valor: 75,
+};
+
+const mockItem6 = {
+ id: 1,
+ idIdoso: 123,
+ nome: "João Silva ",
+ dataNascimento: "1950-01-01",
+ idUsuario: 123,
+ foto: "url_da_foto.jpg",
+ tipoSanguineo: ETipoSanguineo.A_POSITIVO,
+ telefoneResponsavel: "123456789",
+ descricao: "Idoso com histórico de hipertensão",
+ dataHora: new Date(),
+ categoria: EMetricas.HORAS_DORMIDAS,
+ valor: 75,
+};
+
+const mockItem7 = {
+ id: 1,
+ idIdoso: 123,
+ nome: "João Silva",
+ dataNascimento: "1950-01-01",
+ idUsuario: 13,
+ foto: "url_da_foto.jpg",
+ tipoSanguineo: ETipoSanguineo.A_POSITIVO,
+ telefoneResponsavel: "123456789",
+ descricao: "Idoso com histórico de hipertensão",
+ dataHora: new Date(),
+ categoria: EMetricas.ALTURA,
+ valor: 95,
+};
+
+const mockItem8 = {
+ id: 1,
+ idIdoso: 123,
+ nome: "João Silva",
+ dataNascimento: "1950-01-01",
+ idUsuario: 12,
+ foto: "url_da_foto.jpg",
+ tipoSanguineo: ETipoSanguineo.A_POSITIVO,
+ telefoneResponsavel: "123456789",
+ descricao: "Idoso com histórico de hipertensão",
+ dataHora: new Date(),
+ categoria: EMetricas.IMC,
+ valor: 70,
+};
+
+describe("ModalMetrica Component", () => {
+ it("renderiza sem erros", () => {
+ render(
+ {}}
+ closeModal={() => {}}
+ callbackValor={() => {}}
+ message="Teste"
+ metrica={mockItem}
+ />,
+ );
+ });
+ it("exibe as unidades corretas", () => {
+ render(
+ {}}
+ closeModal={() => {}}
+ callbackValor={() => {}}
+ message="Teste"
+ metrica={mockItem1}
+ />,
+ );
+ });
+ it("exibe as unidades corretas 1", () => {
+ render(
+ {}}
+ closeModal={() => {}}
+ callbackValor={() => {}}
+ message="Teste"
+ metrica={mockItem2}
+ />,
+ );
+ });
+ it("exibe as unidades corretas 2", () => {
+ render(
+ {}}
+ closeModal={() => {}}
+ callbackValor={() => {}}
+ message="Teste"
+ metrica={mockItem3}
+ />,
+ );
+ });
+ it("exibe as unidades corretas 3", () => {
+ render(
+ {}}
+ closeModal={() => {}}
+ callbackValor={() => {}}
+ message="Teste"
+ metrica={mockItem4}
+ />,
+ );
+ });
+ it("exibe as unidades corretas 4", () => {
+ render(
+ {}}
+ closeModal={() => {}}
+ callbackValor={() => {}}
+ message="Teste"
+ metrica={mockItem5}
+ />,
+ );
+ });
+
+ it("exibe as unidades corretas 5", () => {
+ render(
+ {}}
+ closeModal={() => {}}
+ callbackValor={() => {}}
+ message="Teste"
+ metrica={mockItem6}
+ />,
+ );
+ });
+
+ it("exibe as unidades corretas 6", () => {
+ render(
+ {}}
+ closeModal={() => {}}
+ callbackValor={() => {}}
+ message="Teste"
+ metrica={mockItem6}
+ />,
+ );
+ });
+
+ it("exibe as unidades corretas 7", () => {
+ render(
+ {}}
+ closeModal={() => {}}
+ callbackValor={() => {}}
+ message="Teste"
+ metrica={mockItem7}
+ />,
+ );
+ });
+
+ it("exibe as unidades corretas 8", () => {
+ render(
+ {}}
+ closeModal={() => {}}
+ callbackValor={() => {}}
+ message="Teste"
+ metrica={mockItem8}
+ />,
+ );
+ });
+
+ test("Exibe mensagem de erro para valor vazio", () => {
+ const minhaMetrica: IMetrica = {
+ id: 1,
+ idIdoso: 123,
+ categoria: EMetricas.FREQ_CARDIACA,
+ };
+
+ const { getByTestId, getByText } = render(
+ {}}
+ closeModal={() => {}}
+ message="Teste"
+ metrica={{ mockItem }}
+ />,
+ );
+
+ fireEvent.press(getByTestId("callbackBtn"));
+
+ expect(getByText("Campo obrigatório!")).toBeTruthy();
+ });
+
+ it("fecha o modal ao pressionar o botão Cancelar", () => {
+ const mockCloseModal = jest.fn();
+
+ const { getByTestId } = render(
+ {}}
+ closeModal={mockCloseModal}
+ callbackValor={() => {}}
+ message="Teste"
+ metrica={mockItem8}
+ />,
+ );
+
+ fireEvent.press(getByTestId("cancelarBtn"));
+
+ expect(mockCloseModal).toHaveBeenCalled();
+ });
+
+ it("exibe mensagem de erro ao tentar salvar com valor inválido", async () => {
+ const { getByTestId, getByText } = render(
+ {}}
+ closeModal={() => {}}
+ callbackValor={() => {}}
+ message="Teste"
+ metrica={mockItem}
+ />,
+ );
+
+ fireEvent.press(getByTestId("callbackBtn"));
+
+ // Assuming you have an error message displayed
+ const errorMessage = getByText("Campo obrigatório!");
+ expect(errorMessage).toBeTruthy();
+ });
+
+ describe("ModalMetrica Component Error Handling", () => {
+ it("should show error when valor is empty", async () => {
+ const { getByText, rerender } = render(
+ {}}
+ closeModal={() => {}}
+ callbackValor={() => {}}
+ message="Teste"
+ metrica={{ ...mockItem, valor: "" }}
+ />
+ );
+
+ await waitFor(() => {
+ expect(getByText("Campo obrigatório!")).toBeTruthy();
+ });
+ });
+
+ it("exibe mensagem de erro ao tentar salvar com formato inválido", async () => {
+ const { getByTestId, getByText } = render(
+ {}}
+ closeModal={() => {}}
+ callbackValor={() => {}}
+ message="Teste"
+ metrica={mockItem}
+ />,
+ );
+
+ // Supondo que haja um campo de entrada para o valor
+ const input = getByTestId("valorInput"); // Altere para o seu testID real do input
+ fireEvent.changeText(input, "abc123"); // Valor inválido
+
+ fireEvent.press(getByTestId("callbackBtn")); // Pressiona o botão para salvar
+
+ await waitFor(() => {
+ expect(getByText("Formato inválido!")).toBeTruthy(); // Verifica se a mensagem de erro está visível
+ });
+ });
+
+ it("chama callbackFn com o valor correto ao pressionar Salvar", () => {
+ const mockCallbackFn = jest.fn(); // Cria uma função mock para o callback
+ const { getByTestId } = render(
+ {}}
+ callbackValor={() => {}}
+ message="Teste"
+ metrica={mockItem}
+ />
+ );
+
+ const input = getByTestId("valorInput"); // Obtém o input pelo testID
+ fireEvent.changeText(input, "123"); // Define um valor válido
+ fireEvent.press(getByTestId("callbackBtn")); // Pressiona o botão Salvar
+
+ expect(mockCallbackFn).toHaveBeenCalledWith("123"); // Verifica se a função foi chamada com o valor correto
+ });
+ });
+});
+
diff --git a/src/app/__tests__/perfil.spec.tsx b/src/app/__tests__/perfil.spec.tsx
new file mode 100644
index 00000000..693ecdf8
--- /dev/null
+++ b/src/app/__tests__/perfil.spec.tsx
@@ -0,0 +1,94 @@
+import React from "react";
+import { fireEvent, render, waitFor } from "@testing-library/react-native";
+import Perfil from "../private/tabs/perfil";
+import AsyncStorage from "@react-native-async-storage/async-storage/jest/async-storage-mock";
+import router from "expo-router";
+
+jest.mock("expo-router", () => ({
+ router: {
+ replace: jest.fn(),
+ push: jest.fn(),
+ },
+}));
+
+describe("Perfil", () => {
+ it("renderiza corretamente", async () => {
+ await waitFor(() => render());
+ });
+
+ it("renderiza corretamente com user id", async () => {
+ AsyncStorage.setItem("usuario", JSON.stringify({ id: 1 }));
+
+ await waitFor(() => render());
+ });
+
+ it("renderiza corretamente com user id e foto", async () => {
+ AsyncStorage.setItem(
+ "usuario",
+ JSON.stringify({ id: 1, foto: "data:image/png;base64,1" }),
+ );
+
+ await waitFor(() => render());
+ });
+
+ it("deve chamar logout", async () => {
+ AsyncStorage.setItem("usuario", JSON.stringify({ id: 1 }));
+
+ await waitFor(async () => {
+ const { getByTestId } = render();
+ await new Promise((r) =>
+ setTimeout(() => {
+ const logoutBtn = getByTestId("logoutBtn");
+ fireEvent.press(logoutBtn);
+ r(true);
+ }, 100),
+ );
+ expect(router.router.replace).toHaveBeenCalled();
+ });
+ });
+
+ it("deve chamar navigate", async () => {
+ AsyncStorage.setItem("usuario", JSON.stringify({ id: 1 }));
+
+ await waitFor(async () => {
+ const { getByTestId } = render();
+ await new Promise((r) =>
+ setTimeout(() => {
+ const logoutBtn = getByTestId("navigateBtn");
+ fireEvent.press(logoutBtn);
+ r(true);
+ }, 100),
+ );
+ expect(router.router.push).toHaveBeenCalled();
+ });
+ });
+
+ it("deve chamar navigateIdosos", async () => {
+ // Simula o usuário com ID 1 no AsyncStorage
+ AsyncStorage.setItem("usuario", JSON.stringify({ id: 1 }));
+
+ await waitFor(async () => {
+ // Renderiza o componente Perfil
+ const { getByText } = render();
+
+ // Espera um momento para garantir que o componente esteja renderizado
+ await new Promise((r) =>
+ setTimeout(() => {
+ // Encontra o botão "Idosos" pelo texto ou pelo testID (se você adicionar um)
+ const navigateBtn = getByText("Idosos"); // ou use getByTestId("navigateIdososBtn") se tiver um testID
+
+ // Simula o pressionamento do botão
+ fireEvent.press(navigateBtn);
+
+ r(true);
+ }, 100),
+ );
+
+ // Verifica se a navegação foi chamada com os parâmetros corretos
+ expect(router.router.push).toHaveBeenCalledWith({
+ pathname: "/private/pages/listarIdosos",
+ params: { id: 1 }, // Aqui, certifica-se de que está passando o usuário correto
+ });
+ });
+ });
+});
diff --git a/src/app/__tests__/registros.spec.tsx b/src/app/__tests__/registros.spec.tsx
new file mode 100644
index 00000000..0590afad
--- /dev/null
+++ b/src/app/__tests__/registros.spec.tsx
@@ -0,0 +1,59 @@
+import React from 'react';
+import { render, waitFor } from '@testing-library/react-native';
+import Registros from '../private/tabs/registros';
+import AsyncStorage from '@react-native-async-storage/async-storage';
+import { IIdoso } from '../interfaces/idoso.interface';
+import { IMetrica, EMetricas } from '../interfaces/metricas.interface'; // Import EMetricas
+import database from '../db';
+import Toast from 'react-native-toast-message';
+
+// Mocking necessary components and services
+jest.mock('@react-native-async-storage/async-storage', () => ({
+ getItem: jest.fn(),
+}));
+
+jest.mock('../db', () => ({
+ get: jest.fn().mockReturnValue({
+ query: jest.fn().mockReturnValue({
+ fetch: jest.fn(),
+ }),
+ }),
+}));
+
+jest.mock('react-native-toast-message');
+
+describe('Registros', () => {
+ const mockUser = { id: 'user1', nome: 'User Test' };
+ const mockIdoso: IIdoso = { id: 'idoso1', nome: 'Idoso Test', foto: undefined };
+ const mockMetricas: IMetrica[] = [
+ { id: 1, idIdoso: 'idoso1', categoria: EMetricas.PESO, valorMaximo: '75' } // Use EMetricas.PESO
+ ];
+
+ beforeEach(() => {
+ jest.clearAllMocks();
+ });
+
+ it('should render the user and idoso information when both are available', async () => {
+ // Mocking AsyncStorage to return user and idoso
+ (AsyncStorage.getItem as jest.Mock)
+ .mockResolvedValueOnce(JSON.stringify(mockUser)) // Mocking user
+ .mockResolvedValueOnce(JSON.stringify(mockIdoso)); // Mocking idoso
+
+ // Mocking the database query to return some metricas
+ (database.get as jest.Mock).mockReturnValue({
+ query: jest.fn().mockReturnValue({
+ fetch: jest.fn().mockResolvedValueOnce(mockMetricas), // Returning mock metrics
+ }),
+ });
+
+ const { getByText, getByTestId, queryByTestId } = render();
+
+ // Wait for the user and idoso info to be rendered
+ await waitFor(() => {
+ expect(getByText('Idoso Test')).toBeTruthy(); // Verifying the idoso name appears
+ });
+
+ // Check that the "no photo" placeholder is displayed (since foto is null)
+ const noPhotoIcon = queryByTestId('no-photo-icon');
+ });
+});
diff --git a/src/app/__tests__/reports/sonar-report.xml b/src/app/__tests__/reports/sonar-report.xml
new file mode 100644
index 00000000..a7fa9a29
--- /dev/null
+++ b/src/app/__tests__/reports/sonar-report.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/app/__tests__/response.interface.spec.tsx b/src/app/__tests__/response.interface.spec.tsx
new file mode 100644
index 00000000..05711502
--- /dev/null
+++ b/src/app/__tests__/response.interface.spec.tsx
@@ -0,0 +1,16 @@
+import { IResponse } from "../interfaces/response.interface";
+
+// Teste para verificar se a interface IResponse está definida corretamente
+describe("IResponse Interface", () => {
+ it("deve ser uma interface com as propriedades data e message", () => {
+ // Verifica se a interface IResponse tem as propriedades data e message
+ const response: IResponse = {
+ data: 42,
+ message: "Sucesso",
+ };
+
+ expect(response).toBeDefined();
+ expect(response.data).toBeDefined();
+ expect(response.message).toBeDefined();
+ });
+});
diff --git a/src/app/__tests__/rotina.service.spec.tsx b/src/app/__tests__/rotina.service.spec.tsx
new file mode 100644
index 00000000..55a81c16
--- /dev/null
+++ b/src/app/__tests__/rotina.service.spec.tsx
@@ -0,0 +1,245 @@
+import {
+ postRotina,
+ getAllRotina,
+ updateRotina,
+ deleteRotina,
+} from "../services/rotina.service";
+
+import { ECategoriaRotina } from "../interfaces/rotina.interface";
+
+global.fetch = jest.fn();
+
+const token =
+ "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6OSwiZW1haWwiOiJ0ZXNzc3RlQGdtYWlsLmNvbSIsIm5vbWUiOiJQZWRybyIsImFkbWluIjpmYWxzZSwiaWF0IjoxNjk5Mjk4NTY5LCJleHAiOjE2OTkzNDE3Njl9.U7i3VL8fdTH2xmYDrXCxrbp_5EeDXPdf3vAlgvcdNyY";
+
+describe("postRotina", () => {
+ it("deve fazer uma chamada de API bem-sucedida", async () => {
+ // Mock para simular uma resposta de sucesso
+ global.fetch = jest.fn().mockResolvedValue({
+ json: async () => ({
+ data: {
+ titulo: "Titulo",
+ idIdoso: 1,
+ categoria: ECategoriaRotina.GERAL,
+ descricao: "Descrição",
+ concluido: false,
+ dataHora: "2023-11-06T12:00:00",
+ dias: [0, 1],
+ },
+ message: null,
+ status: 201,
+ }),
+ status: 201,
+ });
+
+ const body = {
+ titulo: "Titulo",
+ idIdoso: 1,
+ categoria: ECategoriaRotina.GERAL,
+ descricao: "Descrição",
+ concluido: false,
+ dataHora: "2023-11-06T12:00:00",
+ dias: [0, 1],
+ };
+
+ const result = await postRotina(body, token);
+
+ expect(result.message).toBeNull();
+ });
+
+ it("deve lidar com uma chamada de API com erro", async () => {
+ // Mock para simular uma resposta de erro
+ global.fetch = jest.fn().mockResolvedValue({
+ json: async () => ({
+ data: null,
+ message: "Mensagem de erro",
+ status: 400,
+ }),
+ status: 400,
+ });
+
+ const body = {
+ titulo: "Titulo",
+ idIdoso: 1,
+ categoria: ECategoriaRotina.GERAL,
+ descricao: "Descrição",
+ concluido: false,
+ dataHora: "2023-11-06T12:00:00",
+ dias: [0, 1],
+ };
+
+ try {
+ await postRotina(body, token);
+ } catch (error) {
+ if (error instanceof Error) {
+ expect(error.message).toBe("Mensagem de erro");
+ }
+ }
+ });
+});
+
+describe("updateRotina", () => {
+ it("deve fazer uma chamada de API bem-sucedida", async () => {
+ // Mock para simular uma resposta de sucesso
+ global.fetch = jest.fn().mockResolvedValue({
+ json: async () => ({
+ data: {
+ titulo: "Titulo",
+ idIdoso: 1,
+ categoria: ECategoriaRotina.GERAL,
+ descricao: "Descrição",
+ concluido: false,
+ dataHora: "2023-11-06T12:00:00",
+ dias: [0, 1],
+ },
+ message: null,
+ status: 200,
+ }),
+ status: 200,
+ });
+
+ const id = 1; // Defina o ID do usuário que deseja atualizar
+ const userDataToUpdate = {
+ titulo: "Titulo",
+ idIdoso: 1,
+ categoria: ECategoriaRotina.ALIMENTACAO,
+ descricao: "Descrição Update",
+ concluido: false,
+ dataHora: "2023-11-06T12:00:00",
+ dias: [0, 1],
+ };
+
+ const result = await updateRotina(id, userDataToUpdate, token);
+
+ expect(result.message).toBeNull();
+ });
+
+ it("deve lidar com uma chamada de API com erro", async () => {
+ // Mock para simular uma resposta de erro
+ global.fetch = jest.fn().mockResolvedValue({
+ json: async () => ({
+ data: null,
+ message: "Mensagem de erro",
+ status: 400,
+ }),
+ status: 400,
+ });
+
+ const id = 1; // Defina o ID do usuário que deseja atualizar
+ const userDataToUpdate = {
+ titulo: "Titulo",
+ idIdoso: 1,
+ categoria: ECategoriaRotina.ALIMENTACAO,
+ descricao: "Descrição Update",
+ concluido: false,
+ dataHora: "2023-11-06T12:00:00",
+ dias: [0, 1],
+ };
+
+ try {
+ await updateRotina(id, userDataToUpdate, token);
+ } catch (error) {
+ if (error instanceof Error) {
+ expect(error.message).toBe("Mensagem de erro");
+ }
+ }
+ });
+});
+
+describe("getAllRotina", () => {
+ it("Get: deve fazer uma chamada de API bem-sucedida", async () => {
+ // Mock para simular uma resposta de sucesso
+ global.fetch = jest.fn().mockResolvedValue({
+ json: async () => ({
+ data: null,
+ message: null,
+ status: 200,
+ }),
+ status: 200,
+ });
+
+ const result = await getAllRotina();
+
+ expect(result.message).toBeNull();
+ });
+ it("deve lidar com uma chamada de API com erro", async () => {
+ // Mock para simular uma resposta de erro
+ global.fetch = jest.fn().mockResolvedValue({
+ json: async () => ({
+ data: null,
+ message: "Mensagem de erro",
+ status: 400,
+ }),
+ status: 400,
+ });
+
+ const id = 1; // Defina o ID da publicação que você deseja excluir
+
+ try {
+ await deleteRotina(id, token);
+ } catch (error) {
+ if (error instanceof Error) {
+ expect(error.message).toBe("Mensagem de erro");
+ }
+ }
+ });
+
+ it("deve lançar um erro quando a API retorna um erro", async () => {
+ // Mock para simular uma resposta de erro
+ global.fetch = jest.fn().mockResolvedValue({
+ json: async () => ({
+ message: "Mensagem de erro",
+ status: 400,
+ }),
+ status: 400,
+ });
+
+ const filter = {};
+ const order = {};
+
+ await expect(getAllRotina(filter, order)).rejects.toThrow("Mensagem de erro");
+ });
+});
+
+describe("deleteRotina", () => {
+ it("deve fazer uma chamada de API bem-sucedida", async () => {
+ // Mock para simular uma resposta de sucesso
+ global.fetch = jest.fn().mockResolvedValue({
+ json: async () => ({
+ data: null, // Defina os dados retornados, que devem ser nulos após a exclusão bem-sucedida
+ message: null,
+ status: 200,
+ }),
+ status: 200,
+ });
+
+ const id = 1; // Defina o ID do usuário que deseja excluir
+
+ const result = await deleteRotina(id, token);
+
+ expect(result.message).toBeNull();
+ expect(result.data).toBeNull(); // Verifica se os dados retornados são nulos após a exclusão bem-sucedida
+ });
+
+ it("deve lidar com uma chamada de API com erro", async () => {
+ // Mock para simular uma resposta de erro
+ global.fetch = jest.fn().mockResolvedValue({
+ json: async () => ({
+ data: null,
+ message: "Mensagem de erro",
+ status: 400,
+ }),
+ status: 400,
+ });
+
+ const id = 1; // Defina o ID do usuário que deseja excluir
+
+ try {
+ await deleteRotina(id, token);
+ } catch (error) {
+ if (error instanceof Error) {
+ expect(error.message).toBe("Mensagem de erro");
+ }
+ }
+ });
+});
diff --git a/src/app/__tests__/rotinas.spec.tsx b/src/app/__tests__/rotinas.spec.tsx
new file mode 100644
index 00000000..6632c08a
--- /dev/null
+++ b/src/app/__tests__/rotinas.spec.tsx
@@ -0,0 +1,59 @@
+import React from "react";
+import { render, waitFor } from "@testing-library/react-native";
+import Rotinas from "../private/tabs/rotinas";
+import AsyncStorage from "@react-native-async-storage/async-storage/jest/async-storage-mock";
+import { hasFoto } from "../shared/helpers/foto.helper";
+
+describe("Rotinas", () => {
+
+ it("renderiza corretamente", async () => {
+ await waitFor(() => render());
+ });
+
+ it("renderiza corretamente com user id", async () => {
+ AsyncStorage.setItem("usuario", JSON.stringify({ id: 1 }));
+
+ await waitFor(() => render());
+ });
+
+ it("renderiza corretamente quando o idoso não está selecionado", async () => {
+ // Define um usuário válido no AsyncStorage
+ await AsyncStorage.setItem("usuario", JSON.stringify({ id: 1 }));
+ // Remove a chave "idoso" para simular a situação onde o idoso não está selecionado
+ await AsyncStorage.removeItem("idoso");
+
+ const { getByText } = render();
+
+ // Verifica se o texto "Idoso não selecionado" está presente
+ await waitFor(() => {
+ expect(getByText(/Idoso não selecionado/i)).toBeTruthy();
+ });
+ });
+
+ it("renderiza corretamente quando todas as condições são atendidas", async () => {
+ // Define um usuário e idoso válidos no AsyncStorage
+ await AsyncStorage.setItem("usuario", JSON.stringify({ id: 1 }));
+ await AsyncStorage.setItem("idoso", JSON.stringify({ id: 1, foto: null, nome: "João" }));
+
+ const { getByText } = render();
+
+ // Espera que o nome do idoso esteja na tela
+ await waitFor(() => {
+ expect(getByText(/João/i)).toBeTruthy();
+ });
+ });
+});
+
+describe("hasFoto", () => {
+
+ it("should return false if foto is an empty string", () => {
+ console.log("Testing hasFoto with an empty string...");
+ expect(hasFoto("")).toBe(false);
+ });
+
+ it("should return true if foto contains valid base64 data", () => {
+ console.log("Testing hasFoto with valid base64 data...");
+ const validFoto = "data:image/png;base64,validbase64string";
+ expect(hasFoto(validFoto)).toBe(true);
+ });
+});
diff --git a/src/app/__tests__/schema.spec.tsx b/src/app/__tests__/schema.spec.tsx
new file mode 100644
index 00000000..88ad992d
--- /dev/null
+++ b/src/app/__tests__/schema.spec.tsx
@@ -0,0 +1,176 @@
+import { appSchema, tableSchema } from '@nozbe/watermelondb';
+// import schema from '../db/schema'; // Ajuste o caminho conforme necessário
+import schema from '../db/schema';
+
+describe('Database Schema', () => {
+ it('deve ter a versão correta', () => {
+ expect(schema.version).toBe(7);
+ });
+
+ it('deve ter as tabelas corretas', () => {
+ console.log('Schema:', schema); // Imprime a estrutura real do schema
+
+ // Verifica se o schema tem a propriedade 'tables'
+ expect(schema).toHaveProperty('tables');
+
+ // Verifica a estrutura de 'tables'
+ const tables = schema.tables;
+ console.log('Tables:', tables); // Imprime o conteúdo de tables
+
+ // Verifica se 'tables' é um objeto
+ expect(typeof tables).toBe('object');
+ expect(tables).not.toBeNull();
+
+ // Obtém os nomes das tabelas
+ const tableNames = Object.keys(tables);
+ const expectedTables = [
+ 'usuario',
+ 'idoso',
+ 'rotina',
+ 'metrica',
+ 'valor_metrica'
+ ];
+
+ expectedTables.forEach((tableName) => {
+ expect(tableNames).toContain(tableName);
+ });
+ });
+
+
+ it('deve ter as colunas corretas para cada tabela', () => {
+ console.log('Schema:', schema); // Imprime a estrutura real do schema
+
+ // Definição das colunas esperadas para cada tabela
+ const expectedColumns = {
+ usuario: [
+ 'nome', 'foto', 'email', 'senha', 'admin', 'created_at', 'updated_at'
+ ],
+ idoso: [
+ 'nome', 'dataNascimento', 'tipoSanguineo', 'telefoneResponsavel', 'descricao', 'foto', 'user_id', 'created_at', 'updated_at'
+ ],
+ rotina: [
+ 'titulo', 'categoria', 'dias', 'dataHora', 'descricao', 'token', 'notificacao', 'dataHoraConcluidos', 'idoso_id', 'created_at', 'updated_at'
+ ],
+ metrica: [
+ 'idoso_id', 'categoria', 'valorMaximo', 'created_at', 'updated_at'
+ ],
+ valor_metrica: [
+ 'metrica_id', 'valor', 'dataHora', 'created_at', 'updated_at'
+ ]
+ };
+
+ // Verifica a estrutura do schema
+ const tablesObj = schema.tables;
+ console.log('Tables:', tablesObj); // Imprime o conteúdo de tables
+
+ // Verifica se 'tables' é um objeto
+ expect(typeof tablesObj).toBe('object');
+ expect(tablesObj).not.toBeNull();
+
+ // Verifica se cada tabela tem as colunas esperadas
+ Object.entries(expectedColumns).forEach(([tableName, columns]) => {
+ const tableSchema = tablesObj[tableName];
+ if (!tableSchema) {
+ throw new Error(`Table ${tableName} not found in schema`);
+ }
+
+ // Converte columns para um array se necessário
+ const columnArray = Array.isArray(tableSchema.columns)
+ ? tableSchema.columns
+ : Object.values(tableSchema.columns);
+
+ // Garante que columns é um array
+ expect(Array.isArray(columnArray)).toBe(true);
+
+ // Obtém os nomes das colunas
+ const columnNames = columnArray.map((col: { name: string }) => col.name);
+
+ // Verifica se cada coluna esperada está presente
+ columns.forEach((column) => {
+ expect(columnNames).toContain(column);
+ });
+ });
+ });
+
+
+
+ it('deve ter as colunas corretas com o tipo correto', () => {
+ console.log('Schema:', schema); // Imprime a estrutura real do schema
+
+ const tables = {
+ usuario: [
+ { name: 'nome', type: 'string' },
+ { name: 'foto', type: 'string' },
+ { name: 'email', type: 'string' },
+ { name: 'senha', type: 'string' },
+ { name: 'admin', type: 'boolean' },
+ { name: 'created_at', type: 'number' },
+ { name: 'updated_at', type: 'number' }
+ ],
+ idoso: [
+ { name: 'nome', type: 'string' },
+ { name: 'dataNascimento', type: 'string' },
+ { name: 'tipoSanguineo', type: 'string' },
+ { name: 'telefoneResponsavel', type: 'string' },
+ { name: 'descricao', type: 'string' },
+ { name: 'foto', type: 'string' },
+ { name: 'user_id', type: 'string' },
+ { name: 'created_at', type: 'number' },
+ { name: 'updated_at', type: 'number' }
+ ],
+ rotina: [
+ { name: 'titulo', type: 'string' },
+ { name: 'categoria', type: 'string' },
+ { name: 'dias', type: 'string' },
+ { name: 'dataHora', type: 'number' },
+ { name: 'descricao', type: 'string' },
+ { name: 'token', type: 'string' },
+ { name: 'notificacao', type: 'boolean' },
+ { name: 'dataHoraConcluidos', type: 'string' },
+ { name: 'idoso_id', type: 'string' },
+ { name: 'created_at', type: 'number' },
+ { name: 'updated_at', type: 'number' }
+ ],
+ metrica: [
+ { name: 'idoso_id', type: 'string' },
+ { name: 'categoria', type: 'string' },
+ { name: 'valorMaximo', type: 'string' },
+ { name: 'created_at', type: 'number' },
+ { name: 'updated_at', type: 'number' }
+ ],
+ valor_metrica: [
+ { name: 'metrica_id', type: 'string' },
+ { name: 'valor', type: 'string' },
+ { name: 'dataHora', type: 'number' },
+ { name: 'created_at', type: 'number' },
+ { name: 'updated_at', type: 'number' }
+ ]
+ };
+
+ // Verifica a estrutura de schema
+ const tablesObj = schema.tables;
+ console.log('Tables:', tablesObj); // Imprime o conteúdo de tables
+
+ // Verifica se 'tables' é um objeto
+ expect(typeof tablesObj).toBe('object');
+ expect(tablesObj).not.toBeNull();
+
+ // Verifica se cada coluna tem o tipo correto
+ Object.entries(tables).forEach(([tableName, columns]) => {
+ const tableSchema = tablesObj[tableName];
+ if (!tableSchema) {
+ throw new Error(`Table ${tableName} not found in schema`);
+ }
+
+ const columnsObj = tableSchema.columns;
+
+ columns.forEach(({ name, type }) => {
+ const column = columnsObj[name];
+ expect(column).toBeTruthy();
+ if (column) {
+ expect(column.type).toBe(type);
+ }
+ });
+ });
+ });
+});
diff --git a/src/app/__tests__/tutorial.spec.tsx b/src/app/__tests__/tutorial.spec.tsx
new file mode 100644
index 00000000..22273e1a
--- /dev/null
+++ b/src/app/__tests__/tutorial.spec.tsx
@@ -0,0 +1,58 @@
+import { fireEvent, render } from "@testing-library/react-native";
+
+import React from "react";
+import Tutorial from "../public/tutorial";
+import { router } from "expo-router";
+
+jest.mock("expo-router", () => {
+ return {
+ router: {
+ replace: jest.fn(),
+ },
+ };
+});
+
+test("O componente Tutorial deve renderizar corretamente", () => {
+ const { getByText } = render();
+
+ // Verifique se os elementos esperados estão presentes
+ expect(getByText("Gerencie as rotinas do seu idoso")).toBeTruthy();
+ expect(getByText("Avançar")).toBeTruthy();
+ expect(getByText("Pular")).toBeTruthy();
+
+ // Adicione asserções para outros elementos se necessário
+});
+
+test('O botão "Pular" deve chamar a função "router.replace" com o caminho correto', () => {
+ const { getByText } = render();
+
+ const pularButton = getByText("Pular");
+ fireEvent.press(pularButton);
+
+ // Verifica se a função "router.replace" foi chamada com o caminho correto
+ expect(router.replace).toHaveBeenCalledWith("/public/login");
+});
+
+test('O botão "Avançar" deve permitir navegar entre os slides', () => {
+ const { getByText } = render();
+
+ const avancarButton = getByText("Avançar");
+ fireEvent.press(avancarButton);
+
+ // Verifica se o índice do swiper foi incrementado
+ // Você pode usar o estado interno do componente para verificar isso
+ // Certifique-se de que o índice não ultrapasse o número total de slides
+ // Adicione outras asserções se necessário
+});
+
+test('O botão "Avançar" deve permitir navegar entre os slides', () => {
+ const { getByText } = render();
+
+ const avancarButton = getByText("Avançar");
+ fireEvent.press(avancarButton);
+
+ // Verifica se o índice do swiper foi incrementado
+ // Você pode usar o estado interno do componente para verificar isso
+ // Certifique-se de que o índice não ultrapasse o número total de slides
+ // Adicione outras asserções se necessário
+});
diff --git a/src/app/__tests__/user.service.spec.tsx b/src/app/__tests__/user.service.spec.tsx
new file mode 100644
index 00000000..09192a19
--- /dev/null
+++ b/src/app/__tests__/user.service.spec.tsx
@@ -0,0 +1,277 @@
+import {
+ postUser,
+ updateUser,
+ getUserById,
+ deleteUserById,
+ loginUser,
+} from "../services/user.service";
+
+global.fetch = jest.fn();
+
+const token =
+ "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6OSwiZW1haWwiOiJ0ZXNzc3RlQGdtYWlsLmNvbSIsIm5vbWUiOiJQZWRybyIsImFkbWluIjpmYWxzZSwiaWF0IjoxNjk5Mjk4NTY5LCJleHAiOjE2OTkzNDE3Njl9.U7i3VL8fdTH2xmYDrXCxrbp_5EeDXPdf3vAlgvcdNyY";
+
+describe("postUser", () => {
+ it("deve fazer uma chamada de API bem-sucedida", async () => {
+ // Mock para simular uma resposta de sucesso
+ global.fetch = jest.fn().mockResolvedValue({
+ json: async () => ({
+ data: {
+ id: 1, // Defina o ID retornado pelo servidor
+ nome: "Nome do Usuário",
+ email: "email@example.com",
+ senha: "senha",
+ admin: true, // Defina o valor apropriado
+ },
+ message: null,
+ status: 201,
+ }),
+ status: 201,
+ });
+
+ const userData = {
+ nome: "Nome do Usuário",
+ email: "email@example.com",
+ senha: "senha",
+ admin: true, // Defina o valor apropriado
+ };
+
+ const result = await postUser(userData);
+
+ expect(result.message).toBeNull();
+ });
+
+ it("deve lidar com uma chamada de API com erro", async () => {
+ // Mock para simular uma resposta de erro
+ global.fetch = jest.fn().mockResolvedValue({
+ json: async () => ({
+ data: null,
+ message: "Mensagem de erro",
+ status: 400,
+ }),
+ status: 400,
+ });
+
+ const userData = {
+ nome: "Nome do Usuário",
+ email: "email@example.com",
+ senha: "senha",
+ admin: true, // Defina o valor apropriado
+ };
+
+ try {
+ await postUser(userData);
+ } catch (error) {
+ if (error instanceof Error) {
+ expect(error.message).toBe("Mensagem de erro");
+ }
+ }
+ });
+});
+
+describe("updateUser", () => {
+ it("deve fazer uma chamada de API bem-sucedida", async () => {
+ // Mock para simular uma resposta de sucesso
+ global.fetch = jest.fn().mockResolvedValue({
+ json: async () => ({
+ data: {
+ id: 1, // Defina o ID retornado pelo servidor
+ nome: "Novo Nome do Usuário", // Novos dados a serem atualizados
+ email: "novoemail@example.com", // Novos dados a serem atualizados
+ senha: "novasenha", // Novos dados a serem atualizados
+ admin: false, // Novos dados a serem atualizados
+ },
+ message: null,
+ status: 200,
+ }),
+ status: 200,
+ });
+
+ const id = 1; // Defina o ID do usuário que deseja atualizar
+ const userDataToUpdate = {
+ nome: "Novo Nome do Usuário", // Novos dados a serem atualizados
+ email: "novoemail@example.com", // Novos dados a serem atualizados
+ senha: "novasenha", // Novos dados a serem atualizados
+ admin: false, // Novos dados a serem atualizados
+ };
+
+ const result = await updateUser(id, userDataToUpdate, token);
+
+ expect(result.message).toBeNull();
+ });
+
+ it("deve lidar com uma chamada de API com erro", async () => {
+ // Mock para simular uma resposta de erro
+ global.fetch = jest.fn().mockResolvedValue({
+ json: async () => ({
+ data: null,
+ message: "Mensagem de erro",
+ status: 400,
+ }),
+ status: 400,
+ });
+
+ const id = 1; // Defina o ID do usuário que deseja atualizar
+ const userDataToUpdate = {
+ nome: "Novo Nome do Usuário", // Novos dados a serem atualizados
+ email: "novoemail@example.com", // Novos dados a serem atualizados
+ senha: "novasenha", // Novos dados a serem atualizados
+ admin: false, // Novos dados a serem atualizados
+ };
+
+ try {
+ await updateUser(id, userDataToUpdate, token);
+ } catch (error) {
+ if (error instanceof Error) {
+ expect(error.message).toBe("Mensagem de erro");
+ }
+ }
+ });
+});
+
+describe("getUserById", () => {
+ it("deve fazer uma chamada de API bem-sucedida", async () => {
+ // Mock para simular uma resposta de sucesso
+ global.fetch = jest.fn().mockResolvedValue({
+ json: async () => ({
+ data: {
+ id: 1, // Defina o ID retornado pelo servidor
+ nome: "Nome do Usuário",
+ email: "email@example.com",
+ senha: "senha",
+ admin: true, // Defina o valor apropriado
+ },
+ message: null,
+ status: 200,
+ }),
+ status: 200,
+ });
+
+ const id = 1; // Defina o ID do usuário que deseja recuperar
+
+ const result = await getUserById(id, token);
+
+ expect(result.message).toBeNull();
+ expect(result.data).toEqual({
+ id: 1,
+ nome: "Nome do Usuário",
+ email: "email@example.com",
+ senha: "senha",
+ admin: true,
+ });
+ });
+
+ it("deve lidar com uma chamada de API com erro", async () => {
+ // Mock para simular uma resposta de erro
+ global.fetch = jest.fn().mockResolvedValue({
+ json: async () => ({
+ data: null,
+ message: "Mensagem de erro",
+ status: 400,
+ }),
+ status: 400,
+ });
+
+ const id = 1; // Defina o ID do usuário que deseja recuperar
+
+ try {
+ await getUserById(id, token);
+ } catch (error) {
+ if (error instanceof Error) {
+ expect(error.message).toBe("Mensagem de erro");
+ }
+ }
+ });
+});
+
+describe("deleteUserById", () => {
+ it("deve fazer uma chamada de API bem-sucedida", async () => {
+ // Mock para simular uma resposta de sucesso
+ global.fetch = jest.fn().mockResolvedValue({
+ json: async () => ({
+ data: null, // Defina os dados retornados, que devem ser nulos após a exclusão bem-sucedida
+ message: null,
+ status: 200,
+ }),
+ status: 200,
+ });
+
+ const id = 1; // Defina o ID do usuário que deseja excluir
+
+ const result = await deleteUserById(id, token);
+
+ expect(result.message).toBeNull();
+ expect(result.data).toBeNull(); // Verifica se os dados retornados são nulos após a exclusão bem-sucedida
+ });
+
+ it("deve lidar com uma chamada de API com erro", async () => {
+ // Mock para simular uma resposta de erro
+ global.fetch = jest.fn().mockResolvedValue({
+ json: async () => ({
+ data: null,
+ message: "Mensagem de erro",
+ status: 400,
+ }),
+ status: 400,
+ });
+
+ const id = 1; // Defina o ID do usuário que deseja excluir
+
+ try {
+ await deleteUserById(id, token);
+ } catch (error) {
+ if (error instanceof Error) {
+ expect(error.message).toBe("Mensagem de erro");
+ }
+ }
+ });
+});
+
+describe("loginUser", () => {
+ it("deve fazer uma chamada de API bem-sucedida", async () => {
+ // Mock para simular uma resposta de sucesso
+ global.fetch = jest.fn().mockResolvedValue({
+ json: async () => ({
+ data: "seu_token", // Defina o token retornado pela API após o login bem-sucedido
+ message: null,
+ status: 200,
+ }),
+ status: 200,
+ });
+
+ const loginData = {
+ email: "email@example.com",
+ senha: "senha",
+ };
+
+ const result = await loginUser(loginData);
+
+ expect(result.message).toBeNull();
+ expect(typeof result.data).toBe("string"); // Verifica se o token é uma string
+ });
+
+ it("deve lidar com uma chamada de API com erro", async () => {
+ // Mock para simular uma resposta de erro
+ global.fetch = jest.fn().mockResolvedValue({
+ json: async () => ({
+ data: null,
+ message: "Mensagem de erro",
+ status: 400,
+ }),
+ status: 400,
+ });
+
+ const loginData = {
+ email: "email@example.com",
+ senha: "senha",
+ };
+
+ try {
+ await loginUser(loginData);
+ } catch (error) {
+ if (error instanceof Error) {
+ expect(error.message).toBe("Mensagem de erro");
+ }
+ }
+ });
+});
diff --git a/src/app/__tests__/visualizarMetrica.spec.tsx b/src/app/__tests__/visualizarMetrica.spec.tsx
new file mode 100644
index 00000000..cb80db51
--- /dev/null
+++ b/src/app/__tests__/visualizarMetrica.spec.tsx
@@ -0,0 +1,240 @@
+import React from "react";
+import { render, fireEvent, waitFor } from "@testing-library/react-native";
+import AsyncStorage from "@react-native-async-storage/async-storage";
+import VisualizarMetrica from "../private/pages/visualizarMetrica";
+import ValorMetrica from "../model/ValorMetrica";
+
+// Mock para AsyncStorage
+jest.mock("@react-native-async-storage/async-storage", () => ({
+ getItem: jest.fn(),
+ setItem: jest.fn(),
+}));
+
+// Mock para metrica.service
+jest.mock("../services/metrica.service", () => ({
+ getValoresMetrica: jest.fn(() => Promise.resolve([{ id: '123', categoria: 'HIDRATACAO', valorMaximo: 2000 }])),
+ getSomaHidratacao: jest.fn(() => Promise.resolve(1500)),
+}));
+
+ // Mock para database
+ jest.mock("../db/index", () => ({
+ get: jest.fn(() => ({
+ query: jest.fn(() => ({
+ fetch: jest.fn(() => Promise.resolve([])),
+ })),
+ })),
+ }));
+
+// Mock para expo-router
+jest.mock("expo-router", () => ({
+ router: {
+ push: jest.fn(),
+ replace: jest.fn(),
+ },
+ useLocalSearchParams: jest.fn(() => ({
+ id: '123',
+ categoria: 'IMC',
+ })),
+}));
+
+describe("VisualizarMetrica component", () => {
+ beforeEach(() => {
+ jest.clearAllMocks();
+
+ (AsyncStorage.getItem as jest.Mock).mockImplementation((key) => {
+ if (key === "usuario") {
+ return Promise.resolve(JSON.stringify({ id: 1 }));
+ } else if (key === "token") {
+ return Promise.resolve("mockedToken");
+ }
+ return Promise.resolve(null);
+//
+// // Limpar os mocks antes de cada teste
+// jest.clearAllMocks();
+ });
+
+ });
+
+ it('deve retornar o valor mockado de AsyncStorage.getItem', async () => {
+ // Mock da implementação de AsyncStorage.getItem para retornar um valor simulado
+ (AsyncStorage.getItem as jest.Mock).mockImplementation((key: string) => {
+ return Promise.resolve('valor para a chave: ${key}');
+ });
+
+ // Chame a função que utiliza AsyncStorage.getItem
+ const key = 'teste_chave';
+ const value = await AsyncStorage.getItem(key);
+
+ // Verifique se o valor retornado é o esperado
+ expect(value).toBe('valor para a chave: ${key}');
+
+ // Verifique se AsyncStorage.getItem foi chamado corretamente
+ expect(AsyncStorage.getItem).toHaveBeenCalledWith(key);
+ });
+
+ it("calculates IMC when category is 'IMC'", async () => {
+ const { getByText } = render();
+
+ // Verificando se o botão "Calcular automaticamente" está presente
+ await waitFor(() => {
+ expect(getByText("Calcular automaticamente")).toBeTruthy();
+ });
+
+ fireEvent.press(getByText("Calcular automaticamente"));
+ });
+
+ test("renders 'Novo valor' button when category is not IMC", async () => {
+ const { getByText } = render();
+
+ await waitFor(() => {
+ const novoValorButton = getByText("Novo valor");
+ expect(novoValorButton).toBeTruthy();
+ });
+ });
+
+ it('deve retornar null se a chave não existir no AsyncStorage', async () => {
+ // Mock da implementação de AsyncStorage.getItem para retornar null
+ (AsyncStorage.getItem as jest.Mock).mockImplementation(() => {
+ return Promise.resolve(null);
+ });
+
+ const key = 'chave_inexistente';
+ const value = await AsyncStorage.getItem(key);
+
+ // Verifique se o valor retornado é null
+ expect(value).toBeNull();
+ });
+
+ test("renders the component correctly", async () => {
+ const { getByText } = render();
+
+ await waitFor(() => {
+ const categoriaText = getByText("IMC");
+ expect(categoriaText).toBeTruthy();
+ });
+ });
+
+
+ test("should retrieve idoso from AsyncStorage and update state", async () => {
+ const mockIdoso = { id: 1, name: "Teste idoso" };
+ (AsyncStorage.getItem as jest.Mock).mockResolvedValueOnce(JSON.stringify(mockIdoso));
+
+ const { queryByText } = render();
+
+ await waitFor(() => {
+
+ const idosoName = queryByText("Teste idoso");
+ expect(idosoName).toBeNull();
+ });
+ });
+
+ test("should not update state if no idoso is found", async () => {
+
+ (AsyncStorage.getItem as jest.Mock).mockResolvedValueOnce(null);
+
+ const { queryByText } = render();
+
+ await waitFor(() => {
+ const idosoName = queryByText("Teste idoso");
+ expect(idosoName).toBeNull();
+ });
+ });
+
+ test("opens the modal when 'Novo valor' button is pressed", async () => {
+ const { getByText } = render();
+
+ await waitFor(() => {
+ const addButton = getByText("Novo valor");
+ expect(addButton).toBeTruthy();
+ });
+
+ fireEvent.press(getByText("Novo valor"));
+
+ await waitFor(() => {
+ const salvarButton = getByText("Salvar");
+ expect(salvarButton).toBeTruthy();
+ });
+ });
+
+ test("does not call calcular for categories other than 'IMC'", async () => {
+ const { queryByText } = render();
+
+ await waitFor(() => {
+ const calcularButton = queryByText("Calcular automaticamente");
+ expect(calcularButton).toBeNull();
+ });
+ });
+
+ test("handleUser - should handle empty AsyncStorage values", async () => {
+ (AsyncStorage.getItem as jest.Mock).mockImplementation((key) => Promise.resolve(null));
+ render();
+ await waitFor(() => {
+ expect(AsyncStorage.getItem).toHaveBeenCalledWith("usuario");
+ expect(AsyncStorage.getItem).toHaveBeenCalledWith("token");
+ });
+ });
+
+ test("closes the modal when 'Cancelar' is pressed", async () => {
+ const { getByText, queryByText } = render();
+
+ await waitFor(() => {
+ const addButton = getByText("Novo valor");
+ expect(addButton).toBeTruthy();
+ });
+
+ fireEvent.press(getByText("Novo valor"));
+
+ await waitFor(() => {
+ expect(getByText("Salvar")).toBeTruthy();
+ });
+
+ fireEvent.press(getByText("Cancelar"));
+
+ await waitFor(() => {
+ expect(queryByText("Salvar")).toBeFalsy();
+ });
+ });
+
+ test("closes the modal when 'Cancelar' is pressed", async () => {
+ const { getByText, queryByText } = render();
+
+ await waitFor(() => {
+ const addButton = getByText("Novo valor");
+ expect(addButton).toBeTruthy();
+ });
+
+ fireEvent.press(getByText("Novo valor"));
+
+ await waitFor(() => {
+ expect(getByText("Salvar")).toBeTruthy();
+ });
+
+ fireEvent.press(getByText("Cancelar"));
+
+ await waitFor(() => {
+ expect(queryByText("Salvar")).toBeFalsy();
+ });
+
+ });
+
+ test("does not show 'Novo valor' button when categoria is different", async () => {
+ jest.mock("expo-router", () => ({
+ router: {
+ push: jest.fn(),
+ replace: jest.fn(),
+ },
+ useLocalSearchParams: jest.fn(() => ({
+ id: '123',
+ categoria: 'OUTRA_CATEGORIA',
+ })),
+ }));
+
+ const { queryByText } = render();
+
+ await waitFor(() => {
+ const addButton = queryByText("Novo valor");
+ expect(addButton).toBeNull();
+ });
+ });
+
+});
\ No newline at end of file
diff --git a/src/app/__tests__/visualizarPublicacao.spec.tsx b/src/app/__tests__/visualizarPublicacao.spec.tsx
new file mode 100644
index 00000000..c53e542d
--- /dev/null
+++ b/src/app/__tests__/visualizarPublicacao.spec.tsx
@@ -0,0 +1,269 @@
+import React from "react";
+import { render, fireEvent, waitFor, act } from "@testing-library/react-native";
+import VisualizarPublicacao from "../private/pages/visualizarPublicacao";
+import ModalConfirmation from "../components/ModalConfirmation";
+import PublicacaoVisualizar from "../components/PublicacaoVisualizar";
+import { IPublicacaoUsuario, ECategoriaPublicacao } from '../interfaces/forum.interface';
+import { router } from "expo-router"; // Importa a função de roteamento
+import AsyncStorage from "@react-native-async-storage/async-storage";
+
+jest.mock('expo-router', () => ({
+ useLocalSearchParams: jest.fn(() => ({ id: '1', idUsuarioReporte: '1' })),
+ router: {
+ push: jest.fn(),
+ replace: jest.fn(),
+ },
+}));
+
+jest.mock("@react-native-async-storage/async-storage", () => ({
+ getItem: jest.fn(),
+}));
+
+interface Mocks {
+ usuario: string;
+ token: string;
+}
+
+describe("VisualizarPublicacao", () => {
+ beforeEach(() => {
+ const mocks = {
+ usuario: JSON.stringify({ id: 1, admin: true }),
+ token: "mock-token",
+ };
+
+ (AsyncStorage.getItem as jest.Mock).mockImplementation((key: string) => {
+ return Promise.resolve(mocks[key as keyof Mocks]);
+ });
+ });
+
+ it("Testa a renderização da foto - válida", async () => {
+ const mockPublicacao: IPublicacaoUsuario = {
+ id: 1,
+ idUsuario: 1,
+ admin: false,
+ email: "usuario@test.com",
+ nome: "Usuário Teste",
+ senha: "senhaFicticia",
+ foto: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA...",
+ titulo: "Título de Teste",
+ descricao: "Descrição de Teste",
+ dataHora: new Date().toISOString(),
+ categoria: ECategoriaPublicacao.SAUDE,
+ idUsuarioReporte: [],
+
+ };
+ const { getByTestId } = render();
+
+ // Verifica se a imagem é renderizada como uma View sem foto
+ const fotoResultado = getByTestId("foto-resultado");
+ await waitFor(() => {
+ // Verifica se a View está renderizada corretamente
+ expect(fotoResultado).toBeTruthy(); // Isso verifica se o componente foi renderizado
+ });
+ });
+
+ it("Renderiza corretamente o componente com dados de publicação", async () => {
+ const mockPublicacao: IPublicacaoUsuario = {
+ id: 1,
+ idUsuario: 1,
+ admin: false,
+ email: "usuario@test.com",
+ nome: "Usuário Teste",
+ senha: "senhaFicticia",
+ foto: null,
+ titulo: "Título de Teste",
+ descricao: "Descrição de Teste",
+ dataHora: new Date().toISOString(),
+ categoria: ECategoriaPublicacao.SAUDE,
+ idUsuarioReporte: [],
+ };
+
+ const { getByText } = render();
+ await waitFor(() => {
+ expect(getByText(mockPublicacao.titulo)).toBeTruthy();
+ });
+ });
+
+ it("Obtém usuário e token ao carregar o componente", async () => {
+ render();
+
+ await waitFor(() => {
+ expect(AsyncStorage.getItem).toHaveBeenCalledWith("usuario");
+ expect(AsyncStorage.getItem).toHaveBeenCalledWith("token");
+ });
+ });
+
+ it("Exibe ações corretamente para admin", async () => {
+ const { getByText } = render();
+
+ await waitFor(() => {
+ expect(getByText("Apagar")).toBeTruthy();
+ });
+ });
+
+ it("Exibe e interage com o modal de confirmação corretamente", async () => {
+ const mockCloseModal = jest.fn();
+ const mockCallbackFn = jest.fn();
+
+ const { getByText, getByTestId } = render(
+
+ );
+
+ // Verifica se o modal é renderizado com a mensagem correta
+ expect(getByText("Tem certeza que deseja deletar?")).toBeTruthy();
+
+ // Simula o clique no botão "Cancelar" e verifica se a função closeModal é chamada
+ fireEvent.press(getByTestId("cancelarBtn"));
+ expect(mockCloseModal).toHaveBeenCalled();
+
+ // Simula o clique no botão "Confirmar" e verifica se a função callbackFn é chamada
+ fireEvent.press(getByTestId("callbackBtn"));
+ expect(mockCallbackFn).toHaveBeenCalled();
+ });
+
+ it("Renderiza sem quebrar", () => {
+ render();
+ });
+
+ it("Confirma exclusão de publicação via modal", async () => {
+ const { getByTestId } = render();
+
+ await act(async () => {
+ fireEvent.press(getByTestId("deleteBtn"));
+ });
+
+ await act(async () => {
+ fireEvent.press(getByTestId("callbackBtn"));
+ });
+
+ await waitFor(() => {
+ expect(AsyncStorage.getItem).toHaveBeenCalled();
+ });
+ });
+
+ it("Testa botão de reportar", async () => {
+ // Configurando o estado para que o botão de reportar seja visível
+ (AsyncStorage.getItem as jest.Mock).mockImplementation((key: string) => {
+ if (key === "usuario") {
+ return Promise.resolve(JSON.stringify({ id: 1, admin: false }));
+ }
+ return Promise.resolve("mock-token");
+ });
+
+ const { getByTestId } = render();
+
+ // Verifica se o botão "Reportar" está presente
+ await waitFor(() => {
+ expect(getByTestId("reportBtn")).toBeTruthy();
+ });
+
+ // Simulando o clique no botão "Reportar"
+ await act(async () => {
+ fireEvent.press(getByTestId("reportBtn"));
+ });
+
+ // Verifica se o modal de reporte foi exibido corretamente
+ await waitFor(() => {
+ expect(getByTestId("reportModal")).toBeTruthy();
+ });
+ });
+
+ it("Testa botão de desfazer reporte", async () => {
+ // Configurando o estado para que o botão de desfazer reporte seja visível
+ (AsyncStorage.getItem as jest.Mock).mockImplementation((key: string) => {
+ if (key === "usuario") {
+ return Promise.resolve(JSON.stringify({ id: 1, admin: false }));
+ }
+ return Promise.resolve("mock-token");
+ });
+
+ const { getByTestId } = render();
+
+ // Verifica se o botão "Desfazer" está presente
+ await waitFor(() => {
+ expect(getByTestId("reportBtn")).toBeTruthy();
+ });
+
+ // Simulando o clique no botão "Desfazer"
+ await act(async () => {
+ fireEvent.press(getByTestId("reportBtn"));
+ });
+
+ // Verifica se o modal de reporte foi exibido corretamente
+ await waitFor(() => {
+ expect(getByTestId("reportModal")).toBeTruthy();
+ });
+ });
+
+it("Testa a navegação para a tela de edição", async () => {
+ // Mock do AsyncStorage
+ (AsyncStorage.getItem as jest.Mock).mockImplementation((key: string) => {
+ if (key === "usuario") {
+ return Promise.resolve(JSON.stringify({ id: 1, admin: true }));
+ }
+ return Promise.resolve("mock-token");
+ });
+
+ // Mock dos parâmetros necessários
+ const params = {
+ id: 1,
+ titulo: 'Título da Publicação',
+ descricao: 'Descrição da Publicação',
+ dataHora: new Date().toISOString(),
+ categoria: 'GERAL',
+ idUsuario: 1,
+ idUsuarioReporte: '',
+ };
+
+ // Mock da função useLocalSearchParams
+ jest.spyOn(require('expo-router'), 'useLocalSearchParams').mockReturnValue(params);
+
+ // Renderiza o componente com parâmetros simulados
+ const { getByTestId } = render();
+
+ // Aguarda a renderização completa do botão de editar
+ await waitFor(() => {
+ expect(getByTestId("editBtn")).toBeTruthy();
+ });
+
+ // Simulando o clique no botão "Editar"
+ await act(async () => {
+ fireEvent.press(getByTestId("editBtn"));
+ });
+
+ // Verifica se a função de navegação foi chamada com os parâmetros esperados
+ expect(router.push).toHaveBeenCalledWith(expect.objectContaining({
+ pathname: "/private/pages/editarPublicacao",
+ params: expect.objectContaining({
+ id: 1,
+ titulo: 'Título da Publicação',
+ descricao: 'Descrição da Publicação',
+ categoria: 'GERAL',
+ idUsuario: 1,
+ idUsuarioReporte: '',
+ }),
+ }));
+});
+it("Não exibe ações para usuários não autorizados", async () => {
+ (AsyncStorage.getItem as jest.Mock).mockImplementation((key: string) => {
+ if (key === "usuario") {
+ return Promise.resolve(JSON.stringify({ id: 1, admin: false }));
+ }
+ return Promise.resolve("mock-token");
+ });
+
+ const { queryByTestId } = render();
+
+ await waitFor(() => {
+ expect(queryByTestId("deleteBtn")).toBeNull();
+ expect(queryByTestId("editBtn")).toBeNull();
+ });
+});
+});
diff --git a/src/app/__tests__/visualizarValoresMedidos.spec.tsx b/src/app/__tests__/visualizarValoresMedidos.spec.tsx
new file mode 100644
index 00000000..daaf1360
--- /dev/null
+++ b/src/app/__tests__/visualizarValoresMedidos.spec.tsx
@@ -0,0 +1,29 @@
+import React from "react";
+import { render, fireEvent } from "@testing-library/react-native";
+import AsyncStorage from "@react-native-async-storage/async-storage";
+import VisualizarValoresMedidos from "../private/pages/visualizarValoresMedidos";
+
+jest.mock("@react-navigation/native", () => ({
+ ...jest.requireActual("@react-navigation/native"),
+ useNavigation: () => ({ goBack: jest.fn() }),
+}));
+
+jest.mock("@react-native-async-storage/async-storage", () => ({
+ getItem: jest.fn(),
+}));
+
+describe("VisualizarValoresMedidos", () => {
+ test("The component rendered", () => {
+ // Mock the response for AsyncStorage.getItem
+ (AsyncStorage.getItem as jest.Mock).mockImplementation((key) => {
+ if (key === "usuario") {
+ return Promise.resolve(JSON.stringify({ id: 1 }));
+ } else if (key === "token") {
+ return Promise.resolve("mockedToken");
+ }
+ return Promise.resolve(null);
+ });
+
+ render();
+ });
+});
diff --git a/src/app/__tests__/watermelon.service.spec.tsx b/src/app/__tests__/watermelon.service.spec.tsx
new file mode 100644
index 00000000..65b74dd8
--- /dev/null
+++ b/src/app/__tests__/watermelon.service.spec.tsx
@@ -0,0 +1,86 @@
+import { synchronize } from '@nozbe/watermelondb/sync';
+import AsyncStorage from '@react-native-async-storage/async-storage';
+import { syncDatabaseWithServer } from '../services/watermelon.service';
+
+jest.mock('@nozbe/watermelondb/sync', () => ({
+ synchronize: jest.fn()
+}));
+
+jest.mock('@react-native-async-storage/async-storage', () => ({
+ getItem: jest.fn()
+}));
+
+global.fetch = jest.fn();
+
+describe('syncDatabaseWithServer', () => {
+ beforeEach(() => {
+ jest.clearAllMocks();
+ });
+
+ it('should successfully synchronize database with server', async () => {
+ const mockChanges = { some: 'changes' };
+ const mockTimestamp = new Date().toISOString();
+ const mockResponse = {
+ ok: true,
+ json: jest.fn().mockResolvedValue({
+ data: {
+ changes: mockChanges,
+ timestamp: mockTimestamp
+ },
+ message: 'Success'
+ })
+ };
+
+ const mockToken = 'mockToken';
+ (AsyncStorage.getItem as jest.Mock).mockResolvedValue(mockToken);
+ (fetch as jest.Mock).mockResolvedValue(mockResponse);
+
+ (synchronize as jest.Mock).mockImplementation(async ({ pullChanges }) => {
+ const result = await pullChanges({
+ lastPulledAt: 0,
+ schemaVersion: 1,
+ migration: 1
+ });
+ return { changes: mockChanges, timestamp: mockTimestamp };
+ });
+
+ await syncDatabaseWithServer();
+
+ expect(AsyncStorage.getItem).toHaveBeenCalledWith('token');
+ expect(fetch).toHaveBeenCalledWith(
+ expect.stringContaining('/api/usuario/sync/pull_users'),
+ expect.objectContaining({
+ method: 'GET',
+ headers: expect.objectContaining({
+ Authorization: `Bearer ${mockToken}`
+ })
+ })
+ );
+
+ expect(fetch).toHaveBeenCalledWith(
+ expect.stringMatching(/\/api\/usuario\/sync\/pull_users\?lastPulledAt=0&schemaVersion=1&migration=1/),
+ expect.objectContaining({
+ method: 'GET',
+ headers: expect.objectContaining({
+ Authorization: `Bearer ${mockToken}`
+ })
+ })
+ );
+ });
+
+ it('should throw an error when sync fails', async () => {
+ const mockResponse = {
+ ok: false,
+ text: jest.fn().mockResolvedValue('Sync error')
+ };
+
+ const mockToken = 'mockToken';
+ (AsyncStorage.getItem as jest.Mock).mockResolvedValue(mockToken);
+ (fetch as jest.Mock).mockResolvedValue(mockResponse);
+
+ await expect(syncDatabaseWithServer()).rejects.toThrow('Sync error');
+
+ expect(AsyncStorage.getItem).toHaveBeenCalledWith('token');
+ expect(fetch).toHaveBeenCalled();
+ });
+});
diff --git a/src/app/__tests__/weekDay.spec.tsx b/src/app/__tests__/weekDay.spec.tsx
new file mode 100644
index 00000000..83fc72bf
--- /dev/null
+++ b/src/app/__tests__/weekDay.spec.tsx
@@ -0,0 +1,30 @@
+import React from "react";
+import { render, fireEvent } from "@testing-library/react-native";
+import WeekDays from "../components/weekDay";
+import { EDiasSemana } from "../interfaces/rotina.interface";
+
+describe("Testes para WeekDays", () => {
+ it("deve renderizar corretamente", () => {
+ const { getByText } = render( {}} />);
+ expect(getByText("D")).toBeTruthy(); // Verifique se o dia 'D' está presente
+ });
+
+ it("deve chamar a função de callback corretamente ao pressionar um dia", () => {
+ const mockCallbackFn = jest.fn();
+ const { getByText } = render();
+ fireEvent.press(getByText("D"));
+ expect(mockCallbackFn).toHaveBeenCalledWith([EDiasSemana.Domingo]);
+ });
+
+ it("deve remover um dia já selecionado ao pressioná-lo novamente", () => {
+ const diasPredefinidos = [EDiasSemana.Domingo]; // Domingo já está selecionado
+ const mockCallbackFn = jest.fn();
+ const { getByText } = render();
+
+ // Pressione o dia 'D' (Domingo), que já está selecionado
+ fireEvent.press(getByText("D"));
+
+ // Verifica se o callback foi chamado com o array vazio, removendo Domingo
+ expect(mockCallbackFn).toHaveBeenCalledWith([]);
+ });
+});
diff --git a/src/app/_layout.tsx b/src/app/_layout.tsx
new file mode 100644
index 00000000..fd95ddce
--- /dev/null
+++ b/src/app/_layout.tsx
@@ -0,0 +1,53 @@
+import React, { useEffect, useRef } from "react";
+import { Stack } from "expo-router";
+import * as Notifications from "expo-notifications";
+import { View } from "react-native";
+import Toast from "react-native-toast-message";
+
+Notifications.setNotificationHandler({
+ handleNotification: async () => ({
+ shouldShowAlert: true,
+ shouldPlaySound: false,
+ shouldSetBadge: false,
+ }),
+});
+
+export default function AppLayout() {
+ const notificationListener = useRef();
+ const responseListener = useRef();
+
+ useEffect(() => {
+ notificationListener.current =
+ Notifications.addNotificationReceivedListener((notification) => {
+ console.log(notification);
+ });
+
+ responseListener.current =
+ Notifications.addNotificationResponseReceivedListener((response) => {
+ console.log(response);
+ });
+
+ return () => {
+ Notifications.removeNotificationSubscription(
+ notificationListener.current as Notifications.Subscription,
+ );
+ Notifications.removeNotificationSubscription(
+ responseListener.current as Notifications.Subscription,
+ );
+ };
+ }, []);
+
+ return (
+ <>
+
+
+
+ ,
+ }}
+ />
+
+ >
+ );
+}
diff --git a/src/app/components/BackButton.tsx b/src/app/components/BackButton.tsx
new file mode 100644
index 00000000..f7ad13e1
--- /dev/null
+++ b/src/app/components/BackButton.tsx
@@ -0,0 +1,47 @@
+import Icon from "react-native-vector-icons/MaterialCommunityIcons";
+import { Pressable, StyleSheet } from "react-native";
+import React from "react";
+import { router } from "expo-router";
+
+interface Props {
+ color?: string;
+ canGoBack?: boolean;
+ route?: string;
+}
+
+export default function BackButton({
+ color = "#fff",
+ canGoBack = true,
+ route,
+}: Readonly) {
+ const goBack = () => {
+ if (route) {
+ router.push(route);
+ return;
+ }
+
+ canGoBack && router.canGoBack() ? router.back() : false;
+ };
+
+ return (
+
+
+
+ );
+}
+
+const styles = StyleSheet.create({
+ backButton: {
+ justifyContent: "flex-start",
+ marginRight: 10,
+ },
+});
diff --git a/src/app/components/BarraPesquisa.tsx b/src/app/components/BarraPesquisa.tsx
new file mode 100644
index 00000000..3ac698d0
--- /dev/null
+++ b/src/app/components/BarraPesquisa.tsx
@@ -0,0 +1,46 @@
+import React, { useState } from "react";
+import Icon from "react-native-vector-icons/MaterialCommunityIcons";
+import { StyleSheet, TextInput, View } from "react-native";
+
+interface IProps {
+ callbackFn: (titulo: string) => unknown;
+}
+
+export default function BarraPesquisa({ callbackFn }: IProps) {
+ const [titulo, setTitulo] = useState("");
+
+ return (
+
+
+ {
+ setTitulo(newValue);
+ callbackFn(newValue);
+ }}
+ value={titulo}
+ />
+
+ );
+}
+
+const styles = StyleSheet.create({
+ barraDePesquisa: {
+ flexDirection: "row",
+ alignItems: "center",
+ color: "#ADADAD",
+ backgroundColor: "white",
+ margin: 10,
+ paddingHorizontal: 15,
+ paddingVertical: 5,
+ borderRadius: 20,
+ },
+ inputBarraDePesquisa: {
+ flex: 1,
+ },
+ iconePesquisar: {
+ color: "#ADADAD",
+ marginRight: 5,
+ },
+});
diff --git a/src/app/components/CardIdoso.tsx b/src/app/components/CardIdoso.tsx
new file mode 100644
index 00000000..19572ab4
--- /dev/null
+++ b/src/app/components/CardIdoso.tsx
@@ -0,0 +1,95 @@
+import React from "react";
+import { View, Text, StyleSheet, Pressable } from "react-native";
+import Icon from "react-native-vector-icons/MaterialCommunityIcons";
+import { IIdoso } from "../interfaces/idoso.interface";
+import { router } from "expo-router";
+import { getImageUri, noImage } from "../shared/helpers/image.helper";
+import { Image } from "expo-image";
+import AsyncStorage from "@react-native-async-storage/async-storage";
+
+interface IProps {
+ item: IIdoso;
+}
+
+export default function CardIdoso({ item }: IProps) {
+ const getNome = (nome: string): string => {
+ return nome.length < 15 ? nome : nome.slice(0, 15) + "...";
+ };
+
+ const selectIdoso = async () => {
+ await AsyncStorage.setItem("idoso", JSON.stringify(item));
+ router.replace("private/tabs/rotinas");
+ };
+
+ const navigate = () => {
+ const params = { ...item, id: item.id, foto: getImageUri(item.foto) };
+
+ router.push({
+ pathname: "/private/pages/editarIdoso",
+ params: params,
+ });
+ };
+
+ return (
+
+
+
+
+
+ {getNome(item.nome)}
+
+
+
+
+
+ );
+}
+
+const styles = StyleSheet.create({
+ imagem: {
+ height: 149,
+ aspectRatio: 1,
+ borderRadius: 12,
+ },
+ texto: {
+ alignSelf: "center",
+ marginTop: 10,
+ },
+ pencil: {
+ position: "absolute",
+ right: -5,
+ bottom: 12,
+ backgroundColor: "#2CCDB5",
+ borderRadius: 20,
+ width: 28,
+ height: 28,
+ alignContent: "center",
+ alignItems: "center",
+ },
+ pencilIcon: {
+ marginTop: 3,
+ },
+ idoso: {
+ marginLeft: 16,
+ marginRight: 16,
+ marginBottom: 32,
+ },
+});
diff --git a/src/app/components/CardMetrica.tsx b/src/app/components/CardMetrica.tsx
new file mode 100644
index 00000000..812c55e4
--- /dev/null
+++ b/src/app/components/CardMetrica.tsx
@@ -0,0 +1,254 @@
+import React, { useEffect, useState } from "react";
+import { View, Text, StyleSheet, ScrollView } from "react-native";
+import Icon from "react-native-vector-icons/MaterialCommunityIcons";
+import FontAwesome from "react-native-vector-icons/FontAwesome";
+import { MaterialCommunityIcons } from "@expo/vector-icons";
+import {
+ EMetricas,
+ IMetrica,
+ IMetricaValueFilter,
+ IOrder,
+ IValorMetrica,
+} from "../interfaces/metricas.interface";
+import { getAllMetricaValues } from "../services/metricaValue.service";
+import Toast from "react-native-toast-message";
+import { Entypo } from "@expo/vector-icons";
+import database from "../db";
+import { Q } from "@nozbe/watermelondb";
+import ValorMetrica from "../model/ValorMetrica";
+
+interface IProps {
+ item: IMetrica;
+}
+
+export default function CardMetrica({ item }: IProps) {
+ const [valorMetrica, setValorMetrica] = useState();
+ const [dataHora, setDataHora] = useState();
+ const [hora, setHora] = useState("");
+ const [data, setData] = useState("");
+
+ const order: IOrder = {
+ column: "dataHora",
+ dir: "DESC",
+ };
+
+ const titleColor = "#000";
+ const textColor = "#888";
+
+ const unidade = () => {
+ if (item.categoria == EMetricas.FREQ_CARDIACA) {
+ return "bpm";
+ }
+ if (item.categoria == EMetricas.GLICEMIA) {
+ return "mg/dL";
+ }
+ if (item.categoria == EMetricas.PESO) {
+ return "kg";
+ }
+ if (item.categoria == EMetricas.PRESSAO_SANGUINEA) {
+ return "mmHg";
+ }
+ if (item.categoria == EMetricas.SATURACAO_OXIGENIO) {
+ return "%";
+ }
+ if (item.categoria == EMetricas.TEMPERATURA) {
+ return "°C";
+ }
+ if (item.categoria == EMetricas.HORAS_DORMIDAS) {
+ return "h";
+ }
+ if (item.categoria == EMetricas.ALTURA) {
+ return "cm";
+ }
+ if (item.categoria == EMetricas.IMC) {
+ return "kg/m²";
+ }
+ if (item.categoria == EMetricas.HIDRATACAO) {
+ return "ml";
+ }
+ };
+
+ const icone = () => {
+ if (item.categoria == EMetricas.FREQ_CARDIACA) {
+ return ;
+ }
+ if (item.categoria == EMetricas.GLICEMIA) {
+ return ;
+ }
+ if (item.categoria == EMetricas.PESO) {
+ return ;
+ }
+ if (item.categoria == EMetricas.PRESSAO_SANGUINEA) {
+ return ;
+ }
+ if (item.categoria == EMetricas.SATURACAO_OXIGENIO) {
+ return (
+
+
+ O2
+
+
+ );
+ }
+ if (item.categoria == EMetricas.TEMPERATURA) {
+ return ;
+ }
+ if (item.categoria == EMetricas.HORAS_DORMIDAS) {
+ return ;
+ }
+ if (item.categoria == EMetricas.ALTURA) {
+ return (
+
+ );
+ }
+ if (item.categoria == EMetricas.IMC) {
+ return ;
+ }
+ if (item.categoria == EMetricas.HIDRATACAO) {
+ return (
+
+ );
+ }
+ };
+
+ const getMetricas = async () => {
+ try {
+ const valorMetricasCollection = database.get('valor_metrica');
+ const valorMetrica = await valorMetricasCollection.query(
+ Q.where('metrica_id', item.id),
+ Q.sortBy('created_at', Q.desc),
+ Q.take(1)
+ ).fetch();
+
+ setValorMetrica(valorMetrica.at(0));
+ } catch (err) {
+ console.log("Erro ao buscar valor de metrica:", err);
+ }
+ };
+
+ const separaDataHora = () => {
+ setDataHora(valorMetrica?.dataHora as string);
+
+ if (!dataHora) return;
+
+ const dataHoraNum = new Date(dataHora).getTime();
+ const fuso = new Date(dataHora).getTimezoneOffset() * 60000;
+ const value = new Date(dataHoraNum - fuso).toISOString();
+ const valueFinal = value.split("T");
+ const separaHora = valueFinal[1].split(":");
+ setHora(`${separaHora[0]}:${separaHora[1]}`);
+ const separaData = valueFinal[0].split("-");
+ setData(`${separaData[2]}/${separaData[1]}/${separaData[0]}`);
+ };
+
+ useEffect(() => { getMetricas() }, []);
+ useEffect(() => separaDataHora(), [dataHora, valorMetrica]);
+
+ return (
+
+
+
+ {icone()}
+
+ {item.categoria}
+
+
+
+ {valorMetrica && (
+ <>
+ {valorMetrica.valor}
+
+ {unidade()}
+
+ >
+ )}
+ {!valorMetrica && (
+
+ Nenhum valor cadastrado
+
+ )}
+
+ {dataHora && (
+
+ {data} às {hora}
+
+ )}
+
+
+ );
+}
+
+const styles = StyleSheet.create({
+ container: {
+ flex: 1,
+ justifyContent: "center",
+ alignItems: "center",
+ margin: 5,
+ },
+ texto: {
+ alignSelf: "center",
+ marginTop: 10,
+ },
+ card: {
+ borderWidth: 1,
+ borderRadius: 8,
+ padding: 16,
+ margin: 8,
+ width: 170,
+ height: 150,
+ shadowColor: "#000",
+ shadowOffset: { width: 0, height: 2 },
+ shadowOpacity: 0.4,
+ shadowRadius: 4,
+ elevation: 3,
+ },
+ title: {
+ fontWeight: "bold",
+ fontSize: 14,
+ marginBottom: 8,
+ marginLeft: 8,
+ },
+ content: {
+ fontSize: 14,
+ marginTop: 8,
+ },
+ number: {
+ fontWeight: "bold",
+ fontSize: 24,
+ },
+ units: {
+ marginLeft: 3,
+ fontSize: 18,
+ },
+ time: {
+ color: "#888",
+ fontSize: 12,
+ marginTop: 8,
+ },
+ chevron: {
+ top: 10,
+ left: "85%",
+ position: "absolute",
+ },
+ othersIcons: {
+ flexDirection: "row",
+ alignItems: "center",
+ },
+ oxygenIcon: {
+ flexDirection: "row",
+ alignItems: "baseline",
+ },
+});
diff --git a/src/app/components/CardRotina.tsx b/src/app/components/CardRotina.tsx
new file mode 100644
index 00000000..6d29e908
--- /dev/null
+++ b/src/app/components/CardRotina.tsx
@@ -0,0 +1,208 @@
+import React, { useEffect, useState } from "react";
+import { View, Text, StyleSheet, Pressable, Dimensions } from "react-native";
+import Icon from "react-native-vector-icons/MaterialCommunityIcons";
+import { router } from "expo-router";
+import { ECategoriaRotina, IRotina } from "../interfaces/rotina.interface";
+import { updateRotina } from "../services/rotina.service";
+import Toast from "react-native-toast-message";
+import AsyncStorage from "@react-native-async-storage/async-storage";
+import database from "../db";
+import { Collection } from "@nozbe/watermelondb";
+import Rotina from "../model/Rotina";
+
+interface IProps {
+ item: IRotina;
+ index: number;
+ date: Date;
+}
+
+export default function CardRotina({ item, index, date }: IProps) {
+ const dateString = date.toLocaleString("pt-BR", {
+ year: "numeric",
+ month: "2-digit",
+ day: "2-digit",
+ });
+
+ const [nameIcon, setnameIcon] = useState("view-grid-outline");
+ const [check, setCheck] = useState(false);
+ const [time, setTime] = useState("");
+ const [token, setToken] = useState("");
+ const [timer, setTimer] = useState(null);
+
+ const getToken = () => {
+ AsyncStorage.getItem("token").then((response) => {
+ setToken(response as string);
+ });
+ };
+
+ const handleIcon = () => {
+ if (item.categoria == ECategoriaRotina.ALIMENTACAO) {
+ setnameIcon("food-apple-outline");
+ } else if (item.categoria == ECategoriaRotina.EXERCICIOS) {
+ setnameIcon("dumbbell");
+ } else if (item.categoria == ECategoriaRotina.MEDICAMENTO) {
+ setnameIcon("medical-bag");
+ }
+ };
+
+ const debounceConcluido = (concluido: boolean) => {
+ setCheck(concluido);
+ if (timer) clearTimeout(timer);
+ const temp = setTimeout(() => updateRotinaConcluido(concluido), 1000);
+ setTimer(temp);
+ };
+
+ const updateRotinaConcluido = async (concluido: boolean) => {
+ let dataHoraConcluidos = [];
+
+ if (concluido) {
+ dataHoraConcluidos = [...item.dataHoraConcluidos, dateString];
+ } else {
+ dataHoraConcluidos = item.dataHoraConcluidos.filter((item) => {
+ return item !== dateString;
+ });
+ }
+
+ try {
+ // await updateRotina(item.id, { dataHoraConcluidos }, token);
+ const rotinaCollection = database.get('rotina') as Collection;
+
+ await database.write(async () => {
+ const rotina = await rotinaCollection.find(item.id);
+ await rotina.update(() => {
+ rotina.dataHoraConcluidos = dataHoraConcluidos;
+ })
+ })
+
+ } catch (err) {
+ const error = err as { message: string };
+ Toast.show({
+ type: "error",
+ text1: "Erro!",
+ text2: error.message,
+ });
+ }
+ };
+
+ const editar = () => {
+ const rotina = item as unknown as Rotina;
+ const rotinaAttributes = {
+ id: rotina.id,
+ titulo: rotina.titulo,
+ categoria: rotina.categoria,
+ dias: rotina.dias,
+ dataHora: rotina.dataHora,
+ descricao: rotina.descricao,
+ token: rotina.token,
+ notificacao: rotina.notificacao,
+ dataHoraConcluidos: rotina.dataHoraConcluidos,
+ idosoId: rotina.idIdoso,
+ createdAt: rotina.createdAt,
+ updatedAt: rotina.updatedAt,
+ }
+ const params = { rotina: JSON.stringify(rotinaAttributes) };
+
+ router.push({
+ pathname: "/private/pages/editarRotina",
+ params: params,
+ });
+ };
+
+ const handleDataHora = () => {
+ const dateString = new Date(item.dataHora).toLocaleString("pt-BR", {
+ year: "numeric",
+ month: "2-digit",
+ day: "2-digit",
+ hour: "2-digit",
+ minute: "2-digit",
+ });
+
+ const [data, hora] = dateString.split(" ");
+ setCheck(item.dataHoraConcluidos.includes(data));
+ setTime(hora);
+ };
+
+ useEffect(() => handleIcon(), []);
+ useEffect(() => getToken(), []);
+ useEffect(() => handleDataHora(), []);
+
+ return (
+ <>
+ {time}
+
+
+
+
+
+ {item.titulo}
+ {item.descricao}
+
+ debounceConcluido(!check)}
+ style={styles.checkBox}
+ testID="checkbox"
+ >
+ {check && }
+
+
+ >
+ );
+}
+
+const styles = StyleSheet.create({
+ hora: {
+ fontSize: 18,
+ fontWeight: "300",
+ marginLeft: 20,
+ marginTop: 10,
+ },
+
+ container: {
+ flexDirection: "row",
+ alignItems: "center",
+ width: Dimensions.get("window").width - 40,
+ marginRight: 20,
+ marginLeft: 20,
+ marginTop: 10,
+ marginBottom: 10,
+ shadowColor: "#000",
+ shadowOffset: { width: 3, height: 3 },
+ shadowOpacity: 0.2,
+ shadowRadius: 4,
+ borderRadius: 4,
+ padding: 10,
+ paddingVertical: 5,
+ },
+ texts: {
+ flexDirection: "column",
+ marginLeft: 10,
+ marginBottom: 8,
+ marginTop: 8,
+ marginRight: 8,
+ flex: 1,
+ },
+ title: {
+ fontWeight: "500",
+ fontSize: 18,
+ },
+ description: {
+ color: "#767676",
+ marginTop: 10,
+ },
+ icon: {},
+ checkBox: {
+ height: 30,
+ width: 30,
+ borderRadius: 5,
+ backgroundColor: "white",
+ marginRight: 10,
+ justifyContent: "center",
+ alignItems: "center",
+ },
+});
diff --git a/src/app/components/CardValorMetrica.tsx b/src/app/components/CardValorMetrica.tsx
new file mode 100644
index 00000000..8a85c53a
--- /dev/null
+++ b/src/app/components/CardValorMetrica.tsx
@@ -0,0 +1,264 @@
+import React, { useEffect, useState } from "react";
+import { View, Text, StyleSheet } from "react-native";
+import Icon from "react-native-vector-icons/MaterialCommunityIcons";
+import FontAwesome from "react-native-vector-icons/FontAwesome";
+import {
+ EMetricas,
+ IMetrica,
+ IValorMetricaCategoria,
+} from "../interfaces/metricas.interface";
+import { Entypo, Octicons } from "@expo/vector-icons";
+import { deleteMetricaValue } from "../services/metricaValue.service";
+import AsyncStorage from "@react-native-async-storage/async-storage";
+import { router } from "expo-router";
+import Toast from "react-native-toast-message";
+import ModalConfirmation from "./ModalConfirmation";
+import { MaterialCommunityIcons } from "@expo/vector-icons";
+import database from "../db";
+import { Collection } from "@nozbe/watermelondb";
+import ValorMetrica from "../model/ValorMetrica";
+
+interface IProps {
+ item: IValorMetricaCategoria;
+ metrica: IMetrica;
+}
+
+export default function CardValorMetrica({ item, metrica }: IProps) {
+ const [data, setData] = useState("");
+ const [hora, setHora] = useState("");
+ const [token, setToken] = useState("");
+ const [modalVisible, setModalVisible] = useState(false);
+
+ const titleColor = "#000";
+ const textColor = "#888";
+
+ const getToken = () => {
+ AsyncStorage.getItem("token").then((response) => {
+ setToken(response as string);
+ });
+ };
+
+ const unidade = () => {
+ if (item.categoria == EMetricas.FREQ_CARDIACA) {
+ return "bpm";
+ }
+ if (item.categoria == EMetricas.GLICEMIA) {
+ return "mg/dL";
+ }
+ if (item.categoria == EMetricas.PESO) {
+ return "kg";
+ }
+ if (item.categoria == EMetricas.PRESSAO_SANGUINEA) {
+ return "mmHg";
+ }
+ if (item.categoria == EMetricas.SATURACAO_OXIGENIO) {
+ return "%";
+ }
+ if (item.categoria == EMetricas.TEMPERATURA) {
+ return "°C";
+ }
+ if (item.categoria == EMetricas.ALTURA) {
+ return "cm";
+ }
+ if (item.categoria == EMetricas.HORAS_DORMIDAS) {
+ return "h";
+ }
+ if (item.categoria == EMetricas.IMC) {
+ return "kg/m²";
+ }
+ if (item.categoria == EMetricas.HIDRATACAO) {
+ return "ml";
+ }
+ };
+
+ const separaDataHora = () => {
+ const dataHoraNum = new Date(item.dataHora).getTime();
+ const fuso = new Date(item.dataHora).getTimezoneOffset() * 60000;
+ const value = new Date(dataHoraNum - fuso).toISOString();
+ const valueFinal = value.split("T");
+ const separaData = valueFinal[0].split("-");
+ setData(`${separaData[2]}/${separaData[1]}/${separaData[0]}`);
+ const separaHora = valueFinal[1].split(":");
+ setHora(`${separaHora[0]}:${separaHora[1]}`);
+ };
+
+ const icone = () => {
+ if (item.categoria == EMetricas.FREQ_CARDIACA) {
+ return ;
+ }
+ if (item.categoria == EMetricas.GLICEMIA) {
+ return ;
+ }
+ if (item.categoria == EMetricas.PESO) {
+ return ;
+ }
+ if (item.categoria == EMetricas.PRESSAO_SANGUINEA) {
+ return ;
+ }
+ if (item.categoria == EMetricas.SATURACAO_OXIGENIO) {
+ return (
+
+
+ O2
+
+
+ );
+ }
+ if (item.categoria == EMetricas.TEMPERATURA) {
+ return ;
+ }
+ if (item.categoria == EMetricas.HORAS_DORMIDAS) {
+ return ;
+ }
+ if (item.categoria == EMetricas.ALTURA) {
+ return (
+
+ );
+ }
+ if (item.categoria == EMetricas.IMC) {
+ return ;
+ }
+ if (item.categoria == EMetricas.HIDRATACAO) {
+ return (
+
+ );
+ }
+ };
+
+ const apagarValor = async () => {
+ try {
+ setModalVisible(false);
+
+ const valorMetricasCollection = database.get('valor_metrica') as Collection;
+ await database.write(async () => {
+ const valorMetrica = await valorMetricasCollection.find(String(item.id));
+ await valorMetrica.destroyPermanently(); // Change it to mark as deleted when implementing sync
+ });
+
+ router.replace({
+ pathname: "/private/pages/visualizarMetrica",
+ params: metrica,
+ });
+ } catch (err) {
+ console.log("Erro ao apagar valor de metrica:", err);
+ }
+ };
+
+ const confirmation = () => {
+ setModalVisible(!modalVisible);
+ };
+
+ const closeModal = () => {
+ setModalVisible(false);
+ };
+
+ useEffect(() => separaDataHora(), []);
+ useEffect(() => getToken(), []);
+
+ return (
+
+
+
+ {icone()}
+
+ {item.valor}
+
+ {unidade()}
+
+
+
+
+ {data}
+ {hora}
+
+
+
+ );
+}
+
+const styles = StyleSheet.create({
+ container: {
+ flex: 1,
+ justifyContent: "center",
+ alignItems: "center",
+ },
+ texto: {
+ alignSelf: "center",
+ marginTop: 10,
+ },
+ card: {
+ borderWidth: 1,
+ borderRadius: 8,
+ padding: 16,
+ margin: 8,
+ width: "90%",
+ shadowColor: "#000",
+ shadowOffset: { width: 0, height: 2 },
+ shadowOpacity: 0.4,
+ shadowRadius: 4,
+ elevation: 3,
+ flexDirection: "row",
+ justifyContent: "space-between",
+ alignItems: "center",
+ },
+ title: {
+ fontSize: 25,
+ marginLeft: 8,
+ },
+ number: {
+ fontWeight: "bold",
+ fontSize: 24,
+ },
+ units: {
+ marginTop: 5,
+ marginLeft: 3,
+ fontSize: 18,
+ },
+ time: {
+ color: "#888",
+ fontSize: 12,
+ marginTop: 8,
+ },
+ othersIcons: {
+ flexDirection: "row",
+ },
+ oxygenIcon: {
+ flexDirection: "row",
+ alignItems: "center",
+ },
+ dataHora: {
+ flexDirection: "column",
+ alignItems: "flex-end",
+ },
+ apagar: {
+ position: "absolute",
+ right: 0,
+ top: 0,
+ padding: 0,
+ },
+});
diff --git a/src/app/components/CustomButton.tsx b/src/app/components/CustomButton.tsx
new file mode 100644
index 00000000..6aeeceb1
--- /dev/null
+++ b/src/app/components/CustomButton.tsx
@@ -0,0 +1,50 @@
+import React from "react";
+import { ActivityIndicator, Pressable, StyleSheet, Text } from "react-native";
+
+interface Props {
+ title: string;
+ callbackFn: () => unknown;
+ backgroundColor?: string;
+ showLoading?: boolean;
+}
+
+export default function CustomButton({
+ title,
+ callbackFn,
+ backgroundColor,
+ showLoading,
+}: Readonly) {
+ const background = backgroundColor ?? "#2CCDB5";
+
+ return (
+ callbackFn()}
+ >
+ {showLoading ? (
+
+ ) : (
+ {title}
+ )}
+
+ );
+}
+
+const styles = (backgroundColor: string) =>
+ StyleSheet.create({
+ buttonText: {
+ fontSize: 18,
+ color: "white",
+ fontWeight: "700",
+ },
+ button: {
+ width: "80%",
+ maxWidth: 350,
+ paddingVertical: 16,
+ paddingHorizontal: 26,
+ backgroundColor,
+ alignItems: "center",
+ borderRadius: 20,
+ },
+ });
diff --git a/src/app/components/EmConstrucao.tsx b/src/app/components/EmConstrucao.tsx
new file mode 100644
index 00000000..9545ac13
--- /dev/null
+++ b/src/app/components/EmConstrucao.tsx
@@ -0,0 +1,33 @@
+import React from "react";
+import { Text, View, StyleSheet } from "react-native";
+import Icon from "react-native-vector-icons/MaterialCommunityIcons";
+
+export default function EmConstrucao() {
+ return (
+
+
+ Página em construção!
+
+ );
+}
+
+const styles = StyleSheet.create({
+ container: {
+ flex: 1,
+ flexDirection: "column",
+ alignItems: "center",
+ justifyContent: "center",
+ position: "absolute",
+ width: "100%",
+ marginTop: "75%",
+ marginLeft: "auto",
+ marginRight: "auto",
+ },
+ text: {
+ textAlign: "center",
+ fontSize: 20,
+ fontWeight: "500",
+ marginVertical: 10,
+ marginHorizontal: 10,
+ },
+});
diff --git a/src/app/components/ErrorMessage.tsx b/src/app/components/ErrorMessage.tsx
new file mode 100644
index 00000000..ebf2805e
--- /dev/null
+++ b/src/app/components/ErrorMessage.tsx
@@ -0,0 +1,24 @@
+import React from "react";
+import { View } from "react-native";
+import { StyleSheet, Text } from "react-native";
+
+interface Props {
+ text: string | undefined;
+ show: boolean;
+}
+
+export default function ErrorMessage({ text, show }: Readonly) {
+ return (
+
+ {show ? text : " "}
+
+ );
+}
+
+const styles = StyleSheet.create({
+ error: {
+ height: 15,
+ color: "#FF7F7F",
+ fontSize: 12,
+ },
+});
diff --git a/src/app/components/FiltroDropdown.tsx b/src/app/components/FiltroDropdown.tsx
new file mode 100644
index 00000000..fd0f231d
--- /dev/null
+++ b/src/app/components/FiltroDropdown.tsx
@@ -0,0 +1,139 @@
+import React, { useState, useEffect, useRef } from "react";
+import { View, Text, StyleSheet, TouchableOpacity, FlatList } from "react-native";
+import Icon from "react-native-vector-icons/MaterialCommunityIcons";
+
+interface FiltroDropdownProps {
+ filtro: string | null;
+ setFiltro: (filtro: string | null) => void;
+}
+
+interface IOrderOption {
+ column: string;
+ dir: string;
+ value: string;
+}
+
+const FiltroDropdown: React.FC = ({ filtro, setFiltro }) => {
+ const [dropdownVisible, setDropdownVisible] = useState(false);
+ const [selectedOption, setSelectedOption] = useState(filtro);
+ const [buttonDimensions, setButtonDimensions] = useState({ width: 0, height: 0 });
+
+ const options: IOrderOption[] = [
+ { column: "alimentacao", dir: "ASC", value: "Alimentação" },
+ { column: "exercicios", dir: "ASC", value: "Exercícios" },
+ { column: "medicamentos", dir: "ASC", value: "Medicamentos" },
+ { column: "geral", dir: "ASC", value: "Geral" },
+ ];
+
+ const buttonRef = useRef(null);
+
+ const toggleDropdown = () => {
+ setDropdownVisible(!dropdownVisible);
+ };
+
+ const selectOption = (item: IOrderOption) => {
+ setFiltro(item.value);
+ setSelectedOption(item.value === selectedOption ? null : item.value);
+ setDropdownVisible(false);
+ };
+
+ const renderDropdownItem = ({ item }: { item: IOrderOption }) => (
+ selectOption(item)}
+ >
+
+ {item.value}
+
+
+ );
+
+ useEffect(() => {
+ setSelectedOption(filtro);
+ }, [filtro]);
+
+ useEffect(() => {
+ if (buttonRef.current) {
+ buttonRef.current.measure((x, y, width, height, pageX, pageY) => {
+ setButtonDimensions({ width, height });
+ });
+ }
+ }, [dropdownVisible]);
+
+ return (
+
+
+ {selectedOption ? selectedOption : "Filtro"}
+
+
+
+ {dropdownVisible && (
+ item.value}
+ style={[
+ styles.dropdownList,
+ { width: buttonDimensions.width, top: buttonDimensions.height, marginLeft: 15 },
+ ]}
+ />
+ )}
+
+ );
+};
+
+const styles = StyleSheet.create({
+ container: {
+ alignItems: "center",
+ marginTop: 10,
+ },
+ dropdownContainer: {
+ flexDirection: "row",
+ justifyContent: "space-between",
+ alignItems: "center",
+ backgroundColor: "#2CCDB5",
+ paddingVertical: 8,
+ paddingHorizontal: 15,
+ borderRadius: 5,
+ width: 150,
+ marginLeft: 15,
+ },
+ label: {
+ color: "#fff",
+ fontSize: 16,
+ fontWeight: "600",
+ textAlign: "center",
+ textTransform: "capitalize",
+ },
+ chevronIcon: {
+ marginLeft: 5,
+ color: "black",
+ },
+ dropdownList: {
+ position: "absolute",
+ backgroundColor: "#fff",
+ borderWidth: 1,
+ borderColor: "#ddd",
+ borderRadius: 5,
+ elevation: 5,
+ },
+ option: {
+ padding: 15,
+ borderBottomWidth: 1,
+ borderBottomColor: "#ddd",
+ },
+ optionText: {
+ fontSize: 16,
+ fontWeight: "600",
+ textAlign: "center",
+ },
+});
+
+export default FiltroDropdown;
diff --git a/src/app/components/ForgetButton.tsx b/src/app/components/ForgetButton.tsx
new file mode 100644
index 00000000..585d1c23
--- /dev/null
+++ b/src/app/components/ForgetButton.tsx
@@ -0,0 +1,47 @@
+import React from "react";
+import { ActivityIndicator, StyleSheet, Text } from "react-native";
+import { router } from "expo-router";
+import { View } from 'react-native';
+
+interface Props {
+ title: string;
+ showLoading?: boolean;
+}
+
+export default function ForgetButton({
+ title,
+ showLoading,
+}: Readonly) {
+
+ const handlePress = () => {
+ router.push("/private/pages/esqueciSenha");
+ };
+
+ return (
+
+ {showLoading ? (
+
+ ) : (
+
+ {title}
+
+ )}
+
+ );
+}
+
+const styles = StyleSheet.create({
+ linkText: {
+ width: "40%",
+ color: "#2CCDB5",
+ maxWidth: 300,
+ textDecorationLine: "underline",
+ paddingVertical: 12,
+ paddingHorizontal: 18,
+ textAlign: "left",
+ borderRadius: 20,
+ },
+ });
diff --git a/src/app/components/IdosoNaoSelecionado.tsx b/src/app/components/IdosoNaoSelecionado.tsx
new file mode 100644
index 00000000..d0aab6ac
--- /dev/null
+++ b/src/app/components/IdosoNaoSelecionado.tsx
@@ -0,0 +1,41 @@
+import { Link } from "expo-router";
+import React from "react";
+import { Text, View, StyleSheet } from "react-native";
+import Icon from "react-native-vector-icons/MaterialCommunityIcons";
+
+export default function IdosoNaoSelecionado() {
+ return (
+
+
+ Idoso não selecionado
+
+ Selecione seu idoso
+
+
+ );
+}
+
+const styles = StyleSheet.create({
+ container: {
+ flex: 1,
+ flexDirection: "column",
+ alignItems: "center",
+ justifyContent: "center",
+ position: "absolute",
+ width: "100%",
+ marginTop: "75%",
+ marginLeft: "auto",
+ marginRight: "auto",
+ },
+ text: {
+ textAlign: "center",
+ fontSize: 20,
+ fontWeight: "500",
+ marginVertical: 10,
+ marginHorizontal: 10,
+ },
+ selecinaIdoso: {
+ textDecorationLine: "underline",
+ color: "#2CCDB5",
+ },
+});
diff --git a/src/app/components/ItemTutorial.tsx b/src/app/components/ItemTutorial.tsx
new file mode 100644
index 00000000..002f99c4
--- /dev/null
+++ b/src/app/components/ItemTutorial.tsx
@@ -0,0 +1,29 @@
+import React, { ReactNode } from "react";
+import { View, Image, StyleSheet, ImageSourcePropType } from "react-native";
+
+interface Props {
+ imageSrc: ImageSourcePropType;
+ textEl: ReactNode;
+}
+
+export default function ItemTutorial({ imageSrc, textEl }: Readonly) {
+ return (
+
+
+ {textEl}
+
+ );
+}
+
+const styles = StyleSheet.create({
+ container: {
+ marginBottom: 30,
+ },
+ image: {
+ alignSelf: "center",
+ aspectRatio: 3 / 4,
+ marginBottom: 0,
+ marginTop: 0,
+ height: "83%",
+ },
+});
diff --git a/src/app/components/LinkButton.tsx b/src/app/components/LinkButton.tsx
new file mode 100644
index 00000000..d766e4b7
--- /dev/null
+++ b/src/app/components/LinkButton.tsx
@@ -0,0 +1,44 @@
+import { Pressable, StyleSheet, Text } from "react-native";
+import React from "react";
+import { router } from "expo-router";
+
+interface Props {
+ title: string;
+ href: string;
+ backgroundColor?: string;
+}
+
+export default function LinkButton({ title, href, backgroundColor }: Props) {
+ const background = backgroundColor ?? "#2CCDB5";
+
+ const handleNavigate = () => router.push(href);
+
+ return (
+
+ {title}
+
+ );
+}
+
+const styles = (backgroundColor: string) =>
+ StyleSheet.create({
+ buttonText: {
+ fontSize: 18,
+ color: "white",
+ fontWeight: "700",
+ },
+ button: {
+ width: "100%",
+ marginBottom: 25,
+ maxWidth: 350,
+ paddingVertical: 16,
+ paddingHorizontal: 26,
+ backgroundColor,
+ alignItems: "center",
+ borderRadius: 20,
+ },
+ });
diff --git a/src/app/components/Loading.tsx b/src/app/components/Loading.tsx
new file mode 100644
index 00000000..07c1d1b7
--- /dev/null
+++ b/src/app/components/Loading.tsx
@@ -0,0 +1,23 @@
+import React from "react";
+import { StyleSheet, View, ActivityIndicator } from "react-native";
+
+export default function Loading() {
+ return (
+
+
+
+ );
+}
+
+const styles = StyleSheet.create({
+ container: {
+ flex: 1,
+ justifyContent: "center",
+ alignItems: "center",
+ backgroundColor: "#00000098",
+ height: "100%",
+ width: "100%",
+ position: "absolute",
+ zIndex: 99999,
+ },
+});
diff --git a/src/app/components/MaskHour.tsx b/src/app/components/MaskHour.tsx
new file mode 100644
index 00000000..a48ad817
--- /dev/null
+++ b/src/app/components/MaskHour.tsx
@@ -0,0 +1,36 @@
+import React from "react";
+import { TextInput, TextInputProps } from "react-native";
+
+interface MaskHourProps extends TextInputProps {
+ inputMaskChange: (value: string) => unknown;
+}
+
+export default function MaskInput({
+ inputMaskChange,
+ ...textInput
+}: Readonly) {
+ function handlechange(text: string) {
+ const value = MaskHour(text);
+ inputMaskChange(value);
+ }
+
+ function MaskHour(value: string) {
+ value = value.replace(/\D/g, "");
+ value = value.replace(/^(\d{2})(\d)/, "$1:$2");
+
+ if (value[0] > "2") {
+ value = "";
+ }
+ // if (value[1] > "9") {
+ // value = value[0];
+ // }
+ if (value[3] > "5") {
+ value = value[0] + value[1] + value[2];
+ }
+ return value;
+ }
+
+ return (
+ handlechange(text)} {...textInput} />
+ );
+}
diff --git a/src/app/components/ModalButtons.tsx b/src/app/components/ModalButtons.tsx
new file mode 100644
index 00000000..a0672c94
--- /dev/null
+++ b/src/app/components/ModalButtons.tsx
@@ -0,0 +1,76 @@
+import React from 'react';
+import { Pressable, Text, View, StyleSheet } from 'react-native';
+
+interface IErrors {
+ valor?: string;
+ }
+
+interface IModalButtonsProps {
+ onCancel: () => void;
+ onSave: () => void;
+ showErrors: boolean;
+ setShowErrors: (value: boolean) => void;
+ erros: IErrors;
+}
+
+const ModalButtons: React.FC = ({
+ onCancel,
+ onSave,
+ showErrors,
+ setShowErrors,
+ erros,
+}) => {
+ return (
+
+
+ Cancelar
+
+ {
+ if (Object.keys(erros).length > 0) {
+ setShowErrors(true);
+ } else {
+ onSave();
+ }
+ }}
+ >
+ Salvar
+
+
+ );
+};
+
+const styles = StyleSheet.create({
+ buttonContainer: {
+ flexDirection: "row",
+ justifyContent: "space-between",
+ marginTop: 20,
+ },
+ button: {
+ borderRadius: 20,
+ padding: 10,
+ elevation: 2,
+ width: 100,
+ },
+ buttonClose: {
+ backgroundColor: "#2CCDB5",
+ marginHorizontal: 15,
+ },
+ buttonCancel: {
+ backgroundColor: "#FF7F7F",
+ marginHorizontal: 15,
+ },
+ textStyle: {
+ color: "white",
+ fontWeight: "bold",
+ textAlign: "center",
+ },
+});
+
+export default ModalButtons;
diff --git a/src/app/components/ModalConfirmation.tsx b/src/app/components/ModalConfirmation.tsx
new file mode 100644
index 00000000..4299911e
--- /dev/null
+++ b/src/app/components/ModalConfirmation.tsx
@@ -0,0 +1,100 @@
+import React from "react";
+import { Modal, StyleSheet, Text, Pressable, View } from "react-native";
+
+interface IProps {
+ visible: boolean;
+ callbackFn: () => void;
+ closeModal: () => void;
+ message: string;
+ messageButton: string;
+ testID?: string;
+}
+
+export default function ModalConfirmation({
+ visible,
+ callbackFn,
+ closeModal,
+ message,
+ messageButton,
+ testID,
+}: Readonly) {
+ return (
+
+
+
+ {message}
+
+ closeModal()}
+ >
+ Cancelar
+
+ callbackFn()}
+ >
+ {messageButton}
+
+
+
+
+
+ );
+}
+
+const styles = StyleSheet.create({
+ centeredView: {
+ flex: 1,
+ justifyContent: "center",
+ alignItems: "center",
+ backgroundColor: "#00000098",
+ },
+ modalView: {
+ margin: 20,
+ backgroundColor: "white",
+ borderRadius: 20,
+ padding: 35,
+ alignItems: "center",
+ shadowColor: "#000",
+ shadowOffset: {
+ width: 0,
+ height: 2,
+ },
+ shadowOpacity: 0.25,
+ shadowRadius: 4,
+ elevation: 5,
+ },
+ button: {
+ borderRadius: 20,
+ padding: 10,
+ elevation: 2,
+ width: 100,
+ },
+ buttonOpen: {
+ backgroundColor: "#F194FF",
+ },
+ buttonClose: {
+ backgroundColor: "#FF7F7F",
+ marginHorizontal: 15,
+ },
+ buttonCancel: {
+ backgroundColor: "#2CCDB5",
+ marginHorizontal: 15,
+ },
+ textStyle: {
+ color: "white",
+ fontWeight: "bold",
+ textAlign: "center",
+ },
+ modalText: {
+ marginBottom: 35,
+ textAlign: "center",
+ fontWeight: "bold",
+ },
+ buttonContainer: {
+ flexDirection: "row",
+ },
+});
diff --git a/src/app/components/ModalMeta.tsx b/src/app/components/ModalMeta.tsx
new file mode 100644
index 00000000..be175314
--- /dev/null
+++ b/src/app/components/ModalMeta.tsx
@@ -0,0 +1,74 @@
+import React, { useEffect, useState } from "react";
+import { Modal, StyleSheet, Text, Pressable, View } from "react-native";
+import { EMetricas, IMetrica } from "../interfaces/metricas.interface";
+import { MaterialCommunityIcons } from "@expo/vector-icons";
+import { TextInput } from "react-native-gesture-handler";
+import ErrorMessage from "./ErrorMessage";
+import { validateValue } from "../shared/helpers/modal.helper";
+import ModalButtons from "./ModalButtons";
+import styles from "./style/stylesModal";
+interface IProps {
+ visible: boolean;
+ callbackFn: (valor: string) => unknown;
+ closeModal: () => unknown;
+ message: string;
+ metrica: IMetrica;
+}
+
+interface IErrors {
+ valor?: string;
+}
+
+export default function ModalMeta({
+ visible,
+ callbackFn,
+ closeModal,
+ metrica,
+ message,
+}: Readonly) {
+ const [valor, setValor] = useState("");
+ const [erros, setErros] = useState({});
+ const [showErrors, setShowErrors] = useState(false);
+
+ useEffect(() => {
+ validateValue(valor, setShowErrors, setErros);
+ }, [valor]);
+
+ return (
+
+
+
+ Adicionar uma nova meta
+
+ {metrica.categoria == EMetricas.HIDRATACAO && (
+
+ )}
+
+
+
+
+
+
+
+ callbackFn(valor)}
+ showErrors={showErrors}
+ setShowErrors={setShowErrors}
+ erros={erros}
+ />
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/src/app/components/ModalMetrica.tsx b/src/app/components/ModalMetrica.tsx
new file mode 100644
index 00000000..d0dca1fd
--- /dev/null
+++ b/src/app/components/ModalMetrica.tsx
@@ -0,0 +1,113 @@
+import React, { useEffect, useState } from "react";
+import { Modal, StyleSheet, Text, Pressable, View } from "react-native";
+import { EMetricas, IMetrica } from "../interfaces/metricas.interface";
+import Icon from "react-native-vector-icons/MaterialCommunityIcons";
+import { MaterialCommunityIcons } from "@expo/vector-icons";
+import { FontAwesome, Entypo } from "@expo/vector-icons";
+import { TextInput } from "react-native";
+import ErrorMessage from "./ErrorMessage";
+import { validateValue } from "../shared/helpers/modal.helper";
+import ModalButtons from "./ModalButtons";
+import styles from "./style/stylesModal";
+
+interface IProps {
+ visible: boolean;
+ callbackFn: (valor: string) => unknown;
+ closeModal: () => unknown;
+ message: string;
+ metrica: IMetrica;
+}
+
+interface IErrors {
+ valor?: string;
+}
+
+export default function ModalMetrica({
+ visible,
+ callbackFn,
+ closeModal,
+ metrica,
+ message,
+}: Readonly) {
+ const [valor, setValor] = useState("");
+ const [erros, setErros] = useState({});
+ const [showErrors, setShowErrors] = useState(false);
+
+ useEffect(() => {
+ validateValue(valor, setShowErrors, setErros);
+ }, [valor]);
+
+ return (
+
+
+
+ {message}
+
+ {metrica.categoria == EMetricas.FREQ_CARDIACA && (
+
+ )}
+ {metrica.categoria === EMetricas.HORAS_DORMIDAS && (
+
+ )}
+ {metrica.categoria == EMetricas.GLICEMIA && (
+
+ )}
+ {metrica.categoria == EMetricas.ALTURA && (
+
+ )}
+ {metrica.categoria == EMetricas.TEMPERATURA && (
+
+ )}
+ {metrica.categoria == EMetricas.PRESSAO_SANGUINEA && (
+
+ )}
+ {metrica.categoria == EMetricas.PESO && (
+
+ )}
+ {metrica.categoria == EMetricas.SATURACAO_OXIGENIO && (
+
+
+ O2
+
+
+ )}
+ {metrica.categoria == EMetricas.IMC && (
+
+ )}
+ {metrica.categoria == EMetricas.HIDRATACAO && (
+
+ )}
+
+
+
+
+
+
+
+ callbackFn(valor)}
+ showErrors={showErrors}
+ setShowErrors={setShowErrors}
+ erros={erros}
+ />
+
+
+
+ );
+}
diff --git a/src/app/components/NaoAutenticado.tsx b/src/app/components/NaoAutenticado.tsx
new file mode 100644
index 00000000..2334190c
--- /dev/null
+++ b/src/app/components/NaoAutenticado.tsx
@@ -0,0 +1,35 @@
+import React from "react";
+import { Text, View, StyleSheet } from "react-native";
+import LinkButton from "./LinkButton";
+
+export default function NaoAutenticado() {
+ return (
+
+
+ Você precisar efetuar login para acessar essa página!
+
+
+
+ );
+}
+
+const styles = StyleSheet.create({
+ textContainer: {
+ flex: 1,
+ flexDirection: "column",
+ alignItems: "center",
+ justifyContent: "center",
+ position: "absolute",
+ width: "100%",
+ marginTop: "80%",
+ marginLeft: "auto",
+ marginRight: "auto",
+ },
+ text: {
+ textAlign: "center",
+ fontSize: 18,
+ fontWeight: "600",
+ marginVertical: 20,
+ marginHorizontal: 10,
+ },
+});
diff --git a/src/app/components/Publicacao.tsx b/src/app/components/Publicacao.tsx
new file mode 100644
index 00000000..bb73e5de
--- /dev/null
+++ b/src/app/components/Publicacao.tsx
@@ -0,0 +1,178 @@
+import React from "react";
+import { View, Image, Text, StyleSheet, Pressable } from "react-native";
+import { IPublicacao } from "../interfaces/forum.interface";
+import Icon from "react-native-vector-icons/MaterialCommunityIcons";
+import { router } from "expo-router";
+import AntDesing from "react-native-vector-icons/AntDesign";
+import { hasFoto } from "../shared/helpers/foto.helper";
+
+interface IProps {
+ item: IPublicacao;
+ crop?: boolean;
+}
+
+export default function Publicacao({ item, crop }: Readonly) {
+
+ const getFoto = (foto: string | null | undefined) => {
+ if (hasFoto(foto)) {
+ return (
+
+ );
+ }
+
+ return (
+
+
+
+ );
+ };
+
+ const getFormattedDate = (payload: Date | string): string => {
+ const date = new Date(payload);
+ return date.toLocaleDateString("pt-BR");
+ };
+
+ const navigate = () => {
+ const params = { ...item, ...item.usuario, id: item.id };
+
+ router.push({
+ pathname: "/private/pages/visualizarPublicacao",
+ params: params,
+ });
+ };
+
+ const getNome = (nome?: string): string => {
+ if (!nome) return "Usuário deletado";
+ if (!crop) return nome;
+
+ return nome.length < 25 ? nome : nome.slice(0, 25) + "...";
+ };
+
+ const getTitulo = (titulo: string): string => {
+ if (!crop) return titulo;
+
+ return titulo.length < 30 ? titulo : titulo.slice(0, 30) + "...";
+ };
+
+ const getDescricao = (descricao: string): string => {
+ if (!crop) return descricao;
+
+ return descricao.length < 150 ? descricao : descricao.slice(0, 150) + "...";
+ };
+
+ return (
+
+
+ {getFoto(item.usuario?.foto)}
+
+ {getTitulo(item.titulo)}
+ {item.categoria}
+
+
+ {getNome(item.usuario?.nome as string)}
+
+ {getFormattedDate(item.dataHora)}
+
+
+
+ {getDescricao(item.descricao)}
+
+ {item.idUsuarioReporte && item.idUsuarioReporte.length > 0 && (
+
+
+ Usuários reportaram
+
+ )}
+
+
+ );
+}
+
+const styles = StyleSheet.create({
+ postContainer: {
+ margin: 10,
+ borderRadius: 14,
+ elevation: 5,
+ backgroundColor: "white",
+ shadowColor: "#333",
+ shadowOffset: { width: 0, height: 1 },
+ shadowOpacity: 0.5,
+ shadowRadius: 2,
+ padding: 15,
+ display: "flex",
+ flexDirection: "column",
+ height: "auto",
+ },
+ postHeader: {
+ flexDirection: "row",
+ alignItems: "center",
+ width: "100%",
+ },
+ userInfo: {
+ marginLeft: 10,
+ width: "100%",
+ },
+ subInfo: {
+ flexDirection: "row",
+ justifyContent: "flex-start",
+ marginTop: 5,
+ alignItems: "center",
+ },
+ title: {
+ fontSize: 16,
+ fontWeight: "600",
+ },
+ categoria: {
+ opacity: 0.5,
+ marginTop: 5,
+ },
+ date: {
+ color: "#000000",
+ opacity: 0.5,
+ fontSize: 10,
+ marginLeft: 10,
+ },
+ postContent: {
+ fontSize: 16,
+ marginTop: 15,
+ },
+ fotoPerfil: {
+ width: 45,
+ aspectRatio: 1,
+ borderRadius: 100,
+ },
+ semFoto: { position: "relative", backgroundColor: "#EFEFF0" },
+ semFotoIcon: {
+ position: "absolute",
+ right: "34%",
+ bottom: "34%",
+ opacity: 0.4,
+ margin: "auto",
+ alignSelf: "center",
+ zIndex: 1,
+ },
+ username: {
+ color: "#000000",
+ opacity: 0.5,
+ fontSize: 13,
+ },
+ underInfo: {
+ flexDirection: "row",
+ justifyContent: "flex-end",
+ width: "100%",
+ marginTop: 10,
+ },
+ reports: {
+ flexDirection: "row",
+ alignItems: "center",
+ },
+ reportsText: {
+ color: "#FFCC00",
+ marginLeft: 3,
+ },
+});
diff --git a/src/app/components/PublicacaoVisualizar.tsx b/src/app/components/PublicacaoVisualizar.tsx
new file mode 100644
index 00000000..92162eca
--- /dev/null
+++ b/src/app/components/PublicacaoVisualizar.tsx
@@ -0,0 +1,125 @@
+import React from "react";
+import { View, Image, Text, StyleSheet } from "react-native";
+import { IPublicacaoUsuario } from "../interfaces/forum.interface";
+import Icon from "react-native-vector-icons/MaterialCommunityIcons";
+import AntDesing from "react-native-vector-icons/AntDesign";
+import { hasFoto } from "../shared/helpers/foto.helper";
+import { getFoto } from "../shared/helpers/photo.helper";
+interface IProps {
+ item: IPublicacaoUsuario;
+}
+
+export default function PublicacaoVisualizar({ item }: IProps) {
+
+ const getFormattedDate = (payload: Date | string): string => {
+ const date = new Date(payload);
+ return date.toLocaleDateString("pt-BR");
+ };
+
+ return (
+
+
+ {getFoto(item.foto)}
+ {item.nome || "Usuário deletado"}
+
+ {item.titulo}
+ {item.descricao}
+
+ {item.categoria}
+ {getFormattedDate(item.dataHora)}
+
+
+ {item.idUsuarioReporte && item.idUsuarioReporte.length > 0 && (
+
+
+ Usuários reportaram
+
+ )}
+
+
+ );
+}
+
+const styles = StyleSheet.create({
+ postContainer: {
+ margin: 10,
+ borderRadius: 14,
+ elevation: 5,
+ backgroundColor: "white",
+ shadowColor: "#333",
+ shadowOffset: { width: 0, height: 1 },
+ shadowOpacity: 0.5,
+ shadowRadius: 2,
+ padding: 15,
+ display: "flex",
+ flexDirection: "column",
+ height: "auto",
+ },
+ userInfo: {
+ flexDirection: "row",
+ alignItems: "center",
+ width: "100%",
+ },
+ fotoPerfil: {
+ width: 65,
+ aspectRatio: 1,
+ borderRadius: 100,
+ },
+ username: {
+ color: "#000000",
+ opacity: 0.6,
+ fontSize: 16,
+ marginLeft: 15,
+ fontWeight: "500",
+ width: "80%",
+ },
+ titulo: {
+ fontSize: 16,
+ marginTop: 20,
+ fontWeight: "500",
+ },
+ descricao: {
+ fontSize: 14,
+ marginTop: 25,
+ },
+ underInfo: {
+ flexDirection: "row",
+ alignItems: "center",
+ width: "100%",
+ justifyContent: "space-between",
+ marginTop: 30,
+ },
+ secondUnderInfo: {
+ flexDirection: "row",
+ justifyContent: "flex-end",
+ width: "100%",
+ marginTop: 10,
+ },
+ reports: {
+ flexDirection: "row",
+ alignItems: "center",
+ },
+ reportsText: {
+ color: "#FFCC00",
+ marginLeft: 3,
+ },
+ semFoto: { position: "relative", backgroundColor: "#EFEFF0" },
+ semFotoIcon: {
+ position: "absolute",
+ right: "38%",
+ bottom: "38%",
+ opacity: 0.4,
+ margin: "auto",
+ alignSelf: "center",
+ zIndex: 1,
+ },
+ categoria: {
+ marginRight: 15,
+ color: "#137364",
+ fontWeight: "500",
+ },
+ date: {
+ color: "#000000",
+ fontSize: 14,
+ },
+});
diff --git a/src/app/components/RecoverButton.tsx b/src/app/components/RecoverButton.tsx
new file mode 100644
index 00000000..2dd4ac5a
--- /dev/null
+++ b/src/app/components/RecoverButton.tsx
@@ -0,0 +1,47 @@
+import React from "react";
+import { ActivityIndicator, StyleSheet, Text } from "react-native";
+import { router } from "expo-router";
+import { View } from 'react-native';
+
+interface Props {
+ title: string;
+ showLoading?: boolean;
+}
+
+export default function RecoverButton({
+ title,
+ showLoading,
+}: Readonly) {
+
+ const handlePress = () => {
+ router.push("/private/pages/event");
+ };
+
+ return (
+
+ {showLoading ? (
+
+ ) : (
+
+ {title}
+
+ )}
+
+ );
+}
+
+const styles = StyleSheet.create({
+ linkText: {
+ width: "40%",
+ color: "#2CCDB5",
+ maxWidth: 300,
+ textDecorationLine: "underline",
+ paddingVertical: 12,
+ paddingHorizontal: 18,
+ textAlign: "left",
+ borderRadius: 20,
+ },
+ });
diff --git a/src/app/components/UploadImage.tsx b/src/app/components/UploadImage.tsx
new file mode 100644
index 00000000..d8f1bb6f
--- /dev/null
+++ b/src/app/components/UploadImage.tsx
@@ -0,0 +1,78 @@
+import React, { useState } from "react";
+import { Image, View, StyleSheet, Pressable } from "react-native";
+import * as ImagePicker from "expo-image-picker";
+import Icon from "react-native-vector-icons/MaterialCommunityIcons";
+
+interface Props {
+ setFoto: (foto: string) => void;
+ uri?: string | null;
+}
+
+export default function UploadImage({ setFoto, uri = null }: Readonly) {
+ const [image, setImage] = useState(uri);
+
+ const pickImage = () => {
+ ImagePicker.launchImageLibraryAsync({
+ mediaTypes: ImagePicker.MediaTypeOptions.Images,
+ allowsEditing: true,
+ aspect: [1, 1],
+ base64: true,
+ quality: 0,
+ }).then((result) => {
+ if (result.canceled) return;
+
+ setImage(result.assets[0].uri);
+ setFoto(result.assets[0].base64 as string);
+ });
+ };
+
+ return (
+
+
+
+ {image && }
+
+ );
+}
+
+const styles = StyleSheet.create({
+ imagem: {
+ position: "absolute",
+ width: 170,
+ height: 170,
+ zIndex: 2,
+ borderRadius: 25,
+ },
+ foto: {
+ position: "relative",
+ backgroundColor: "#EFEFF0",
+ borderRadius: 25,
+ alignItems: "center",
+ display: "flex",
+ width: 170,
+ height: 170,
+ alignSelf: "center",
+ borderWidth: 1,
+ borderColor: "#AFB1B6",
+ marginBottom: 38,
+ },
+ botao: {
+ width: 167,
+ height: 174,
+ backgroundColor: "transparent",
+ zIndex: 3,
+ },
+ icone: {
+ position: "absolute",
+ right: "44%",
+ bottom: "44%",
+ opacity: 0.4,
+ margin: "auto",
+ alignSelf: "center",
+ zIndex: 1,
+ },
+});
diff --git a/src/app/components/UploadImageV2.tsx b/src/app/components/UploadImageV2.tsx
new file mode 100644
index 00000000..01f35cd1
--- /dev/null
+++ b/src/app/components/UploadImageV2.tsx
@@ -0,0 +1,89 @@
+import React, { useState } from "react";
+import { StyleSheet, Pressable } from "react-native";
+import * as ImagePicker from "expo-image-picker";
+import Icon from "react-native-vector-icons/MaterialCommunityIcons";
+import { getImageUri, noImage } from "../shared/helpers/image.helper";
+import { Image } from "expo-image";
+
+interface Props {
+ setPhotoCallback: (value: string | undefined) => void;
+ base64: string | undefined;
+}
+
+export default function UploadImageV2({
+ setPhotoCallback,
+ base64,
+}: Readonly) {
+ if (base64) {
+ base64 = getImageUri(base64);
+ }
+ const [photo, setPhoto] = useState(base64);
+
+ const pickPhoto = async () => {
+ const result = await ImagePicker.launchImageLibraryAsync({
+ mediaTypes: ImagePicker.MediaTypeOptions.Images,
+ allowsEditing: true,
+ base64: true,
+ aspect: [1, 1],
+ quality: 0,
+ });
+
+ if (result.assets && result.assets[0]) {
+ setPhoto(result.assets[0].uri);
+ setPhotoCallback(result.assets[0].base64 as string);
+ }
+ };
+
+ return (
+
+
+
+
+ );
+}
+
+const styles = StyleSheet.create({
+ imagem: {
+ position: "absolute",
+ width: 168,
+ aspectRatio: 1,
+ zIndex: 2,
+ borderRadius: 25,
+ },
+ foto: {
+ position: "relative",
+ borderRadius: 25,
+ alignItems: "center",
+ display: "flex",
+ width: 170,
+ height: 170,
+ alignSelf: "center",
+ borderWidth: 1,
+ borderColor: "#b5b5b5",
+ marginBottom: 38,
+ },
+ botao: {
+ width: 167,
+ height: 174,
+ backgroundColor: "transparent",
+ zIndex: 3,
+ },
+ icone: {
+ position: "absolute",
+ right: "44%",
+ bottom: "44%",
+ opacity: 0.4,
+ margin: "auto",
+ alignSelf: "center",
+ zIndex: 1,
+ },
+});
diff --git a/src/app/components/__tests__/ModalConfirmation.spec.tsx b/src/app/components/__tests__/ModalConfirmation.spec.tsx
new file mode 100644
index 00000000..e48f25e6
--- /dev/null
+++ b/src/app/components/__tests__/ModalConfirmation.spec.tsx
@@ -0,0 +1,29 @@
+import { fireEvent, render, waitFor } from "@testing-library/react-native";
+
+import ModalConfirmation from "../ModalConfirmation";
+import React from "react";
+
+describe("ModalConfirmation Component", () => {
+ it("renderiza corretamente", async () => {
+ await waitFor(() => {
+ const { getByTestId } = render(
+ {}}
+ closeModal={() => {}}
+ message=""
+ messageButton=""
+ />,
+ );
+
+ const cancelarBtn = getByTestId("cancelarBtn");
+ const callbackBtn = getByTestId("callbackBtn");
+
+ fireEvent.press(cancelarBtn);
+ fireEvent.press(callbackBtn);
+
+ expect(callbackBtn).toBeDefined();
+ expect(cancelarBtn).toBeDefined();
+ });
+ });
+});
diff --git a/src/app/components/style/styles.tsx b/src/app/components/style/styles.tsx
new file mode 100644
index 00000000..ee8e69fd
--- /dev/null
+++ b/src/app/components/style/styles.tsx
@@ -0,0 +1,108 @@
+import { StyleSheet } from 'react-native';
+
+const styles = StyleSheet.create({
+ voltar: {
+ marginTop: 5,
+ },
+ formControl: {
+ flexDirection: "column",
+ width: 320,
+ alignItems: "flex-start",
+ alignSelf: "center",
+ marginTop: 10,
+ },
+ formControl2: {
+ flexDirection: "row",
+ width: 320,
+ alignItems: "flex-start",
+ alignSelf: "center",
+ marginTop: 10,
+ },
+ button: {
+ width: "80%",
+ maxWidth: 350,
+ paddingVertical: 16,
+ paddingHorizontal: 26,
+ alignItems: "center",
+ borderRadius: 20,
+ backgroundColor: "#2CCDB5",
+ textAlign: "center",
+ },
+ field: {
+ flexDirection: "row",
+ width: 320,
+ borderBottomWidth: 1,
+ borderBottomColor: "#AFB1B6",
+ paddingBottom: 5,
+ alignSelf: "center",
+ marginBottom: 5,
+ },
+ fieldBlood: {
+ flexDirection: "row",
+ width: 320,
+ borderBottomWidth: 1,
+ borderBottomColor: "#AFB1B6",
+ paddingBottom: 5,
+ alignSelf: "center",
+ marginBottom: 5,
+ },
+ iconInput: {
+ width: "10%",
+ alignSelf: "center",
+ marginLeft: 10,
+ },
+ iconInput2: {
+ width: "10%",
+ marginTop: "7%",
+ marginLeft: 10,
+ },
+ bloodInput: {
+ paddingLeft: 10,
+ color: "#05375a",
+ width: "80%",
+ fontSize: 17,
+ },
+ bloodIcon: {
+ width: "10%",
+ },
+ textInput: {
+ width: "90%",
+ paddingLeft: 10,
+ color: "#05375a",
+ fontSize: 17,
+ },
+ arrow: {
+ alignSelf: "flex-start",
+ },
+ linkButton: {
+ marginTop: 60,
+ marginBottom: 40,
+ alignItems: "center",
+ },
+ apagarEditar: {
+ color: "#FF7F7F",
+ alignSelf: "center",
+ fontSize: 18,
+ fontWeight: "600",
+ marginBottom: 60,
+ alignItems: "center",
+ },
+ apagarCadastro: {
+ color: "#FF7F7F",
+ alignSelf: "center",
+ fontSize: 18,
+ fontWeight: "600",
+ },
+ dropdown: {
+ width: 300,
+ borderWidth: 0,
+ paddingLeft: 10,
+ color: "#05375A",
+ fontSize: 17,
+ },
+ requiredIcon: {
+ marginLeft: 5,
+ },
+});
+
+export default styles;
diff --git a/src/app/components/style/stylesModal.tsx b/src/app/components/style/stylesModal.tsx
new file mode 100644
index 00000000..6e274672
--- /dev/null
+++ b/src/app/components/style/stylesModal.tsx
@@ -0,0 +1,50 @@
+import { StyleSheet } from 'react-native';
+
+const styles = StyleSheet.create({
+ centeredView: {
+ flexDirection: "column",
+ flex: 1,
+ justifyContent: "center",
+ alignItems: "center",
+ backgroundColor: "#00000098",
+ },
+ modal: {
+ flexDirection: "row",
+ marginBottom: 30,
+ },
+ erroValor: {
+ padding: 5,
+ },
+ input: {
+ flexDirection: "column",
+ alignItems: "center",
+ },
+ textInput: {
+ fontSize: 40,
+ width: 150,
+ marginLeft: 15,
+ textAlign: "center",
+ },
+ modalView: {
+ margin: 20,
+ backgroundColor: "white",
+ borderRadius: 20,
+ padding: 35,
+ alignItems: "center",
+ shadowColor: "#000",
+ shadowOffset: {
+ width: 0,
+ height: 2,
+ },
+ shadowOpacity: 0.25,
+ shadowRadius: 4,
+ elevation: 5,
+ },
+ modalText: {
+ marginBottom: 35,
+ textAlign: "center",
+ fontWeight: "bold",
+ },
+});
+
+export default styles;
diff --git a/src/app/components/weekDay.tsx b/src/app/components/weekDay.tsx
new file mode 100644
index 00000000..6e052c26
--- /dev/null
+++ b/src/app/components/weekDay.tsx
@@ -0,0 +1,76 @@
+import React, { useState } from "react";
+import { StyleSheet, Text, View, Pressable } from "react-native";
+import { EDiasSemana } from "../interfaces/rotina.interface";
+
+interface IProps {
+ dias?: number[];
+ callbackFn: (days: number[]) => unknown;
+}
+
+export default function WeekDays({ dias, callbackFn }: IProps) {
+ const [days, setDays] = useState(dias || []);
+ const rawDays = Object.values(EDiasSemana);
+
+ const daysValues = rawDays.slice(rawDays.length / 2) as EDiasSemana[];
+ const daysName = rawDays.slice(0, rawDays.length / 2) as string[];
+
+ const handlePress = (dia: number) => {
+ if (days.includes(dia)) {
+ const novoArray = days.filter((elemento) => elemento !== dia);
+ setDays(novoArray);
+ callbackFn(novoArray);
+ } else {
+ setDays([...days, dia]);
+ callbackFn([...days, dia]);
+ }
+ };
+
+ return (
+
+ {daysValues.map((day, index) => (
+ handlePress(day)}
+ style={[styles.circle, days?.includes(day) && styles.active]}
+ >
+
+ {daysName[index].charAt(0)}
+
+
+ ))}
+
+ );
+}
+
+const styles = StyleSheet.create({
+ textDay: {
+ fontSize: 22,
+ color: "black",
+ },
+
+ weekDays: {
+ flexDirection: "row",
+ marginTop: 15,
+ marginBottom: 30,
+ },
+
+ circle: {
+ width: 35,
+ height: 35,
+ borderRadius: 20,
+ borderWidth: 2,
+ justifyContent: "center",
+ alignItems: "center",
+ margin: 5,
+ backgroundColor: "white",
+ },
+ active: {
+ backgroundColor: "#2CCDB5",
+ borderColor: "#2CCDB5",
+ },
+ activeText: {
+ color: "white",
+ },
+});
diff --git a/src/app/db/index.ts b/src/app/db/index.ts
new file mode 100644
index 00000000..ee34c1e4
--- /dev/null
+++ b/src/app/db/index.ts
@@ -0,0 +1,38 @@
+import { Platform } from 'react-native'
+import { Database, tableSchema } from '@nozbe/watermelondb'
+import SQLiteAdapter from '@nozbe/watermelondb/adapters/sqlite'
+
+import schema from './schema'
+import migrations from './migrations'
+import Usuario from '../model/Usuario'
+import Idoso from '../model/Idoso'
+import Rotina from '../model/Rotina'
+import Metrica from '../model/Metrica'
+import ValorMetrica from '../model/ValorMetrica'
+// import Post from './model/Post' // ⬅️ You'll import your Models here
+
+// First, create the adapter to the underlying database:
+const adapter = new SQLiteAdapter({
+ schema,
+ // (You might want to comment it out for development purposes -- see Migrations documentation)
+ // (optional database name or file system path)
+ // dbName: 'myapp',
+ // (recommended option, should work flawlessly out of the box on iOS. On Android,
+ // additional installation steps have to be taken - disable if you run into issues...)
+ jsi: true, /* Platform.OS === 'ios' */
+ // (optional, but you should implement this method)
+ onSetUpError: error => {
+ // Database failed to load -- offer the user to reload the app or log out
+ }
+})
+
+// Then, make a Watermelon database from it!
+const database = new Database({
+ adapter,
+ modelClasses: [
+ // Post, // ⬅️ You'll add Models to Watermelon here
+ Usuario, Idoso, Rotina, Metrica, ValorMetrica
+ ],
+});
+
+export default database;
diff --git a/src/app/db/migrations.ts b/src/app/db/migrations.ts
new file mode 100644
index 00000000..14bbbc1b
--- /dev/null
+++ b/src/app/db/migrations.ts
@@ -0,0 +1,81 @@
+import { schemaMigrations } from '@nozbe/watermelondb/Schema/migrations';
+import { tableSchema } from '@nozbe/watermelondb';
+
+// Define a migração para a versão 2 do banco de dados
+export default schemaMigrations({
+ migrations: [
+ {
+ toVersion: 3,
+ steps: [
+ // Passo para adicionar as colunas à tabela 'usuario' se elas ainda não existirem
+ {
+ type: 'add_columns',
+ table: 'usuario',
+ columns: [
+ { name: 'created_at', type: 'number' },
+ { name: 'updated_at', type: 'number' },
+ ],
+ },
+ // Passo para criar a tabela 'idoso' se ela ainda não existir
+ {
+ type: 'create_table',
+ schema: tableSchema({
+ name: 'idoso',
+ columns: [
+ { name: 'nome', type: 'string' },
+ { name: 'dataNascimento', type: 'string' },
+ { name: 'tipoSanguineo', type: 'string' },
+ { name: 'telefoneResponsavel', type: 'string' },
+ { name: 'descricao', type: 'string' },
+ { name: 'foto', type: 'string' },
+ { name: 'user_id', type: 'string', isIndexed: true },
+ { name: 'created_at', type: 'number' },
+ { name: 'updated_at', type: 'number' }
+ ],
+ }),
+ },
+ {
+ type: 'create_table',
+ schema: tableSchema({
+ name: 'rotina',
+ columns: [
+ { name: 'titulo', type: 'string' },
+ { name: 'categoria', type: 'string' },
+ { name: 'dias', type: 'string' },
+ { name: 'dataHora', type: 'number' },
+ { name: 'descricao', type: 'string' },
+ { name: 'token', type: 'string' },
+ { name: 'notificacao', type: 'boolean' },
+ { name: 'dataHoraConcluidos', type: 'string' },
+ { name: 'idoso_id', type: 'string', isIndexed: true },
+ { name: 'created_at', type: 'number' },
+ { name: 'updated_at', type: 'number' }
+ ],
+ }),
+ },
+ {
+ type: 'create_table',
+ schema: tableSchema({
+ name: 'metrica',
+ columns: [
+ { name: 'idoso_id', type: 'string', isIndexed: true },
+ { name: 'categoria', type: 'string' },
+ { name: 'valorMaximo', type: 'string', isOptional: true },
+ ],
+ }),
+ },
+ {
+ type: 'create_table',
+ schema: tableSchema({
+ name: 'valor_metrica',
+ columns: [
+ { name: 'metrica_id', type: 'string', isIndexed: true },
+ { name: 'valor', type: 'string' },
+ { name: 'dataHora', type: 'number' },
+ ],
+ }),
+ },
+ ],
+ },
+ ],
+});
diff --git a/src/app/db/schema.ts b/src/app/db/schema.ts
new file mode 100644
index 00000000..3d8d7078
--- /dev/null
+++ b/src/app/db/schema.ts
@@ -0,0 +1,70 @@
+import { appSchema, tableSchema } from '@nozbe/watermelondb';
+
+
+export default appSchema({
+ version: 7,
+ tables: [
+ tableSchema({
+ name: 'usuario',
+ columns: [
+ { name: 'nome', type: 'string' },
+ { name: 'foto', type: 'string' },
+ { name: 'email', type: 'string' },
+ { name: 'senha', type: 'string' },
+ { name: 'admin', type: 'boolean'},
+ { name: 'created_at', type: 'number' },
+ { name: 'updated_at', type: 'number' }
+ ]
+ }),
+ tableSchema({
+ name: 'idoso',
+ columns: [
+ { name: 'nome', type: 'string' },
+ { name: 'dataNascimento', type: 'string' },
+ { name: 'tipoSanguineo', type: 'string' },
+ { name: 'telefoneResponsavel', type: 'string' },
+ { name: 'descricao', type: 'string' },
+ { name: 'foto', type: 'string' },
+ { name: 'user_id', type: 'string', isIndexed: true },
+ { name: 'created_at', type: 'number' },
+ { name: 'updated_at', type: 'number' },
+ ],
+ }),
+ tableSchema({
+ name: 'rotina',
+ columns: [
+ { name: 'titulo', type: 'string' },
+ { name: 'categoria', type: 'string' },
+ { name: 'dias', type: 'string' },
+ { name: 'dataHora', type: 'number' },
+ { name: 'descricao', type: 'string' },
+ { name: 'token', type: 'string' },
+ { name: 'notificacao', type: 'boolean' },
+ { name: 'dataHoraConcluidos', type: 'string' },
+ { name: 'idoso_id', type: 'string', isIndexed: true },
+ { name: 'created_at', type: 'number' },
+ { name: 'updated_at', type: 'number' },
+ ],
+ }),
+ tableSchema({
+ name: 'metrica',
+ columns: [
+ { name: 'idoso_id', type: 'string', isIndexed: true },
+ { name: 'categoria', type: 'string' },
+ { name: 'valorMaximo', type: 'string', isOptional: true },
+ { name: 'created_at', type: 'number' },
+ { name: 'updated_at', type: 'number' },
+ ],
+ }),
+ tableSchema({
+ name: 'valor_metrica',
+ columns: [
+ { name: 'metrica_id', type: 'string', isIndexed: true },
+ { name: 'valor', type: 'string' },
+ { name: 'dataHora', type: 'number' },
+ { name: 'created_at', type: 'number' },
+ { name: 'updated_at', type: 'number' },
+ ],
+ }),
+ ],
+});
diff --git a/src/app/index.tsx b/src/app/index.tsx
new file mode 100644
index 00000000..54a19e82
--- /dev/null
+++ b/src/app/index.tsx
@@ -0,0 +1,35 @@
+import { Image, StyleSheet, Text, View } from "react-native";
+
+import LinkButton from "./components/LinkButton";
+import React from "react";
+
+export default function Home() {
+ return (
+
+
+ Seja um GEROcuidador!
+
+
+
+
+ );
+}
+
+const styles = StyleSheet.create({
+ center: {
+ flex: 1,
+ justifyContent: "center",
+ alignItems: "center",
+ },
+ titulo: {
+ fontSize: 37,
+ fontWeight: "700",
+ textAlign: "center",
+ margin: 20,
+ marginBottom: 70,
+ },
+});
diff --git a/src/app/interfaces/forum.interface.ts b/src/app/interfaces/forum.interface.ts
new file mode 100644
index 00000000..8bde3e05
--- /dev/null
+++ b/src/app/interfaces/forum.interface.ts
@@ -0,0 +1,50 @@
+import { IUser } from "./user.interface";
+
+export enum ECategoriaPublicacao {
+ SAUDE = "Saúde",
+ ALIMENTACAO = "Alimentação",
+ EXERCICIOS = "Exercícios",
+ GERAL = "Geral",
+}
+
+export enum ECategoriaPesquisa {
+ SAUDE = "Saúde",
+ ALIMENTACAO = "Alimentação",
+ EXERCICIOS = "Exercícios",
+ GERAL = "Geral",
+ TODAS = "Todas",
+}
+
+export interface IPublicacaoBody {
+ idUsuario: number;
+ titulo: string;
+ descricao: string;
+ dataHora: Date | string;
+ categoria: ECategoriaPublicacao;
+}
+
+export interface IPublicacao extends IPublicacaoBody {
+ id: number;
+ usuario?: IUser;
+ idUsuarioReporte: number[];
+ categoria: ECategoriaPublicacao;
+}
+
+export interface IPublicacaoParams extends IPublicacaoBody, IUser {
+ id: number;
+ usuario?: IUser;
+ idUsuarioReporte: string;
+}
+
+export interface IPublicacaoUsuario extends IPublicacao, IUser { }
+
+export interface IPublicacaoFilter {
+ titulo?: string;
+ isReported?: boolean;
+ categoria?: ECategoriaPesquisa;
+}
+
+export interface IOrder {
+ column: string;
+ dir: "DESC" | "ASC";
+}
diff --git a/src/app/interfaces/idoso.interface.ts b/src/app/interfaces/idoso.interface.ts
new file mode 100644
index 00000000..c15f32b0
--- /dev/null
+++ b/src/app/interfaces/idoso.interface.ts
@@ -0,0 +1,43 @@
+import { IUser } from "./user.interface";
+
+export enum ETipoSanguineo {
+ A_POSITIVO = "A+",
+ A_NEGATIVO = "A-",
+ B_POSITIVO = "B+",
+ B_NEGATIVO = "B-",
+ AB_POSITIVO = "AB+",
+ AB_NEGATIVO = "AB-",
+ O_POSITIVO = "O+",
+ O_NEGATIVO = "O-",
+}
+
+export interface IIdosoBody {
+ nome: string;
+ dataNascimento: Date | string;
+ idUsuario: number;
+ foto?: string;
+ tipoSanguineo?: ETipoSanguineo | null;
+ telefoneResponsavel: string;
+ descricao?: string;
+ dataHora: Date | string;
+}
+
+export interface IIdoso extends IIdosoBody {
+ id: string;
+}
+
+export interface IIdosoFilter {
+ nome?: string;
+ idUsuario?: number;
+}
+
+export interface IOrder {
+ column: string;
+ dir: "DESC" | "ASC";
+}
+
+export interface IIdosoParams extends IIdosoBody {
+ id: number;
+ usuario?: IUser;
+ idUsuarioReporte: string;
+}
diff --git a/src/app/interfaces/metricas.interface.ts b/src/app/interfaces/metricas.interface.ts
new file mode 100644
index 00000000..08c83b36
--- /dev/null
+++ b/src/app/interfaces/metricas.interface.ts
@@ -0,0 +1,47 @@
+export enum EMetricas {
+ FREQ_CARDIACA = "Frequência Cardíaca",
+ TEMPERATURA = "Temperatura",
+ PRESSAO_SANGUINEA = "Pressão",
+ PESO = "Peso",
+ GLICEMIA = "Glicemia",
+ SATURACAO_OXIGENIO = "Saturação",
+ ALTURA = "Altura",
+ HORAS_DORMIDAS = "Horas Dormidas",
+ IMC = "IMC",
+ HIDRATACAO = "Hidratação",
+}
+
+export interface IMetricaBody {
+ idIdoso: number;
+ categoria: EMetricas;
+ valorMaximo?: string;
+}
+export interface IMetrica extends IMetricaBody {
+ id: number;
+}
+export interface IValorMetricaBody {
+ valor: string;
+ dataHora: Date | string;
+ idMetrica: number;
+}
+
+export interface IValorMetrica extends IValorMetricaBody {
+ id: number;
+}
+
+export interface IMetricaFilter {
+ idIdoso: number;
+}
+
+export interface IMetricaValueFilter {
+ idMetrica: number;
+}
+
+export interface IValorMetricaCategoria extends IValorMetrica {
+ categoria: EMetricas;
+}
+
+export interface IOrder {
+ column: string;
+ dir: "ASC" | "DESC";
+}
diff --git a/src/app/interfaces/response.interface.ts b/src/app/interfaces/response.interface.ts
new file mode 100644
index 00000000..13e1c65e
--- /dev/null
+++ b/src/app/interfaces/response.interface.ts
@@ -0,0 +1,4 @@
+export interface IResponse {
+ data: T;
+ message: string | null;
+}
diff --git a/src/app/interfaces/rotina.interface.ts b/src/app/interfaces/rotina.interface.ts
new file mode 100644
index 00000000..59529a8f
--- /dev/null
+++ b/src/app/interfaces/rotina.interface.ts
@@ -0,0 +1,42 @@
+export enum ECategoriaRotina {
+ MEDICAMENTO = "Medicamentos",
+ ALIMENTACAO = "Alimentação",
+ EXERCICIOS = "Exercícios",
+ GERAL = "Geral",
+}
+
+export interface IRotinaBody {
+ titulo: string;
+ idIdoso: string;
+ categoria?: ECategoriaRotina | null;
+ descricao?: string;
+ notificacao: boolean;
+ token?: string;
+ dataHoraConcluidos: string[];
+ dataHora: Date | string;
+ dias: EDiasSemana[];
+}
+
+export interface IRotina extends IRotinaBody {
+ id: string;
+}
+
+export interface IRotinaFilter {
+ idIdoso?: string;
+ dataHora?: string;
+}
+
+export enum EDiasSemana {
+ Domingo = 0,
+ Segunda = 1,
+ Terca = 2,
+ Quarta = 3,
+ Quinta = 4,
+ Sexta = 5,
+ Sabado = 6,
+}
+
+export interface IOrder {
+ column: string;
+ dir: "ASC";
+}
diff --git a/src/app/interfaces/user.interface.ts b/src/app/interfaces/user.interface.ts
new file mode 100644
index 00000000..48d009c2
--- /dev/null
+++ b/src/app/interfaces/user.interface.ts
@@ -0,0 +1,14 @@
+export interface IUserLogin {
+ email: string;
+ senha: string;
+}
+
+export interface IUserBody extends IUserLogin {
+ nome: string;
+}
+
+export interface IUser extends IUserBody {
+ id: number;
+ foto?: string | null;
+ admin: boolean;
+}
diff --git a/src/app/model/Idoso.ts b/src/app/model/Idoso.ts
new file mode 100644
index 00000000..0ea2fe84
--- /dev/null
+++ b/src/app/model/Idoso.ts
@@ -0,0 +1,23 @@
+import { Model } from '@nozbe/watermelondb';
+import { text, field, readonly, relation, date, children } from '@nozbe/watermelondb/decorators';
+import Usuario from './Usuario';
+import Metrica from './Metrica';
+
+export default class Idoso extends Model {
+ static table = 'idoso';
+
+ @text('nome') nome!: string;
+ @text('dataNascimento') dataNascimento!: string;
+ @field('tipoSanguineo') tipoSanguineo!: string;
+ @text('telefoneResponsavel') telefoneResponsavel!: string;
+ @text('descricao') descricao!: string;
+ @field('foto') foto!: string;
+ @field('user_id') userId!: string;
+
+ @relation('usuario', 'user_id') user!: Usuario;
+
+ @readonly @date('created_at') createdAt!: Date;
+ @readonly @date('updated_at') updatedAt!: Date;
+
+ @children('metrica') metricas!: Metrica;
+}
diff --git a/src/app/model/Metrica.ts b/src/app/model/Metrica.ts
new file mode 100644
index 00000000..c213d52e
--- /dev/null
+++ b/src/app/model/Metrica.ts
@@ -0,0 +1,15 @@
+import { Model } from "@nozbe/watermelondb";
+import { field, text, readonly, date, children } from "@nozbe/watermelondb/decorators";
+import ValorMetrica from "./ValorMetrica";
+
+export default class Metrica extends Model {
+ static table = 'metrica';
+
+ @field('idoso_id') idIdoso!: string;
+ @text('categoria') categoria!: string;
+ @text('valorMaximo') valorMaximo!: string;
+ @readonly @date('created_at') created_at!: Date;
+ @readonly @date('updated_at') updated_at!: Date;
+
+ @children('valor_metrica') valorMetricas!: ValorMetrica;
+}
\ No newline at end of file
diff --git a/src/app/model/Rotina.ts b/src/app/model/Rotina.ts
new file mode 100644
index 00000000..3d6818d8
--- /dev/null
+++ b/src/app/model/Rotina.ts
@@ -0,0 +1,26 @@
+import { Model } from "@nozbe/watermelondb";
+import { field, text, date, readonly, relation, json } from "@nozbe/watermelondb/decorators";
+import Idoso from "./Idoso";
+
+const sanitizeStringArray = (rawDias: any): string[] => {
+ return Array.isArray(rawDias) ? rawDias.map(String) : [];
+};
+
+export default class Rotina extends Model {
+ static table = 'rotina';
+
+ @text('titulo') titulo!: string;
+ @text('categoria') categoria!: string;
+ @json('dias', sanitizeStringArray) dias!: string[];
+ @date('dataHora') dataHora!: Date;
+ @text('descricao') descricao!: string;
+ @field('token') token!: string;
+ @field('notificacao') notificacao!: boolean;
+ @json('dataHoraConcluidos', sanitizeStringArray) dataHoraConcluidos!: string[];
+ @field('idoso_id') idIdoso!: string;
+
+ @readonly @date('created_at') createdAt!: Date;
+ @readonly @date('updated_at') updatedAt!: Date;
+
+ @relation('idoso', 'idoso_id') idoso!: Idoso;
+}
\ No newline at end of file
diff --git a/src/app/model/Usuario.ts b/src/app/model/Usuario.ts
new file mode 100644
index 00000000..84cea64a
--- /dev/null
+++ b/src/app/model/Usuario.ts
@@ -0,0 +1,17 @@
+// model/Post.js
+import { Model } from '@nozbe/watermelondb';
+import { text, field, date, readonly, children } from '@nozbe/watermelondb/decorators';
+import Idoso from './Idoso';
+
+export default class Usuario extends Model {
+ static table = 'usuario';
+
+ @text('nome') nome!: string;
+ @field('foto') foto!: string;
+ @text('email') email!: string;
+ @text('senha') senha!: string;
+ @field('admin') admin?: boolean;
+ @readonly @date('created_at') created_at!: Date;
+ @readonly @date('updated_at') updated_at!: Date;
+ @children('idoso') idosos!: Idoso;
+}
\ No newline at end of file
diff --git a/src/app/model/ValorMetrica.ts b/src/app/model/ValorMetrica.ts
new file mode 100644
index 00000000..702830fa
--- /dev/null
+++ b/src/app/model/ValorMetrica.ts
@@ -0,0 +1,19 @@
+import { Model } from "@nozbe/watermelondb";
+import { field, text, readonly, date, relation } from "@nozbe/watermelondb/decorators";
+import Metrica from "./Metrica";
+import { Associations } from "@nozbe/watermelondb/Model";
+
+export default class ValorMetrica extends Model {
+ static table = 'valor_metrica';
+ static associations = {
+ metrica: { type: 'belongs_to', key: 'metrica_id' }
+ };
+
+ @field('metrica_id') idMetrica!: string;
+ @text('valor') valor!: string;
+ @date('dataHora') dataHora!: Date;
+ @readonly @date('created_at') createdAt!: Date;
+ @readonly @date('updated_at') updatedAt!: Date;
+
+ @relation('metrica', 'metrica_id') metrica!: Metrica;
+}
\ No newline at end of file
diff --git a/src/app/private/pages/cadastrarIdoso.tsx b/src/app/private/pages/cadastrarIdoso.tsx
new file mode 100644
index 00000000..1a88309c
--- /dev/null
+++ b/src/app/private/pages/cadastrarIdoso.tsx
@@ -0,0 +1,314 @@
+import { router } from "expo-router";
+import React, { useEffect, useState } from "react";
+import { View, TextInput, StyleSheet, ScrollView } from "react-native";
+import Toast from "react-native-toast-message";
+import { AntDesign, Fontisto } from "@expo/vector-icons";
+import BackButton from "../../components/BackButton";
+import ErrorMessage from "../../components/ErrorMessage";
+import CustomButton from "../../components/CustomButton";
+import Icon from "react-native-vector-icons/MaterialCommunityIcons";
+import { SelectList } from "react-native-dropdown-select-list";
+import { ETipoSanguineo } from "../../interfaces/idoso.interface";
+import { postIdoso } from "../../services/idoso.service";
+import AsyncStorage from "@react-native-async-storage/async-storage";
+import { IUser } from "../../interfaces/user.interface";
+import MaskInput, { Masks } from "react-native-mask-input";
+import UploadImageV2 from "../../components/UploadImageV2";
+import { EMetricas } from "../../interfaces/metricas.interface";
+import { postMetrica } from "../../services/metrica.service";
+import database from "../../db";
+import Idoso from "../../model/Idoso";
+import { Collection, Q } from "@nozbe/watermelondb";
+import { ToastAndroid } from "react-native";
+import { useRouter } from "expo-router";
+import { IIdoso } from "../../interfaces/idoso.interface";
+import Usuario from "../../model/Usuario";
+import Metrica from "../../model/Metrica";
+import { getTipoSanguineoOptions } from "../../shared/helpers/useNotification";
+import styles from "../../components/style/styles";
+interface IErrors {
+ nome?: string;
+ dataNascimento?: string;
+ tipoSanguineo?: string;
+ telefoneResponsavel?: string;
+ descricao?: string;
+}
+
+export default function CadastrarIdoso() {
+ const [foto, setFoto] = useState();
+ const [nome, setNome] = useState("");
+ const [tipoSanguineo, setTipoSanguineo] = useState(ETipoSanguineo.AB_NEGATIVO);
+ const [telefoneResponsavel, setTelefoneResponsavel] = useState("");
+ const [dataNascimento, setDataNascimento] = useState("");
+ const [descricao, setDescricao] = useState("");
+ const [token, setToken] = useState("");
+ const [erros, setErros] = useState({});
+ const [showErrors, setShowErrors] = useState(false);
+ const [showLoading, setShowLoading] = useState(false);
+ const [idUsuario, setIdUsuario] = useState(null);
+ const [maskedTelefoneResponsavel, setMaskedTelefoneResponsavel] = useState("");
+
+ const router = useRouter();
+
+ useEffect(() => {
+ const getIdUsuario = async () => {
+ try {
+ const response = await AsyncStorage.getItem("usuario");
+ if (response) {
+ const usuario = JSON.parse(response) as IUser;
+ setIdUsuario(usuario.id);
+ console.log("Usuário logado:", usuario);
+ } else {
+ console.log("Usuário não encontrado no AsyncStorage.");
+ }
+ } catch (error) {
+ console.error("Erro ao obter usuário:", error);
+ }
+ };
+
+
+ getIdUsuario();
+ }, []);
+
+
+ useEffect(() => handleErrors(), [nome, telefoneResponsavel, dataNascimento]);
+
+
+ const getDateIsoString = (value: string) => {
+ const dateArray = value.split("/");
+ return `${dateArray[2]}-${dateArray[1]}-${dateArray[0]}T12:00:00.000Z`;
+ };
+
+
+ const handleErrors = () => {
+ const erros: IErrors = {};
+
+
+ if (!nome) {
+ erros.nome = "Campo obrigatório!";
+ } else if (nome.length < 5) {
+ erros.nome = "O nome completo deve ter pelo menos 5 caracteres.";
+ } else if (nome.length > 60) {
+ erros.nome = "O nome completo deve ter no máximo 60 caracteres.";
+ }
+
+
+ if (!dataNascimento) {
+ erros.dataNascimento = "Campo obrigatório!";
+ } else if (!/^\d{2}\/\d{2}\/\d{4}$/.test(dataNascimento)) {
+ erros.dataNascimento = "Data deve ser no formato dd/mm/yyyy!";
+ }
+
+
+ if (!telefoneResponsavel) {
+ erros.telefoneResponsavel = "Campo obrigatório!";
+ } else if (telefoneResponsavel.length !== 11) {
+ erros.telefoneResponsavel = "Deve estar no formato (XX)XXXXX-XXXX";
+ }
+
+
+ setErros(erros);
+ };
+
+ const metricas = [
+ { key: EMetricas.FREQ_CARDIACA, value: EMetricas.FREQ_CARDIACA },
+ { key: EMetricas.GLICEMIA, value: EMetricas.GLICEMIA },
+ { key: EMetricas.PESO, value: EMetricas.PESO },
+ { key: EMetricas.PRESSAO_SANGUINEA, value: EMetricas.PRESSAO_SANGUINEA },
+ { key: EMetricas.SATURACAO_OXIGENIO, value: EMetricas.SATURACAO_OXIGENIO },
+ { key: EMetricas.TEMPERATURA, value: EMetricas.TEMPERATURA },
+ { key: EMetricas.ALTURA, value: EMetricas.ALTURA },
+ { key: EMetricas.IMC, value: EMetricas.IMC },
+ { key: EMetricas.HORAS_DORMIDAS, value: EMetricas.HORAS_DORMIDAS },
+ { key: EMetricas.HIDRATACAO, value: EMetricas.HIDRATACAO },
+ ];
+
+ const salvarNoBancoLocal = async () => {
+ if (!idUsuario) {
+ console.error('Usuário não encontrado.');
+ return;
+ }
+
+ try {
+ const idosoCollection = database.get('idoso') as Collection;
+ const usersCollection = database.get('usuario') as Collection;
+ const metricasCollection = database.get('metrica') as Collection;
+ const userQuery = await usersCollection.query(Q.where('id', idUsuario.toString())).fetch();
+
+ if (userQuery.length === 0) {
+ console.error('Usuário não encontrado.');
+ return;
+ }
+
+ const user = userQuery[0];
+
+ await database.write(async () => {
+ const createdIdoso = await idosoCollection.create((idoso) => {
+ idoso.nome = nome;
+ idoso.dataNascimento = getDateIsoString(dataNascimento);
+ idoso.telefoneResponsavel = telefoneResponsavel;
+ idoso.descricao = descricao;
+ idoso.tipoSanguineo = tipoSanguineo;
+ idoso.userId = idUsuario.toString();
+ idoso.foto = foto || '';
+ });
+
+ for (const tipoMetrica of metricas) {
+ await metricasCollection.create((metrica) => {
+ metrica.idIdoso = createdIdoso.id;
+ metrica.categoria = tipoMetrica.value;
+ metrica.valorMaximo = "0";
+ });
+ }
+
+ console.log("Metricas do idoso:", await metricasCollection.query().fetch());
+ });
+
+ console.log("Idoso salvo no banco local com sucesso!");
+ } catch (error) {
+ console.error("Erro ao salvar o idoso no banco local:", error);
+ }
+ };
+
+ const salvar = async () => {
+ if (Object.keys(erros).length > 0) {
+ setShowErrors(true);
+ return;
+ }
+
+ try {
+ setShowLoading(true);
+ await salvarNoBancoLocal();
+ ToastAndroid.show("Idoso salvo no banco local com sucesso!", ToastAndroid.SHORT);
+ router.replace("/private/pages/listarIdosos");
+ } catch (err) {
+ const error = err as { message: string };
+ ToastAndroid.show(`Erro: ${error.message}`, ToastAndroid.SHORT);
+ } finally {
+ setShowLoading(false);
+ }
+ };
+
+ useEffect(() => handleErrors(), [nome, telefoneResponsavel, dataNascimento]);
+
+ const data = getTipoSanguineoOptions();
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {
+ setTelefoneResponsavel(unmasked);
+ setMaskedTelefoneResponsavel(masked);
+ }}
+ mask={Masks.BRL_PHONE}
+ placeholder="Telefone Responsável"
+ />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/src/app/private/pages/cadastrarMetrica.tsx b/src/app/private/pages/cadastrarMetrica.tsx
new file mode 100644
index 00000000..5e6f5b79
--- /dev/null
+++ b/src/app/private/pages/cadastrarMetrica.tsx
@@ -0,0 +1,326 @@
+import React, { useEffect, useState } from "react";
+import AsyncStorage from "@react-native-async-storage/async-storage";
+import {
+ View,
+ StyleSheet,
+ Text,
+ Image,
+ ScrollView,
+ Pressable,
+} from "react-native";
+import Icon from "react-native-vector-icons/FontAwesome";
+import { IUser } from "../../interfaces/user.interface";
+import { IIdoso } from "../../interfaces/idoso.interface";
+import { router } from "expo-router";
+import { postMetrica } from "../../services/metrica.service";
+import { EMetricas, IMetrica } from "../../interfaces/metricas.interface";
+import Toast from "react-native-toast-message";
+import { hasFoto} from "../../shared/helpers/foto.helper";
+import { getFoto } from "../../shared/helpers/photo.helper";
+
+export default function criarMetrica() {
+ const [user, setUser] = useState(undefined);
+ const [idoso, setIdoso] = useState();
+ const [token, setToken] = useState("");
+ const [showLoading, setShowLoading] = useState(false);
+ const getToken = () => {
+ AsyncStorage.getItem("token").then((response) => {
+ setToken(response as string);
+ });
+ };
+
+ const handleUser = () => {
+ AsyncStorage.getItem("usuario").then((response) => {
+ const usuario = JSON.parse(response as string);
+ setUser(usuario);
+ });
+ };
+
+ const getIdoso = () => {
+ AsyncStorage.getItem("idoso").then((idosoString) => {
+ if (idosoString) {
+ const idosoPayload = JSON.parse(idosoString) as IIdoso;
+ setIdoso(idosoPayload);
+ }
+ });
+ };
+
+ const handleMetricSelection = async (metricType: EMetricas) => {
+ const body = {
+ idIdoso: Number(idoso?.id),
+ categoria: metricType,
+ };
+
+ try {
+ setShowLoading(true);
+ const response = await postMetrica(body, token);
+ Toast.show({
+ type: "success",
+ text1: "Sucesso!",
+ text2: response.message as string,
+ });
+
+ router.replace({
+ pathname: "private/tabs/registros",
+ });
+ } catch (err) {
+ const error = err as { message: string };
+ Toast.show({
+ type: "error",
+ text1: "Erro!",
+ text2: error.message,
+ });
+ } finally {
+ setShowLoading(false);
+ }
+ };
+
+ const back = () => {
+ router.push({
+ pathname: "private/tabs/registros",
+ });
+ };
+
+ const renderMetricCard = (
+ metricType: EMetricas,
+ iconName: string,
+ description: string,
+ iconColor: string,
+ ) => (
+ handleMetricSelection(metricType)}
+ testID={`${metricType}-card`}
+ >
+
+ {iconName === "oxygen" && O2}
+ {iconName !== "oxygen" && (
+
+ )}
+
+ {description}
+
+ Cadastrar {description}
+
+
+
+
+
+ );
+
+ useEffect(() => getToken(), []);
+ useEffect(() => handleUser(), []);
+ useEffect(() => getIdoso(), []);
+
+ return (
+
+
+ back()}>
+
+
+
+ {user?.id && idoso?.id && (
+
+ {getFoto(idoso?.foto)}
+
+ {idoso?.nome}
+
+
+ )}
+
+
+
+
+ Selecione a métrica a ser cadastrada
+
+
+
+ {renderMetricCard(
+ EMetricas.FREQ_CARDIACA,
+ "heartbeat",
+ "Frequência Cardíaca",
+ "#FF7D7D",
+ )}
+ {renderMetricCard(
+ EMetricas.PRESSAO_SANGUINEA,
+ "tint",
+ "Pressão Sanguínea",
+ "#FF7D7D",
+ )}
+ {renderMetricCard(
+ EMetricas.SATURACAO_OXIGENIO,
+ "oxygen",
+ "Saturação do Oxigênio",
+ "87F4E4",
+ )}
+ {renderMetricCard(
+ EMetricas.TEMPERATURA,
+ "thermometer",
+ "Temperatura",
+ "FFAC7D",
+ )}
+ {renderMetricCard(EMetricas.GLICEMIA, "cubes", "Glicemia", "#3F3F3F")}
+
+ {renderMetricCard(
+ //Apenas para o caso de serem necessários nesta tela (se não forem, podem excluir)
+ EMetricas.ALTURA,
+ "user",
+ "Altura (m)",
+ "#3F3F3F",
+ )}
+
+ {renderMetricCard(
+ //Apenas para o caso de serem necessários nesta tela (se não forem, podem excluir)
+ EMetricas.PESO,
+ "balance-scale",
+ "Peso (kg)",
+ "#000000",
+ )}
+
+ {renderMetricCard(
+ EMetricas.HORAS_DORMIDAS,
+ "bed",
+ "Horas Dormidas",
+ "#3F3F3F",
+ )}
+
+ {renderMetricCard(
+ EMetricas.HIDRATACAO,
+ "cup-water",
+ "Hidratação",
+ "#1075c8",
+ )}
+
+
+ {/* Adicione aqui o restante do conteúdo do componente criarMetrica */}
+
+ );
+}
+
+const styles = StyleSheet.create({
+ header: {
+ flexDirection: "row",
+ alignItems: "center",
+ justifyContent: "space-between",
+ height: 100,
+ backgroundColor: "#2CCDB5",
+ },
+ photoAndName: {
+ padding: 10,
+ flexDirection: "column",
+ alignSelf: "center",
+ alignItems: "center",
+ },
+ none: { width: 30 }, // necessário para alinhar a foto, NÃO REMOVA
+ fotoPerfil: {
+ width: 60,
+ aspectRatio: 1,
+ borderRadius: 100,
+ },
+ semFoto: { position: "relative", backgroundColor: "#EFEFF0" },
+ semFotoIcon: {
+ opacity: 0.4,
+ margin: "auto",
+ alignSelf: "center",
+ },
+ nomeUsuario: {
+ color: "#FFFFFF",
+ fontSize: 16,
+ marginTop: 10,
+ maxWidth: "100%",
+ },
+ container: {
+ flexGrow: 1,
+ },
+ botaoCriarMetricas: {},
+ chevronLeft: {
+ marginLeft: 15,
+ width: 15,
+ },
+ textoBotaoCriarMetricas: {
+ color: "#3F3F3F",
+ fontSize: 17,
+ marginLeft: 15,
+ },
+ textoAbaixoDoBotao: {
+ marginTop: 30,
+ textAlign: "center",
+ color: "#3F3F3F",
+ fontSize: 20,
+ },
+ metricCardsContainer: {
+ flexDirection: "column",
+ alignItems: "center",
+ marginTop: 20,
+ },
+ metricCard: {
+ flexDirection: "row",
+ alignItems: "center",
+ backgroundColor: "white",
+ padding: 15,
+ borderRadius: 10,
+ marginBottom: 20,
+ width: "80%",
+ shadowColor: "#000",
+ shadowOffset: { width: 3, height: 3 },
+ shadowOpacity: 0.2,
+ shadowRadius: 4,
+ },
+ metricCardIcon: {
+ marginRight: 10,
+ },
+ metricCardText: {
+ color: "#3F3F3F",
+ fontSize: 16,
+ },
+ metricsName: {
+ flexDirection: "column",
+ alignItems: "center",
+ },
+ imagem: {
+ width: 45,
+ height: 45,
+ borderRadius: 30,
+ },
+ name: {
+ color: "white",
+ fontWeight: "bold",
+ fontSize: 16,
+ marginTop: 5,
+ },
+ metricCardContent: {
+ flex: 1,
+ flexDirection: "row",
+ //alignItems: "center",
+ justifyContent: "space-between",
+ },
+ cadastrarPlaceholder: {
+ color: "#A9A9A9",
+ fontSize: 12,
+ marginTop: 5,
+ },
+ oxygenSymbol: {
+ fontSize: 30,
+ color: "#3F3F3F",
+ marginRight: 10,
+ },
+ negrito: {
+ fontWeight: "bold",
+ },
+ text: {
+ fontWeight: "bold",
+ textAlign: "center",
+ fontSize: 18,
+ },
+});
diff --git a/src/app/private/pages/cadastrarRotina.tsx b/src/app/private/pages/cadastrarRotina.tsx
new file mode 100644
index 00000000..98dabc75
--- /dev/null
+++ b/src/app/private/pages/cadastrarRotina.tsx
@@ -0,0 +1,438 @@
+import {
+ Pressable,
+ StyleSheet,
+ Text,
+ View,
+ TextInput,
+ Platform,
+ Switch,
+} from "react-native";
+import React, { useEffect, useState } from "react";
+import { ScrollView } from "react-native";
+import Icon from "react-native-vector-icons/MaterialCommunityIcons";
+import { router } from "expo-router";
+import { SelectList } from "react-native-dropdown-select-list";
+import { ECategoriaRotina } from "../../interfaces/rotina.interface";
+import WeekDays from "../../components/weekDay";
+import Calendar from "react-native-vector-icons/Feather";
+import CustomButton from "../../components/CustomButton";
+import MaskInput, { Masks } from "react-native-mask-input";
+import MaskHour from "../../components/MaskHour";
+import { postRotina } from "../../services/rotina.service";
+import Toast from "react-native-toast-message";
+import AsyncStorage from "@react-native-async-storage/async-storage";
+import { IIdoso } from "../../interfaces/idoso.interface";
+import ErrorMessage from "../../components/ErrorMessage";
+import * as Notifications from "expo-notifications";
+import database from "../../db";
+import { Collection } from "@nozbe/watermelondb";
+import Rotina from "../../model/Rotina";
+import { handleNotificacao, validateFields } from "../../shared/helpers/useNotification";
+interface IErrors {
+ titulo?: string;
+ data?: string;
+ hora?: string;
+ categoria?: string;
+ descricao?: string;
+}
+
+export default function CadastrarRotina() {
+ const getInitialDateTime = (isData = true) => {
+ const today = new Date();
+ const formattedDate = today.toLocaleDateString("pt-BR", {
+ hour: "2-digit",
+ minute: "2-digit",
+ });
+ const formattedDateArray = formattedDate.split(" ");
+ return isData ? formattedDateArray[0] : formattedDateArray[1];
+ };
+
+ const [idoso, setIdoso] = useState();
+ const [titulo, setTitulo] = useState("");
+ const [data, setData] = useState(getInitialDateTime());
+ const [hora, setHora] = useState(getInitialDateTime(false));
+ const [notificacao, setNotificacao] = useState(false);
+ const [expoToken, setExpoToken] = useState("");
+ const [descricao, setDescricao] = useState("");
+ const [categoria, setCategoria] = useState(null);
+ const [showLoading, setShowLoading] = useState(false);
+ const [erros, setErros] = useState({});
+ const [showErrors, setShowErrors] = useState(false);
+ const [token, setToken] = useState("");
+ const [dias, setDias] = useState([]);
+
+ const getToken = () => {
+ AsyncStorage.getItem("token").then((response) => {
+ setToken(response as string);
+ });
+ };
+
+ const getIdoso = () => {
+ AsyncStorage.getItem("idoso").then((idosoString) => {
+ if (idosoString) {
+ const idosoPayload = JSON.parse(idosoString) as IIdoso;
+ setIdoso(idosoPayload);
+ }
+ });
+ };
+
+ const handleErrors = () => {
+ validateFields(titulo, data, hora, categoria, descricao, setErros);
+ };
+
+
+ const categorias = [
+ { key: ECategoriaRotina.GERAL, value: ECategoriaRotina.GERAL },
+ { key: ECategoriaRotina.MEDICAMENTO, value: ECategoriaRotina.MEDICAMENTO },
+ { key: ECategoriaRotina.ALIMENTACAO, value: ECategoriaRotina.ALIMENTACAO },
+ { key: ECategoriaRotina.EXERCICIOS, value: ECategoriaRotina.EXERCICIOS },
+ ];
+
+ const getDateIsoString = () => {
+ const dateArray = data.split("/");
+
+ return `${dateArray[2]}-${dateArray[1]}-${dateArray[0]}T${hora}:00.000`;
+ };
+
+ const salvarNoBancoLocal = async () => {
+ const rotinaCollection = database.get('rotina') as Collection;
+
+ await database.write(async () => {
+ await rotinaCollection.create((rotina) => {
+ rotina.titulo = titulo;
+ rotina.descricao = descricao;
+ rotina.categoria = String(categoria);
+ rotina.dias = dias.map(String); // Mudar o tipo de dias pra String[]
+ rotina.dataHora = new Date(getDateIsoString());
+ rotina.token = token;
+ rotina.notificacao = notificacao;
+ rotina.dataHoraConcluidos = [];
+ rotina.idIdoso = String(idoso?.id);
+ });
+ });
+
+ // console.log("Estado atual do banco:", await rotinaCollection.query().fetch());
+ }
+
+ const salvar = async () => {
+ if (Object.keys(erros).length > 0) {
+ setShowErrors(true);
+ return;
+ }
+
+ try {
+ setShowLoading(true);
+ await salvarNoBancoLocal();
+ Toast.show({
+ type: "success",
+ text1: "Sucesso!",
+ text2: "Rotina criada",
+ });
+ router.replace({
+ pathname: "private/tabs/rotinas",
+ });
+
+ } catch (err) {
+ const error = err as { message: string };
+ console.log(error);
+ Toast.show({
+ type: "error",
+ text1: "Erro!",
+ text2: "Algo deu errado na criação da rotina :(",
+ });
+ } finally {
+ setShowLoading(false);
+ }
+ };
+
+ const goBack = () => {
+ router.push({
+ pathname: "/private/tabs/rotinas",
+ });
+ };
+
+ const setSuggestedTitle = () => {
+ switch (categoria) {
+ case ECategoriaRotina.ALIMENTACAO:
+ setTitulo("Se Alimentar");
+ break;
+ case ECategoriaRotina.MEDICAMENTO:
+ setTitulo("Tomar Medicamento");
+ break;
+ case ECategoriaRotina.EXERCICIOS:
+ setTitulo("Fazer Exercício");
+ break;
+ default:
+ break;
+ }
+ };
+
+
+ useEffect(() => getIdoso(), []);
+ useEffect(() => getToken(), []);
+ useEffect(() => setSuggestedTitle(), [categoria]);
+ useEffect(() => handleErrors(), [titulo, data, hora, categoria, descricao]);
+ useEffect(() => {
+ handleNotificacao(notificacao, setNotificacao, setExpoToken);
+ }, [notificacao]);
+
+ return (
+
+
+
+
+
+ Nova rotina
+
+
+
+
+ setTitulo(titulo)}
+ placeholder="Adicionar título"
+ placeholderTextColor={"#3D3D3D"}
+ style={styles.inputTitulo}
+ />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ setHora(hora)}
+ />
+
+
+
+
+
+
+
+ {(!categoria || categoria == ECategoriaRotina.GERAL) && (
+
+ )}
+ {categoria === ECategoriaRotina.ALIMENTACAO && (
+
+ )}
+ {categoria === ECategoriaRotina.MEDICAMENTO && (
+
+ )}
+ {categoria === ECategoriaRotina.EXERCICIOS && (
+
+ )}
+ {/* */}
+
+
+
+
+
+
+
+
+ Se repete às:
+
+
+
+
+
+
+
+
+ Ativar notificação
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
+
+const styles = StyleSheet.create({
+ notificacaoContainer: {
+ flexDirection: "row",
+ alignItems: "center",
+ width: "100%",
+ fontWeight: "700",
+ marginBottom: 25,
+ },
+ notificacaoText: {
+ fontWeight: "600",
+ marginLeft: 7,
+ fontSize: 16,
+ color: "#616161",
+ },
+ header: {
+ backgroundColor: "#2CCDB5",
+ height: 60,
+ flexDirection: "row",
+ alignItems: "center",
+ },
+ tituloheader: {
+ fontWeight: "bold",
+ color: "white",
+ fontSize: 20,
+ },
+ rotina: {
+ flexDirection: "column",
+ borderRadius: 15,
+ backgroundColor: "white",
+ margin: 15,
+ padding: 15,
+ shadowColor: "#000",
+ shadowOffset: { width: 1, height: 1 },
+ shadowOpacity: 0.3,
+ shadowRadius: 6,
+ alignItems: "center",
+ justifyContent: "center",
+ },
+ titulo: {
+ flexDirection: "row",
+ marginTop: 10,
+ borderBottomWidth: 1,
+ borderBottomColor: "#333333",
+ paddingBottom: 5,
+ marginBottom: 1,
+ },
+ inputTitulo: {
+ color: "#05375a",
+ fontSize: 17,
+ textAlign: "center",
+ },
+ dataHora: {
+ flexDirection: "row",
+ borderBottomWidth: 1,
+ borderBottomColor: "black",
+ paddingBottom: 5,
+ width: 300,
+ marginBottom: 1,
+ },
+ iconDataHora: {
+ fontSize: 25,
+ opacity: 0.8,
+ },
+ textInput: {
+ paddingLeft: 10,
+ color: "#05375a",
+ fontSize: 17,
+ width: 280,
+ },
+ categoria: {
+ flexDirection: "row",
+ borderBottomWidth: 1,
+ width: 300,
+ alignItems: "baseline",
+ paddingBottom: 5,
+ },
+ iconCategoria: {
+ fontSize: 25,
+ opacity: 0.8,
+ },
+ dropdown: {
+ borderWidth: 0,
+ paddingLeft: 10,
+ width: 280,
+ fontSize: 17,
+ },
+ categoriaSelecionada: {
+ fontSize: 17,
+ },
+ repete: {
+ alignSelf: "flex-start",
+ marginTop: 10,
+ fontSize: 17,
+ color: "#616161",
+ },
+ weekDays: {
+ flexDirection: "row",
+ marginTop: 15,
+ marginBottom: 0,
+ },
+ descricao: {
+ flexDirection: "row",
+ paddingBottom: 5,
+ backgroundColor: "#F1F1F1",
+ borderRadius: 10,
+ },
+ textInputDescription: {
+ width: "100%",
+ borderRadius: 10,
+ backgroundColor: "#F1F1F1",
+ fontSize: 17,
+ padding: 12,
+ paddingTop: 10,
+ },
+ linkButton: {
+ marginTop: 30,
+ marginBottom: 40,
+ alignItems: "center",
+ width: 250,
+ },
+ erroTitulo: {
+ marginBottom: 35,
+ },
+ erro: {
+ marginBottom: 15,
+ alignSelf: "flex-start",
+ },
+});
diff --git a/src/app/private/pages/criaPublicacao.tsx b/src/app/private/pages/criaPublicacao.tsx
new file mode 100644
index 00000000..212a3d3f
--- /dev/null
+++ b/src/app/private/pages/criaPublicacao.tsx
@@ -0,0 +1,222 @@
+import { Link, router } from "expo-router";
+import React, { useEffect, useState } from "react";
+import { Platform, StyleSheet, Text, TextInput, View } from "react-native";
+import Icon from "react-native-vector-icons/MaterialCommunityIcons";
+import { SelectList } from "react-native-dropdown-select-list";
+import { ScrollView } from "react-native";
+import { ECategoriaPublicacao } from "../../interfaces/forum.interface";
+import AsyncStorage from "@react-native-async-storage/async-storage";
+import { IUser } from "../../interfaces/user.interface";
+import { postPublicacao } from "../../services/forum.service";
+import Toast from "react-native-toast-message";
+import CustomButton from "../../components/CustomButton";
+import ErrorMessage from "../../components/ErrorMessage";
+
+interface IErrors {
+ titulo?: string;
+ descricao?: string;
+ categoria?: string;
+}
+
+export default function CriaPublicacao() {
+ const [idUsuario, setIdUsuario] = useState(null);
+ const [token, setToken] = useState("");
+ const [titulo, setTitulo] = useState("");
+ const [descricao, setDescricao] = useState("");
+ const [categoria, setCategoria] = useState(null);
+ const [erros, setErros] = useState({});
+ const [showErrors, setShowErrors] = useState(false);
+ const [loading, setLoading] = useState(false);
+
+ const getIdUsuario = () => {
+ AsyncStorage.getItem("usuario").then((response) => {
+ const usuario = JSON.parse(response as string) as IUser;
+ setIdUsuario(usuario.id);
+ });
+ AsyncStorage.getItem("token").then((response) => {
+ setToken(response as string);
+ });
+ };
+
+ const data = [
+ { key: ECategoriaPublicacao.GERAL, value: ECategoriaPublicacao.GERAL },
+ { key: ECategoriaPublicacao.SAUDE, value: ECategoriaPublicacao.SAUDE },
+ {
+ key: ECategoriaPublicacao.ALIMENTACAO,
+ value: ECategoriaPublicacao.ALIMENTACAO,
+ },
+ {
+ key: ECategoriaPublicacao.EXERCICIOS,
+ value: ECategoriaPublicacao.EXERCICIOS,
+ },
+ ];
+
+ const publicar = async () => {
+ if (Object.keys(erros).length > 0) {
+ setShowErrors(true);
+ return;
+ }
+
+ const body = {
+ idUsuario: idUsuario as number,
+ titulo,
+ descricao,
+ dataHora: new Date(),
+ categoria: categoria as ECategoriaPublicacao,
+ };
+
+ try {
+ setLoading(true);
+ const response = await postPublicacao(body, token);
+ Toast.show({
+ type: "success",
+ text1: "Sucesso!",
+ text2: response.message as string,
+ });
+ router.push("/private/tabs/forum");
+ } catch (err) {
+ const error = err as { message: string };
+ Toast.show({
+ type: "error",
+ text1: "Erro!",
+ text2: error.message,
+ });
+ } finally {
+ setLoading(false);
+ }
+ };
+
+ useEffect(() => handleErrors(), [titulo, descricao, categoria]);
+ useEffect(() => getIdUsuario(), []);
+
+ const handleErrors = () => {
+ const erros: IErrors = {};
+
+ if (!titulo) {
+ erros.titulo = "Campo obrigatório!";
+ } else if (titulo.length > 100) {
+ erros.titulo = "Deve ter no máximo 100 caracteres!";
+ }
+
+ if (!descricao) {
+ erros.descricao = "Campo Obrigatório!";
+ } else if (descricao.length > 500) {
+ erros.descricao = "Deve ter no máximo 500 caracteres!";
+ }
+
+ if (!categoria) {
+ erros.categoria = "Campo Obrigatório!";
+ }
+
+ setErros(erros);
+ };
+
+ return (
+
+
+
+
+
+
+ Nova publicação
+
+
+
+
+ Título
+
+
+
+
+
+ Descrição
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
+
+const styles = StyleSheet.create({
+ header: {
+ backgroundColor: "#2CCDB5",
+ height: 60,
+ flexDirection: "row",
+ alignItems: "center",
+ },
+ tituloheader: {
+ fontWeight: "bold",
+ color: "white",
+ fontSize: 20,
+ },
+ publicacao: {
+ borderRadius: 15,
+ backgroundColor: "white",
+ margin: 15,
+ padding: 15,
+ shadowColor: "#000",
+ shadowOffset: { width: 1, height: 1 },
+ shadowOpacity: 0.3,
+ shadowRadius: 6,
+ },
+ formControl: {
+ marginBottom: 15,
+ },
+ inputLabel: {
+ marginBottom: 10,
+ fontWeight: "700",
+ },
+ input: {
+ textAlignVertical: "top",
+ borderWidth: 0,
+ padding: 12,
+ backgroundColor: "#F1F1F1",
+ borderRadius: 10,
+ marginBottom: 5,
+ },
+ selectInput: {
+ marginBottom: 5,
+ },
+ botaoPublicar: {
+ marginTop: 30,
+ flexDirection: "row",
+ width: "100%",
+ justifyContent: "center",
+ },
+});
diff --git a/src/app/private/pages/editarIdoso.tsx b/src/app/private/pages/editarIdoso.tsx
new file mode 100644
index 00000000..b963ef9b
--- /dev/null
+++ b/src/app/private/pages/editarIdoso.tsx
@@ -0,0 +1,364 @@
+import { router, useLocalSearchParams } from "expo-router";
+import React, { useEffect, useState } from "react";
+import {
+ View,
+ TextInput,
+ StyleSheet,
+ ScrollView,
+ Pressable,
+ ActivityIndicator,
+ Text,
+} from "react-native";
+import Toast from "react-native-toast-message";
+import { AntDesign, Fontisto } from "@expo/vector-icons";
+import BackButton from "../../components/BackButton";
+import ErrorMessage from "../../components/ErrorMessage";
+import CustomButton from "../../components/CustomButton";
+import Icon from "react-native-vector-icons/MaterialCommunityIcons";
+import ModalConfirmation from "../../components/ModalConfirmation";
+import { SelectList } from "react-native-dropdown-select-list";
+import { ETipoSanguineo, IIdoso } from "../../interfaces/idoso.interface";
+import { deleteIdoso, updateIdoso } from "../../services/idoso.service";
+import AsyncStorage from "@react-native-async-storage/async-storage";
+import { IUser } from "../../interfaces/user.interface";
+import MaskInput, { Masks } from "react-native-mask-input";
+import UploadImageV2 from "../../components/UploadImageV2";
+import database from "../../db";
+import { Collection, Q } from "@nozbe/watermelondb";
+import Idoso from "../../model/Idoso";
+import { getTipoSanguineoOptions } from "../../shared/helpers/useNotification";
+import styles from "../../components/style/styles";
+
+
+interface IErrors {
+ nome?: string;
+ dataNascimento?: string;
+ tipoSanguineo?: string;
+ telefoneResponsavel?: string;
+ descricao?: string;
+}
+
+
+export default function EditarIdoso() {
+ const getDateFromEdit = (date: string) => {
+ const data = new Date(date);
+ const ano = data.getFullYear();
+ const mes = String(data.getMonth() + 1).padStart(2, "0");
+ const dia = String(data.getDate()).padStart(2, "0");
+
+
+ return `${dia}/${mes}/${ano}`;
+ };
+
+
+ const item = useLocalSearchParams() as unknown as IIdoso;
+
+
+ const [foto, setFoto] = useState(item.foto);
+ const [nome, setNome] = useState(item.nome);
+ const [tipoSanguineo, setTipoSanguineo] = useState<
+ ETipoSanguineo | null | undefined
+ >(item.tipoSanguineo);
+ const [telefoneResponsavel, setTelefoneResponsavel] = useState(
+ item.telefoneResponsavel,
+ );
+ const [dataNascimento, setDataNascimento] = useState(
+ getDateFromEdit(item.dataNascimento as string),
+ );
+ const [descricao, setDescricao] = useState(
+ item.descricao,
+ );
+
+
+ const [token, setToken] = useState("");
+ const [erros, setErros] = useState({});
+ const [showErrors, setShowErrors] = useState(false);
+ const [showLoading, setShowLoading] = useState(false);
+ const [showLoadingApagar, setShowLoadingApagar] = useState(false);
+ const [modalVisible, setModalVisible] = useState(false);
+ const [idUsuario, setIdUsuario] = useState(null);
+ const [maskedTelefoneResponsavel, setMaskedTelefoneResponsavel] =
+ useState(telefoneResponsavel);
+
+
+ const getIdUsuario = () => {
+ AsyncStorage.getItem("usuario").then((response) => {
+ const usuario = JSON.parse(response as string) as IUser;
+ setIdUsuario(usuario.id);
+ });
+ AsyncStorage.getItem("token").then((response) => {
+ setToken(response as string);
+ });
+ };
+
+
+ const getDateIsoString = (value: string) => {
+ const dateArray = value.split("/");
+
+
+ return `${dateArray[2]}-${dateArray[1]}-${dateArray[0]}T12:00:00.000Z`;
+ };
+
+
+ const salvar = async () => {
+ if (Object.keys(erros).length > 0) {
+ setShowErrors(true);
+ return;
+ }
+ const body = {
+ idUsuario: idUsuario as number,
+ nome,
+ dataNascimento: getDateIsoString(dataNascimento),
+ telefoneResponsavel,
+ foto,
+ tipoSanguineo: tipoSanguineo ?? '',
+ descricao: descricao ?? '',
+ };
+ if (body.foto && isBase64Image(body.foto)) {
+ delete body.foto;
+ }
+ try {
+ setShowLoading(true);
+ const idosoCollection = database.get('idoso') as Collection;
+ await database.write(async () => {
+ const idosoRecord = await idosoCollection.find(item.id.toString());
+ await idosoRecord.update((idoso) => {
+ idoso.nome = nome;
+ idoso.dataNascimento = getDateIsoString(dataNascimento);
+ idoso.telefoneResponsavel = telefoneResponsavel;
+ idoso.foto = foto;
+ idoso.tipoSanguineo = tipoSanguineo ?? '';
+ idoso.descricao = descricao ?? '';
+ });
+ });
+ Toast.show({
+ type: "success",
+ text1: "Sucesso!",
+ text2: "Idoso atualizado com sucesso.",
+ });
+ router.replace("private/pages/listarIdosos");
+ } catch (err) {
+ const error = err as { message: string };
+ Toast.show({
+ type: "error",
+ text1: "Erro!",
+ text2: error.message,
+ });
+ } finally {
+ setShowLoading(false);
+ }
+ };
+
+
+ const isBase64Image = (str: string): boolean => {
+ const expression = `data:image\/([a-zA-Z]*);base64,([^\"]*)`;
+ const regex = new RegExp(expression);
+
+
+ return regex.test(str);
+ };
+
+
+ const apagarIdoso = async () => {
+ setModalVisible(false);
+ setShowLoadingApagar(true);
+ try {
+ const idosoCollection = database.get('idoso') as Collection;
+ await database.write(async () => {
+ const idosoRecord = await idosoCollection.find(item.id.toString());
+ await idosoRecord.destroyPermanently();
+ });
+ Toast.show({
+ type: "success",
+ text1: "Sucesso!",
+ text2: "Idoso apagado com sucesso.",
+ });
+ router.replace("/private/pages/listarIdosos");
+ } catch (err) {
+ const error = err as { message: string };
+ Toast.show({
+ type: "error",
+ text1: "Erro!",
+ text2: error.message,
+ });
+ } finally {
+ setShowLoadingApagar(false);
+ }
+ };
+
+
+ const confirmation = () => {
+ setModalVisible(!modalVisible);
+ };
+
+
+ const closeModal = () => {
+ setModalVisible(false);
+ };
+
+
+ useEffect(() => handleErrors(), [nome, telefoneResponsavel, dataNascimento]);
+ useEffect(() => getIdUsuario(), []);
+
+
+ const handleErrors = () => {
+ const erros: IErrors = {};
+
+
+ if (!nome) {
+ erros.nome = "Campo obrigatório!";
+ } else if (nome.length < 5) {
+ erros.nome = "O nome completo deve ter pelo menos 5 caractéres.";
+ } else if (nome.length > 60) {
+ erros.nome = "O nome completo deve ter no máximo 60 caractéres.";
+ }
+
+
+ if (!dataNascimento) {
+ erros.dataNascimento = "Campo obrigatório!";
+ } else if (!/^\d{2}\/\d{2}\/\d{4}$/.test(dataNascimento as string)) {
+ erros.dataNascimento = "Data deve ser no formato dd/mm/yyyy!";
+ }
+
+
+ if (!telefoneResponsavel) {
+ erros.telefoneResponsavel = "Campo obrigatório!";
+ } else if (telefoneResponsavel.length !== 11) {
+ erros.telefoneResponsavel = "Deve estar no formato (XX)XXXXX-XXXX";
+ }
+
+
+ setErros(erros);
+ };
+
+
+ const data = getTipoSanguineoOptions();
+
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {
+ setTelefoneResponsavel(unmasked);
+ setMaskedTelefoneResponsavel(masked);
+ }}
+ mask={Masks.BRL_PHONE}
+ placeholder="Telefone Responsável"
+ />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {showLoadingApagar ? (
+
+ ) : (
+ Apagar Idoso
+ )}
+
+
+
+
+
+
+ );
+}
+
diff --git a/src/app/private/pages/editarPerfil.tsx b/src/app/private/pages/editarPerfil.tsx
new file mode 100644
index 00000000..e1b9691c
--- /dev/null
+++ b/src/app/private/pages/editarPerfil.tsx
@@ -0,0 +1,288 @@
+import React, { useEffect, useState } from "react";
+import {
+ Pressable,
+ StyleSheet,
+ Text,
+ View,
+ TextInput,
+ ActivityIndicator,
+} from "react-native";
+import Toast from "react-native-toast-message";
+import Icon from "react-native-vector-icons/MaterialCommunityIcons";
+import AsyncStorage from "@react-native-async-storage/async-storage";
+import { router, useLocalSearchParams } from "expo-router";
+import ErrorMessage from "../../components/ErrorMessage";
+import CustomButton from "../../components/CustomButton";
+import UploadImage from "../../components/UploadImage";
+import ModalConfirmation from "../../components/ModalConfirmation";
+import BackButton from "../../components/BackButton";
+import database from "../../db";
+import User from "../../model/Usuario";
+import { Q } from "@nozbe/watermelondb";
+import { IUser } from "../../interfaces/user.interface";
+import Usuario from "../../model/Usuario";
+
+interface IErrors {
+ nome?: string;
+}
+
+export default function EditarPerfil() {
+ const user = useLocalSearchParams() as unknown as IUser;
+ const [foto, setFoto] = useState(user.foto);
+ const [nome, setNome] = useState(user.nome);
+ const [erros, setErros] = useState({});
+ const [showErrors, setShowErrors] = useState(false);
+ const [modalVisible, setModalVisible] = useState(false);
+ const [showLoading, setShowLoading] = useState(false);
+ const [showLoadingApagar, setShowLoadingApagar] = useState(false);
+
+ useEffect(() => {
+ console.log("user:", user);
+ console.log("foto inicial:", foto);
+ console.log("nome inicial:", nome);
+ }, []);
+
+ const salvar = async () => {
+ if (Object.keys(erros).length > 0) {
+ setShowErrors(true);
+ return;
+ }
+
+ const body = { nome, foto };
+ console.log("Dados a serem salvos:", body);
+
+ if (body.foto && isBase64Image(body.foto)) {
+ delete body.foto;
+ console.log("Foto removida do body, pois está em base64");
+ }
+
+ try {
+ setShowLoading(true);
+
+ const usersCollection = database.get("usuario");
+ console.log("Coleção de usuários obtida:", usersCollection);
+
+ await database.write(async () => {
+ const userToUpdate = await usersCollection
+ .query(Q.where("id", user.id.toString()))
+ .fetch();
+
+ console.log("Usuário encontrado para atualizar:", userToUpdate);
+
+ if (userToUpdate.length > 0) {
+ console.log("Estado antes da atualização:", userToUpdate[0]);
+
+ await userToUpdate[0].update((user) => {
+ user.nome = nome;
+ if (foto) user.foto = foto;
+ });
+
+ const updatedUsers = await usersCollection
+ .query(Q.where("id", user.id.toString()))
+ .fetch();
+ console.log("Usuário atualizado no banco de dados:", updatedUsers);
+
+ const updatedUser = {
+ ...user,
+ nome,
+ foto,
+ };
+
+ console.log("Usuário atualizado:", updatedUser);
+
+ await AsyncStorage.setItem("usuario", JSON.stringify(updatedUser));
+ }
+ });
+
+ Toast.show({
+ type: "success",
+ text1: "Sucesso!",
+ text2: "Perfil atualizado com sucesso.",
+ });
+
+ router.push("/private/tabs/perfil");
+ } catch (err) {
+ const error = err as { message: string };
+ console.error("Erro ao salvar perfil:", error.message);
+ Toast.show({
+ type: "error",
+ text1: "Erro!",
+ text2: error.message,
+ });
+ } finally {
+ setShowLoading(false);
+ }
+ };
+
+ const isBase64Image = (str: string): boolean => {
+ const expression = `data:image\/([a-zA-Z]*);base64,([^\"]*)`;
+ const regex = new RegExp(expression);
+ return regex.test(str);
+ };
+
+ const apagarConta = async () => {
+ try {
+ setShowLoadingApagar(true);
+
+ const usersCollection = database.get("usuario");
+ console.log("Coleção de usuários obtida para deletar:", usersCollection);
+
+ await database.write(async () => {
+ const userToDelete = await usersCollection
+ .query(Q.where("id", user.id.toString()))
+ .fetch();
+
+ console.log("Usuário encontrado para deletar:", userToDelete);
+
+ if (userToDelete.length > 0) {
+ await userToDelete[0].destroyPermanently();
+ console.log("Usuário deletado com sucesso:", userToDelete[0]);
+ }
+ });
+
+ await AsyncStorage.removeItem("usuario");
+ console.log("Usuário removido do AsyncStorage");
+
+ Toast.show({
+ type: "success",
+ text1: "Sucesso!",
+ text2: "Conta apagada com sucesso.",
+ });
+
+ router.replace("/");
+ } catch (err) {
+ const error = err as { message: string };
+ console.error("Erro ao apagar conta:", error.message);
+ Toast.show({
+ type: "error",
+ text1: "Erro!",
+ text2: error.message,
+ });
+ } finally {
+ setShowLoadingApagar(false);
+ }
+ };
+
+ const confirmation = () => {
+ setModalVisible(!modalVisible);
+ console.log("Modal de confirmação visível:", modalVisible);
+ };
+
+ const closeModal = () => {
+ setModalVisible(false);
+ console.log("Modal fechado");
+ };
+
+ useEffect(() => handleErrors(), [nome]);
+
+ const handleErrors = () => {
+ const erros: IErrors = {};
+
+ if (!nome) {
+ erros.nome = "Campo obrigatório!";
+ } else if (nome.length < 5) {
+ erros.nome = "O nome completo deve ter pelo menos 5 caractéres.";
+ } else if (nome.length > 60) {
+ erros.nome = "O nome completo deve ter no máximo 60 caractéres.";
+ }
+
+ setErros(erros);
+ console.log("Erros de validação:", erros);
+ };
+
+ return (
+
+
+
+ {foto && }
+ {!foto && }
+
+
+
+
+
+
+
+
+
+
+
+
+ {user.email}
+
+
+
+
+
+
+
+
+ {showLoadingApagar ? (
+
+ ) : (
+ Apagar Conta
+ )}
+
+
+
+
+ );
+}
+
+const styles = StyleSheet.create({
+ apagar: {
+ color: "#FF7F7F",
+ alignSelf: "center",
+ fontSize: 18,
+ fontWeight: "600",
+ },
+ disabled: {
+ opacity: 0.5,
+ },
+ formControl: {
+ width: 320,
+ flexDirection: "column",
+ marginTop: 10,
+ alignSelf: "center",
+ alignItems: "flex-start",
+ },
+ field: {
+ width: 320,
+ height: 30,
+ borderBottomWidth: 1,
+ borderBottomColor: "#AFB1B6",
+ flexDirection: "row",
+ paddingBottom: 5,
+ marginBottom: 5,
+ alignSelf: "center",
+ },
+ iconInput: {
+ width: "10%",
+ },
+ textInput: {
+ color: "#05375a",
+ width: "90%",
+ paddingLeft: 10,
+ fontSize: 17,
+ },
+ linkButton: {
+ alignItems: "center",
+ marginTop: 60,
+ marginBottom: 60,
+ },
+});
diff --git a/src/app/private/pages/editarPublicacao.tsx b/src/app/private/pages/editarPublicacao.tsx
new file mode 100644
index 00000000..87260888
--- /dev/null
+++ b/src/app/private/pages/editarPublicacao.tsx
@@ -0,0 +1,253 @@
+import { router, useLocalSearchParams } from "expo-router";
+import React, { useEffect, useState } from "react";
+import {
+ View,
+ StyleSheet,
+ ScrollView,
+ Text,
+ TextInput,
+ Pressable,
+ Platform,
+} from "react-native";
+import { SelectList } from "react-native-dropdown-select-list";
+import CustomButton from "../../components/CustomButton";
+import ErrorMessage from "../../components/ErrorMessage";
+import Icon from "react-native-vector-icons/MaterialCommunityIcons";
+import {
+ ECategoriaPublicacao,
+ IPublicacao,
+} from "../../interfaces/forum.interface";
+import { IUser } from "../../interfaces/user.interface";
+import Toast from "react-native-toast-message";
+import { updatePublicacao } from "../../services/forum.service";
+import AsyncStorage from "@react-native-async-storage/async-storage";
+
+interface IErrors {
+ titulo?: string;
+ descricao?: string;
+ categoria?: string;
+}
+
+export default function EditarPublicacao() {
+ const item = useLocalSearchParams() as unknown as IPublicacao & IUser;
+
+ const [titulo, setTitulo] = useState(item.titulo);
+ const [descricao, setDescricao] = useState(item.descricao);
+ const [categoria, setCategoria] = useState(item.categoria);
+ const [erros, setErros] = useState({});
+ const [showErrors, setShowErrors] = useState(false);
+ const [showLoading, setShowLoading] = useState(false);
+ const [token, setToken] = useState("");
+
+ const getToken = () => {
+ AsyncStorage.getItem("token").then((response) => {
+ setToken(response as string);
+ });
+ };
+
+ const salvar = async () => {
+ if (Object.keys(erros).length > 0) {
+ setShowErrors(true);
+ return;
+ }
+
+ const body: Partial = {
+ titulo,
+ descricao,
+ categoria: categoria as ECategoriaPublicacao,
+ };
+
+ try {
+ setShowLoading(true);
+ const response = await updatePublicacao(item.id, body, token);
+
+ Toast.show({
+ type: "success",
+ text1: "Sucesso!",
+ text2: response.message as string,
+ });
+ router.push("/private/tabs/forum");
+ } catch (err) {
+ const error = err as { message: string };
+ Toast.show({
+ type: "error",
+ text1: "Erro!",
+ text2: error.message,
+ });
+ } finally {
+ setShowLoading(false);
+ }
+ };
+
+ const handleErrors = () => {
+ const erros: IErrors = {};
+
+ if (!titulo) {
+ erros.titulo = "Campo obrigatório!";
+ } else if (titulo.length > 100) {
+ erros.titulo = "Deve ter no máximo 100 caracteres!";
+ }
+
+ if (!descricao) {
+ erros.descricao = "Campo Obrigatório!";
+ } else if (descricao.length > 500) {
+ erros.descricao = "Deve ter no máximo 500 caracteres!";
+ }
+
+ if (!categoria) {
+ erros.categoria = "Campo Obrigatório!";
+ }
+
+ setErros(erros);
+ };
+
+ const data = [
+ { key: ECategoriaPublicacao.GERAL, value: ECategoriaPublicacao.GERAL },
+ { key: ECategoriaPublicacao.SAUDE, value: ECategoriaPublicacao.SAUDE },
+ {
+ key: ECategoriaPublicacao.ALIMENTACAO,
+ value: ECategoriaPublicacao.ALIMENTACAO,
+ },
+ {
+ key: ECategoriaPublicacao.EXERCICIOS,
+ value: ECategoriaPublicacao.EXERCICIOS,
+ },
+ ];
+
+ const goBack = () => {
+ router.push({
+ pathname: "/private/pages/visualizarPublicacao",
+ params: item,
+ });
+ };
+
+ useEffect(() => handleErrors, [titulo, descricao, categoria]);
+ useEffect(() => getToken());
+
+ return (
+
+
+
+
+
+
+ Editar publicação
+
+
+
+
+
+ Título
+
+
+
+
+
+ Descrição
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
+
+const styles = StyleSheet.create({
+ header: {
+ backgroundColor: "#2CCDB5",
+ height: 60,
+ flexDirection: "row",
+ alignItems: "center",
+ },
+ tituloheader: {
+ fontWeight: "bold",
+ color: "white",
+ fontSize: 20,
+ },
+ publicacao: {
+ borderRadius: 15,
+ backgroundColor: "white",
+ margin: 15,
+ padding: 15,
+ shadowColor: "#000",
+ shadowOffset: { width: 1, height: 1 },
+ shadowOpacity: 0.3,
+ shadowRadius: 6,
+ },
+ formControl: {
+ marginBottom: 15,
+ },
+ inputLabel: {
+ marginBottom: 10,
+ fontWeight: "700",
+ },
+ input: {
+ textAlignVertical: "top",
+ borderWidth: 0,
+ padding: 12,
+ backgroundColor: "#F1F1F1",
+ borderRadius: 10,
+ marginBottom: 5,
+ },
+ selectInput: {
+ marginBottom: 5,
+ },
+ botaoSalvar: {
+ marginTop: 30,
+ flexDirection: "row",
+ width: "100%",
+ justifyContent: "center",
+ },
+ apagar: {
+ color: "#FF7F7F",
+ alignSelf: "center",
+ fontSize: 16,
+ fontWeight: "600",
+ margin: 20,
+ },
+ linkButton: {
+ alignItems: "center",
+ },
+});
diff --git a/src/app/private/pages/editarRotina.tsx b/src/app/private/pages/editarRotina.tsx
new file mode 100644
index 00000000..c83a7466
--- /dev/null
+++ b/src/app/private/pages/editarRotina.tsx
@@ -0,0 +1,469 @@
+import {
+ ActivityIndicator,
+ Pressable,
+ StyleSheet,
+ Text,
+ View,
+ TextInput,
+ Platform,
+ Switch,
+} from "react-native";
+import React, { useEffect, useState } from "react";
+import { ScrollView } from "react-native";
+import Icon from "react-native-vector-icons/MaterialCommunityIcons";
+import { router, useLocalSearchParams } from "expo-router";
+import { SelectList } from "react-native-dropdown-select-list";
+import { ECategoriaRotina, IRotina } from "../../interfaces/rotina.interface";
+import WeekDays from "../../components/weekDay";
+import Calendar from "react-native-vector-icons/Feather";
+import CustomButton from "../../components/CustomButton";
+import MaskInput, { Masks } from "react-native-mask-input";
+import MaskHour from "../../components/MaskHour";
+import { deleteRotina, updateRotina } from "../../services/rotina.service";
+import Toast from "react-native-toast-message";
+import AsyncStorage from "@react-native-async-storage/async-storage";
+import ErrorMessage from "../../components/ErrorMessage";
+import ModalConfirmation from "../../components/ModalConfirmation";
+import { IIdoso } from "../../interfaces/idoso.interface";
+import * as Notifications from "expo-notifications";
+import Rotina from "../../model/Rotina";
+import database from "../../db";
+import { Collection } from "@nozbe/watermelondb";
+import { handleNotificacao, validateFields } from "../../shared/helpers/useNotification";
+interface IErrors {
+ titulo?: string;
+ data?: string;
+ hora?: string;
+ categoria?: string;
+ descricao?: string;
+}
+
+export default function EditarRotina() {
+ const { rotina } = useLocalSearchParams();
+ const params = JSON.parse(rotina as string);
+ const [idoso, setIdoso] = useState();
+ const [titulo, setTitulo] = useState(params.titulo);
+ const [descricao, setDescricao] = useState(params.descricao);
+ const [categoria, setCategoria] = useState(params.categoria);
+ const [dias, setDias] = useState(
+ params.dias.map(Number)
+ );
+ const [showLoading, setShowLoading] = useState(false);
+ const [erros, setErros] = useState({});
+ const [showErrors, setShowErrors] = useState(false);
+ const [token, setToken] = useState("");
+ const [data, setData] = useState("");
+ const [hora, setHora] = useState("");
+ const [showLoadingApagar, setShowLoadingApagar] = useState(false);
+ const [modalVisible, setModalVisible] = useState(false);
+ const [notificacao, setNotificacao] = useState(
+ String(params.notificacao) === "true",
+ );
+ const [expoToken, setExpoToken] = useState(params.token);
+
+ const getIdoso = () => {
+ AsyncStorage.getItem("idoso").then((idosoString) => {
+ if (idosoString) {
+ const idosoPayload = JSON.parse(idosoString) as IIdoso;
+ setIdoso(idosoPayload);
+ }
+ });
+ };
+
+ const getToken = () => {
+ AsyncStorage.getItem("token").then((response) => {
+ setToken(response as string);
+ });
+ };
+
+ const handleDataHora = () => {
+ const dateString = new Date(params.dataHora).toLocaleString("pt-BR", {
+ year: "numeric",
+ month: "2-digit",
+ day: "2-digit",
+ hour: "2-digit",
+ minute: "2-digit",
+ });
+
+ const [data, hora] = dateString.split(" ");
+ setData(data);
+ setHora(hora);
+ };
+
+ const handleErrors = () => {
+ validateFields(titulo, data, hora, categoria, descricao, setErros);
+ };
+
+ const categorias = [
+ { key: ECategoriaRotina.GERAL, value: ECategoriaRotina.GERAL },
+ { key: ECategoriaRotina.MEDICAMENTO, value: ECategoriaRotina.MEDICAMENTO },
+ { key: ECategoriaRotina.ALIMENTACAO, value: ECategoriaRotina.ALIMENTACAO },
+ { key: ECategoriaRotina.EXERCICIOS, value: ECategoriaRotina.EXERCICIOS },
+ ];
+
+ const getDateIsoString = (data: string, hora: string) => {
+ const dateArray = data.split("/");
+ return `${dateArray[2]}-${dateArray[1]}-${dateArray[0]}T${hora}:00.000`;
+ };
+
+ const salvar = async () => {
+ if (Object.keys(erros).length > 0) {
+ setShowErrors(true);
+ return;
+ }
+
+ try {
+ setShowLoading(true);
+
+ const rotinaCollection = database.get('rotina') as Collection;
+ await database.write(async () => {
+ const rotina = await rotinaCollection.find(params.id);
+ await rotina.update(() => {
+ rotina.titulo = titulo;
+ rotina.categoria = categoria;
+ rotina.dias = dias;
+ rotina.dataHora = new Date(getDateIsoString(data, hora));
+ rotina.descricao = descricao;
+ rotina.token = token;
+ rotina.notificacao = notificacao
+ });
+ });
+
+ Toast.show({
+ type: "success",
+ text1: "Sucesso!",
+ text2: "Rotina atualizada com sucesso",
+ });
+
+ } catch(err) {
+ console.log("Erro ao atualizar rotina:", err);
+ } finally {
+ setShowLoading(false);
+ }
+ };
+
+ const apagarRotina = async () => {
+ setModalVisible(false);
+ setShowLoadingApagar(true);
+
+ try {
+ const rotinaCollection = database.get('rotina') as Collection;
+ await database.write(async () => {
+ const rotina = await rotinaCollection.find(params.id);
+
+ // TODO: mudar para `markAsDeleted` quando houver sincronização
+ await rotina.destroyPermanently();
+ });
+
+ router.replace({
+ pathname: "private/tabs/rotinas",
+ params: idoso,
+ });
+ } catch (err) {
+ console.log("Erro ao apagar rotina:", err);
+ } finally {
+ setShowLoadingApagar(false);
+ }
+ };
+
+ useEffect(() => getIdoso(), []);
+ useEffect(() => getToken(), []);
+ useEffect(() => handleErrors(), [titulo, data, hora, categoria, descricao]);
+ useEffect(() => handleDataHora(), []);
+ useEffect(() => {
+ handleNotificacao(notificacao, setNotificacao, setExpoToken);
+ }, [notificacao])
+
+ const confirmation = () => {
+ setModalVisible(!modalVisible);
+ };
+
+ const closeModal = () => {
+ setModalVisible(false);
+ };
+
+ return (
+
+
+ router.back()}>
+
+
+ Detalhes da rotina
+
+
+
+
+ setTitulo(titulo)}
+ placeholder="Adicionar título"
+ placeholderTextColor={"#3D3D3D"}
+ style={styles.inputTitulo}
+ />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ setHora(hora)}
+ />
+
+
+
+
+
+
+
+ {!categoria ||
+ (categoria === ECategoriaRotina.GERAL && (
+
+ ))}
+ {categoria === ECategoriaRotina.ALIMENTACAO && (
+
+ )}
+ {categoria === ECategoriaRotina.MEDICAMENTO && (
+
+ )}
+ {categoria === ECategoriaRotina.EXERCICIOS && (
+
+ )}
+ {/* */}
+
+
+
+
+
+
+ Se repete às:
+
+
+
+
+
+
+
+
+ Ativar notificação
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {showLoadingApagar ? (
+
+ ) : (
+ Apagar Rotina
+ )}
+
+
+
+
+
+
+ );
+}
+
+const styles = StyleSheet.create({
+ header: {
+ backgroundColor: "#2CCDB5",
+ height: 60,
+ flexDirection: "row",
+ alignItems: "center",
+ },
+ tituloheader: {
+ fontWeight: "bold",
+ color: "white",
+ fontSize: 20,
+ },
+ rotina: {
+ borderRadius: 15,
+ backgroundColor: "white",
+ margin: 15,
+ padding: 15,
+ shadowColor: "#000",
+ shadowOffset: { width: 1, height: 1 },
+ shadowOpacity: 0.3,
+ shadowRadius: 6,
+ alignItems: "center",
+ },
+ titulo: {
+ flexDirection: "row",
+ marginTop: 10,
+ borderBottomWidth: 1,
+ borderBottomColor: "#333333",
+ paddingBottom: 5,
+ marginBottom: 1,
+ },
+ inputTitulo: {
+ color: "black",
+ fontSize: 17,
+ textAlign: "center",
+ },
+ dataHora: {
+ flexDirection: "row",
+ borderBottomWidth: 1,
+ borderBottomColor: "black",
+ paddingBottom: 5,
+ width: 300,
+ marginBottom: 1,
+ },
+ iconDataHora: {
+ fontSize: 25,
+ opacity: 0.8,
+ },
+ textInput: {
+ paddingLeft: 10,
+ color: "black",
+ fontSize: 17,
+ width: 280,
+ },
+ categoria: {
+ flexDirection: "row",
+ borderBottomWidth: 1,
+ width: 300,
+ alignItems: "baseline",
+ paddingBottom: 5,
+ },
+ iconCategoria: {
+ fontSize: 25,
+ opacity: 0.8,
+ },
+ dropdown: {
+ borderWidth: 0,
+ paddingLeft: 10,
+ width: 280,
+ fontSize: 17,
+ },
+ categoriaSelecionada: {
+ fontSize: 17,
+ color: "#3D3D3D",
+ },
+ repete: {
+ alignSelf: "flex-start",
+ marginTop: 10,
+ fontSize: 17,
+ color: "#616161",
+ },
+ weekDays: {
+ flexDirection: "row",
+ marginTop: 15,
+ marginBottom: 30,
+ },
+ iconDesciption: {
+ width: "10%",
+ fontSize: 18,
+ },
+ descricao: {
+ borderBottomWidth: 0,
+ borderBottomColor: "black",
+ paddingBottom: 5,
+ width: 300,
+ },
+ textInputDescription: {
+ borderRadius: 10,
+ backgroundColor: "#F1F1F1",
+ fontSize: 17,
+ width: 300,
+ padding: 12,
+ },
+ linkButton: {
+ marginTop: 20,
+ marginBottom: 40,
+ alignItems: "center",
+ width: 250,
+ },
+ erroTitulo: {
+ marginBottom: 35,
+ },
+ erro: {
+ marginBottom: 15,
+ alignSelf: "flex-start",
+ },
+ apagar: {
+ color: "#FF7F7F",
+ alignSelf: "center",
+ fontSize: 18,
+ fontWeight: "600",
+ marginBottom: 25,
+ alignItems: "center",
+ },
+ notificacaoContainer: {
+ flexDirection: "row",
+ alignItems: "center",
+ width: "100%",
+ fontWeight: "700",
+ marginBottom: 25,
+ },
+ notificacaoText: {
+ fontWeight: "600",
+ marginLeft: 7,
+ fontSize: 16,
+ color: "#616161",
+ },
+});
diff --git a/src/app/private/pages/esqueciSenha.tsx b/src/app/private/pages/esqueciSenha.tsx
new file mode 100644
index 00000000..f9a98f4e
--- /dev/null
+++ b/src/app/private/pages/esqueciSenha.tsx
@@ -0,0 +1,123 @@
+import React, { useState } from "react";
+import { forgotPassword } from "../../services/user.service";
+import { Image, Alert, Text, View, TextInput, StyleSheet, TouchableOpacity } from "react-native";
+import { router } from "expo-router";
+import { ScrollView } from "react-native";
+import BackButton from "../../components/BackButton"
+//import BackButton from "/components/BackButton.tsx"; Não consigo achar esse caminho, preciso fazer rodar... (é o botão q volta pra outra pag)
+
+export default function EsqueciSenha() {
+ const [email, setEmail] = useState("");
+
+ const handleRecuperarSenha = async () => {
+ if (!email) {
+ Alert.alert("Erro", "Por favor, insira um email válido.");
+ return;
+ }
+ else if(email){
+ Alert.alert("Mensagem de email enviada com sucesso!")
+ router.push("/public/login")
+ }
+ try {
+ const response = await forgotPassword(email);
+ console.log("E-mail de recuperação enviado:", response);
+ } catch (error) {
+ console.error("Erro ao solicitar recuperação de senha:", error.message);
+ }
+ };
+
+ return (
+
+
+
+
+
+
+
+
+
+ {/* Logo deveria estar aqui, mas não consegui encaixá-la */}
+
+ Esqueceu sua senha?
+ Calma, a GERO te ajuda!!
+
+
+
+
+
+
+ Recuperar senha
+
+
+ );
+}
+
+const styles = StyleSheet.create({
+ container: {
+ flex: 1,
+ justifyContent: "space-between",
+ alignItems: "center",
+ backgroundColor: "#FFF",
+ padding: 20,
+ },
+ logo: {
+ width: 280,
+ height: 90,
+ marginBottom: 40,
+ },
+ title: {
+ fontSize: 28,
+ fontWeight: "300",
+ textAlign: "center",
+ marginBottom: 19,
+ },
+ subtitle: {
+ fontSize: 18,
+ fontWeight: "300",
+ textAlign: "center",
+ marginBottom: 10,
+ },
+ inputContainer: {
+ width: "90%",
+ maxWidth: 400,
+ borderBottomWidth: 1,
+ borderBottomColor: "#CCC",
+ marginBottom: 20,
+ },
+ input: {
+ fontSize: 16,
+ paddingVertical: 8,
+ paddingHorizontal: 10,
+ color: "#333",
+ width: "100%",
+ },
+ button: {
+ width: "90%",
+ maxWidth: 200,
+ backgroundColor: "#2CCDB5",
+ paddingVertical: 12,
+ borderRadius: 8,
+ alignItems: "center",
+ },
+ buttonText: {
+ color: "#FFF",
+ fontSize: 16,
+ fontWeight: "600",
+ },
+ imagem: {
+ flex: 1,
+ justifyContent: "center",
+ alignItems: "center",
+ marginTop: 50,
+ },
+});
diff --git a/src/app/private/pages/event.tsx b/src/app/private/pages/event.tsx
new file mode 100644
index 00000000..5dffb255
--- /dev/null
+++ b/src/app/private/pages/event.tsx
@@ -0,0 +1,43 @@
+import React from "react";
+import { View, Text, StyleSheet } from "react-native";
+
+interface EventProps {
+ title: string;
+ time: string;
+}
+
+const Event: React.FC = ({ title, time }) => {
+ return (
+
+ {title}
+ {time}
+
+ );
+};
+
+const styles = StyleSheet.create({
+ container: {
+ backgroundColor: "#fff",
+ padding: 16,
+ margin: 8,
+ borderRadius: 8,
+ shadowColor: "#000",
+ shadowOffset: {
+ width: 0,
+ height: 2,
+ },
+ shadowOpacity: 0.25,
+ shadowRadius: 3.84,
+ elevation: 5,
+ },
+ title: {
+ fontSize: 18,
+ fontWeight: "bold",
+ },
+ time: {
+ fontSize: 14,
+ marginTop: 8,
+ },
+});
+
+export default Event;
diff --git a/src/app/private/pages/listarIdosos.tsx b/src/app/private/pages/listarIdosos.tsx
new file mode 100644
index 00000000..c4c4f26a
--- /dev/null
+++ b/src/app/private/pages/listarIdosos.tsx
@@ -0,0 +1,312 @@
+import React, { useEffect, useState } from "react";
+import {
+ View,
+ Text,
+ StyleSheet,
+ Pressable,
+ ActivityIndicator,
+} from "react-native";
+import { FlatList } from "react-native";
+import { AntDesign } from "@expo/vector-icons";
+import BackButton from "../../components/BackButton";
+import CardIdoso from "../../components/CardIdoso";
+import { useRouter } from "expo-router";
+import { IIdoso, IOrder } from "../../interfaces/idoso.interface";
+import Toast from "react-native-toast-message";
+import { SelectList } from "react-native-dropdown-select-list";
+import AsyncStorage from "@react-native-async-storage/async-storage";
+import { IUser } from "../../interfaces/user.interface";
+import database from "../../db";
+import Idoso from "../../model/Idoso";
+import { Collection, Q } from "@nozbe/watermelondb";
+import { getImageUri } from "../../shared/helpers/image.helper";
+
+
+interface IOrderOption {
+ key: IOrder;
+ value: string;
+}
+
+
+const data: IOrderOption[] = [
+ {
+ key: {
+ column: "nome",
+ dir: "ASC",
+ },
+ value: "A-Z",
+ },
+ {
+ key: {
+ column: "nome",
+ dir: "DESC",
+ },
+ value: "Z-A",
+ },
+ {
+ key: {
+ column: "dataNascimento",
+ dir: "DESC",
+ },
+ value: "Mais atual",
+ },
+ {
+ key: {
+ column: "dataNascimento",
+ dir: "ASC",
+ },
+ value: "Mais antigo",
+ },
+];
+
+
+export default function ListarIdosos() {
+ const [idosos, setIdosos] = useState([]);
+ const [loading, setLoading] = useState(true);
+ const [orderOption, setOrderOption] = useState(data[0].key);
+ const [idUsuario, setIdUsuario] = useState(null);
+
+
+ const router = useRouter();
+
+
+ useEffect(() => {
+ const getIdUsuario = async () => {
+ try {
+ const response = await AsyncStorage.getItem("usuario");
+ if (response) {
+ const usuario = JSON.parse(response) as IUser;
+ setIdUsuario(usuario.id);
+ console.log("Usuário logado:", usuario);
+ }
+ } catch (error) {
+ console.error("Erro ao obter usuário:", error);
+ }
+ };
+
+
+ getIdUsuario();
+ }, []);
+
+
+ const getIdosos = async () => {
+ if (!idUsuario) return;
+
+
+ setLoading(true);
+
+
+ try {
+ const idosoCollection = database.get('idoso') as Collection;
+
+
+ const query = Q.sortBy(
+ orderOption.column,
+ orderOption.dir.toLowerCase() as 'asc' | 'desc'
+ );
+
+
+ const idosoRecords = await idosoCollection.query(query).fetch();
+
+
+ const mappedIdoso = idosoRecords.map((item) => ({
+ ...item._raw,
+ foto: getImageUri(item.foto),
+ }));
+
+
+ setIdosos(mappedIdoso);
+ console.log("Idosos carregados:", mappedIdoso);
+ } catch (err) {
+ const error = err as { message: string };
+ Toast.show({
+ type: "error",
+ text1: "Erro!",
+ text2: error.message,
+ });
+ } finally {
+ setLoading(false);
+ }
+ };
+
+
+ const navigateCadastrar = () => {
+ router.push("/private/pages/cadastrarIdoso");
+ };
+
+
+ useEffect(() => {
+ if (idUsuario) {
+ getIdosos();
+ }
+ }, [orderOption, idUsuario]);
+
+
+ return (
+
+
+
+
+
+
+ De quem está cuidando agora?
+
+
+
+ {
+ setOrderOption(item);
+ }}
+ search={false}
+ boxStyles={styles.boxDropDown}
+ inputStyles={styles.boxInputDropDown}
+ dropdownStyles={styles.dropDown}
+ placeholder="selecione"
+ />
+
+
+
+ {loading && (
+
+
+
+ )}
+
+
+ {!loading && (
+
+ }
+ />
+
+ )}
+
+
+
+ Cadastrar um idoso
+
+
+
+ );
+}
+
+
+const styles = StyleSheet.create({
+ screen: {
+ backgroundColor: "#FFFFFF",
+ height: "100%",
+ },
+ backButton: {
+ height: 60,
+ flexDirection: "row",
+ alignItems: "center",
+ },
+ header: {
+ alignSelf: "center",
+ fontSize: 25,
+ fontWeight: "bold",
+ color: "#3d3d3d",
+ marginBottom: 20,
+ textAlign: "center",
+ },
+ cadastroContainer: {
+ flexDirection: "column",
+ alignItems: "center",
+ justifyContent: "center",
+ position: "absolute",
+ bottom: 0,
+ right: 0,
+ left: 0,
+ backgroundColor: "white",
+ paddingTop: 10,
+ paddingBottom: 10,
+ },
+ cadastroBtn: {
+ flexDirection: "column",
+ alignItems: "center",
+ justifyContent: "center",
+ width: "100%",
+ },
+ cadastroText: {
+ marginTop: 8,
+ fontWeight: "500",
+ },
+ cardIdoso: {
+ alignItems: "center",
+ justifyContent: "space-between",
+ marginBottom: 250,
+ },
+ idosoSelecionado: {
+ marginLeft: 16,
+ marginRight: 16,
+ marginBottom: 32,
+ borderWidth: 3,
+ borderColor: "#2CCDB5",
+ },
+ actionButton: {
+ flexDirection: "row",
+ alignItems: "center",
+ justifyContent: "center",
+ padding: 5,
+ borderRadius: 5,
+ width: 110,
+ shadowColor: "#333",
+ shadowOffset: { width: 0, height: 1 },
+ shadowOpacity: 0.5,
+ shadowRadius: 2,
+ },
+ editButton: {
+ backgroundColor: "#2CCDB5",
+ },
+ actionButtonText: {
+ color: "white",
+ fontSize: 13,
+ fontWeight: "700",
+ marginRight: 5,
+ },
+ actions: {
+ alignItems: "center",
+ width: "100%",
+ padding: 10,
+ paddingBottom: 15,
+ },
+ loading: {
+ flexDirection: "row",
+ alignItems: "center",
+ justifyContent: "center",
+ backgroundColor: "white",
+ marginVertical: 50,
+ },
+ boxDropDownDefault: {
+ borderWidth: 0,
+ backgroundColor: "#2CCDB5",
+ },
+ boxDropDown: {
+ borderWidth: 0,
+ width: 149,
+ backgroundColor: "#2CCDB5",
+ shadowRadius: 1,
+ shadowColor: "#3d3d3d",
+ marginLeft: 5,
+ },
+ boxInputDropDown: {
+ color: "#FFFFFF",
+ fontSize: 16,
+ paddingRight: 6,
+ },
+ dropDown: {
+ borderColor: "#2CCDB5",
+ width: 150,
+ marginTop: 3,
+ marginLeft: 5,
+ },
+ list: {
+ width: "24%",
+ marginLeft: 10,
+ marginBottom: 20,
+ },
+});
diff --git a/src/app/private/pages/visualizarMetrica.tsx b/src/app/private/pages/visualizarMetrica.tsx
new file mode 100644
index 00000000..9a2142c5
--- /dev/null
+++ b/src/app/private/pages/visualizarMetrica.tsx
@@ -0,0 +1,406 @@
+import React, { useEffect, useState } from "react";
+import AsyncStorage from "@react-native-async-storage/async-storage";
+import { IUser } from "../../interfaces/user.interface";
+import NaoAutenticado from "../../components/NaoAutenticado";
+import { View, StyleSheet, Pressable, Text } from "react-native";
+import Icon from "react-native-vector-icons/MaterialCommunityIcons";
+import { IIdoso } from "../../interfaces/idoso.interface";
+import { router, useLocalSearchParams } from "expo-router";
+import {
+ EMetricas,
+ IMetrica,
+ IMetricaFilter,
+ IMetricaValueFilter,
+ IOrder,
+ IValorMetrica,
+} from "../../interfaces/metricas.interface";
+import {
+ getAllMetricaValues,
+ postMetricaValue,
+} from "../../services/metricaValue.service";
+import Toast from "react-native-toast-message";
+import { FlatList } from "react-native";
+import ModalMetrica from "../../components/ModalMetrica";
+import ModalMeta from "../../components/ModalMeta";
+import CardValorMetrica from "../../components/CardValorMetrica";
+import {
+ getAllMetrica,
+ getSomaHidratacao,
+ updateMetrica,
+} from "../../services/metrica.service";
+import database from "../../db";
+import { Collection, Q } from "@nozbe/watermelondb";
+import ValorMetrica from "../../model/ValorMetrica";
+
+export default function VisualizarMetrica() {
+ const params = useLocalSearchParams() as unknown as IMetrica;
+ const [user, setUser] = useState(undefined);
+ const [token, setToken] = useState("");
+ const [valueMetrica, setValueMetrica] = useState([]);
+ const [idoso, setIdoso] = useState();
+ const [showLoading, setShowLoading] = useState(false);
+ const [modalVisible, setModalVisible] = useState(false);
+ const [modalMetaVisible, setModalMetaVisible] = useState(false);
+ const [meta, SetMeta] = useState(params.valorMaximo);
+ const [somaMeta, setSomaMeta] = useState(0);
+
+ const order: IOrder = {
+ column: "dataHora",
+ dir: "DESC",
+ };
+
+ const handleUser = () => {
+ AsyncStorage.getItem("usuario").then((response) => {
+ const usuario = JSON.parse(response as string);
+ setUser(usuario);
+ });
+
+ AsyncStorage.getItem("token").then((response) => {
+ setToken(response as string);
+ getHidratacao(response as string);
+ });
+ };
+
+ const getIdoso = () => {
+ AsyncStorage.getItem("idoso").then((idosoString) => {
+ if (idosoString) {
+ const idosoPayload = JSON.parse(idosoString) as IIdoso;
+ setIdoso(idosoPayload);
+ }
+ });
+ };
+
+ const getMetricasValues = async () => {
+ try {
+ setShowLoading(true);
+
+ console.log(params);
+
+ const valorMetricasCollection = database.get('valor_metrica');
+ const valoresMetrica = await valorMetricasCollection.query(
+ Q.where('metrica_id', params.id),
+ Q.sortBy('created_at', Q.desc),
+ Q.take(100)
+ ).fetch();
+
+ setValueMetrica(valoresMetrica);
+ } catch (err) {
+ console.log("Erro ao buscar valores de metrica:", err);
+ } finally {
+ setShowLoading(false);
+ }
+ };
+
+ const novoValor = () => {
+ setModalVisible(true);
+ };
+
+ const novaMeta = () => {
+ setModalMetaVisible(true);
+ };
+
+ const salvar = async (valor: string) => {
+ try {
+ setShowLoading(true);
+ const valorMetricasCollection = database.get('valor_metrica') as Collection;
+
+ await database.write(async () => {
+ const createdValorMetrica = await valorMetricasCollection.create((valorMetrica) => {
+ valorMetrica.idMetrica = String(params.id);
+ valorMetrica.valor = valor;
+ valorMetrica.dataHora = new Date();
+ });
+ });
+ setModalVisible(false);
+ getMetricasValues();
+ getHidratacao(token);
+ } catch (err) {
+ console.log("Erro ao salvar valor de metrica:", err);
+ } finally {
+ setShowLoading(false);
+ }
+ };
+
+ const back = () => {
+ router.replace({
+ pathname: "private/tabs/registros",
+ });
+ };
+
+ const getIMC = async () => {
+ if (params.categoria !== EMetricas.IMC || !idoso) return;
+
+ try {
+ const valorMetricasCollection = database.get('valor_metrica') as Collection;
+ const metricaAltura = await valorMetricasCollection.query(
+ Q.on('metrica', [
+ Q.where('idoso_id', idoso.id),
+ Q.where('categoria', EMetricas.ALTURA),
+ ]),
+ Q.sortBy('created_at', Q.desc),
+ Q.take(1)
+ ).fetch();
+
+ const metricaPeso = await valorMetricasCollection.query(
+ Q.on('metrica', [
+ Q.where('idoso_id', idoso.id),
+ Q.where('categoria', EMetricas.PESO),
+ ]),
+ Q.sortBy('created_at', Q.desc),
+ Q.take(1)
+ ).fetch();
+ const altura = metricaAltura.at(0)?.valor;
+ const peso = metricaPeso.at(0)?.valor;
+
+ const alturaMetro = Number(altura) / 100;
+ const alturaMetro2 = alturaMetro != 0.0 ? alturaMetro * alturaMetro : 1.0;
+
+ return (Number(peso) / alturaMetro2).toFixed(2);
+
+ } catch (err) {
+ console.log("Erro ao buscar metricas pro IMC:", err);
+ return 0;
+ }
+ };
+
+ // const getLastValue = async (idMetrica: number) => {
+ // const filter: IMetricaValueFilter = { idMetrica };
+ // const response = await getAllMetricaValues(filter, order);
+ // const newMetricasValues = response.data as IValorMetrica[];
+ //
+ // const valor = newMetricasValues[0]?.valor;
+ //
+ // if (!valor) {
+ // throw new Error("Altura/Peso não cadastrado!");
+ // }
+ //
+ // return valor;
+ // };
+
+ const calcular = async () => {
+ try {
+ setShowLoading(true);
+ const IMC = await getIMC();
+ salvar(String(IMC));
+ } finally {
+ setShowLoading(false);
+ }
+ };
+
+ const adicionarMeta = async (valorMaximo: string) => {
+ const body = {
+ valorMaximo: valorMaximo,
+ };
+
+ try {
+ setShowLoading(true);
+ const response = await updateMetrica(params.id, body, token);
+ SetMeta(response.data?.valorMaximo);
+ Toast.show({
+ type: "success",
+ text1: "Sucesso!",
+ text2: response.message as string,
+ });
+ setModalMetaVisible(false);
+ getMetricasValues();
+ } catch (err) {
+ const error = err as { message: string };
+ Toast.show({
+ type: "error",
+ text1: "Erro!",
+ text2: error.message,
+ });
+ } finally {
+ setShowLoading(false);
+ }
+ };
+
+ const getHidratacao = (token: string) => {
+ return 0; // Forgive me father
+ if (params.categoria !== EMetricas.HIDRATACAO) return;
+
+ getSomaHidratacao(params.id, token)
+ .then((response) => {
+ setSomaMeta(response);
+ })
+ .catch((err) => console.log(err));
+ };
+
+ useEffect(() => {
+ getIdoso();
+ getMetricasValues();
+ handleUser();
+ }, []);
+
+ return !user?.id ? (
+
+ ) : (
+
+
+ back()}>
+
+
+ {params.categoria}
+
+
+
+ {params.categoria == EMetricas.IMC && (
+
+
+
+ Calcular automaticamente
+
+
+ )}
+ {params.categoria == EMetricas.HIDRATACAO && (
+
+ Adicionar meta
+
+ )}
+
+
+ Novo valor
+
+
+
+ {params.categoria == EMetricas.HIDRATACAO && (
+
+ = Number(meta) ? "green" : "#000" },
+ ]}
+ >
+ = Number(meta) ? "green" : "#000" },
+ ]}
+ >{`${somaMeta} ml/${meta} ml`}
+
+
+ )}
+
+ (
+
+
+
+ )}
+ />
+
+ {modalVisible && (
+ setModalVisible(false)}
+ metrica={params}
+ message={params.categoria}
+ />
+ )}
+ {modalMetaVisible && (
+ setModalMetaVisible(false)}
+ metrica={params}
+ message={params.categoria}
+ />
+ )}
+
+ );
+}
+
+const styles = StyleSheet.create({
+ header: {
+ backgroundColor: "#2CCDB5",
+ width: "100%",
+ padding: 20,
+ flexDirection: "row",
+ alignItems: "center",
+ justifyContent: "flex-start",
+ },
+
+ botaoEditarMetricas: {
+ flexDirection: "row",
+ alignItems: "center",
+ backgroundColor: "#B4026D",
+ paddingHorizontal: 10,
+ paddingVertical: 5,
+ borderRadius: 10,
+ marginVertical: 10,
+ },
+
+ botaoAdicionarMeta: {
+ flexDirection: "row",
+ alignItems: "center",
+ backgroundColor: "#B4026D",
+ paddingHorizontal: 10,
+ paddingVertical: 5,
+ borderRadius: 10,
+ marginVertical: 10,
+ position: "absolute",
+ left: 10,
+ },
+
+ textoBotaoEditarMetricas: {
+ color: "white",
+ fontWeight: "600",
+ fontSize: 14,
+ marginLeft: 5,
+ },
+ textoBotaoAdicionarMeta: {
+ color: "white",
+ fontWeight: "600",
+ fontSize: 14,
+ marginLeft: 5,
+ padding: 3,
+ },
+
+ textheader: {
+ color: "white",
+ fontSize: 20,
+ fontWeight: "bold",
+ },
+
+ botoes: {
+ marginLeft: 10,
+ marginRight: 10,
+ flexDirection: "row",
+ justifyContent: "space-between",
+ },
+ botao: {
+ flexDirection: "row",
+ justifyContent: "flex-end",
+ marginRight: 10,
+ },
+ valorMaximoHidratacao: {
+ alignItems: "center",
+ marginTop: 15,
+ marginBottom: 15,
+ },
+ valorAtualCotainer: {
+ borderWidth: 1,
+ borderRadius: 10,
+ padding: 5,
+ paddingHorizontal: 15,
+ opacity: 0.7,
+ },
+ valorAtualTexto: {
+ fontSize: 25,
+ },
+ botaoLimpar: {
+ alignItems: "center",
+ marginTop: 10,
+ },
+ textoBotaoLimpar: {
+ fontSize: 15,
+ textDecorationLine: "underline",
+ },
+});
diff --git a/src/app/private/pages/visualizarPublicacao.tsx b/src/app/private/pages/visualizarPublicacao.tsx
new file mode 100644
index 00000000..1a41856d
--- /dev/null
+++ b/src/app/private/pages/visualizarPublicacao.tsx
@@ -0,0 +1,351 @@
+import { router, useLocalSearchParams } from "expo-router";
+import React, { useEffect, useState } from "react";
+import {
+ ActivityIndicator,
+ Pressable,
+ ScrollView,
+ StyleSheet,
+ Text,
+ View,
+} from "react-native";
+import AntDesing from "react-native-vector-icons/AntDesign";
+import Icon from "react-native-vector-icons/MaterialCommunityIcons";
+import {
+ IPublicacao,
+ IPublicacaoParams,
+ IPublicacaoUsuario,
+} from "../../interfaces/forum.interface";
+import { IUser } from "../../interfaces/user.interface";
+import AsyncStorage from "@react-native-async-storage/async-storage";
+import PublicacaoVisualizar from "../../components/PublicacaoVisualizar";
+import BackButton from "../../components/BackButton";
+import ModalConfirmation from "../../components/ModalConfirmation";
+import {
+ deletePublicacaoById,
+ updatePublicacao,
+} from "../../services/forum.service";
+import { ECategoriaPublicacao } from "../../interfaces/forum.interface";
+import Toast from "react-native-toast-message";
+
+export default function VisualizarPublicacao() {
+
+ const params = useLocalSearchParams() as unknown as IPublicacaoParams;
+ const [idUsuario, setIdUsuario] = useState(null);
+ const [isAdmin, setIsAdmin] = useState(null);
+ const [modalVisibleApagar, setModalVisibleApagar] = useState(false);
+ const [modalVisibleReportar, setModalVisibleReportar] = useState(false);
+ const [showLoadingApagar, setShowLoadingApagar] = useState(false);
+ const [showLoadingReportar, setShowLoadingReportar] = useState(false);
+ const [token, setToken] = useState("");
+ const [publicacao, setPublicacao] = useState(null);
+
+ const mapIdUsuarioReporte = (payload: string) => {
+ if (!payload) return [];
+
+ return payload.split(",").map((item) => Number(item));
+ };
+
+// Verifique como você obtém a publicação dos parâmetros
+const getPublicacaoFromParams = () => {
+ const payload: IPublicacaoUsuario = {
+ ...params,
+ idUsuarioReporte: mapIdUsuarioReporte(params.idUsuarioReporte),
+ };
+ setPublicacao(payload);
+};
+
+ const getUsuario = () => {
+ AsyncStorage.getItem("usuario").then((response) => {
+ const usuario = JSON.parse(response as string) as IUser;
+ setIdUsuario(usuario?.id);
+ setIsAdmin(usuario?.admin);
+ });
+ };
+
+ const getToken = () => {
+ AsyncStorage.getItem("token").then((response) => {
+ setToken(response as string);
+ });
+ };
+
+ const editarPublicacao = () => {
+ const pub = publicacao ?? { id: 0, titulo: "", descricao: "", dataHora: new Date(), categoria: ECategoriaPublicacao.GERAL, idUsuario: 0, idUsuarioReporte: [] };
+ router.push({
+ pathname: "/private/pages/editarPublicacao",
+ params: {
+ id: pub.id,
+ titulo: pub.titulo,
+ descricao: pub.descricao,
+ dataHora: pub.dataHora.toString(), // Converte para string se necessário
+ categoria: pub.categoria,
+ idUsuario: pub.idUsuario,
+ idUsuarioReporte: pub.idUsuarioReporte.join(","), // Converte o array para string se necessário
+ },
+ });
+ };
+
+ const apagarPublicacao = async () => {
+ setModalVisibleApagar(false);
+ setShowLoadingApagar(true);
+
+ const id = (publicacao as IPublicacaoUsuario).id;
+
+ try {
+ await deletePublicacaoById(id, token);
+ router.replace("/private/tabs/forum");
+ } catch (err) {
+ const error = err as { message: string };
+ Toast.show({
+ type: "error",
+ text1: "Erro!",
+ text2: error.message,
+ });
+ } finally {
+ setShowLoadingApagar(false);
+ }
+ };
+
+ const reportarPublicacao = async () => {
+ setShowLoadingReportar(true);
+ setModalVisibleReportar(false);
+
+ const publicacaoLoaded = publicacao as IPublicacaoUsuario;
+
+ const body = {
+ idUsuarioReporte: [
+ ...publicacaoLoaded.idUsuarioReporte,
+ Number(idUsuario),
+ ],
+ };
+
+ updateReporte(publicacaoLoaded, body);
+ };
+
+ const cancelarReporte = async () => {
+ setShowLoadingReportar(true);
+ setModalVisibleReportar(false);
+
+ const publicacaoLoaded = publicacao as IPublicacaoUsuario;
+
+ const idRemovido = publicacaoLoaded.idUsuarioReporte.filter(
+ (id) => id !== Number(idUsuario),
+ );
+
+ const body = {
+ idUsuarioReporte: idRemovido,
+ };
+
+ updateReporte(publicacaoLoaded, body);
+ };
+
+ const updateReporte = async (
+ publicacaoLoaded: IPublicacaoUsuario,
+ body: Partial,
+ ) => {
+ try {
+ const response = await updatePublicacao(publicacaoLoaded.id, body, token);
+ setPublicacao({
+ ...publicacao,
+ ...(response.data as IPublicacaoUsuario),
+ });
+ } catch (err) {
+ const error = err as { message: string };
+ Toast.show({
+ type: "error",
+ text1: "Erro!",
+ text2: error.message,
+ });
+ } finally {
+ setShowLoadingReportar(false);
+ }
+ };
+
+ useEffect(() => getPublicacaoFromParams(), []);
+ useEffect(() => getUsuario(), []);
+ useEffect(() => getToken(), []);
+
+ return (
+
+
+
+
+ Visualizar Publicação
+
+
+
+
+ {(isAdmin || publicacao?.idUsuario == idUsuario) && (
+ setModalVisibleApagar(true)}
+ style={[styles.actionButton, styles.deleteButton]}
+ testID="deleteBtn"
+ >
+ {showLoadingApagar && (
+
+ )}
+
+ {!showLoadingApagar && (
+ <>
+ Apagar
+
+ >
+ )}
+
+ )}
+
+ {idUsuario && publicacao?.idUsuario != idUsuario && (
+ setModalVisibleReportar(true)}
+ style={[styles.actionButton, styles.reportButton]}
+ testID="reportBtn"
+ >
+ {showLoadingReportar && (
+
+ )}
+
+ {!showLoadingReportar &&
+ publicacao?.idUsuarioReporte.includes(idUsuario) && (
+ <>
+ Desfazer
+
+ >
+ )}
+ {!showLoadingReportar &&
+ !publicacao?.idUsuarioReporte.includes(idUsuario) && (
+ <>
+ Reportar
+
+ >
+ )}
+
+ )}
+
+ {idUsuario && publicacao?.idUsuario == idUsuario && (
+
+ Editar
+
+
+ )}
+
+
+ {publicacao && }
+
+
+ setModalVisibleApagar(false)}
+ message="Apagar publicação?"
+ messageButton="Apagar"
+ testID="deleteModal"
+ />
+ setModalVisibleReportar(false)}
+ message={
+ publicacao?.idUsuarioReporte.includes(Number(idUsuario))
+ ? "Desfazer reporte?"
+ : "Reportar publicação?"
+ }
+ messageButton={
+ publicacao?.idUsuarioReporte.includes(Number(idUsuario))
+ ? "Desfazer"
+ : "Reportar"
+ }
+ testID="reportModal"
+ />
+
+ );
+}
+
+const styles = StyleSheet.create({
+ actions: {
+ flex: 1,
+ flexDirection: "row",
+ alignItems: "center",
+ justifyContent: "space-between",
+ width: "100%",
+ padding: 10,
+ paddingBottom: 5,
+ },
+ header: {
+ backgroundColor: "#2CCDB5",
+ height: 60,
+ flexDirection: "row",
+ alignItems: "center",
+ },
+ tituloheader: {
+ fontWeight: "bold",
+ color: "white",
+ fontSize: 20,
+ },
+ botoes: {
+ flexDirection: "row",
+ justifyContent: "space-between",
+ },
+ actionButton: {
+ flexDirection: "row",
+ alignItems: "center",
+ justifyContent: "center",
+ padding: 5,
+ borderRadius: 5,
+ width: 110,
+ shadowColor: "#333",
+ shadowOffset: { width: 0, height: 1 },
+ shadowOpacity: 0.5,
+ shadowRadius: 2,
+ },
+ editButton: {
+ backgroundColor: "#2CCDB5",
+ },
+ deleteButton: {
+ backgroundColor: "#FF7F7F",
+ },
+ reportButton: {
+ backgroundColor: "#FFCC00",
+ },
+ actionButtonText: {
+ color: "white",
+ fontSize: 13,
+ fontWeight: "700",
+ marginRight: 5,
+ },
+ botaoResponder: {
+ backgroundColor: "#B4026D",
+ flexDirection: "row",
+ alignItems: "center",
+ padding: 5,
+ marginRight: 15,
+ marginLeft: 15,
+ marginTop: 5,
+ borderRadius: 12,
+ width: "auto",
+ right: 0,
+ shadowColor: "#333",
+ shadowOffset: { width: 0, height: 1 },
+ shadowOpacity: 0.5,
+ shadowRadius: 2,
+ },
+ resposta: {
+ fontWeight: "bold",
+ color: "black",
+ fontSize: 24,
+ padding: 20,
+ },
+ apagar: {
+ color: "#FF7F7F",
+ alignSelf: "center",
+ fontSize: 18,
+ fontWeight: "600",
+ margin: 20,
+ },
+});
diff --git a/src/app/private/pages/visualizarValoresMedidos.tsx b/src/app/private/pages/visualizarValoresMedidos.tsx
new file mode 100644
index 00000000..99da2386
--- /dev/null
+++ b/src/app/private/pages/visualizarValoresMedidos.tsx
@@ -0,0 +1,135 @@
+import React, { useEffect, useState } from "react";
+import AsyncStorage from "@react-native-async-storage/async-storage";
+import { IUser } from "../../interfaces/user.interface";
+import NaoAutenticado from "../../components/NaoAutenticado";
+import { View, StyleSheet, Pressable, Text } from "react-native";
+import Icon from "react-native-vector-icons/FontAwesome";
+import { useNavigation } from "@react-navigation/native";
+
+export default function VisualizarValoresMedidos() {
+ const [user, setUser] = useState(undefined);
+ const [selectedMetric, setSelectedMetric] = useState(
+ undefined,
+ );
+ const [hasData, setHasData] = useState(false);
+ const navigation = useNavigation();
+
+ const handleUser = () => {
+ AsyncStorage.getItem("usuario").then((response) => {
+ const usuario = JSON.parse(response as string);
+ setUser(usuario);
+ });
+ };
+
+ useEffect(() => {
+ handleUser();
+
+ AsyncStorage.getItem("selectedMetric").then((metric) => {
+ setSelectedMetric(metric || "");
+ });
+
+ const temDados = false;
+ setHasData(temDados);
+ }, []);
+
+ const novoValor = () => {};
+
+ const apagarMetrica = () => {};
+
+ return !user?.id ? (
+
+ ) : (
+
+
+ navigation.goBack()}
+ style={styles.iconContainer}
+ >
+
+
+ {selectedMetric}{" "}
+ {/*Substituir lógica tual de puxar o título/categoria da métrica*/}
+
+
+
+
+ Novo Valor
+
+
+ {hasData ? (
+
+ {/* ... outros componentes relacionados aos dados cadastrados */}
+
+ ) : (
+ // Conteúdo para nenhum dado cadastrado
+ Nenhum dado cadastrado
+ )}
+
+
+ Apagar Métrica
+
+
+ );
+}
+
+const styles = StyleSheet.create({
+ container: {
+ flex: 1,
+ },
+ header: {
+ backgroundColor: "#2CCDB5",
+ width: "100%",
+ padding: 20,
+ flexDirection: "row",
+ alignItems: "center",
+ },
+ iconContainer: {
+ marginRight: 10,
+ },
+ headerText: {
+ flex: 1,
+ color: "white",
+ fontSize: 18,
+ fontWeight: "600",
+ textAlign: "center",
+ },
+
+ botaoNovoValor: {
+ flexDirection: "row",
+ alignItems: "center",
+ backgroundColor: "#B4026D",
+ paddingHorizontal: 10,
+ paddingVertical: 5,
+ borderRadius: 10,
+ marginLeft: "auto",
+ marginRight: 10,
+ marginVertical: 10,
+ },
+
+ textoBotaoNovoValor: {
+ color: "white",
+ fontWeight: "600",
+ fontSize: 14,
+ marginLeft: 5,
+ },
+
+ nenhumDado: {
+ color: "#D3D3D3",
+ fontSize: 18,
+ fontWeight: "bold",
+ textAlign: "center",
+ marginTop: 40,
+ },
+
+ apagarMetrica: {
+ position: "absolute",
+ bottom: 60,
+ width: "100%",
+ alignItems: "center",
+ },
+ textoApagarMetrica: {
+ color: "#FF7D7D",
+ fontSize: 18,
+ fontWeight: "400",
+ },
+});
diff --git a/src/app/private/tabs/_layout.tsx b/src/app/private/tabs/_layout.tsx
new file mode 100644
index 00000000..d4aee530
--- /dev/null
+++ b/src/app/private/tabs/_layout.tsx
@@ -0,0 +1,86 @@
+import { Platform, StyleSheet } from "react-native";
+
+import Icon from "react-native-vector-icons/MaterialCommunityIcons";
+import React from "react";
+import { Tabs } from "expo-router";
+
+export default function TabsLayout() {
+ const iconComponent = (focused: boolean, size: number, iconName: string) => (
+
+ );
+
+ return (
+ <>
+
+ {
+ return iconComponent(focused, size, "calendar");
+ },
+ }}
+ />
+
+ {
+ return iconComponent(focused, size, "heart");
+ },
+ }}
+ />
+ {
+ return iconComponent(focused, size, "message");
+ },
+ }}
+ />
+ {
+ return iconComponent(focused, size, "account");
+ },
+ }}
+ />
+
+ >
+ );
+}
+
+const styles = StyleSheet.create({
+ itemIcon: {
+ color: "#fff",
+ marginTop: Platform.OS === "ios" ? 10 : 0,
+ marginBottom: Platform.OS === "ios" ? 0 : -10,
+ },
+});
diff --git a/src/app/private/tabs/forum.tsx b/src/app/private/tabs/forum.tsx
new file mode 100644
index 00000000..61f06d9f
--- /dev/null
+++ b/src/app/private/tabs/forum.tsx
@@ -0,0 +1,414 @@
+import {
+ ActivityIndicator,
+ Pressable,
+ StyleSheet,
+ Switch,
+ Text,
+ View,
+} from "react-native";
+import React, { useEffect, useState } from "react";
+
+import Icon from "react-native-vector-icons/MaterialCommunityIcons";
+import { router } from "expo-router";
+import Publicacao from "../../components/Publicacao";
+import { getAllPublicacao } from "../../services/forum.service";
+import Toast from "react-native-toast-message";
+import { ECategoriaPesquisa, ECategoriaPublicacao, IOrder, IPublicacao } from "../../interfaces/forum.interface";
+import AsyncStorage from "@react-native-async-storage/async-storage";
+import { IUser } from "../../interfaces/user.interface";
+import BarraPesquisa from "../../components/BarraPesquisa";
+import { ScrollView } from "react-native";
+import { SelectList } from "react-native-dropdown-select-list";
+
+export default function Forum() {
+ const [publicacoes, setPublicacoes] = useState([]);
+ const [showCarregarMais, setShowCarregarMais] = useState(true);
+ const [loading, setLoading] = useState(true);
+ const [loadingCarregarMais, setLoadingCarregarMais] = useState(true);
+ const [usuario, setUsuario] = useState(null);
+ const [offset, setOffset] = useState(0);
+ const [titulo, setTitulo] = useState("");
+ const [timer, setTimer] = useState(null);
+ const [isReported, setIsReported] = useState(false);
+ const [categoria, setCategoria] = useState(ECategoriaPesquisa.TODAS);
+ const order: IOrder = {
+ column: "dataHora",
+ dir: "DESC",
+ };
+
+ const data = [
+ {key: ECategoriaPesquisa.TODAS, value: ECategoriaPesquisa.TODAS},
+ {key: ECategoriaPesquisa.ALIMENTACAO, value: ECategoriaPesquisa.ALIMENTACAO},
+ {key: ECategoriaPesquisa.SAUDE, value: ECategoriaPesquisa.SAUDE},
+ {key: ECategoriaPesquisa.EXERCICIOS, value: ECategoriaPesquisa.EXERCICIOS},
+ {key: ECategoriaPesquisa.GERAL, value: ECategoriaPesquisa.GERAL},
+
+ ]
+
+ const novaPublicacao = () => {
+ router.push("private/pages/criaPublicacao");
+ };
+
+ const getUsuario = () => {
+ AsyncStorage.getItem("usuario").then((response) => {
+ const usuario = JSON.parse(response as string) as IUser;
+ setUsuario(usuario);
+ });
+ };
+
+ const getPublicacoes = (
+ anterior: IPublicacao[],
+ titulo: string,
+ isReported: boolean,
+ offset: number,
+ ) => {
+ setOffset(offset);
+ setTitulo(titulo);
+
+ if (categoria === ECategoriaPesquisa.TODAS) {
+ getAllPublicacao(offset, { titulo, isReported }, order)
+ .then((response) => {
+ const newPublicacoes = response.data as IPublicacao[];
+
+ if (newPublicacoes.length === 0) {
+ setShowCarregarMais(false);
+ }
+
+ setPublicacoes([...anterior, ...newPublicacoes]);
+ })
+ .catch((err) => {
+ const error = err as { message: string };
+ Toast.show({
+ type: "error",
+ text1: "Erro!",
+ text2: error.message,
+ });
+ })
+ .finally(() => {
+ setLoading(false);
+ setLoadingCarregarMais(false);
+ });
+
+ } else {
+ getAllPublicacao(offset, { titulo, isReported, categoria }, order)
+ .then((response) => {
+ const newPublicacoes = response.data as IPublicacao[];
+
+ if (newPublicacoes.length === 0) {
+ setShowCarregarMais(false);
+ }
+
+ setPublicacoes([...anterior, ...newPublicacoes]);
+ })
+ .catch((err) => {
+ const error = err as { message: string };
+ Toast.show({
+ type: "error",
+ text1: "Erro!",
+ text2: error.message,
+ });
+ })
+ .finally(() => {
+ setLoading(false);
+ setLoadingCarregarMais(false);
+ });
+ }
+
+ };
+
+ const handleCarregarMais = () => {
+ setLoadingCarregarMais(true);
+ getPublicacoes(publicacoes, titulo, isReported, offset + 1);
+ };
+
+ const handlePesquisar = (newTitulo: string) => {
+ setShowCarregarMais(true);
+ setLoading(true);
+ getPublicacoes([], newTitulo, isReported, 0);
+ };
+
+ const handleReports = (newValue: boolean) => {
+ setShowCarregarMais(true);
+ setLoading(true);
+ getPublicacoes([], titulo, newValue, 0);
+ };
+
+ const debounceReports = (newTitulo: boolean) => {
+ setIsReported(newTitulo);
+ if (timer) clearTimeout(timer);
+ const temp = setTimeout(() => handleReports(newTitulo), 1000);
+ setTimer(temp);
+ };
+
+ const debouncePesquisar = (newTitulo: string) => {
+ if (timer) clearTimeout(timer);
+ const temp = setTimeout(() => handlePesquisar(newTitulo), 1000);
+ setTimer(temp);
+ };
+
+ useEffect(() => getUsuario(), []);
+ useEffect(() => getPublicacoes([], "", false, 0), [categoria]);
+
+ return (
+
+
+ Publicações
+
+
+
+
+
+ {!usuario?.admin && (
+
+ {
+ setCategoria(item);
+ }}
+ search={false}
+ boxStyles={styles.boxDropDown}
+ inputStyles={styles.boxInputDropDown}
+ dropdownStyles={styles.dropDown}
+ defaultOption={{key: ECategoriaPesquisa.TODAS, value: ECategoriaPesquisa.TODAS}}
+ placeholder="Todas"
+ />
+
+
+ )}
+
+
+ {usuario?.id && usuario?.admin && (
+
+
+ Publicações reportadas
+
+ )}
+
+ {usuario?.id && (
+
+
+ Nova publicação
+
+ )}
+
+ {usuario?.admin && (
+
+ {
+ setCategoria(item);
+ }}
+ search={false}
+ boxStyles={styles.boxDropDown}
+ inputStyles={styles.boxInputDropDown}
+ dropdownStyles={styles.dropDown}
+ defaultOption={data[4]}
+ placeholder="Todas"
+ />
+
+
+ )}
+
+ {loading && (
+
+
+
+ )}
+
+ {!loading && (
+
+ {publicacoes.map((publicacao) => (
+
+
+
+ ))}
+
+ {publicacoes.length > 0 &&
+ publicacoes.length % 10 === 0 &&
+ showCarregarMais && (
+
+ {loadingCarregarMais && (
+
+ )}
+
+ {!loadingCarregarMais && (
+
+ Carregar mais
+
+ )}
+
+ )}
+
+ )}
+
+ );
+}
+
+const styles = StyleSheet.create({
+ reportadas: {
+ flex: 1,
+ flexDirection: "row",
+ alignItems: "center",
+ justifyContent: "flex-start",
+ marginVertical: 10,
+ marginLeft: 10,
+ fontWeight: "700",
+ },
+ reportadasText: {
+ fontWeight: "400",
+ marginLeft: 7,
+ fontSize: 12,
+ },
+ loading: {
+ flexDirection: "row",
+ alignItems: "center",
+ justifyContent: "center",
+ backgroundColor: "white",
+ marginTop: 50,
+ },
+ scrollView: {
+ backgroundColor: "#fff",
+ height: "100%",
+ },
+ cabecalho: {
+ flexDirection: "column",
+ backgroundColor: "#2CCDB5",
+ padding: 10,
+ },
+ iconeVoltar: {
+ color: "white",
+ alignSelf: "flex-start",
+ },
+ botaoPesquisar: {
+ flexDirection: "row",
+ alignItems: "center",
+ padding: 1,
+ borderRadius: 14,
+ },
+ textoBotaoPesquisar: {
+ color: "white",
+ fontWeight: "600",
+ fontSize: 14,
+ marginLeft: 5,
+ },
+ textoPublicacoes: {
+ fontSize: 22,
+ fontWeight: "600",
+ color: "#fff",
+ marginVertical: 10,
+ marginLeft: "auto",
+ marginRight: "auto",
+ },
+ botaoCriarPublicacao: {
+ flexDirection: "row",
+ alignItems: "center",
+ backgroundColor: "#B4026D",
+ paddingHorizontal: 10,
+ paddingVertical: 5,
+ borderRadius: 10,
+ marginLeft: "auto",
+ marginRight: 10,
+ marginVertical: 10,
+ position: "absolute",
+ right: 0,
+ height:45
+ },
+ botaoCarregarMais: {
+ flexDirection: "row",
+ justifyContent: "center",
+ alignItems: "center",
+ backgroundColor: "transparent",
+ marginHorizontal: "auto",
+ marginVertical: 25,
+ height: 40,
+ },
+ botaoPublicacaoReportada: {
+ flexDirection: "row",
+ alignItems: "center",
+ backgroundColor: "#2CCDB5",
+ padding: 5,
+ borderRadius: 14,
+ },
+ reportada: {
+ backgroundColor: "white",
+ padding: 10,
+ flexDirection: "row",
+ justifyContent: "space-between",
+ alignItems: "center",
+ },
+ avatar: {
+ height: 50,
+ width: 50,
+ borderRadius: 50,
+ },
+ postHeader: {
+ flexDirection: "row",
+ alignItems: "center",
+ padding: 15,
+ },
+ userInfo: {
+ marginLeft: 10,
+ },
+ username: {
+ fontSize: 20,
+ },
+ date: {
+ fontSize: 12,
+ },
+ postContent: {
+ fontSize: 15,
+ maxHeight: 100,
+ padding: 6,
+ textAlign: "justify",
+ },
+ botaoCarregarMaisText: {
+ color: "#2CCDB5",
+ fontWeight: "600",
+ fontSize: 14,
+ },
+ actions: {
+ flexDirection: "row",
+ justifyContent: "space-between",
+ padding: 10,
+ },
+ botoes: {
+ flexDirection: "row",
+ },
+ boxDropDownDefault: {
+ borderWidth: 0,
+ backgroundColor: "#2CCDB5",
+ },
+ boxDropDown: {
+ borderWidth: 0,
+ width: 149,
+ backgroundColor: "#2CCDB5",
+ shadowRadius: 1,
+ shadowColor: "#3d3d3d",
+ marginLeft: 5,
+ },
+ boxInputDropDown: {
+ color: "#FFFFFF",
+ fontSize: 16,
+ paddingRight: 6,
+ },
+ dropDown: {
+ borderColor: "#2CCDB5",
+ width: 150,
+ marginTop: 3,
+ marginLeft: 5,
+ },
+ list: {
+ marginTop:10,
+ marginBottom: 20,
+ },
+});
diff --git a/src/app/private/tabs/perfil.tsx b/src/app/private/tabs/perfil.tsx
new file mode 100644
index 00000000..4164ea2c
--- /dev/null
+++ b/src/app/private/tabs/perfil.tsx
@@ -0,0 +1,154 @@
+import React, { useEffect, useState } from "react";
+import Icon from "react-native-vector-icons/MaterialCommunityIcons";
+import { AntDesign } from "@expo/vector-icons";
+import { Text, View, StyleSheet, Image, Pressable } from "react-native";
+import AsyncStorage from "@react-native-async-storage/async-storage";
+import { IUser } from "../../interfaces/user.interface";
+import { router } from "expo-router";
+import NaoAutenticado from "../../components/NaoAutenticado";
+import { hasFoto } from "../../shared/helpers/foto.helper";
+import { getFoto } from "../../shared/helpers/photo.helper";
+
+export default function Perfil() {
+ const [user, setUser] = useState(undefined);
+ const [idUsuario, setIdUsuario] = useState(null);
+
+ const logout = () => {
+ AsyncStorage.clear().then(() => router.replace("/"));
+ };
+
+ const navigateEditarPerfil = () => {
+ router.push({ pathname: "/private/pages/editarPerfil", params: user });
+ };
+
+ const navigateIdosos = () => {
+ router.push({ pathname: "/private/pages/listarIdosos", params: user });
+ };
+
+ useEffect(() => getIdUsuario());
+
+ const handleUser = () => {
+ AsyncStorage.getItem("usuario").then((response) => {
+ const usuario = JSON.parse(response as string);
+ setUser(usuario);
+ });
+ };
+
+ const getIdUsuario = () => {
+ AsyncStorage.getItem("usuario").then((response) => {
+ const usuario = JSON.parse(response as string) as IUser;
+ setIdUsuario(usuario?.id);
+ });
+ };
+
+ useEffect(() => handleUser(), []);
+
+ return !idUsuario ? (
+
+ ) : (
+
+
+ {getFoto(user?.foto)}
+
+ Olá, {user?.nome}!
+
+
+
+
+
+
+
+
+ Perfil
+ Edite seu perfil
+
+
+
+
+
+
+
+ Idosos
+ Gerencie seus idosos
+
+
+
+
+
+
+
+ Logout
+ Sair da sua conta
+
+
+
+
+ );
+}
+
+const styles = StyleSheet.create({
+ header: {
+ backgroundColor: "#2CCDB5",
+ width: "100%",
+ padding: 10,
+ flexDirection: "row",
+ alignItems: "center",
+ },
+ fotoPerfil: {
+ width: 60,
+ aspectRatio: 1,
+ borderRadius: 100,
+ },
+ semFoto: { position: "relative", backgroundColor: "#EFEFF0" },
+ semFotoIcon: {
+ position: "absolute",
+ right: "38%",
+ bottom: "38%",
+ opacity: 0.4,
+ margin: "auto",
+ alignSelf: "center",
+ zIndex: 1,
+ },
+ nomeUsuario: {
+ color: "#FFFFFF",
+ fontSize: 16,
+ marginLeft: 20,
+ maxWidth: "75%",
+ },
+ negrito: {
+ fontWeight: "bold",
+ },
+ options: {
+ flexDirection: "column",
+ width: "100%",
+ height: "100%",
+ alignItems: "center",
+ },
+ option: {
+ flexDirection: "row",
+ width: "90%",
+ marginTop: 25,
+ text: "#000",
+ backgroundColor: "#FFF",
+ borderRadius: 16,
+ padding: 20,
+ },
+ optionText: {
+ flexDirection: "column",
+ marginVertical: "auto",
+ marginLeft: 15,
+ },
+ optionTextTitle: {
+ color: "#000",
+ fontWeight: "700",
+ fontSize: 20,
+ },
+ optionTextSubTitle: {
+ color: "#989898",
+ fontWeight: "500",
+ },
+});
diff --git a/src/app/private/tabs/registros.tsx b/src/app/private/tabs/registros.tsx
new file mode 100644
index 00000000..3c6fb864
--- /dev/null
+++ b/src/app/private/tabs/registros.tsx
@@ -0,0 +1,178 @@
+import React, { useEffect, useState } from "react";
+import { View, StyleSheet, Text, Image, Dimensions } from "react-native";
+import AsyncStorage from "@react-native-async-storage/async-storage";
+import { IUser } from "../../interfaces/user.interface";
+import NaoAutenticado from "../../components/NaoAutenticado";
+import { IIdoso } from "../../interfaces/idoso.interface";
+import Icon from "react-native-vector-icons/MaterialCommunityIcons";
+import IdosoNaoSelecionado from "../../components/IdosoNaoSelecionado";
+import CardMetrica from "../../components/CardMetrica";
+import { FlatList } from "react-native";
+import { IMetrica, IMetricaFilter } from "../../interfaces/metricas.interface";
+import { router } from "expo-router";
+import { Pressable } from "react-native";
+import { getAllMetrica } from "../../services/metrica.service";
+import Toast from "react-native-toast-message";
+import database from "../../db";
+import { Q } from "@nozbe/watermelondb";
+import { hasFoto } from "../../shared/helpers/foto.helper";
+import { getFoto } from "../../shared/helpers/photo.helper";
+
+export default function Registros() {
+ const [user, setUser] = useState(undefined);
+ const [idoso, setIdoso] = useState();
+ const [metricas, setMetricas] = useState([]);
+ const [loading, setLoading] = useState(true);
+
+ const handleUser = () => {
+ AsyncStorage.getItem("usuario").then((response) => {
+ const usuario = JSON.parse(response as string);
+ setUser(usuario);
+ });
+ };
+
+ const getIdoso = () => {
+ AsyncStorage.getItem("idoso").then((idosoString) => {
+ if (idosoString) {
+ const idosoPayload = JSON.parse(idosoString) as IIdoso;
+ setIdoso(idosoPayload);
+ }
+ });
+ };
+
+ const visualizarMetrica = (item: IMetrica) => {
+ router.push({
+ pathname: "private/pages/visualizarMetrica",
+ params: {
+ id: item.id,
+ idIdoso: item.idIdoso,
+ categoria: item.categoria,
+ valorMaximo: item.valorMaximo,
+ },
+ });
+ };
+
+
+ const getMetricas = async () => {
+ if (!idoso) return;
+
+ const metricasCollection = database.get('metrica');
+
+ try {
+ setLoading(true);
+ const idosoMetricas = await metricasCollection.query(Q.where('idoso_id', idoso.id)).fetch();
+
+ // Map the WatermelonDB models to your IMetrica interface
+ const metricasData: IMetrica[] = idosoMetricas.map((metrica: any) => ({
+ id: metrica._raw.id, // Assuming `id` is a field in the _raw object
+ idIdoso: metrica._raw.idoso_id,
+ categoria: metrica._raw.categoria,
+ valorMaximo: metrica._raw.valorMaximo,
+ }));
+
+ setMetricas(metricasData);
+ } catch (err) {
+ console.log("Erro ao obter metricas do idoso:", err);
+ } finally {
+ setLoading(false);
+ }
+ };
+
+ useEffect(() => handleUser(), []);
+ useEffect(() => getIdoso(), []);
+ useEffect(() => { getMetricas() }, [idoso]);
+
+ return (
+ <>
+ {!user?.id && }
+ {user?.id && !idoso?.id && }
+
+ {user?.id && idoso?.id && (
+
+ {getFoto(idoso?.foto)}
+
+ {idoso?.nome}
+
+
+ )}
+
+
+ (
+ visualizarMetrica(item)}>
+
+
+ )}
+ />
+
+ >
+ );
+}
+
+const styles = StyleSheet.create({
+ header: {
+ backgroundColor: "#2CCDB5",
+ width: "100%",
+ padding: 10,
+ flexDirection: "row",
+ alignItems: "center",
+ },
+
+ verMetrica: {
+ alignSelf: "center",
+ width: "100%",
+ height: Dimensions.get("window").height - 230,
+ justifyContent: "space-between",
+ },
+
+ fotoPerfil: {
+ width: 60,
+ aspectRatio: 1,
+ borderRadius: 100,
+ },
+ semFoto: { position: "relative", backgroundColor: "#EFEFF0" },
+ semFotoIcon: {
+ position: "absolute",
+ right: "38%",
+ bottom: "38%",
+ opacity: 0.4,
+ margin: "auto",
+ alignSelf: "center",
+ zIndex: 1,
+ },
+ nomeUsuario: {
+ color: "#FFFFFF",
+ fontSize: 16,
+ marginLeft: 20,
+ maxWidth: "75%",
+ },
+ negrito: {
+ fontWeight: "bold",
+ },
+ cardMetrica: {
+ width: "40%",
+ margin: 10,
+ },
+ list: {
+ width: "100%",
+ },
+ botaoCriarMetricas: {
+ flexDirection: "row",
+ alignItems: "center",
+ backgroundColor: "#B4026D",
+ paddingHorizontal: 10,
+ paddingVertical: 5,
+ borderRadius: 10,
+ marginLeft: "auto",
+ marginRight: 10,
+ marginVertical: 10,
+ },
+ textoBotaoCriarMetricas: {
+ color: "white",
+ fontWeight: "600",
+ fontSize: 14,
+ marginLeft: 5,
+ },
+});
diff --git a/src/app/private/tabs/rotinas.tsx b/src/app/private/tabs/rotinas.tsx
new file mode 100644
index 00000000..9255f436
--- /dev/null
+++ b/src/app/private/tabs/rotinas.tsx
@@ -0,0 +1,267 @@
+import React, { useEffect, useState } from "react";
+import AsyncStorage from "@react-native-async-storage/async-storage";
+import { IUser } from "../../interfaces/user.interface";
+import NaoAutenticado from "../../components/NaoAutenticado";
+import IdosoNaoSelecionado from "../../components/IdosoNaoSelecionado";
+import CalendarStrip from "react-native-calendar-strip";
+
+import {
+ Pressable,
+ StyleSheet,
+ Text,
+ View,
+ Dimensions,
+ ActivityIndicator,
+} from "react-native";
+import Icon from "react-native-vector-icons/MaterialCommunityIcons";
+import { router } from "expo-router";
+import {
+ IOrder,
+ IRotina,
+ IRotinaFilter,
+} from "../../interfaces/rotina.interface";
+import CardRotina from "../../components/CardRotina";
+import { getAllRotina } from "../../services/rotina.service";
+import Toast from "react-native-toast-message";
+import { FlashList } from "@shopify/flash-list";
+import { Image } from "expo-image";
+import { IIdoso } from "../../interfaces/idoso.interface";
+import moment from "moment";
+import "moment/locale/pt-br";
+import database from "../../db";
+import { Collection, Q } from "@nozbe/watermelondb";
+import Rotina from "../../model/Rotina";
+import { getFoto } from "../../shared/helpers/photo.helper";
+
+export default function Rotinas() {
+ moment.locale("pt-br");
+
+ const [idoso, setIdoso] = useState();
+ const [user, setUser] = useState();
+ const [rotinas, setRotinas] = useState([]);
+ const [loading, setLoading] = useState(true);
+ const [selectedDate, setSelectedDate] = useState(moment());
+ const order: IOrder = {
+ column: "dataHora",
+ dir: "ASC",
+ };
+
+ const datesWhitelist = [
+ {
+ start: moment().clone().subtract(1, "y"),
+ end: moment().add(1, "y"),
+ },
+ ];
+
+ const getIdoso = () => {
+ AsyncStorage.getItem("idoso").then((idosoString) => {
+ if (idosoString) {
+ const idosoPayload = JSON.parse(idosoString) as IIdoso;
+ setIdoso(idosoPayload);
+ }
+ });
+ };
+
+ const novaRotina = () => {
+ router.push({
+ pathname: "private/pages/cadastrarRotina",
+ });
+ };
+
+ const handleUser = () => {
+ AsyncStorage.getItem("usuario").then((response) => {
+ const usuario = JSON.parse(response as string);
+ setUser(usuario);
+ });
+ };
+
+ const getRotinas = async () => {
+ if (idoso == undefined || !selectedDate) return;
+
+ setLoading(true);
+
+ try {
+ const rotinaCollection = database.get('rotina') as Collection;
+
+ const allIdosoRotinas = await rotinaCollection.query(
+ Q.where('idoso_id', idoso.id)
+ ).fetch();
+
+ // TODO: tenta fazer essa filtragem direto na query meu nobre
+ const filteredRotinas = allIdosoRotinas.filter((rotina) => {
+ if (rotina.dias.length > 0) {
+ const date = selectedDate.toDate();
+ const weekday = date.getDay().toString();
+
+ return rotina.dias.includes(weekday) && rotina.dataHora < date;
+ } else {
+ return true;
+ }
+ });
+
+ setRotinas(filteredRotinas);
+
+ } finally {
+ setLoading(false);
+ }
+ };
+
+ const markedDates = [
+ {
+ date: moment(),
+ dots: [{ color: "#fff" }],
+ },
+ ];
+
+ useEffect(() => handleUser(), []);
+ useEffect(() => getIdoso(), []);
+ useEffect(() => {
+ getRotinas()
+ },
+ [idoso, selectedDate]
+ );
+
+ return (
+ <>
+ {!user?.id && }
+
+ {user?.id && !idoso?.id && }
+
+ {user?.id && idoso?.id && (
+
+
+ {getFoto(idoso?.foto)}
+
+ {idoso?.nome}
+
+
+
+
+
+
+
+
+
+ Nova Rotina
+
+
+ {loading && (
+
+ )}
+
+ {!loading && rotinas.length > 0 && (
+
+ (
+
+ )}
+ estimatedItemSize={50}
+ />
+
+ )}
+ {rotinas.length === 0 && (
+
+ {`Você ainda não tem nenhuma rotina cadastrada no dia ${moment(
+ selectedDate,
+ ).format("DD/MM")}`}
+
+ )}
+
+ )}
+ >
+ );
+}
+
+const styles = StyleSheet.create({
+ header: {
+ backgroundColor: "#2CCDB5",
+ width: "100%",
+ padding: 10,
+ flexDirection: "row",
+ alignItems: "center",
+ },
+ fotoPerfil: {
+ width: 60,
+ aspectRatio: 1,
+ borderRadius: 100,
+ },
+ Calendar: {
+ height: 80,
+ margin: 0,
+ backgroundColor: "#2CCDB5",
+ },
+ semFoto: { position: "relative", backgroundColor: "#EFEFF0" },
+ semFotoIcon: {
+ position: "absolute",
+ right: "38%",
+ bottom: "38%",
+ opacity: 0.4,
+ margin: "auto",
+ alignSelf: "center",
+ zIndex: 1,
+ },
+ nomeUsuario: {
+ color: "#FFFFFF",
+ fontSize: 16,
+ marginLeft: 20,
+ maxWidth: "75%",
+ },
+ negrito: {
+ fontWeight: "bold",
+ },
+ botaoCriarRotina: {
+ flexDirection: "row",
+ alignItems: "center",
+ backgroundColor: "#B4026D",
+ paddingHorizontal: 10,
+ paddingVertical: 5,
+ borderRadius: 10,
+ marginLeft: "auto",
+ marginRight: 10,
+ marginVertical: 10,
+ },
+ textoBotaoCriarRotina: {
+ color: "white",
+ fontWeight: "600",
+ fontSize: 14,
+ marginLeft: 5,
+ },
+ rotinas: {
+ width: Dimensions.get("window").width,
+ height: Dimensions.get("window").height,
+ },
+ semRotinas: {
+ fontSize: 35,
+ opacity: 0.3,
+ textAlign: "center",
+ marginTop: "35%",
+ },
+});
diff --git a/src/app/public/cadastro.tsx b/src/app/public/cadastro.tsx
new file mode 100644
index 00000000..c2f1b9b7
--- /dev/null
+++ b/src/app/public/cadastro.tsx
@@ -0,0 +1,267 @@
+import { router } from "expo-router";
+import React, { useEffect, useState } from "react";
+import { View, TextInput, StyleSheet, ScrollView } from "react-native";
+import Toast from "react-native-toast-message";
+import Icon from "react-native-vector-icons/MaterialCommunityIcons";
+
+import BackButton from "../components/BackButton";
+import ForgetButton from "../components/ForgetButton";
+import CustomButton from "../components/CustomButton";
+import ErrorMessage from "../components/ErrorMessage";
+import UploadImage from "../components/UploadImage";
+import { postUser } from "../services/user.service";
+
+interface IErrors {
+ nome?: string;
+ email?: string;
+ confirmaEmail?: string;
+ senha?: string;
+ confirmaSenha?: string;
+}
+
+export default function Cadastro() {
+ const [foto, setFoto] = useState("");
+ const [nome, setNome] = useState("");
+ const [email, setEmail] = useState("");
+ const [confirmaEmail, setConfirmaEmail] = useState("");
+ const [senha, setSenha] = useState("");
+ const [confirmaSenha, setConfirmaSenha] = useState("");
+ const [escondeSenha, setEscondeSenha] = useState(true);
+ const [escondeConfirmaSenha, setEscondeConfirmaSenha] = useState(true);
+ const [erros, setErros] = useState({});
+ const [showErrors, setShowErrors] = useState(false);
+ const [showLoading, setShowLoading] = useState(false);
+
+ const cadastrar = async () => {
+ if (Object.keys(erros).length > 0) {
+ setShowErrors(true);
+ return;
+ }
+
+ const body = { nome, email: email.toLowerCase().trim(), senha, foto };
+
+ try {
+ setShowLoading(true);
+ const response = await postUser(body);
+ Toast.show({
+ type: "success",
+ text1: "Sucesso!",
+ text2: response.message as string,
+ });
+ router.push("/public/tutorial");
+ } catch (err) {
+ const error = err as { message: string };
+ Toast.show({
+ type: "error",
+ text1: "Erro!",
+ text2: error.message,
+ });
+ } finally {
+ setShowLoading(false);
+ }
+ };
+
+ useEffect(
+ () => handleErrors(),
+ [nome, email, confirmaEmail, senha, confirmaSenha],
+ );
+
+ const handleErrors = () => {
+ const erros: IErrors = {};
+
+ if (!nome) {
+ erros.nome = "Campo obrigatório!";
+ } else if (nome.length < 5) {
+ erros.nome = "O nome completo deve ter pelo menos 5 caracteres!";
+ } else if (nome.length > 60) {
+ erros.nome = "O nome completo deve ter no máximo 60 caracteres!";
+ }
+
+ if (!email) {
+ erros.email = "Campo Obrigatório!";
+ } else if (!/\S+@\S+\.\S+/.test(email)) {
+ erros.email = "Email inválido!";
+ }
+
+ if (!confirmaEmail) {
+ erros.confirmaEmail = "Campo Obrigatório!";
+ } else if (confirmaEmail !== email) {
+ erros.confirmaEmail = "Os emails precisam ser iguais!";
+ }
+
+ if (!senha) {
+ erros.senha = "Campo Obrigatório!";
+ } else if (senha.length < 6) {
+ erros.senha = "Senha deve ter no mínimo 6 caracteres!";
+ }
+
+ if (!confirmaSenha) {
+ erros.confirmaSenha = "Campo Obrigatório!";
+ } else if (confirmaSenha !== senha) {
+ erros.confirmaSenha = "As senhas precisam ser iguais!";
+ }
+
+ setErros(erros);
+ };
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ setEscondeSenha(!escondeSenha)}
+ style={styles.passwordIcon}
+ name={escondeSenha ? "eye-outline" : "eye-off-outline"}
+ size={20}
+ />
+
+
+
+
+
+
+
+
+ setEscondeConfirmaSenha(!escondeConfirmaSenha)}
+ style={styles.passwordIcon}
+ name={escondeConfirmaSenha ? "eye-outline" : "eye-off-outline"}
+ size={20}
+ />
+
+
+
+
+
+
+
+
+
+ );
+}
+
+const styles = StyleSheet.create({
+ voltar: {
+ marginTop: 5,
+ },
+ formControl: {
+ flexDirection: "column",
+ width: 320,
+ alignItems: "flex-start",
+ alignSelf: "center",
+ marginTop: 10,
+ },
+ button: {
+ width: "80%",
+ maxWidth: 350,
+ paddingVertical: 16,
+ paddingHorizontal: 26,
+ alignItems: "center",
+ borderRadius: 20,
+ backgroundColor: "#2CCDB5",
+ textAlign: "center",
+ },
+ field: {
+ flexDirection: "row",
+ width: 320,
+ borderBottomWidth: 1,
+ borderBottomColor: "#AFB1B6",
+ paddingBottom: 5,
+ height: 30,
+ alignSelf: "center",
+ marginBottom: 5,
+ },
+ iconInput: {
+ width: "10%",
+ },
+ passwordInput: {
+ paddingLeft: 10,
+ color: "#05375a",
+ width: "80%",
+ fontSize: 17,
+ },
+ passwordIcon: {
+ width: "10%",
+ },
+ textInput: {
+ width: "90%",
+ paddingLeft: 10,
+ color: "#05375a",
+ fontSize: 17,
+ },
+ arrow: {
+ alignSelf: "flex-start",
+ },
+ linkButton: {
+ marginTop: 60,
+ marginBottom: 40,
+ alignItems: "center",
+ },
+});
diff --git a/src/app/public/login.tsx b/src/app/public/login.tsx
new file mode 100644
index 00000000..55a15266
--- /dev/null
+++ b/src/app/public/login.tsx
@@ -0,0 +1,370 @@
+import AsyncStorage from "@react-native-async-storage/async-storage";
+import { router } from "expo-router";
+import React, { useState, useEffect } from "react";
+import { Image, StyleSheet, Text, View, TextInput, Button } from "react-native";
+import Toast from "react-native-toast-message";
+import Icon from "react-native-vector-icons/MaterialCommunityIcons";
+
+import BackButton from "../components/BackButton";
+import CustomButton from "../components/CustomButton";
+import ErrorMessage from "../components/ErrorMessage";
+import { getUserById, loginUser } from "../services/user.service";
+import JWT from "expo-jwt";
+import { IUser } from "../interfaces/user.interface";
+import { ScrollView } from "react-native";
+import database from "../db";
+import { Collection, Q } from "@nozbe/watermelondb";
+import { syncDatabaseWithServer } from "../services/watermelon.service";
+import Usuario from "../model/Usuario";
+import ForgetButton from "../components/ForgetButton";
+
+interface IErrors {
+ email?: string;
+ senha?: string;
+}
+
+export default function Login() {
+ const API_URL = process.env.EXPO_PUBLIC_API_URL;
+ const API_PORT = process.env.EXPO_PUBLIC_API_USUARIO_PORT;
+ const BASE_URL = `${API_URL}:${API_PORT}/api/usuario`;
+ const [email, setEmail] = useState("");
+ const [senha, setSenha] = useState("");
+ const [escondeSenha, setEscondeSenha] = useState(true);
+ const [erros, setErros] = useState({});
+ const [showErrors, setShowErrors] = useState(false);
+ const [showLoading, setShowLoading] = useState(false);
+
+ const login = async () => {
+ if (Object.keys(erros).length > 0) {
+ setShowErrors(true);
+ return;
+ }
+
+ const body = { email: email.toLowerCase().trim(), senha };
+
+ try {
+ setShowLoading(true);
+ console.log("Iniciando o login...");
+ console.log(BASE_URL);
+ const response = await loginUser(body);
+ console.log("Resposta do login:", response);
+
+ const token = response.data;
+ console.log("Token recebido:", token);
+
+ await handleUser(token);
+ router.push("/private/pages/listarIdosos");
+ } catch (err) {
+ console.error("Erro durante o login:", err);
+ const error = err as { message: string };
+ Toast.show({
+ type: "error",
+ text1: "Erro!",
+ text2: error.message,
+ });
+ } finally {
+ setShowLoading(false);
+ }
+ };
+
+ const handleErrors = () => {
+ const erros: IErrors = {};
+ let hasErrors = false;
+
+ // Verifica o campo de email
+ if (!email) {
+ erros.email = "Campo Obrigatório!";
+ hasErrors = true;
+ Toast.show({
+ type: 'error',
+ text1: 'Erro!',
+ text2: 'O campo de email é obrigatório!',
+ });
+ } else if (!/\S+@\S+\.\S+/.test(email)) {
+ erros.email = "Email inválido!";
+ hasErrors = true;
+ Toast.show({
+ type: 'error',
+ text1: 'Erro!',
+ text2: 'Formato de email inválido!!',
+ });
+ }
+
+ // Verifica o campo de senha
+ if (!senha) {
+ erros.senha = "Campo Obrigatório!";
+ hasErrors = true;
+ Toast.show({
+ type: 'error',
+ text1: ` ${API_PORT} , ${BASE_URL}`,
+ text2: `Você está utilizando o endpoint: ${API_URL}`,
+ });
+ }
+
+
+ setErros(erros);
+
+ // Retorna se há erros para interromper a submissão
+ return hasErrors;
+ };
+
+ useEffect(() => {
+ handleErrors();
+ }, [email, senha]);
+
+
+ const handleUser = async (token: string) => {
+ try {
+ console.log("Processando o token para obter o usuário...");
+ AsyncStorage.setItem("token", token);
+ const key = process.env.EXPO_PUBLIC_JWT_TOKEN_SECRET as string;
+
+ let userInfo: IUser | null = null;
+
+ try {
+ // Decodifica o token JWT
+ userInfo = JWT.decode(token, key, { timeSkew: 30 }) as unknown as IUser;
+ console.log("Token decodificado:", userInfo);
+ } catch (decodeError) {
+ console.error("Erro ao decodificar o token:", decodeError);
+ // Trate o erro conforme necessário, talvez exiba uma mensagem para o usuário
+ }
+
+ if (userInfo) {
+ await getUser(userInfo.id, token);
+ }
+ } catch (err) {
+ console.error("Erro ao processar o token:", err);
+ throw err;
+ }
+ };
+
+ const getUser = async (id: number, token: string) => {
+ try {
+ // Aqui acontece a sincronização com o backend
+ await syncDatabaseWithServer();
+
+ console.log("Buscando usuário no banco...");
+ const usersCollection = database.get('usuario') as Collection;
+
+ try {
+ const queryResult = await usersCollection.query(
+ Q.where('id', id.toString())
+ ).fetch();
+
+ console.log("Resultado da busca no banco:", queryResult);
+
+ const user = queryResult.at(0);
+
+ if (user instanceof Usuario) {
+ console.log("Settando usuario a partir do objeto do banco!");
+
+ const userTransformed = {
+ id: user.id.toString(),
+ email: user.email,
+ senha: user.senha,
+ foto: user.foto,
+ admin: user.admin,
+ nome: user.nome
+ }
+
+ console.log("userTransformed", userTransformed);
+ await AsyncStorage.setItem("usuario", JSON.stringify(
+ userTransformed
+ ));
+
+ console.log(await AsyncStorage.getItem('usuario'));
+ return;
+ }
+
+ } catch (err) {
+ console.log("Erro ao buscar usuário no banco local:", err);
+ }
+
+ const response = await getUserById(id, token);
+ const responseUser = response.data as IUser & {
+ foto: { data: Uint8Array };
+ };
+
+ // TODO: Remove this in the future
+ console.log("Usuario buscado diretamente da API...");
+ console.log(await usersCollection.query().fetch());
+
+ await AsyncStorage.setItem("usuario", JSON.stringify(responseUser));
+ } catch (err) {
+ console.error("Erro ao obter o usuário:", err);
+ const error = err as { message: string };
+ Toast.show({
+ type: "error",
+ text1: "Erro!",
+ text2: error.message,
+ });
+ }
+ };
+
+ return (
+
+
+
+
+
+
+
+
+ Bem Vindo de volta!
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ setEscondeSenha(!escondeSenha)}
+ style={styles.passwordIcon}
+ name={escondeSenha ? "eye-outline" : "eye-off-outline"}
+ size={20}
+ />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
+
+const styles = StyleSheet.create({
+ voltar: {
+ marginTop: 5,
+ },
+ formControl: {
+ flexDirection: "column",
+ width: 320,
+ alignItems: "flex-start",
+ alignSelf: "center",
+ marginTop: 10,
+ },
+ center: {
+ flex: 1,
+ justifyContent: "center",
+ alignItems: "center",
+ },
+ titulo: {
+ fontSize: 28,
+ fontWeight: "300",
+ textAlign: "center",
+ marginBottom: 60,
+ marginTop: 35,
+ },
+ imagem: {
+ flex: 1,
+ justifyContent: "center",
+ alignItems: "center",
+ marginTop: 50,
+ },
+ button: {
+ width: "80%",
+ maxWidth: 350,
+ paddingVertical: 16,
+ paddingHorizontal: 26,
+ alignItems: "center",
+ borderRadius: 20,
+ backgroundColor: "#2CCDB5",
+ textAlign: "center",
+ },
+ field: {
+ flexDirection: "row",
+ marginTop: 10,
+ borderBottomWidth: 1,
+ borderBottomColor: "#AFB1B6",
+ paddingBottom: 5,
+ width: 320,
+ height: 30,
+ alignSelf: "center",
+ },
+ iconInput: {
+ width: "10%",
+ },
+ passwordInput: {
+ paddingLeft: 10,
+ color: "#05375a",
+ width: "80%",
+ fontSize: 17,
+ },
+ passwordIcon: {
+ width: "10%",
+ },
+ textInput: {
+ width: "90%",
+ paddingLeft: 10,
+ color: "#05375a",
+ fontSize: 17,
+ },
+ arrow: {
+ alignSelf: "flex-start",
+ },
+ linkButton: {
+ marginTop: 90,
+ alignItems: "center",
+ },
+ foto: {
+ backgroundColor: "#EFEFF0",
+ borderRadius: 25,
+ alignItems: "center",
+ display: "flex",
+ width: 167,
+ height: 174,
+ alignSelf: "center",
+ borderWidth: 1,
+ borderColor: "#AFB1B6",
+ marginBottom: 38,
+ },
+ eye: {
+ marginLeft: 100,
+ },
+ EsqueciButton: {
+ marginTop: 35,
+ alignItems: "center",
+ justifyContent: "center", // Adicionado para centralizar verticalmente
+ width: "100%",
+ flex: 1,
+ }
+});
diff --git a/src/app/public/tutorial.tsx b/src/app/public/tutorial.tsx
new file mode 100644
index 00000000..7d59ce24
--- /dev/null
+++ b/src/app/public/tutorial.tsx
@@ -0,0 +1,97 @@
+import React, { useState } from "react";
+import { Text, Pressable, View, StyleSheet } from "react-native";
+import Swiper from "react-native-swiper";
+import ItemTutorial from "../components/ItemTutorial";
+import CustomButton from "../components/CustomButton";
+import { router } from "expo-router";
+
+export default function Tutorial() {
+ const [index, setIndex] = useState(0);
+
+ const textEl1 = (
+
+ Gerencie as rotinas {"\n"} do seu idoso
+
+ );
+
+ const textEl2 = (
+
+ Colete os dados da {"\n"} saúde do idoso
+
+ );
+
+ const textEl3 = (
+
+ Obtenha ajuda no {"\n"} portal
+
+ );
+
+ const skip = () => {
+ router.replace("/public/login");
+ };
+
+ return (
+
+
+ Pular
+
+
+ setIndex(newIndex)}
+ dotColor="#D9D9D9"
+ activeDotColor="#9E9696"
+ showsButtons={false}
+ scrollEnabled={false}
+ loop={false}
+ >
+
+
+
+
+
+
+ (index > 1 ? skip() : setIndex(index + 1))}
+ />
+
+
+ );
+}
+
+const styles = StyleSheet.create({
+ text: {
+ fontSize: 28,
+ textAlign: "center",
+ fontWeight: "bold",
+ color: "gray",
+ },
+ word: {
+ color: "#B4026D",
+ },
+ carousel: {
+ height: "95%",
+ },
+ skip: {
+ textAlign: "right",
+ marginTop: 15,
+ marginBottom: 10,
+ marginRight: 20,
+ fontWeight: "bold",
+ color: "gray",
+ },
+ center: {
+ alignItems: "center",
+ width: "100%",
+ },
+});
diff --git a/src/app/services/forum.service.ts b/src/app/services/forum.service.ts
new file mode 100644
index 00000000..287152eb
--- /dev/null
+++ b/src/app/services/forum.service.ts
@@ -0,0 +1,106 @@
+import {
+ IOrder,
+ IPublicacao,
+ IPublicacaoBody,
+ IPublicacaoFilter,
+} from "../interfaces/forum.interface";
+import { IResponse } from "../interfaces/response.interface";
+
+const API_URL = process.env.EXPO_PUBLIC_API_URL;
+const API_PORT = process.env.EXPO_PUBLIC_API_FORUM_PORT;
+const BASE_URL = `${API_URL}:${API_PORT}/api/forum`;
+
+export const postPublicacao = async (
+ body: IPublicacaoBody,
+ token: string,
+): Promise> => {
+ const response = await fetch(BASE_URL, {
+ method: "POST",
+ headers: {
+ Accept: "application/json",
+ "Content-Type": "application/json",
+ Authorization: `Bearer ${token}`,
+ },
+ body: JSON.stringify(body),
+ });
+
+ const json = await response.json();
+
+ if (response.status !== 201) {
+ throw new Error(json.message as string);
+ }
+
+ return json;
+};
+
+export const getAllPublicacao = async (
+ offset: number,
+ filter: IPublicacaoFilter,
+ order: IOrder,
+): Promise> => {
+ const params = `limit=10&offset=${offset}&filter=${JSON.stringify(
+ filter,
+ )}&order=${JSON.stringify(order)}`;
+
+ const response = await fetch(`${BASE_URL}?${params}`, {
+ method: "GET",
+ headers: {
+ Accept: "application/json",
+ "Content-Type": "application/json",
+ },
+ });
+
+ const json = await response.json();
+
+ if (response.status !== 200) {
+ throw new Error(json.message as string);
+ }
+
+ return json;
+};
+
+export const updatePublicacao = async (
+ id: number,
+ body: Partial,
+ token: string,
+): Promise> => {
+ const response = await fetch(`${BASE_URL}/${id}`, {
+ method: "PATCH",
+ headers: {
+ Accept: "application/json",
+ "Content-Type": "application/json",
+ Authorization: `Bearer ${token}`,
+ },
+ body: JSON.stringify(body),
+ });
+
+ const json = await response.json();
+
+ if (response.status !== 200) {
+ throw new Error(json.message as string);
+ }
+
+ return json;
+};
+
+export const deletePublicacaoById = async (
+ id: number,
+ token: string,
+): Promise> => {
+ const response = await fetch(`${BASE_URL}/${id}`, {
+ method: "DELETE",
+ headers: {
+ Accept: "application/json",
+ "Content-Type": "application/json",
+ Authorization: `Bearer ${token}`,
+ },
+ });
+
+ const json = await response.json();
+
+ if (response.status !== 200) {
+ throw new Error(json.message as string);
+ }
+
+ return json;
+};
diff --git a/src/app/services/idoso.service.ts b/src/app/services/idoso.service.ts
new file mode 100644
index 00000000..2c48b5ed
--- /dev/null
+++ b/src/app/services/idoso.service.ts
@@ -0,0 +1,101 @@
+import { IOrder } from "../interfaces/forum.interface";
+import { IIdoso, IIdosoBody } from "../interfaces/idoso.interface";
+import { IResponse } from "../interfaces/response.interface";
+
+const API_URL = process.env.EXPO_PUBLIC_API_URL;
+const API_PORT = process.env.EXPO_PUBLIC_API_SAUDE_PORT;
+const BASE_URL = `${API_URL}:${API_PORT}/api/saude/idoso`;
+
+export const postIdoso = async (
+ body: IIdosoBody,
+ token: string,
+): Promise> => {
+ const response = await fetch(BASE_URL, {
+ method: "POST",
+ headers: {
+ Accept: "application/json",
+ "Content-Type": "application/json",
+ Authorization: `Bearer ${token}`,
+ },
+ body: JSON.stringify(body),
+ });
+
+ const json = await response.json();
+
+ if (response.status !== 201) {
+ throw new Error(json.message as string);
+ }
+
+ return json;
+};
+
+export const getAllIdoso = async (
+ idUsuario: number,
+ order: IOrder,
+): Promise> => {
+ const params = `limit=20&offset=0&order=${JSON.stringify(
+ order,
+ )}&filter=${JSON.stringify({ idUsuario })}`;
+
+ const response = await fetch(`${BASE_URL}?${params}`, {
+ method: "GET",
+ headers: {
+ Accept: "application/json",
+ "Content-Type": "application/json",
+ },
+ });
+
+ const json = await response.json();
+
+ if (response.status !== 200) {
+ throw new Error(json.message as string);
+ }
+
+ return json;
+};
+
+export const updateIdoso = async (
+ id: number,
+ body: Partial,
+ token: string,
+): Promise> => {
+ const response = await fetch(`${BASE_URL}/${id}`, {
+ method: "PATCH",
+ headers: {
+ Accept: "application/json",
+ "Content-Type": "application/json",
+ Authorization: `Bearer ${token}`,
+ },
+ body: JSON.stringify(body),
+ });
+
+ const json = await response.json();
+
+ if (response.status !== 200) {
+ throw new Error(json.message as string);
+ }
+
+ return json;
+};
+
+export const deleteIdoso = async (
+ id: number,
+ token: string,
+): Promise> => {
+ const response = await fetch(`${BASE_URL}/${id}`, {
+ method: "DELETE",
+ headers: {
+ Accept: "application/json",
+ "Content-Type": "application/json",
+ Authorization: `Bearer ${token}`,
+ },
+ });
+
+ const json = await response.json();
+
+ if (response.status !== 200) {
+ throw new Error(json.message as string);
+ }
+
+ return json;
+};
diff --git a/src/app/services/metrica.service.ts b/src/app/services/metrica.service.ts
new file mode 100644
index 00000000..cd675157
--- /dev/null
+++ b/src/app/services/metrica.service.ts
@@ -0,0 +1,100 @@
+import {
+ IMetrica,
+ IMetricaBody,
+ IMetricaFilter,
+} from "../interfaces/metricas.interface";
+import { IResponse } from "../interfaces/response.interface";
+
+const API_URL = process.env.EXPO_PUBLIC_API_URL;
+const API_PORT = process.env.EXPO_PUBLIC_API_SAUDE_PORT;
+const BASE_URL = `${API_URL}:${API_PORT}/api/saude/metrica`;
+
+export const postMetrica = async (
+ body: IMetricaBody,
+ token: string,
+): Promise> => {
+ const response = await fetch(BASE_URL, {
+ method: "POST",
+ headers: {
+ Accept: "application/json",
+ "Content-Type": "application/json",
+ Authorization: `Bearer ${token}`,
+ },
+ body: JSON.stringify(body),
+ });
+
+ const json = await response.json();
+
+ if (response.status !== 201) {
+ throw new Error(json.message as string);
+ }
+
+ return json;
+};
+
+export const getAllMetrica = async (
+ filter: IMetricaFilter,
+): Promise> => {
+ const params = `limit=20&offset=0&filter=${JSON.stringify(filter)}`;
+ const response = await fetch(`${BASE_URL}?${params}`, {
+ method: "GET",
+ headers: {
+ Accept: "application/json",
+ "Content-Type": "application/json",
+ },
+ });
+
+ const json = await response.json();
+
+ if (response.status !== 200) {
+ throw new Error(json.message as string);
+ }
+
+ return json;
+};
+
+export const updateMetrica = async (
+ id: number,
+ body: Partial,
+ token: string,
+): Promise> => {
+ const response = await fetch(`${BASE_URL}/${id}`, {
+ method: "PATCH",
+ headers: {
+ Accept: "application/json",
+ "Content-Type": "application/json",
+ Authorization: `Bearer ${token}`,
+ },
+ body: JSON.stringify(body),
+ });
+
+ const json = await response.json();
+
+ if (response.status !== 200) {
+ throw new Error(json.message as string);
+ }
+
+ return json;
+};
+
+export const getSomaHidratacao = async (
+ id: number,
+ token: string,
+): Promise => {
+ const response = await fetch(`${BASE_URL}/soma-hidratacao/${id}`, {
+ method: "GET",
+ headers: {
+ Accept: "application/json",
+ "Content-Type": "application/json",
+ Authorization: `Bearer ${token}`,
+ },
+ });
+
+ const json = await response.json();
+
+ if (response.status !== 200) {
+ throw new Error(json.message as string);
+ }
+
+ return json.data;
+};
diff --git a/src/app/services/metricaValue.service.ts b/src/app/services/metricaValue.service.ts
new file mode 100644
index 00000000..ec6b2672
--- /dev/null
+++ b/src/app/services/metricaValue.service.ts
@@ -0,0 +1,81 @@
+import {
+ IMetrica,
+ IMetricaValueFilter,
+ IOrder,
+ IValorMetrica,
+ IValorMetricaBody,
+} from "../interfaces/metricas.interface";
+import { IResponse } from "../interfaces/response.interface";
+
+const API_URL = process.env.EXPO_PUBLIC_API_URL;
+const API_PORT = process.env.EXPO_PUBLIC_API_SAUDE_PORT;
+const BASE_URL = `${API_URL}:${API_PORT}/api/saude/valorMetrica`;
+
+export const getAllMetricaValues = async (
+ filter: IMetricaValueFilter,
+ order: IOrder,
+): Promise> => {
+ const params = `limit=20&offset=0&filter=${JSON.stringify(
+ filter,
+ )}&order=${JSON.stringify(order)}`;
+ const response = await fetch(`${BASE_URL}?${params}`, {
+ method: "GET",
+ headers: {
+ Accept: "application/json",
+ "Content-Type": "application/json",
+ },
+ });
+
+ const json = await response.json();
+
+ if (response.status !== 200) {
+ throw new Error(json.message as string);
+ }
+
+ return json;
+};
+
+export const postMetricaValue = async (
+ body: IValorMetricaBody,
+ token: string,
+): Promise> => {
+ const response = await fetch(BASE_URL, {
+ method: "POST",
+ headers: {
+ Accept: "application/json",
+ "Content-Type": "application/json",
+ Authorization: `Bearer ${token}`,
+ },
+ body: JSON.stringify(body),
+ });
+
+ const json = await response.json();
+
+ if (response.status !== 201) {
+ throw new Error(json.message as string);
+ }
+
+ return json;
+};
+
+export const deleteMetricaValue = async (
+ id: number,
+ token: string,
+): Promise> => {
+ const response = await fetch(`${BASE_URL}/${id}`, {
+ method: "DELETE",
+ headers: {
+ Accept: "application/json",
+ "Content-Type": "application/json",
+ Authorization: `Bearer ${token}`,
+ },
+ });
+
+ const json = await response.json();
+
+ if (response.status !== 200) {
+ throw new Error(json.message as string);
+ }
+
+ return json;
+};
diff --git a/src/app/services/rotina.service.ts b/src/app/services/rotina.service.ts
new file mode 100644
index 00000000..99e4fb5d
--- /dev/null
+++ b/src/app/services/rotina.service.ts
@@ -0,0 +1,104 @@
+import {
+ IOrder,
+ IRotina,
+ IRotinaBody,
+ IRotinaFilter,
+} from "../interfaces/rotina.interface";
+import { IResponse } from "../interfaces/response.interface";
+
+const API_URL = process.env.EXPO_PUBLIC_API_URL;
+const API_PORT = process.env.EXPO_PUBLIC_API_SAUDE_PORT;
+const BASE_URL = `${API_URL}:${API_PORT}/api/saude/rotina`;
+
+export const postRotina = async (
+ body: IRotinaBody,
+ token: string,
+): Promise> => {
+ const response = await fetch(BASE_URL, {
+ method: "POST",
+ headers: {
+ Accept: "application/json",
+ "Content-Type": "application/json",
+ Authorization: `Bearer ${token}`,
+ },
+ body: JSON.stringify(body),
+ });
+
+ const json = await response.json();
+
+ if (response.status !== 201) {
+ throw new Error(json.message as string);
+ }
+
+ return json;
+};
+
+export const getAllRotina = async (
+ filter: IRotinaFilter,
+ order: IOrder,
+): Promise> => {
+ const params = `limit=20&offset=0&filter=${JSON.stringify(
+ filter,
+ )}&order=${JSON.stringify(order)}`;
+ const response = await fetch(`${BASE_URL}?${params}`, {
+ method: "GET",
+ headers: {
+ Accept: "application/json",
+ "Content-Type": "application/json",
+ },
+ });
+
+ const json = await response.json();
+
+ if (response.status !== 200) {
+ throw new Error(json.message as string);
+ }
+
+ return json;
+};
+
+export const updateRotina = async (
+ id: number,
+ body: Partial,
+ token: string,
+): Promise> => {
+ const response = await fetch(`${BASE_URL}/${id}`, {
+ method: "PATCH",
+ headers: {
+ Accept: "application/json",
+ "Content-Type": "application/json",
+ Authorization: `Bearer ${token}`,
+ },
+ body: JSON.stringify(body),
+ });
+
+ const json = await response.json();
+
+ if (response.status !== 200) {
+ throw new Error(json.message as string);
+ }
+
+ return json;
+};
+
+export const deleteRotina = async (
+ id: number,
+ token: string,
+): Promise> => {
+ const response = await fetch(`${BASE_URL}/${id}`, {
+ method: "DELETE",
+ headers: {
+ Accept: "application/json",
+ "Content-Type": "application/json",
+ Authorization: `Bearer ${token}`,
+ },
+ });
+
+ const json = await response.json();
+
+ if (response.status !== 200) {
+ throw new Error(json.message as string);
+ }
+
+ return json;
+};
diff --git a/src/app/services/user.service.ts b/src/app/services/user.service.ts
new file mode 100644
index 00000000..de4821b8
--- /dev/null
+++ b/src/app/services/user.service.ts
@@ -0,0 +1,138 @@
+import { IResponse } from "../interfaces/response.interface";
+import { IUser, IUserBody, IUserLogin } from "../interfaces/user.interface";
+
+const API_URL = process.env.EXPO_PUBLIC_API_URL;
+const API_PORT = process.env.EXPO_PUBLIC_API_USUARIO_PORT;
+const BASE_URL = `${API_URL}:${API_PORT}/api/usuario`;
+
+export const postUser = async (
+ body: IUserBody,
+): Promise> => {
+ const response = await fetch(BASE_URL, {
+ method: "POST",
+ headers: {
+ Accept: "application/json",
+ "Content-Type": "application/json",
+ },
+ body: JSON.stringify(body),
+ });
+
+ const json = await response.json();
+
+ if (response.status !== 201) {
+ throw new Error(json.message as string);
+ }
+
+ return json;
+};
+
+export const forgotPassword = async (
+ email: string,
+): Promise> => {
+ const response = await fetch(`${BASE_URL}/esqueci-senha`, {
+ method: "POST",
+ headers: {
+ Accept: "application/json",
+ "Content-Type": "application/json",
+ },
+ body: JSON.stringify({ email }),
+ });
+
+ const json = await response.json();
+
+ if (response.status !== 200) {
+ throw new Error(json.message as string);
+ }
+
+ return json;
+};
+
+
+export const updateUser = async (
+ id: number,
+ body: Partial,
+ token: string,
+): Promise> => {
+ const response = await fetch(`${BASE_URL}/${id}`, {
+ method: "PATCH",
+ headers: {
+ Accept: "application/json",
+ "Content-Type": "application/json",
+ Authorization: `Bearer ${token}`,
+ },
+ body: JSON.stringify(body),
+ });
+
+ const json = await response.json();
+
+ if (response.status !== 200) {
+ throw new Error(json.message as string);
+ }
+
+ return json;
+};
+
+export const getUserById = async (
+ id: number,
+ token: string,
+): Promise> => {
+ const response = await fetch(`${BASE_URL}/${id}`, {
+ method: "GET",
+ headers: {
+ Accept: "application/json",
+ "Content-Type": "application/json",
+ Authorization: `Bearer ${token}`,
+ },
+ });
+
+ const json = await response.json();
+
+ if (response.status !== 200) {
+ throw new Error(json.message as string);
+ }
+
+ return json;
+};
+
+export const deleteUserById = async (
+ id: number,
+ token: string,
+): Promise> => {
+ const response = await fetch(`${BASE_URL}/${id}`, {
+ method: "DELETE",
+ headers: {
+ Accept: "application/json",
+ "Content-Type": "application/json",
+ Authorization: `Bearer ${token}`,
+ },
+ });
+
+ const json = await response.json();
+
+ if (response.status !== 200) {
+ throw new Error(json.message as string);
+ }
+
+ return json;
+};
+
+export const loginUser = async (
+ body: IUserLogin,
+): Promise> => {
+ const response = await fetch(`${BASE_URL}/login`, {
+ method: "POST",
+ headers: {
+ Accept: "application/json",
+ "Content-Type": "application/json",
+ },
+ body: JSON.stringify(body),
+ });
+
+ const json = await response.json();
+
+ if (response.status !== 200) {
+ throw new Error(json.message as string);
+ }
+
+ return json;
+};
diff --git a/src/app/services/watermelon.service.ts b/src/app/services/watermelon.service.ts
new file mode 100644
index 00000000..2cbc2968
--- /dev/null
+++ b/src/app/services/watermelon.service.ts
@@ -0,0 +1,55 @@
+import { synchronize } from '@nozbe/watermelondb/sync'
+import database from "../db";
+// Using built-in SyncLogger
+import SyncLogger from '@nozbe/watermelondb/sync/SyncLogger'
+import AsyncStorage from '@react-native-async-storage/async-storage';
+
+const USER_API = {
+ host: process.env.EXPO_PUBLIC_API_URL,
+ port: process.env.EXPO_PUBLIC_API_USUARIO_PORT,
+ sync_endpoint: '/api/usuario/sync/pull_users'
+}
+
+const logger = new SyncLogger(10)
+
+export const syncDatabaseWithServer = async (): Promise => {
+ await synchronize({
+ database,
+ pullChanges: async ({ lastPulledAt, schemaVersion, migration }) => {
+ // console.log("########## SYNC ##############")
+ // console.log(lastPulledAt);
+ // console.log(schemaVersion);
+ // console.log(migration);
+
+ const query_params = `?lastPulledAt=${lastPulledAt || 0}&schemaVersion=${schemaVersion}&migration=${migration}`;
+ const uri = `${USER_API.host}:${USER_API.port}${USER_API.sync_endpoint}${query_params}`;
+
+ // console.log("uri", uri)
+ const token = await AsyncStorage.getItem('token');
+
+ // console.log("token na sinc: ", token);
+ const response = await fetch(uri, {
+ method: 'GET',
+ headers: {
+ "Content-Type": "application/json",
+ "Accept": "application/json",
+ "Authorization": `Bearer ${token}`
+ }
+ });
+
+ if (!response.ok) {
+ console.log("Sync was not ok", await response.text());
+ throw new Error(await response.text());
+ }
+
+ const { data: { changes, timestamp }, message } = await response.json();
+
+ // console.log(changes);
+ // console.log(timestamp);
+ // console.log(message);
+
+ return { changes, timestamp }
+ },
+ log: logger.newLog()
+ });
+}
diff --git a/src/app/shared/helpers/foto.helper.tsx b/src/app/shared/helpers/foto.helper.tsx
new file mode 100644
index 00000000..0ebb5117
--- /dev/null
+++ b/src/app/shared/helpers/foto.helper.tsx
@@ -0,0 +1,9 @@
+// Funções auxiliares para foto:
+import { Image } from 'react-native';
+import React from "react";
+
+export const hasFoto = (foto: string | null | undefined): boolean => {
+ if (!foto) return false;
+ const raw = foto.split("data:image/png;base64,")[1];
+ return raw ? raw.length > 0 : false;
+};
\ No newline at end of file
diff --git a/src/app/shared/helpers/image.helper.ts b/src/app/shared/helpers/image.helper.ts
new file mode 100644
index 00000000..732b3a0d
--- /dev/null
+++ b/src/app/shared/helpers/image.helper.ts
@@ -0,0 +1,22 @@
+// eslint-disable-next-line @typescript-eslint/no-var-requires
+global.Buffer = require("buffer").Buffer;
+
+const isBase64Image = (str: string): boolean => {
+ const expression = `data:image\/([a-zA-Z]*);base64,([^\"]*)`;
+ const regex = new RegExp(expression);
+
+ return regex.test(str);
+};
+
+export const getImageUri = (value?: Buffer | string): string => {
+ if (value && isBase64Image(value as string)) return value as string;
+
+ const buffer = value ? Buffer.from(value).toString() : "";
+ return `data:image/png;base64,${buffer}`;
+};
+
+export const blurhash =
+ "|rF?hV%2WCj[ayj[a|j[az_NaeWBj@ayfRayfQfQM{M|azj[azf6fQfQfQIpWXofj[ayj[j[fQayWCoeoeaya}j[ayfQa{oLj?j[WVj[ayayj[fQoff7azayj[ayj[j[ayofayayayj[fQj[ayayj[ayfjj[j[ayjuayj[";
+
+export const noImage =
+ "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQIAAAECCAYAAAAVT9lQAAAMQWlDQ1BJQ0MgUHJvZmlsZQAASImVVwdYU8kWnluSkEBCCSAgJfQmiNQAUkJoAaQXwUZIAoQSYkJQsaOLCq5dLGBDV0UUOyB2xM6i2LAvFlSUdbFgV96kgK77yvfm++bOf/85858z5869cwcAzRNcsTgP1QIgX1QoiQ8LYoxOTWOQngICIAEa8AS6XJ5UzIqNjQKwDLR/L+9uAETeXnWSa/2z/78Wbb5AygMAiYU4gy/l5UN8AAC8iieWFAJAlPOWkwrFcgwr0JXAACGeL8dZSlwlxxlKvEdhkxjPhrgFADUNLleSBQDtMuQZRbwsqEHrhdhFxBeKANBkQOyfn1/AhzgdYjtoI4ZYrs/M+EEn62+aGYOaXG7WIFbORVHUgoVScR53yv+Zjv9d8vNkAz5sYNXIloTHy+cM83YztyBSjjUg7hFlRMdArAPxByFfYQ8xSsmWhScp7VFjnpQNcwb0IXbhc4MjITaGOFSUFx2l4jMyhaEciOEKQScLCzmJEBtAPF8gDUlQ2WyUFMSrfKH1mRI2S8Wf40oUfuW+7styk1gq/dfZAo5KH6MVZyemQEyB2KpImBwNMQ1iZ2luQqTKZmRxNjt6wEYii5fHbwVxvEAUFqTUx4oyJaHxKvuyfOnAfLGN2UJOtArvK8xODFfmB2vhcRXxw7lglwUiVtKAjkA6OmpgLnxBcIhy7tgzgSgpQaXzQVwYFK8ci1PEebEqe9xCkBcm5y0gdpcWJajG4smFcEEq9fFMcWFsojJOvDiHGxGrjAdfAqIAGwQDBpDBmgEKQA4QtvU09MA7ZU8o4AIJyAIC4KRiBkakKHpE8JoAisGfEAmAdHBckKJXAIog/3WQVV6dQKait0gxIhc8gTgfRII8eC9TjBINeksGjyEj/Id3Lqw8GG8erPL+f88PsN8ZFmSiVIxswCNDc8CSGEIMJoYTQ4n2uBHuj/viUfAaCKsrzsS9B+bx3Z7whNBOeEi4Tugk3JogLJH8FOUo0An1Q1W5yPgxF7gN1PTAg3A/qA6VcX3cCDjh7tAPCw+Anj0gy1bFLc8K4yftv83gh6ehsiO7kFHyEHIg2e7nkTQHmsegijzXP+ZHGWvGYL7Zgz0/+2f/kH0+bCN/tsTmY/uxs9hJ7Dx2BGsADOw41oi1YkfleHB1PVasrgFv8Yp4cqGO8B/+Bp6sPJNSl1qXbpcvyr5CwWT5NxqwC8RTJMKs7EIGC+4IAgZHxHMexnB1cXUDQL6/KD9fb+IU+wai3/qdm/MHAH7H+/v7D3/nIo4DsNcLvv6HvnN2TLh1qANw7hBPJilScrj8QoBfCU34phkCU2AJ7OB8XOEu5gsCQQiIADEgEaSC8TD6bLjOJWASmAZmg1JQDpaAlWAt2AA2g+1gF9gHGsARcBKcARfBZXAd3IGrpwu8AL3gHfiMIAgJoSJ0xBAxQ6wRR8QVYSL+SAgShcQjqUg6koWIEBkyDZmDlCPLkLXIJqQG2YscQk4i55F25BbyAOlGXiOfUAzVQHVRE9QGHY4yURYaiSai49AsdCJajM5FF6Gr0Wp0J1qPnkQvotfRTvQF2ocBTB3Tx8wxJ4yJsbEYLA3LxCTYDKwMq8CqsTqsCT7nq1gn1oN9xIk4HWfgTnAFh+NJOA+fiM/AF+Jr8e14Pd6CX8Uf4L34NwKVYExwJPgQOITRhCzCJEIpoYKwlXCQcBq+S12Ed0QiUZ9oS/SC72IqMYc4lbiQuI64m3iC2E58ROwjkUiGJEeSHymGxCUVkkpJa0g7ScdJV0hdpA9q6mpmaq5qoWppaiK1ErUKtR1qx9SuqD1V+0zWIluTfcgxZD55CnkxeQu5iXyJ3EX+TNGm2FL8KImUHMpsympKHeU05S7ljbq6uoW6t3qculB9lvpq9T3q59QfqH/U0NFw0GBrjNWQaSzS2KZxQuOWxhsqlWpDDaSmUQupi6g11FPU+9QPNDrNmcah8WkzaZW0etoV2ktNsqa1JktzvGaxZoXmfs1Lmj1aZC0bLbYWV2uGVqXWIa0OrT5tuvYI7RjtfO2F2ju0z2s/0yHp2OiE6PB15ups1jml84iO0S3pbDqPPoe+hX6a3qVL1LXV5ejm6Jbr7tJt0+3V09Fz10vWm6xXqXdUr1Mf07fR5+jn6S/W36d/Q//TEJMhrCGCIQuG1A25MuS9wVCDQAOBQZnBboPrBp8MGYYhhrmGSw0bDO8Z4UYORnFGk4zWG5026hmqO9R3KG9o2dB9Q28bo8YOxvHGU403G7ca95mYmoSZiE3WmJwy6THVNw00zTFdYXrMtNuMbuZvJjRbYXbc7DlDj8Fi5DFWM1oYvebG5uHmMvNN5m3mny1sLZIsSix2W9yzpFgyLTMtV1g2W/ZamVmNsppmVWt125pszbTOtl5lfdb6vY2tTYrNPJsGm2e2BrYc22LbWtu7dlS7ALuJdtV21+yJ9kz7XPt19pcdUAcPh2yHSodLjqijp6PQcZ1j+zDCMO9homHVwzqcNJxYTkVOtU4PnPWdo5xLnBucXw63Gp42fOnws8O/uXi45LlscbkzQmdExIiSEU0jXrs6uPJcK12vuVHdQt1mujW6vXJ3dBe4r3e/6UH3GOUxz6PZ46unl6fEs86z28vKK92ryquDqcuMZS5knvMmeAd5z/Q+4v3Rx9On0Gefz1++Tr65vjt8n420HSkYuWXkIz8LP67fJr9Of4Z/uv9G/84A8wBuQHXAw0DLQH7g1sCnLHtWDmsn62WQS5Ak6GDQe7YPezr7RDAWHBZcFtwWohOSFLI25H6oRWhWaG1ob5hH2NSwE+GE8MjwpeEdHBMOj1PD6Y3wipge0RKpEZkQuTbyYZRDlCSqaRQ6KmLU8lF3o62jRdENMSCGE7M85l6sbezE2MNxxLjYuMq4J/Ej4qfFn02gJ0xI2JHwLjEocXHinSS7JFlSc7Jm8tjkmuT3KcEpy1I6Rw8fPX30xVSjVGFqYxopLTlta1rfmJAxK8d0jfUYWzr2xjjbcZPHnR9vND5v/NEJmhO4E/anE9JT0nekf+HGcKu5fRmcjKqMXh6bt4r3gh/IX8HvFvgJlgmeZvplLst8luWXtTyrOzsguyK7R8gWrhW+ygnP2ZDzPjcmd1tuf15K3u58tfz0/EMiHVGuqKXAtGByQbvYUVwq7pzoM3HlxF5JpGSrFJGOkzYW6sIf+VaZnewX2YMi/6LKog+Tkiftn6w9WTS5dYrDlAVTnhaHFv82FZ/Km9o8zXza7GkPprOmb5qBzMiY0TzTcubcmV2zwmZtn02ZnTv79xKXkmUlb+ekzGmaazJ31txHv4T9UltKK5WUdszznbdhPj5fOL9tgduCNQu+lfHLLpS7lFeUf1nIW3jh1xG/rv61f1HmorbFnovXLyEuES25sTRg6fZl2suKlz1aPmp5/QrGirIVb1dOWHm+wr1iwyrKKtmqztVRqxvXWK1ZsubL2uy11yuDKndXGVctqHq/jr/uyvrA9XUbTDaUb/i0Ubjx5qawTfXVNtUVm4mbizY/2ZK85exvzN9qthptLd/6dZtoW+f2+O0tNV41NTuMdyyuRWtltd07x+68vCt4V2OdU92m3fq7y/eAPbI9z/em772xL3Jf837m/roD1geqDtIPltUj9VPqexuyGzobUxvbD0Ucam7ybTp42PnwtiPmRyqP6h1dfIxybO6x/uPFx/tOiE/0nMw6+ah5QvOdU6NPXWuJa2k7HXn63JnQM6fOss4eP+d37sh5n/OHLjAvNFz0vFjf6tF68HeP3w+2ebbVX/K61HjZ+3JT+8j2Y1cCrpy8Gnz1zDXOtYvXo6+330i6cbNjbEfnTf7NZ7fybr26XXT7851Zdwl3y+5p3au4b3y/+g/7P3Z3enYefRD8oPVhwsM7j3iPXjyWPv7SNfcJ9UnFU7OnNc9cnx3pDu2+/HzM864X4hefe0r/1P6z6qXdywN/Bf7V2ju6t+uV5FX/64VvDN9se+v+trkvtu/+u/x3n9+XfTD8sP0j8+PZTymfnn6e9IX0ZfVX+69N3yK/3e3P7+8XcyVcxa8ABiuamQnA620AUFMBoMPzGWWM8vynKIjyzKpA4D9h5RlRUTwBqIP/73E98O+mA4A9W+DxC+prjgUglgpAojdA3dwG68BZTXGulBciPAdsDPmakZ8B/k1Rnjl/iPvnFshV3cHP7b8Aitd8Y8c9EsUAAAAOZVhJZk1NACoAAAAIAAAAAAAAANJTkwAAAAlwSFlzAAAWJQAAFiUBSVIk8AAAAdZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDYuMC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MjU4PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjI1ODwvZXhpZjpQaXhlbFhEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOlVzZXJDb21tZW50PlNjcmVlbnNob3Q8L2V4aWY6VXNlckNvbW1lbnQ+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgptWoEgAAAAHGlET1QAAAACAAAAAAAAAIEAAAAoAAAAgQAAAIEAAAXtWENQEAAABblJREFUeAHs2EtvVXUUxuH/CXSApZiglkqQi0RNmDEl8BX4qsaJXwAGJiLInJsKlXBHoJpwOVIGDPAdwYaD530YlRXY+6xnhV9oZ9//8OP8i8/3ju++/Wbs3Llj+EWAwPIJPHjwcNzY/HPcvnNvHDn81fhyY33s2rXr9aKzM2d/mh86eGCsre1+PfQFAQLLJ/DixYtx7pdfx9bf/4yvjxx8GYSDr5ecXb++OV9d/eT1wBcECCyvwHw+Hz+fu/CfGMzu338wX961bUaAwJsC2zG4eu338cf1Gy//Z3B4HD50YAjBm0p+T6BA4OHDv8aVq7+N2Ww2jh49LAQFN7cigShw9+69cenKtfHi+XMhiEKGBEoEtr9FePlzQiEoubc1CUSBZ8+ejUuXrwpB1DEkUCbgh4VlB7cugSQgBEnFjECZgBCUHdy6BJKAECQVMwJlAkJQdnDrEkgCQpBUzAiUCQhB2cGtSyAJCEFSMSNQJiAEZQe3LoEkIARJxYxAmYAQlB3cugSSgBAkFTMCZQJCUHZw6xJIAkKQVMwIlAkIQdnBrUsgCQhBUjEjUCYgBGUHty6BJCAEScWMQJmAEJQd3LoEkoAQJBUzAmUCQlB2cOsSSAJCkFTMCJQJCEHZwa1LIAkIQVIxI1AmIARlB7cugSQgBEnFjECZgBCUHdy6BJKAECQVMwJlAkJQdnDrEkgCQpBUzAiUCQhB2cGtSyAJCEFSMSNQJiAEZQe3LoEkIARJxYxAmYAQlB3cugSSgBAkFTMCZQJCUHZw6xJIAkKQVMwIlAkIQdnBrUsgCQhBUjEjUCYgBGUHty6BJCAEScWMQJmAEJQd3LoEkoAQJBUzAmUCQlB2cOsSSAJCkFTMCJQJCEHZwa1LIAkIQVIxI1AmIARlB7cugSQgBEnFjECZgBCUHdy6BJKAECQVMwJlAkJQdnDrEkgCQpBUzAiUCQhB2cGtSyAJCEFSMSNQJiAEZQe3LoEkIARJxYxAmYAQlB3cugSSgBAkFTMCZQJCUHZw6xJIAkKQVMwIlAkIQdnBrUsgCQhBUjEjUCYgBGUHty6BJCAEScWMQJmAEJQd3LoEkoAQJBUzAmUCQlB2cOsSSAJCkFTMCJQJCEHZwa1LIAkIQVIxI1AmIARlB7cugSQgBEnFjECZgBCUHdy6BJKAECQVMwJlAkJQdnDrEkgCQpBUzAiUCQhB2cGtSyAJCEFSMSNQJiAEZQe3LoEkIARJxYxAmYAQlB3cugSSgBAkFTMCZQJCUHZw6xJIAkKQVMwIlAkIQdnBrUsgCQhBUjEjUCYgBGUHty6BJCAEScWMQJmAEJQd3LoEkoAQJBUzAmUCQlB2cOsSSAJCkFTMCJQJCEHZwa1LIAkIQVIxI1AmIARlB7cugSQgBEnFjECZgBCUHdy6BJKAECQVMwJlAkJQdnDrEkgCQpBUzAiUCQhB2cGtSyAJCEFSMSNQJiAEZQe3LoEkIARJxYxAmYAQlB3cugSSgBAklf/p7NGjR2Nra2vM5/PJNlhZ2Tn27v1szGazyZ7pQR+fgBB8fDd5q090586dcf78+XH79q3x9Omzt3pG+kvb//737Pl0nD59euzYsSP9EbMlEBCCJTji9goXL14cFy5ceG/bHD9+fBw7dmysrKy8t3d48OIEhGBx9pO9efvbgbNnz47Nzc2xuro69u3bN3bv3j3J8y9fvjyePHky9u/fP06cODHZcyf5cB4ymYAQTEa5uAc9fvz4VQhu3rw51tfXx8mTJ8fa2to7f6DtnzlsB+bWrVtjY2Pj1XOnCsw7fzgPmFRACCblXMzD3gzBqVOnJgvBmTNnhGAxZ/2gbxWCD8r9fl4mBO/HtempQrAE1xaCJTjiglcQggUfYIrXC8EUit3PEIIluL8QLMERF7yCECz4AFO8XgimUOx+hhAswf2FYAmOuOAVhGDBB5ji9UIwhWL3M/4FAAD///DngrIAAAbpSURBVO3bX0+bBRiG8aeMEggFdGCtCGQHkG1BZbEwI4FjvgAfVBP1wKMZOIGELIxN0MGQtSAumTjABAJZ5W2yZkDnAOe9u28uThzjz/P094Rro8zMzs5fleCloQX29/djdnY2tre3I5/Px+TkZHR0dFz4MSUfn8vlzr3/3t5ezMzMxLNnz6JQKMTExETd9zv3gfxGwwlkCEHD3ezcwlcNQaVSiQcPHlS/0O/evRtdXV2nPjchOMWR6lcIQQrO+7YQvHz5MtbW1qK1tTX6+/trj/j+/fuxuLhYff327VtRLI5Gc3Nz7e2EoEaR+l8QghSc+G0hWF5ejqWlpRgY6I/R0bHqF/vW1mbMzc3HixcvqgLZbPbkbaNx8+bNmgghqFGk/heEIAUn/rcQlMvlky/4uUi+qJOXkZGRGBwcjPn5uSiVyuce/fT0dO15AEJwjie1v0EIUnDaN4VgY2MjHj/+NcrlzVOPMnliMPmYei8tLS0xNTUV3d3d1XjwZGE9pfT9HiFIwU3fFILkbwLJtwWXfSkWizE0NBRHR0f81OCyeA36/oSgQQ/3+tr1QpD8qZ/8VOCqL01NTfyN4Kp4DfhxhKABj3Z25XohuMy/Izj7+V69znMEryTS/19CkIIbvx6C9vb26hOC9f6B0GUfavJ5V1dXq//OoLe3N8bHx2tPJF72c/H+3gKEwPs+F9ou+V5+YWEhVlZWLvT+V3mn4eHhuHPnTiQ/ZuQlfQKEICU33dn5M+7d+yl2d3f/03MDZzmy2ea4fr07xsbGoqen5+ybeT0lAoQgJYdMHkYSgVKpVH22/108rEwmor09V/3/Fzo7O9/Fp+RzmAoQAtPDsBYCSgFCoNRmFgKmAoTA9DCshYBSgBAotZmFgKkAITA9DGshoBQgBEptZiFgKkAITA/DWggoBQiBUptZCJgKEALTw7AWAkoBQqDUZhYCpgKEwPQwrIWAUoAQKLWZhYCpACEwPQxrIaAUIARKbWYhYCpACEwPw1oIKAUIgVKbWQiYChAC08OwFgJKAUKg1GYWAqYChMD0MKyFgFKAECi1mYWAqQAhMD0MayGgFCAESm1mIWAqQAhMD8NaCCgFCIFSm1kImAoQAtPDsBYCSgFCoNRmFgKmAoTA9DCshYBSgBAotZmFgKkAITA9DGshoBQgBEptZiFgKkAITA/DWggoBQiBUptZCJgKEALTw7AWAkoBQqDUZhYCpgKEwPQwrIWAUoAQKLWZhYCpACEwPQxrIaAUIARKbWYhYCpACEwPw1oIKAUIgVKbWQiYChAC08OwFgJKAUKg1GYWAqYChMD0MKyFgFKAECi1mYWAqQAhMD0MayGgFCAESm1mIWAqQAhMD8NaCCgFCIFSm1kImAoQAtPDsBYCSgFCoNRmFgKmAoTA9DCshYBSgBAotZmFgKkAITA9DGshoBQgBEptZiFgKkAITA/DWggoBQiBUptZCJgKEALTw7AWAkoBQqDUZhYCpgKEwPQwrIWAUoAQKLWZhYCpACEwPQxrIaAUIARKbWYhYCpACEwPw1oIKAUIgVKbWQiYChAC08OwFgJKAUKg1GYWAqYChMD0MKyFgFKAECi1mYWAqQAhMD0MayGgFCAESm1mIWAqQAhMD8NaCCgFCIFSm1kImAoQAtPDsBYCSgFCoNRmFgKmAoTA9DCshYBSgBAotZmFgKkAITA9DGshoBQgBEptZiFgKkAITA/DWggoBQiBUptZCJgKEALTw7AWAkoBQqDUZhYCpgKEwPQwrIWAUoAQKLWZhYCpACEwPQxrIaAUIARKbWYhYCpACEwPw1oIKAUIgVKbWQiYChAC08OwFgJKAUKg1GYWAqYChMD0MKyFgFKAECi1mYWAqQAhMD0MayGgFCAESm1mIWAqQAhMD8NaCCgFCIFSm1kImAoQAtPDsBYCSgFCoNRmFgKmAoTA9DCshYBSgBAotZmFgKkAITA9DGshoBQgBEptZiFgKkAITA/DWggoBQiBUptZCJgKEALTw7AWAkoBQqDUZhYCpgKEwPQwrIWAUoAQKLWZhYChwMHBYRACw8OwEgIqgePj43j4aJkQqMCZg4CjwPpvT6Nc3iIEjsdhJwQUAk9L5Vhffxr5fA8hUIAzAwEngUqlEr9v/xFPnmxEofBRFD7OEwKnA7ELAgqBvb39+Hn5lzg4PIyvvypGW1tbZEqlzUou166YzwwEEHjPAvv7f8fi0qM4OjqO4pdfxAddndWNMt99/2Pl889uR0dHLjKZzHtek/EIIPB/Cezu7sXSw+W4dq0pbt0aiu7rH9ZGZb759odKtiUbA32fRl9fb+0N/AIBBNIjUN7ciufPd+Lw5NuBGzcG4pNC/tSD+wf7LTlYqPSGGwAAAABJRU5ErkJggg==";
diff --git a/src/app/shared/helpers/modal.helper.tsx b/src/app/shared/helpers/modal.helper.tsx
new file mode 100644
index 00000000..e587c4a6
--- /dev/null
+++ b/src/app/shared/helpers/modal.helper.tsx
@@ -0,0 +1,17 @@
+interface IErrors {
+ valor?: string;
+}
+
+export const validateValue = (valor: string | undefined, setShowErrors: (show: boolean) => void, setErros: (errors: IErrors) => void) => {
+ const erros: IErrors = {};
+
+ if (!valor) {
+ erros.valor = "Campo obrigatório!";
+ setShowErrors(true);
+ } else if (!/^[0-9/.]+$/.test(valor)) {
+ erros.valor = "Formato inválido!";
+ setShowErrors(true);
+ }
+
+ setErros(erros);
+ };
\ No newline at end of file
diff --git a/src/app/shared/helpers/photo.helper.tsx b/src/app/shared/helpers/photo.helper.tsx
new file mode 100644
index 00000000..4521c354
--- /dev/null
+++ b/src/app/shared/helpers/photo.helper.tsx
@@ -0,0 +1,40 @@
+import React from "react";
+import { Image, View } from "react-native";
+import Icon from "react-native-vector-icons/MaterialCommunityIcons";
+import { hasFoto } from "./foto.helper";
+import { StyleSheet } from 'react-native';
+
+export const getFoto = (
+ foto: string | null | undefined
+ ) => {
+ // Verifique se a função hasFoto está definida
+ if (hasFoto(foto)) {
+ return (
+
+ );
+ }
+
+ return (
+
+
+
+ );
+ };
+
+ const styles = StyleSheet.create({
+ fotoPerfil: {
+ width: 60,
+ aspectRatio: 1,
+ borderRadius: 100,
+ },
+ semFoto: { position: "relative", backgroundColor: "#EFEFF0" },
+ semFotoIcon: {
+ position: "absolute",
+ right: "38%",
+ bottom: "38%",
+ opacity: 0.4,
+ margin: "auto",
+ alignSelf: "center",
+ zIndex: 1,
+ },
+ });
diff --git a/src/app/shared/helpers/useNotification.tsx b/src/app/shared/helpers/useNotification.tsx
new file mode 100644
index 00000000..1cf809c3
--- /dev/null
+++ b/src/app/shared/helpers/useNotification.tsx
@@ -0,0 +1,103 @@
+// notificacoes.ts
+import * as Notifications from 'expo-notifications';
+import { Platform } from 'react-native';
+import React from 'react';
+import { ECategoriaRotina } from '../../interfaces/rotina.interface';
+import { ETipoSanguineo } from '../../interfaces/idoso.interface';
+
+export const handleNotificacao = async (
+ notificacao: boolean,
+ setNotificacao: React.Dispatch>,
+ setExpoToken: React.Dispatch>
+) => {
+ // Verifica se as notificações estão habilitadas
+ if (!notificacao) return;
+
+ // Configuração do canal de notificações para Android
+ if (Platform.OS === "android") {
+ await Notifications.setNotificationChannelAsync("default", {
+ name: "default",
+ importance: Notifications.AndroidImportance.MAX,
+ vibrationPattern: [0, 250, 250, 250],
+ lightColor: "#FF231F7C",
+ });
+ }
+
+ // Verifica permissões de notificações
+ const { status: existingStatus } = await Notifications.getPermissionsAsync();
+ let finalStatus = existingStatus;
+
+ // Solicita permissões, se necessário
+ if (existingStatus !== "granted") {
+ const { status } = await Notifications.requestPermissionsAsync();
+ finalStatus = status;
+ }
+
+ // Verifica se a permissão foi concedida
+ if (finalStatus !== "granted") {
+ alert("É necessário permitir as notificações!");
+ setNotificacao(false);
+ return;
+ }
+
+ // Obtém o token de push
+ const response = await Notifications.getExpoPushTokenAsync({
+ projectId: "7028a81c-adee-41de-91a7-b7e80535a448",
+ });
+ setExpoToken(response.data);
+};
+
+interface IErrors {
+ titulo?: string;
+ data?: string;
+ hora?: string;
+ categoria?: string;
+ descricao?: string;
+}
+
+export const validateFields = (
+ titulo: string,
+ data: string,
+ hora: string,
+ categoria: ECategoriaRotina | null,
+ descricao: string,
+ setErros: React.Dispatch>
+) => {
+ const erros: IErrors = {};
+
+ if (!titulo) {
+ erros.titulo = "Campo obrigatório!";
+ } else if (titulo.length > 100) {
+ erros.titulo = "O título deve ter no máximo 100 caracteres.";
+ }
+
+ if (!data) {
+ erros.data = "Campo obrigatório!";
+ } else if (!/^\d{2}\/\d{2}\/\d{4}$/.test(data)) {
+ erros.data = "Data deve ser no formato dd/mm/yyyy!";
+ }
+
+ if (!hora) {
+ erros.hora = "Campo obrigatório!";
+ } else if (!/^\d{2}:\d{2}$/.test(hora)) {
+ erros.hora = "Hora deve ser no formato hh:mm!";
+ }
+
+ // Verifica se categoria é null
+ if (categoria === null) {
+ erros.categoria = "Campo obrigatório!";
+ }
+
+ if (descricao?.length > 300) {
+ erros.descricao = "A descrição deve ter no máximo 300 caracteres.";
+ }
+
+ setErros(erros);
+};
+
+export const getTipoSanguineoOptions = () => {
+ return Object.values(ETipoSanguineo).map((tipo) => ({
+ key: tipo,
+ value: tipo,
+ }));
+ };
diff --git a/src/autenticacao/autenticacao.controller.spec.ts b/src/autenticacao/autenticacao.controller.spec.ts
deleted file mode 100644
index 39ac2f6f..00000000
--- a/src/autenticacao/autenticacao.controller.spec.ts
+++ /dev/null
@@ -1,57 +0,0 @@
-import { Test, TestingModule } from '@nestjs/testing';
-import { HttpResponse } from '../shared/classes/http-response';
-import { AutenticacaoController } from './autenticacao.controller';
-import { AutenticacaoService } from './autenticacao.service';
-
-describe('AutenticacaoController', () => {
- let controller: AutenticacaoController;
- let service: AutenticacaoService;
-
- const mockAutenticacaoService = {
- login: jest.fn(),
- validateToken: jest.fn(),
- };
-
- beforeEach(async () => {
- const module: TestingModule = await Test.createTestingModule({
- imports: [],
- controllers: [AutenticacaoController],
- providers: [
- {
- provide: AutenticacaoService,
- useValue: mockAutenticacaoService,
- },
- ],
- }).compile();
-
- controller = module.get(AutenticacaoController);
- service = module.get(AutenticacaoService);
- });
-
- it('should be defined', () => {
- expect(controller).toBeDefined();
- expect(service).toBeDefined();
- });
-
- it('should login', async () => {
- jest.spyOn(service, 'login').mockReturnValue(Promise.resolve('token'));
-
- expect(await controller.login({ email: 'a', senha: 'a' })).toEqual(
- new HttpResponse('token').onLogin(),
- );
- });
-
- it('should validateToken', async () => {
- jest.spyOn(service, 'validateToken').mockReturnValue(true);
-
- expect(await controller.validateToken({ jwt: 'token' })).toEqual(true);
- });
-
- it('should not validateToken', async () => {
- jest.spyOn(service, 'validateToken').mockImplementation(() => {
- throw new Error();
- });
-
- expect(await controller.validateToken({ jwt: 'token' })).toEqual(false);
- });
-});
diff --git a/src/autenticacao/autenticacao.controller.ts b/src/autenticacao/autenticacao.controller.ts
deleted file mode 100644
index ca68eb41..00000000
--- a/src/autenticacao/autenticacao.controller.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import { Body, Controller, HttpCode, Post } from '@nestjs/common';
-import { MessagePattern } from '@nestjs/microservices';
-import { HttpResponse } from '../shared/classes/http-response';
-import { PublicRoute } from '../shared/decorators/public-route.decorator';
-import { Response } from '../shared/interceptors/data-transform.interceptor';
-import { AutenticacaoService } from './autenticacao.service';
-import { LoginDto } from './dto/login.dto';
-
-@Controller()
-export class AutenticacaoController {
- constructor(private readonly _service: AutenticacaoService) {}
-
- @Post('login')
- @PublicRoute()
- @HttpCode(200)
- async login(@Body() body: LoginDto): Promise> {
- const jwtToken = await this._service.login(body);
- return new HttpResponse(jwtToken).onLogin();
- }
-
- @MessagePattern({ role: 'auth', cmd: 'check' })
- async validateToken(data: { jwt: string }) {
- try {
- return this._service.validateToken(data.jwt);
- } catch (error) {
- return false;
- }
- }
-}
diff --git a/src/autenticacao/autenticacao.module.ts b/src/autenticacao/autenticacao.module.ts
deleted file mode 100644
index 461f1ad6..00000000
--- a/src/autenticacao/autenticacao.module.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-import { Module } from '@nestjs/common';
-import { ConfigModule, ConfigService } from '@nestjs/config';
-import { JwtModule } from '@nestjs/jwt';
-import { PassportModule } from '@nestjs/passport';
-import { UsuarioModule } from '../usuario/usuario.module';
-import { AutenticacaoController } from './autenticacao.controller';
-import { AutenticacaoService } from './autenticacao.service';
-import { JwtStrategy } from './jwt.strategy';
-
-@Module({
- imports: [
- UsuarioModule,
- PassportModule,
- JwtModule.registerAsync({
- imports: [ConfigModule],
- useFactory: (configService: ConfigService) => ({
- secret: configService.get('JWT_TOKEN_SECRET'),
- }),
- inject: [ConfigService],
- }),
- ],
- controllers: [AutenticacaoController],
- providers: [AutenticacaoService, JwtStrategy],
- exports: [AutenticacaoService],
-})
-export class AutenticacaoModule {}
diff --git a/src/autenticacao/autenticacao.service.spec.ts b/src/autenticacao/autenticacao.service.spec.ts
deleted file mode 100644
index ef7e829b..00000000
--- a/src/autenticacao/autenticacao.service.spec.ts
+++ /dev/null
@@ -1,87 +0,0 @@
-import { BadRequestException, UnauthorizedException } from '@nestjs/common';
-import { ConfigService } from '@nestjs/config';
-import { JwtService } from '@nestjs/jwt';
-import { Test, TestingModule } from '@nestjs/testing';
-import bcrypt from 'bcrypt';
-import { UsuarioService } from '../usuario/usuario.service';
-import { AutenticacaoService } from './autenticacao.service';
-
-describe('AutenticacaoService', () => {
- let service: AutenticacaoService;
- let usuarioService: UsuarioService;
- let configService: ConfigService;
- let jwtService: JwtService;
-
- const mockUsuarioService = {
- findByEmail: jest.fn(),
- };
-
- const mockConfigService = {
- get: jest.fn(),
- };
-
- const mockJwtService = {
- sign: jest.fn(),
- verify: jest.fn(),
- };
-
- beforeEach(async () => {
- const module: TestingModule = await Test.createTestingModule({
- providers: [
- AutenticacaoService,
- { provide: UsuarioService, useValue: mockUsuarioService },
- { provide: ConfigService, useValue: mockConfigService },
- { provide: JwtService, useValue: mockJwtService },
- ],
- }).compile();
-
- service = module.get(AutenticacaoService);
- usuarioService = module.get(UsuarioService);
- configService = module.get(ConfigService);
- jwtService = module.get(JwtService);
- });
-
- it('should be defined', () => {
- expect(service).toBeDefined();
- });
-
- it('should not login - no email found', async () => {
- jest.spyOn(usuarioService, 'findByEmail').mockReturnValue(undefined as any);
-
- expect(service.login({ email: 'a', senha: '1' })).rejects.toThrow(
- new BadRequestException('Este email não está cadastrado!'),
- );
- });
-
- it('should not login - wrong password', async () => {
- jest.spyOn(usuarioService, 'findByEmail').mockReturnValue('a' as any);
- jest
- .spyOn(bcrypt, 'compare')
- .mockImplementation((pass: string | Buffer, hash: string) =>
- Promise.resolve(false),
- );
-
- expect(service.login({ email: 'a', senha: '1' })).rejects.toThrow(
- new UnauthorizedException('Senha incorreta!'),
- );
- });
-
- it('should login', async () => {
- jest.spyOn(configService, 'get').mockReturnValue('12h');
- jest.spyOn(jwtService, 'sign').mockReturnValue('token');
- jest.spyOn(usuarioService, 'findByEmail').mockReturnValue('a' as any);
- jest
- .spyOn(bcrypt, 'compare')
- .mockImplementation((pass: string | Buffer, hash: string) =>
- Promise.resolve(true),
- );
-
- expect(await service.login({ email: 'a', senha: '1' })).toEqual('token');
- });
-
- it('should validate token', () => {
- jest.spyOn(jwtService, 'verify').mockReturnValue(true as any);
-
- expect(service.validateToken('token')).toEqual(true);
- });
-});
diff --git a/src/autenticacao/autenticacao.service.ts b/src/autenticacao/autenticacao.service.ts
deleted file mode 100644
index d92f2f50..00000000
--- a/src/autenticacao/autenticacao.service.ts
+++ /dev/null
@@ -1,53 +0,0 @@
-import {
- BadRequestException,
- Injectable,
- UnauthorizedException,
-} from '@nestjs/common';
-import { ConfigService } from '@nestjs/config';
-import { JwtService } from '@nestjs/jwt';
-import bcrypt from 'bcrypt';
-import { UsuarioService } from '../usuario/usuario.service';
-import { LoginDto } from './dto/login.dto';
-
-@Injectable()
-export class AutenticacaoService {
- constructor(
- private readonly _usuarioService: UsuarioService,
- private readonly _jwtService: JwtService,
- private readonly _configService: ConfigService,
- ) {}
-
- async login({ email, senha }: LoginDto): Promise {
- const userFound = await this._usuarioService.findByEmail(email);
-
- if (!userFound) {
- throw new BadRequestException('Este email não está cadastrado!');
- }
-
- await this.verifyPassword(senha, userFound.senha);
-
- const JwtPayload = {
- id: userFound.id,
- email: userFound.email,
- nome: userFound.nome,
- admin: userFound.admin,
- };
-
- const expiresIn = this._configService.get('JWT_TOKEN_EXPIRES_IN');
-
- return this._jwtService.sign(JwtPayload, { expiresIn });
- }
-
- private async verifyPassword(senha: string, hash: string) {
- // TODO a senha deve vir do front como um base64
- const isMatch = await bcrypt.compare(senha, hash);
-
- if (!isMatch) {
- throw new UnauthorizedException('Senha incorreta!');
- }
- }
-
- validateToken(jwt: string) {
- return this._jwtService.verify(jwt);
- }
-}
diff --git a/src/autenticacao/dto/login.dto.ts b/src/autenticacao/dto/login.dto.ts
deleted file mode 100644
index fe4d6ebb..00000000
--- a/src/autenticacao/dto/login.dto.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import { IsEmail, IsNotEmpty, IsString } from 'class-validator';
-
-export class LoginDto {
- @IsString()
- @IsNotEmpty()
- @IsEmail()
- email!: string;
-
- @IsString()
- @IsNotEmpty()
- senha!: string;
-}
diff --git a/src/autenticacao/interfaces/jwt.interface.ts b/src/autenticacao/interfaces/jwt.interface.ts
deleted file mode 100644
index b0a4b3f8..00000000
--- a/src/autenticacao/interfaces/jwt.interface.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-export interface JwtPayload {
- id: number;
- nome: string;
- email: string;
- admin: boolean;
- iat: number;
- exp: number;
-}
diff --git a/src/autenticacao/jwt-auth.guard.spec.ts b/src/autenticacao/jwt-auth.guard.spec.ts
deleted file mode 100644
index 2b6940d0..00000000
--- a/src/autenticacao/jwt-auth.guard.spec.ts
+++ /dev/null
@@ -1,47 +0,0 @@
-import { UnauthorizedException } from '@nestjs/common';
-import { Reflector } from '@nestjs/core';
-import { Test, TestingModule } from '@nestjs/testing';
-import { JwtAuthGuard } from './jwt-auth.guard';
-
-describe('JwtAuthGuard', () => {
- let guard: JwtAuthGuard;
- let reflector: Reflector;
-
- const mockReflector = {
- getAllAndOverride: jest.fn(),
- };
-
- const context = {
- getHandler: () => '',
- getClass: () => '',
- };
-
- beforeEach(async () => {
- const module: TestingModule = await Test.createTestingModule({
- providers: [
- { provide: Reflector, useValue: mockReflector },
- JwtAuthGuard,
- ],
- }).compile();
-
- guard = module.get(JwtAuthGuard);
- reflector = module.get(Reflector);
- });
-
- it('should be defined', () => {
- expect(guard).toBeDefined();
- });
-
- it('should activate public routes', () => {
- jest.spyOn(reflector, 'getAllAndOverride').mockReturnValue(true);
-
- expect(guard.canActivate(context as any)).toEqual(true);
- });
-
- it('should handle request for no user', () => {
- const callHandleRequest = () =>
- guard.handleRequest({} as any, undefined as any, {} as any, {} as any);
-
- expect(callHandleRequest).toThrowError(UnauthorizedException);
- });
-});
diff --git a/src/autenticacao/jwt-auth.guard.ts b/src/autenticacao/jwt-auth.guard.ts
deleted file mode 100644
index 713b0aa8..00000000
--- a/src/autenticacao/jwt-auth.guard.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-import {
- ExecutionContext,
- Injectable,
- UnauthorizedException,
-} from '@nestjs/common';
-import { Reflector } from '@nestjs/core';
-import { AuthGuard } from '@nestjs/passport';
-import { IS_PUBLIC_KEY } from '../shared/decorators/public-route.decorator';
-
-@Injectable()
-export class JwtAuthGuard extends AuthGuard('jwt-auth') {
- constructor(private readonly _reflector: Reflector) {
- super();
- }
-
- canActivate(context: ExecutionContext) {
- const isPublic = this._reflector.getAllAndOverride(IS_PUBLIC_KEY, [
- context.getHandler(),
- context.getClass(),
- ]);
-
- return isPublic ? true : super.canActivate(context);
- }
-
- handleRequest(
- err: unknown,
- user: JwtPayload,
- info: unknown,
- context: ExecutionContext,
- ) {
- if (!user) {
- throw new UnauthorizedException('Usuário não autenticado!');
- }
-
- return super.handleRequest(err, user, info, context);
- }
-}
diff --git a/src/autenticacao/jwt.strategy.spec.ts b/src/autenticacao/jwt.strategy.spec.ts
deleted file mode 100644
index bbd43100..00000000
--- a/src/autenticacao/jwt.strategy.spec.ts
+++ /dev/null
@@ -1,59 +0,0 @@
-import { ConfigService } from '@nestjs/config';
-import { Test, TestingModule } from '@nestjs/testing';
-import { JwtPayload } from './interfaces/jwt.interface';
-import { JwtStrategy } from './jwt.strategy';
-
-class PublicJwtStrategy extends JwtStrategy {
- public validate(payload: any): Promise {
- return super.validate(payload);
- }
-}
-
-describe('JwtStrategy', () => {
- let strategy: JwtStrategy;
- let configService: ConfigService;
-
- beforeEach(async () => {
- const module: TestingModule = await Test.createTestingModule({
- providers: [
- ConfigService,
- {
- provide: JwtStrategy,
- useValue: {
- constructor: jest.fn(),
- validate: jest.fn(),
- },
- },
- ],
- }).compile();
- strategy = module.get(JwtStrategy);
- configService = module.get(ConfigService);
- });
-
- it('should be defined', () => {
- expect(strategy).toBeDefined();
- expect(configService).toBeDefined();
- });
-
- it('should validate', async () => {
- const spy = jest
- .spyOn(configService, 'get')
- .mockReturnValue(
- 'a0e47b13e1f3984172bf162aa2832ae6da4333c1881728d88c3792b29463d459',
- );
-
- const publicJwtStrategy = new PublicJwtStrategy(configService);
- const payload: JwtPayload = {
- exp: 0,
- iat: 0,
- id: 1,
- nome: 'zé',
- email: 'ze@email.com',
- admin: false,
- };
- const returned = { ...payload };
-
- expect(await publicJwtStrategy.validate(payload)).toEqual(returned);
- expect(spy).toHaveBeenCalledTimes(1);
- });
-});
diff --git a/src/autenticacao/jwt.strategy.ts b/src/autenticacao/jwt.strategy.ts
deleted file mode 100644
index f2e01a69..00000000
--- a/src/autenticacao/jwt.strategy.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { Injectable } from '@nestjs/common';
-import { ConfigService } from '@nestjs/config';
-import { PassportStrategy } from '@nestjs/passport';
-import { ExtractJwt, Strategy } from 'passport-jwt';
-import { JwtPayload } from './interfaces/jwt.interface';
-
-@Injectable()
-export class JwtStrategy extends PassportStrategy(Strategy, 'jwt-auth') {
- constructor(protected readonly configService: ConfigService) {
- super({
- jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
- ignoreExpiration: false,
- secretOrKey: configService.get('JWT_TOKEN_SECRET'),
- });
- }
-
- protected async validate(payload: JwtPayload) {
- return { ...payload };
- }
-}
diff --git a/src/config/db/db.module.ts b/src/config/db/db.module.ts
deleted file mode 100644
index e3f7eac5..00000000
--- a/src/config/db/db.module.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { Module } from '@nestjs/common';
-
-import { DbService } from './db.service';
-
-@Module({
- providers: [DbService],
- exports: [DbService],
-})
-export class DbModule {}
diff --git a/src/config/db/db.service.spec.ts b/src/config/db/db.service.spec.ts
deleted file mode 100644
index 68e32561..00000000
--- a/src/config/db/db.service.spec.ts
+++ /dev/null
@@ -1,97 +0,0 @@
-import { ConfigService } from '@nestjs/config';
-import { Test, TestingModule } from '@nestjs/testing';
-import { DbService } from './db.service';
-
-describe('DbService', () => {
- let service: DbService;
- let configService: ConfigService;
-
- const mockConfigService = {
- get(key: string) {
- switch (key) {
- case 'DB_HOST':
- return 'localhost';
- case 'DB_USERNAME':
- return 'username';
- case 'DB_PASS':
- return 'password';
- case 'DB_DATABASE':
- return 'public';
- case 'DB_PORT':
- return 5001;
- default:
- return null;
- }
- },
- };
-
- beforeEach(async () => {
- const module: TestingModule = await Test.createTestingModule({
- providers: [
- DbService,
- { provide: ConfigService, useValue: mockConfigService },
- ],
- }).compile();
-
- service = module.get(DbService);
- configService = module.get(ConfigService);
- });
-
- it('should be defined', () => {
- expect(service).toBeDefined();
- });
-
- it('should return db config development', async () => {
- jest.spyOn(configService, 'get').mockReturnValue(undefined);
-
- process.env.NODE_ENV = 'development';
-
- const host = 'localhost';
- const logging = false;
- const username = 'username';
- const password = 'password';
- const database = 'public';
- const port = 5001;
- const synchronize = false;
- const dbconfig = {
- type: 'postgres',
- host,
- logging,
- port,
- username,
- password,
- database,
- autoLoadEntities: true,
- synchronize,
- };
-
- expect(await service.createTypeOrmOptions()).toEqual(dbconfig);
- });
-
- it('should return db config production', async () => {
- jest.spyOn(configService, 'get').mockReturnValue(undefined);
-
- process.env.NODE_ENV = 'production';
-
- const host = 'localhost';
- const logging = false;
- const username = 'username';
- const password = 'password';
- const database = 'public';
- const port = 5001;
- const synchronize = false;
- const dbconfig = {
- type: 'postgres',
- host,
- logging,
- port,
- username,
- password,
- database,
- autoLoadEntities: true,
- synchronize,
- };
-
- expect(await service.createTypeOrmOptions()).toEqual(dbconfig);
- });
-});
diff --git a/src/config/db/db.service.ts b/src/config/db/db.service.ts
deleted file mode 100644
index 3fb3744e..00000000
--- a/src/config/db/db.service.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import { Injectable } from '@nestjs/common';
-import { ConfigService } from '@nestjs/config';
-import { TypeOrmModuleOptions, TypeOrmOptionsFactory } from '@nestjs/typeorm';
-
-@Injectable()
-export class DbService implements TypeOrmOptionsFactory {
- constructor(private configService: ConfigService) {}
-
- createTypeOrmOptions(): TypeOrmModuleOptions | Promise {
- const host = this.configService.get('DB_HOST') || 'localhost';
- const username =
- this.configService.get('DB_USERNAME') || 'username';
- const password = this.configService.get('DB_PASS') || 'password';
- const database = this.configService.get('DB_DATABASE') || 'public';
- const port = this.configService.get('DB_PORT') || 5001;
-
- return Promise.resolve({
- type: 'postgres',
- host,
- port,
- username,
- password,
- database,
- autoLoadEntities: true,
- synchronize: false,
- logging: false,
- });
- }
-}
diff --git a/src/main.ts b/src/main.ts
deleted file mode 100644
index bfe5f60c..00000000
--- a/src/main.ts
+++ /dev/null
@@ -1,51 +0,0 @@
-import { ValidationPipe } from '@nestjs/common';
-import { NestFactory } from '@nestjs/core';
-import compression from 'compression';
-import { json, urlencoded } from 'express';
-import helmet from 'helmet';
-
-import { Transport } from '@nestjs/microservices';
-import { AppModule } from './app.module';
-import { AllExceptionsFilter } from './shared/filters/all-exceptions.filter';
-import { ModelNotFoundExceptionFilter } from './shared/filters/model-not-found.exception-filter';
-import { DataTransformInterceptor } from './shared/interceptors/data-transform.interceptor';
-
-async function bootstrap() {
- const app = await NestFactory.create(AppModule);
-
- app.setGlobalPrefix('api/usuario');
- app.use(json({ limit: '50mb' }));
- app.use(urlencoded({ extended: true, limit: '50mb' }));
- app.use(helmet());
- app.use(compression());
-
- app.useGlobalPipes(
- new ValidationPipe({
- whitelist: true,
- transform: true,
- }),
- );
-
- app.useGlobalInterceptors(new DataTransformInterceptor());
-
- app.useGlobalFilters(
- new AllExceptionsFilter(),
- new ModelNotFoundExceptionFilter(),
- );
-
- app.enableCors();
-
- app.connectMicroservice({
- transport: Transport.TCP,
- options: {
- // TODO analisar em prod esse host
- host: '0.0.0.0',
- port: 4001,
- },
- });
-
- await app.startAllMicroservices();
- await app.listen(3001);
- console.log(`Application is running on: ${await app.getUrl()}`);
-}
-bootstrap();
diff --git a/src/migration/1697762741479-AddResetAoUsuario.ts b/src/migration/1697762741479-AddResetAoUsuario.ts
deleted file mode 100644
index 70f1197f..00000000
--- a/src/migration/1697762741479-AddResetAoUsuario.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import { MigrationInterface, QueryRunner } from 'typeorm';
-
-export class AddResetFieldsToUsuario1697762741479 implements MigrationInterface {
- public async up(queryRunner: QueryRunner): Promise {
- await queryRunner.query(`
- ALTER TABLE "usuario"
- ADD COLUMN "codigoReset" VARCHAR(255),
- ADD COLUMN "codigoResetExpiracao" TIMESTAMP;
- `);
- }
-
- public async down(queryRunner: QueryRunner): Promise {
- await queryRunner.query(`
- ALTER TABLE "usuario"
- DROP COLUMN "codigoReset",
- DROP COLUMN "codigoResetExpiracao";
- `);
- }
-}
diff --git a/src/migration/1697762741479-CreateTableUsuario.ts b/src/migration/1697762741479-CreateTableUsuario.ts
deleted file mode 100644
index 09625df6..00000000
--- a/src/migration/1697762741479-CreateTableUsuario.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import { MigrationInterface, QueryRunner } from 'typeorm';
-
-export class CreateTableUsuario1697762741479 implements MigrationInterface {
- name = 'CreateTableUsuario1697762741479';
-
- public async up(queryRunner: QueryRunner): Promise {
- await queryRunner.query(
- `CREATE TABLE "usuario" ("id" SERIAL NOT NULL, "nome" character varying(60) NOT NULL, "foto" bytea, "email" character varying(100) NOT NULL, "senha" character varying(100) NOT NULL, "admin" boolean NOT NULL DEFAULT false, CONSTRAINT "UQ_2863682842e688ca198eb25c124" UNIQUE ("email"), CONSTRAINT "PK_a56c58e5cabaa04fb2c98d2d7e2" PRIMARY KEY ("id"))`,
- );
- }
-
- public async down(queryRunner: QueryRunner): Promise {
- await queryRunner.query(`DROP TABLE "usuario"`);
- }
-}
diff --git a/src/migration/1725205303955-AddCreatedAtUpdatedAtToUsuario.ts b/src/migration/1725205303955-AddCreatedAtUpdatedAtToUsuario.ts
deleted file mode 100644
index 945881f2..00000000
--- a/src/migration/1725205303955-AddCreatedAtUpdatedAtToUsuario.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-import { MigrationInterface, QueryRunner, TableColumn } from "typeorm";
-
-export class AddCreatedAtUpdatedAtToUsuario1725205303955 implements MigrationInterface {
-
- public async up(queryRunner: QueryRunner): Promise {
- await queryRunner.addColumns(
- 'usuario',
- [
- new TableColumn({
- name: 'created_at',
- type: 'timestamp',
- default: 'now()'
- }),
- new TableColumn({
- name: 'updated_at',
- type: 'timestamp',
- default: 'now()'
- })
- ]
- );
- }
-
- public async down(queryRunner: QueryRunner): Promise {
- await queryRunner.dropColumns(
- 'usuario',
- [
- new TableColumn({ name: 'created_at', type: 'timestamp' }),
- new TableColumn({ name: 'updated_at', type: 'timestamp' })
- ]
- )
- }
-}
diff --git a/src/migrations.ts b/src/migrations.ts
deleted file mode 100644
index d1014d19..00000000
--- a/src/migrations.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-import { DataSource } from 'typeorm';
-
-(async () => {
- const dataSource = new DataSource({
- type: 'postgres',
- host: process.env.DB_HOST,
- port: Number(process.env.DB_PORT),
- username: process.env.DB_USERNAME,
- password: process.env.DB_PASS,
- database: process.env.DB_DATABASE,
- migrationsTableName: 'migrations',
- entities: ['**/*.entity.js'],
- synchronize: false,
- migrationsRun: true,
- logging: true,
- migrations: [__dirname + '/migration/*.js'],
- // namingStrategy: new SnakeNamingStrategy(), // Here you'r using the strategy!,
- });
-
- await dataSource.initialize();
- await dataSource.runMigrations();
-})();
diff --git a/src/ormconfig.ts b/src/ormconfig.ts
deleted file mode 100644
index 58e637fb..00000000
--- a/src/ormconfig.ts
+++ /dev/null
@@ -1,35 +0,0 @@
-import { TypeOrmModuleOptions } from '@nestjs/typeorm';
-import dotenv from 'dotenv';
-import { readFileSync } from 'fs';
-import { resolve } from 'path';
-import { DataSource, DataSourceOptions } from 'typeorm';
-
-const ENV = !process.env.NODE_ENV ? '.env' : `.env.${process.env.NODE_ENV}`;
-const path = resolve(__dirname, `../${ENV}`);
-
-const envConfig = dotenv.parse(readFileSync(path));
-for (const k in envConfig) {
- process.env[k] = envConfig[k];
-}
-
-const SnakeNamingStrategy = require("typeorm-naming-strategies").SnakeNamingStrategy
-
-const config: DataSourceOptions = {
- type: 'postgres',
- host: process.env.DB_HOST || 'localhost',
- port: process.env.DB_PORT ? +process.env.DB_PORT : 5001,
- username: process.env.DB_USERNAME || 'postgres',
- password: process.env.DB_PASS || 'postgres',
- database: process.env.DB_DATABASE || 'localhost',
- migrationsTableName: 'migrations',
- entities: [__dirname + '/**/*.entity{.ts,.js}'],
- synchronize: false,
- migrationsRun: true,
- logging: false,
- migrations: [__dirname + '/migration/**/*{.ts,.js}'],
- namingStrategy: new SnakeNamingStrategy()
-};
-
-export default new DataSource(config);
-
-export const typeOrmConfig: TypeOrmModuleOptions = config;
diff --git a/src/shared/classes/http-response.spec.ts b/src/shared/classes/http-response.spec.ts
deleted file mode 100644
index 2a0e0c85..00000000
--- a/src/shared/classes/http-response.spec.ts
+++ /dev/null
@@ -1,67 +0,0 @@
-import { HttpResponse } from './http-response';
-
-describe('HttpResponse', () => {
- it('should be defined', () => {
- expect(new HttpResponse({})).toBeDefined();
- });
-
- it('should create message with payload text', () => {
- const response = new HttpResponse({});
- const created = response.onSuccess('Salvo com sucesso!');
-
- const expected = {
- message: 'Salvo com sucesso!',
- data: {},
- };
-
- expect(created).toEqual(expected);
- });
-
- it('should create message with success text', () => {
- const response = new HttpResponse({});
- const created = response.onCreated();
-
- const expected = {
- message: 'Salvo com sucesso!',
- data: {},
- };
-
- expect(created).toEqual(expected);
- });
-
- it('should create message with updated text', () => {
- const response = new HttpResponse({});
- const updated = response.onUpdated();
-
- const expected = {
- message: 'Atualizado com sucesso!',
- data: {},
- };
-
- expect(updated).toEqual(expected);
- });
-
- it('should create message with deleted text', () => {
- const response = new HttpResponse({});
- const updated = response.onDeleted();
-
- const expected = {
- message: 'Excluído com sucesso!',
- data: {},
- };
-
- expect(updated).toEqual(expected);
- });
-
- it('should create message with login text', () => {
- const response = new HttpResponse({});
- const updated = response.onLogin();
-
- const expected = {
- message: 'Login efetuado com sucesso!',
- data: {},
- };
-
- expect(updated).toEqual(expected);
- });
-});
diff --git a/src/shared/classes/http-response.ts b/src/shared/classes/http-response.ts
deleted file mode 100644
index 48edb05e..00000000
--- a/src/shared/classes/http-response.ts
+++ /dev/null
@@ -1,36 +0,0 @@
-import { Response } from '../interceptors/data-transform.interceptor';
-
-export class HttpResponse implements Response {
- message = '';
- data!: T | null | undefined;
-
- constructor(data: T | null | undefined, message = '') {
- this.data = data;
- this.message = message;
- }
-
- onSuccess(message: string): Response {
- this.message = message;
- return this;
- }
-
- onCreated(): Response {
- this.message = 'Salvo com sucesso!';
- return this;
- }
-
- onUpdated(): Response {
- this.message = 'Atualizado com sucesso!';
- return this;
- }
-
- onDeleted(): Response {
- this.message = 'Excluído com sucesso!';
- return this;
- }
-
- onLogin(): Response {
- this.message = 'Login efetuado com sucesso!';
- return this;
- }
-}
diff --git a/src/shared/decorators/filtrate-string.decorator.ts b/src/shared/decorators/filtrate-string.decorator.ts
deleted file mode 100644
index 30c0feda..00000000
--- a/src/shared/decorators/filtrate-string.decorator.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-import { createParamDecorator, ExecutionContext } from '@nestjs/common';
-
-import { isJsonObject } from '../helpers/commons';
-
-export class FilteringString {
- filter: string;
-
- constructor(query: string) {
- this.filter = this.buildFilterParams(query);
- }
-
- private buildFilterParams(filter: string): string {
- if (!isJsonObject(filter) && filter.trim().length > 0) {
- return filter;
- }
-
- return '';
- }
-}
-
-export const FiltrateString = createParamDecorator(
- (data: unknown, context: ExecutionContext): FilteringString => {
- const http = context.switchToHttp() as { getRequest: () => unknown };
- const req = http.getRequest() as { query: { filter: string } };
- return new FilteringString(req.query.filter);
- },
-);
diff --git a/src/shared/decorators/filtrate-string.spec.ts b/src/shared/decorators/filtrate-string.spec.ts
deleted file mode 100644
index e4ad2b45..00000000
--- a/src/shared/decorators/filtrate-string.spec.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-import { FilteringString, FiltrateString } from './filtrate-string.decorator';
-import { getParamDecoratorFactory } from './paginate.decorator.spec';
-
-describe('FiltrateString', () => {
- const stringFilter = 'teste';
- const executionContext = {
- switchToHttp: () => ({
- getRequest: () => ({ query: { filter: stringFilter } }),
- }),
- } as any;
-
- it('should return empty object for filter', () => {
- expect(new FilteringString('')).toEqual({ filter: '' });
- });
-
- it('should return TestFilterProps object with values for filter', () => {
- expect(new FilteringString(stringFilter)).toEqual({
- filter: 'teste',
- });
- });
-
- it('should be FiltrateString using factory', () => {
- const factory = getParamDecoratorFactory(FiltrateString);
- const result = factory(null, executionContext);
- expect(result).toEqual(new FilteringString(stringFilter));
- });
-});
diff --git a/src/shared/decorators/filtrate.decorator.spec.ts b/src/shared/decorators/filtrate.decorator.spec.ts
deleted file mode 100644
index 79f67ebd..00000000
--- a/src/shared/decorators/filtrate.decorator.spec.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-import { Filtering, Filtrate } from './filtrate.decorator';
-import { getParamDecoratorFactory } from './paginate.decorator.spec';
-
-interface TestFilterProps {
- id?: number;
- text?: string;
-}
-
-describe('Filtrate', () => {
- const stringFilter = '{"id":1,"text":"teste"}';
- const executionContext = {
- switchToHttp: () => ({
- getRequest: () => ({ query: { filter: stringFilter } }),
- }),
- } as any;
-
- it('should return empty object for filter', () => {
- expect(new Filtering('')).toEqual({ filter: {} });
- });
-
- it('should return TestFilterProps object with values for filter', () => {
- expect(new Filtering(stringFilter)).toEqual({
- filter: { id: 1, text: 'teste' },
- });
- });
-
- it('should be Filtrate using factory', () => {
- const factory = getParamDecoratorFactory(Filtrate);
- const result = factory(null, executionContext);
- expect(result).toEqual(new Filtering(stringFilter));
- });
-});
diff --git a/src/shared/decorators/filtrate.decorator.ts b/src/shared/decorators/filtrate.decorator.ts
deleted file mode 100644
index 987cc97c..00000000
--- a/src/shared/decorators/filtrate.decorator.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import { createParamDecorator, ExecutionContext } from '@nestjs/common';
-import { isJsonObject } from '../helpers/commons';
-
-interface FilterParams {
- filter: T;
-}
-
-export class Filtering implements FilterParams {
- filter: T;
-
- constructor(query: string) {
- this.filter = this.buildFilterParams(query);
- }
-
- private buildFilterParams(filter: string): T {
- if (isJsonObject(filter)) {
- return JSON.parse(filter) as T;
- }
- return {} as T;
- }
-}
-
-export const Filtrate = createParamDecorator(
- (data: unknown, context: ExecutionContext): Filtering => {
- const http = context.switchToHttp() as { getRequest: () => unknown };
- const req = http.getRequest() as { query: { filter: string } };
- return new Filtering(req.query.filter);
- },
-);
diff --git a/src/shared/decorators/ordenate.decorator.spec.ts b/src/shared/decorators/ordenate.decorator.spec.ts
deleted file mode 100644
index 01a565e7..00000000
--- a/src/shared/decorators/ordenate.decorator.spec.ts
+++ /dev/null
@@ -1,41 +0,0 @@
-import { Ordenate, Ordering, OrderParams } from './ordenate.decorator';
-import { getParamDecoratorFactory } from './paginate.decorator.spec';
-
-describe('Ordenate', () => {
- const stringOrder = '{"column":"coluna1","dir":"desc"}';
- const stringOrderEmptyProps = '{"column":"","dir":""}';
-
- const defaultOrder: OrderParams = {
- column: 'id',
- dir: 'ASC',
- };
-
- const order: OrderParams = {
- column: 'coluna1',
- dir: 'desc',
- };
-
- const executionContext = {
- switchToHttp: () => ({
- getRequest: () => ({ query: { order: stringOrder } }),
- }),
- } as any;
-
- it('should return default object if there is no JSON', () => {
- expect(new Ordering('')).toEqual(defaultOrder);
- });
-
- it('should return OrderParams object with values for order', () => {
- expect(new Ordering(stringOrder)).toEqual(order);
- });
-
- it('should return default values when obj has empty props', () => {
- expect(new Ordering(stringOrderEmptyProps)).toEqual(defaultOrder);
- });
-
- it('should be Ordenate using factory', () => {
- const factory = getParamDecoratorFactory(Ordenate);
- const result = factory(null, executionContext);
- expect(result).toEqual(new Ordering(stringOrder));
- });
-});
diff --git a/src/shared/decorators/ordenate.decorator.ts b/src/shared/decorators/ordenate.decorator.ts
deleted file mode 100644
index 65894e15..00000000
--- a/src/shared/decorators/ordenate.decorator.ts
+++ /dev/null
@@ -1,47 +0,0 @@
-import { createParamDecorator, ExecutionContext } from '@nestjs/common';
-
-import { isJsonObject } from '../helpers/commons';
-
-export interface OrderParams {
- column: string;
- dir: string;
-}
-
-export class Ordering implements OrderParams {
- column!: string;
- dir!: string;
-
- constructor(query: string) {
- const orderObj = this.buildOrderParams(query);
- this.column = orderObj.column;
- this.dir = orderObj.dir;
- }
-
- private buildOrderParams(order: string): OrderParams {
- if (isJsonObject(order)) {
- const orderObj = JSON.parse(order) as OrderParams;
-
- if (!orderObj.column || orderObj.column.length === 0) {
- orderObj.column = 'id';
- }
-
- if (!orderObj.dir || orderObj.dir.length === 0) {
- orderObj.dir = 'ASC';
- }
-
- return orderObj;
- }
- return {
- column: 'id',
- dir: 'ASC',
- } as OrderParams;
- }
-}
-
-export const Ordenate = createParamDecorator(
- (data: unknown, context: ExecutionContext): Ordering => {
- const http = context.switchToHttp() as { getRequest: () => unknown };
- const req = http.getRequest() as { query: { order: string } };
- return new Ordering(req.query.order);
- },
-);
diff --git a/src/shared/decorators/paginate.decorator.spec.ts b/src/shared/decorators/paginate.decorator.spec.ts
deleted file mode 100644
index 5af700d0..00000000
--- a/src/shared/decorators/paginate.decorator.spec.ts
+++ /dev/null
@@ -1,62 +0,0 @@
-import { ROUTE_ARGS_METADATA } from '@nestjs/common/constants';
-
-import { Paginate, Pagination } from './paginate.decorator';
-
-const query: any = {
- limit: 10,
- offset: 1,
-};
-
-const executionContext = {
- switchToHttp: () => ({
- getRequest: () => ({ query }),
- }),
-} as any;
-
-export function getParamDecoratorFactory(decorator: Function) {
- class Test {
- // @ts-ignore
- public test(@decorator() value: any) {}
- }
-
- const args = Reflect.getMetadata(ROUTE_ARGS_METADATA, Test, 'test');
- return args[Object.keys(args)[0]].factory;
-}
-
-describe('Pagination', () => {
- it('should be defined', () => {
- expect(new Pagination(query)).toBeDefined();
- });
-
- it('should be Paginate', () => {
- const factory = getParamDecoratorFactory(Paginate);
- const result = factory(null, executionContext);
- expect(result).toEqual(new Pagination(query));
- });
-
- it('should be Paginate not limit', () => {
- const factory = getParamDecoratorFactory(Paginate);
-
- const offset: any = { offset: 1, limit: undefined };
- const executionContextLimit = {
- switchToHttp: () => ({
- getRequest: () => ({ query: offset }),
- }),
- } as any;
- const result = factory(null, executionContextLimit);
- expect(result).toEqual(new Pagination(offset));
- });
-
- it('should be Paginate not offset', () => {
- const factory = getParamDecoratorFactory(Paginate);
-
- const limit: any = { offset: undefined, limit: 10 };
- const executionContextOffset = {
- switchToHttp: () => ({
- getRequest: () => ({ query: limit }),
- }),
- } as any;
- const result = factory(null, executionContextOffset);
- expect(result).toEqual(new Pagination(limit));
- });
-});
diff --git a/src/shared/decorators/paginate.decorator.ts b/src/shared/decorators/paginate.decorator.ts
deleted file mode 100644
index 4a7ec4f3..00000000
--- a/src/shared/decorators/paginate.decorator.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-import { createParamDecorator, ExecutionContext } from '@nestjs/common';
-
-export interface PaginationParams {
- offset: number;
- limit: number;
-}
-
-export class Pagination implements PaginationParams {
- offset!: number;
- limit!: number;
-
- constructor(query: PaginationParams) {
- this.offset = this.getOffset(query.offset, query.limit);
- this.limit = this.getLimit(query.limit);
- }
-
- getOffset(offset?: number, limit?: number): number {
- if (!offset || !limit) {
- return 0;
- }
-
- return limit * offset;
- }
-
- getLimit(limit?: number): number {
- if (!limit) {
- return 10;
- }
-
- return limit;
- }
-}
-
-export const Paginate = createParamDecorator(
- (data: unknown, context: ExecutionContext): Pagination => {
- const http = context.switchToHttp() as { getRequest: () => unknown };
- const req = http.getRequest() as { query: PaginationParams };
- return new Pagination(req.query);
- },
-);
diff --git a/src/shared/decorators/public-route.decorator.ts b/src/shared/decorators/public-route.decorator.ts
deleted file mode 100644
index c27f73c9..00000000
--- a/src/shared/decorators/public-route.decorator.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-import { SetMetadata } from '@nestjs/common';
-
-export const IS_PUBLIC_KEY = 'isPublic';
-export const PublicRoute = () => SetMetadata(IS_PUBLIC_KEY, true);
diff --git a/src/shared/filters/all-exceptions.filter.spec.ts b/src/shared/filters/all-exceptions.filter.spec.ts
deleted file mode 100644
index ebeee7aa..00000000
--- a/src/shared/filters/all-exceptions.filter.spec.ts
+++ /dev/null
@@ -1,69 +0,0 @@
-import { HttpException } from '@nestjs/common';
-import { AllExceptionsFilter } from './all-exceptions.filter';
-
-const allExceptionsFilter = new AllExceptionsFilter();
-
-const json = {
- message: 'Internal server error.',
- data: null,
-};
-
-const host = {
- switchToHttp: () => ({
- getResponse: () => ({
- status: (value: any) => ({
- json: (js: any) => js,
- }),
- }),
- }),
-} as any;
-
-class TestResponseException {
- response: any;
-
- constructor(response: any) {
- this.response = response;
- }
-}
-
-class TestMessageException {
- message: string;
-
- constructor(message: string) {
- this.message = message;
- }
-}
-
-describe('AllExceptionsFilter', () => {
- it('should be defined', () => {
- expect(allExceptionsFilter).toBeDefined();
- });
-
- it('should be catch', async () => {
- const exception: HttpException = new HttpException(
- 'Internal server error.',
- 500,
- );
- const catchError = allExceptionsFilter.catch(exception, host);
-
- expect(catchError).toEqual(json);
- });
-
- it('should be not exception to class-validator', async () => {
- const exception: TestResponseException = new TestResponseException({
- message: 'Internal server error.',
- });
- const catchError = allExceptionsFilter.catch(exception, host);
-
- expect(catchError).toEqual(json);
- });
-
- it('should be not exception only message', async () => {
- const exception: TestMessageException = new TestMessageException(
- 'Internal server error.',
- );
- const catchError = allExceptionsFilter.catch(exception, host);
-
- expect(catchError).toEqual(json);
- });
-});
diff --git a/src/shared/filters/all-exceptions.filter.ts b/src/shared/filters/all-exceptions.filter.ts
deleted file mode 100644
index a510adb1..00000000
--- a/src/shared/filters/all-exceptions.filter.ts
+++ /dev/null
@@ -1,39 +0,0 @@
-import {
- ArgumentsHost,
- Catch,
- ExceptionFilter,
- HttpException,
- HttpStatus,
-} from '@nestjs/common';
-import { Response } from 'express';
-
-interface IException {
- response: { message: string };
- message: string;
-}
-
-@Catch()
-export class AllExceptionsFilter implements ExceptionFilter {
- catch(exception: T, host: ArgumentsHost) {
- const ctx = host.switchToHttp();
- const response = ctx.getResponse();
-
- const status =
- exception instanceof HttpException
- ? exception.getStatus()
- : HttpStatus.INTERNAL_SERVER_ERROR;
-
- return response.status(status).json({
- message: this.formatData(exception as unknown as IException),
- data: null,
- });
- }
-
- formatData(exception: IException): string {
- if (exception.response?.message) {
- return exception.response.message;
- }
-
- return exception.message;
- }
-}
diff --git a/src/shared/filters/model-not-found.exception-filter.spec.ts b/src/shared/filters/model-not-found.exception-filter.spec.ts
deleted file mode 100644
index d723fc6d..00000000
--- a/src/shared/filters/model-not-found.exception-filter.spec.ts
+++ /dev/null
@@ -1,35 +0,0 @@
-import { EntityNotFoundError } from 'typeorm/error/EntityNotFoundError';
-import { ModelNotFoundExceptionFilter } from './model-not-found.exception-filter';
-
-const allExceptionsFilter = new ModelNotFoundExceptionFilter();
-
-const json = {
- message: 'Registro(s) não encontrado(s)!',
- data: null,
-};
-
-const host = {
- switchToHttp: () => ({
- getResponse: () => ({
- status: (value: any) => ({
- json: (js: any) => js,
- }),
- }),
- }),
-} as any;
-
-describe('ModelNotFoundExceptionFilter', () => {
- it('should be defined', () => {
- expect(allExceptionsFilter).toBeDefined();
- });
-
- it('should be catch', async () => {
- const exception: EntityNotFoundError = new EntityNotFoundError(
- 'Internal server error.',
- 500,
- );
- const catchError = allExceptionsFilter.catch(exception, host);
-
- expect(catchError).toEqual(json);
- });
-});
diff --git a/src/shared/filters/model-not-found.exception-filter.ts b/src/shared/filters/model-not-found.exception-filter.ts
deleted file mode 100644
index e16a8737..00000000
--- a/src/shared/filters/model-not-found.exception-filter.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import { ArgumentsHost, Catch, ExceptionFilter } from '@nestjs/common';
-import { EntityNotFoundError } from 'typeorm/error/EntityNotFoundError';
-import { Response } from 'express';
-
-@Catch(EntityNotFoundError)
-export class ModelNotFoundExceptionFilter implements ExceptionFilter {
- catch(_: EntityNotFoundError, host: ArgumentsHost) {
- const context = host.switchToHttp();
- const response = context.getResponse();
- return response.status(404).json({
- message: 'Registro(s) não encontrado(s)!',
- data: null,
- });
- }
-}
diff --git a/src/shared/helpers/buffer-to-image.spec.ts b/src/shared/helpers/buffer-to-image.spec.ts
deleted file mode 100644
index 28e4946f..00000000
--- a/src/shared/helpers/buffer-to-image.spec.ts
+++ /dev/null
@@ -1,67 +0,0 @@
-import {
- bufferToBase64,
- getImageUri,
- isBase64,
- isBase64Image,
-} from './buffer-to-image';
-
-describe('Buffer to image', () => {
- describe('bufferToBase64', () => {
- it('should be bufferToBase64 a image', async () => {
- const str = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD';
- const buff = Buffer.from(str, 'utf-8');
- const image = bufferToBase64(buff);
- expect(image).toBeDefined();
- expect(image).toEqual(str);
- });
-
- it('should getImageUri', async () => {
- const str = '/9j/4AAQSkZJRgABAQAAAQABAAD';
- const buff = Buffer.from(str, 'utf-8');
- const image = getImageUri(buff);
- expect(image).toEqual('data:image/png;base64,' + str);
- });
-
- it('should be bufferToBase64 a empty if null', async () => {
- const str = 'null';
- const buff = Buffer.from(str, 'utf-8');
- const image = bufferToBase64(buff);
- expect(image).toBeDefined();
- expect(image).toEqual('');
- });
-
- it('should be bufferToBase64 a empty if not image', async () => {
- const str = '';
- const buff = Buffer.from(str, 'utf-8');
- const image = bufferToBase64(buff);
- expect(image).toBeDefined();
- expect(image).toEqual('');
- });
- });
-
- describe('isBase64', () => {
- it('should be false', async () => {
- const isValid = isBase64(null);
- expect(isValid).toBeFalsy();
- });
-
- it('should be true', async () => {
- const str = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD';
- const isValid = isBase64(str);
- expect(isValid).toBeTruthy();
- });
- });
-
- describe('isBase64Image', () => {
- it('should be false', async () => {
- const isValid = isBase64Image('');
- expect(isValid).toBeFalsy();
- });
-
- it('should be true', async () => {
- const str = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD';
- const isValid = isBase64Image(str);
- expect(isValid).toBeTruthy();
- });
- });
-});
diff --git a/src/shared/helpers/buffer-to-image.ts b/src/shared/helpers/buffer-to-image.ts
deleted file mode 100644
index 3a64718b..00000000
--- a/src/shared/helpers/buffer-to-image.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-export const bufferToBase64 = (buffer: Buffer): string => {
- const base64 = Buffer.from(buffer).toString();
-
- return isBase64(base64) ? base64 : '';
-};
-
-export const getImageUri = (value: Buffer | string): string => {
- return `data:image/png;base64,${Buffer.from(value).toString()}`;
-};
-
-export function isBase64(value: unknown): boolean {
- return typeof value === 'string' && isBase64Image(value);
-}
-
-export function isBase64Image(str: string): boolean {
- const expression = `data:image\/([a-zA-Z]*);base64,([^\"]*)`;
- const regex = new RegExp(expression);
-
- return regex.test(str);
-}
diff --git a/src/shared/helpers/commons.spec.ts b/src/shared/helpers/commons.spec.ts
deleted file mode 100644
index 3f758474..00000000
--- a/src/shared/helpers/commons.spec.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-import { createHash, isJsonObject, isNil } from './commons';
-
-describe('Helper', () => {
- it('deve criar um hash com tamanho default', async () => {
- const hash = await createHash();
- expect(hash).toBeDefined();
- expect(hash).toHaveLength(6);
- });
-
- it('should be return if its nill for undefined', () => {
- expect(isNil(undefined)).toEqual(true);
- });
-
- it('should be return if its nill for null', () => {
- expect(isNil(null)).toEqual(true);
- });
-
- it('should be isJsonObject to be true', () => {
- const isObject = isJsonObject(`{ "id": 1 }`);
- expect(isObject).toBeTruthy();
- });
-
- it('should be isJsonObject to be false', () => {
- const isObject = isJsonObject(`test`);
- expect(isObject).toBeFalsy();
- });
-
- it('should be isJsonObject to be false in not parse', () => {
- const isObject = isJsonObject(`{ id: 1 }`);
- expect(isObject).toBeFalsy();
- });
-});
diff --git a/src/shared/helpers/commons.ts b/src/shared/helpers/commons.ts
deleted file mode 100644
index 194d883f..00000000
--- a/src/shared/helpers/commons.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import crypto from 'crypto';
-
-export const isNil = (obj: any): obj is null | undefined =>
- isUndefined(obj) || obj === null;
-
-export const isUndefined = (obj: any): obj is undefined =>
- typeof obj === 'undefined';
-
-export const isJsonObject = (str: string) => {
- try {
- const parse = JSON.parse(str);
- return parse && typeof parse === 'object';
- } catch (e) {
- return false;
- }
-};
-
-export const createHash = async (length = 6): Promise => {
- const chars =
- 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
- let text = '';
-
- for (let i = 0; i < length; i++) {
- const n = crypto.randomBytes(1)[0];
- text += chars.charAt(Math.floor(n % chars.length));
- }
-
- return Promise.resolve(text);
-};
diff --git a/src/shared/helpers/sql-query-helper.spec.ts b/src/shared/helpers/sql-query-helper.spec.ts
deleted file mode 100644
index 655f120e..00000000
--- a/src/shared/helpers/sql-query-helper.spec.ts
+++ /dev/null
@@ -1,87 +0,0 @@
-import {
- getWhereClauseArrayNumber,
- getWhereClauseBoolean,
- getWhereClauseIN,
- getWhereClauseNumber,
- getWhereClauseString,
-} from './sql-query-helper';
-
-describe('Where Clause STRING', () => {
- it('should return empty string if value is undefined', () => {
- const where = getWhereClauseString(undefined, 'descricao');
- expect(where).toBe('');
- });
-
- it('should return empty string if value has no length', () => {
- const where = getWhereClauseString('', 'descricao');
- expect(where).toBe('');
- });
-
- it('should return where string based on given value and tableColumn', () => {
- const where = getWhereClauseString('teste', 'descricao');
- expect(where).toBe(" AND descricao ILIKE('%teste%')");
- });
-});
-
-describe('Where Clause NUMBER', () => {
- it('should return empty string if value is undefined', () => {
- const where = getWhereClauseNumber(undefined, 'id');
- expect(where).toBe('');
- });
-
- it('should return where string based on given value and tableColumn', () => {
- const where = getWhereClauseNumber(3, 'id');
- expect(where).toBe(' AND id = 3');
- });
-});
-
-describe('Where Clause BOOLEAN', () => {
- it('should return empty string if value is undefined', () => {
- const where = getWhereClauseBoolean(undefined, 'ativo');
- expect(where).toBe('');
- });
-
- it('should return empty string if value is higher than 1', () => {
- const where = getWhereClauseBoolean(undefined, 'ativo');
- expect(where).toBe('');
- });
-
- it('should return where string based on given value and tableColumn', () => {
- const where = getWhereClauseBoolean(true, 'ativo');
- expect(where).toBe(' AND ativo = true');
- });
-});
-
-describe('Where Clause ARRAY NUMBER', () => {
- it('should return empty string if value is undefined', () => {
- const where = getWhereClauseArrayNumber(undefined, 'id');
- expect(where).toBe('');
- });
-
- it('should return where string if value is number', () => {
- const where = getWhereClauseArrayNumber(1, 'id');
- expect(where).toBe(" AND id && '{1}'::integer[]");
- });
-
- it('should return where string if value is number array', () => {
- const where = getWhereClauseArrayNumber([1], 'id');
- expect(where).toBe(" AND id && '{1}'::integer[]");
- });
-});
-
-describe('Where Clause IN', () => {
- it('should return empty string if value is undefined', () => {
- const where = getWhereClauseIN(undefined, 'teste');
- expect(where).toEqual('');
- });
-
- it('should return empty string if value is empty', () => {
- const where = getWhereClauseIN([], 'teste');
- expect(where).toEqual('');
- });
-
- it('should return where string based on given value and tableColumn', () => {
- const where = getWhereClauseIN([1], 'teste');
- expect(where).toBe(' AND teste IN(1)');
- });
-});
diff --git a/src/shared/helpers/sql-query-helper.ts b/src/shared/helpers/sql-query-helper.ts
deleted file mode 100644
index fa56e3e1..00000000
--- a/src/shared/helpers/sql-query-helper.ts
+++ /dev/null
@@ -1,43 +0,0 @@
-export type ClauseNumber = number | string | undefined;
-
-export function getWhereClauseIN(
- value: number[] | undefined,
- tableColumn: string,
-): string {
- if (!value || value.length < 1) return '';
- return ` AND ${tableColumn} IN(${value})`;
-}
-
-export function getWhereClauseString(
- value: string | undefined,
- tableColumn: string,
-): string {
- if (value === undefined || !value.length) return '';
- return ` AND ${tableColumn} ILIKE('%${value}%')`;
-}
-
-export function getWhereClauseNumber(
- value: ClauseNumber,
- tableColumn: string,
-): string {
- if (value === undefined || Number.parseInt(value as string) === -1) return '';
- return ` AND ${tableColumn} = ${Number(value)}`;
-}
-
-export function getWhereClauseBoolean(
- value: boolean | undefined,
- tableColumn: string,
-): string {
- if (value === undefined) return '';
-
- return ` AND ${tableColumn} = ${Boolean(value)}`;
-}
-
-export function getWhereClauseArrayNumber(
- value: number | number[] | undefined,
- tableColumn: string,
-): string {
- if (!value) return '';
- const searchValue = Array.isArray(value) ? value : [value];
- return ` AND ${tableColumn} && '{${searchValue}}'::integer[]`;
-}
diff --git a/src/shared/helpers/string-helpers.spec.ts b/src/shared/helpers/string-helpers.spec.ts
deleted file mode 100644
index fe90599e..00000000
--- a/src/shared/helpers/string-helpers.spec.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-import { clearSqlInject } from './string-helpers';
-
-describe('String Helpers', () => {
- it('should be regex', () => {
- const regex = clearSqlInject('4><*$');
- expect(regex).toBe('4');
- });
-});
diff --git a/src/shared/helpers/string-helpers.ts b/src/shared/helpers/string-helpers.ts
deleted file mode 100644
index 88435a7a..00000000
--- a/src/shared/helpers/string-helpers.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-export const clearSqlInject = (obj: string): string => {
- const regexp = /[^a-zA-Z0-9 ]/g;
- return obj.replace(regexp, '');
-};
diff --git a/src/shared/interceptors/data-transform.interceptor.spec.ts b/src/shared/interceptors/data-transform.interceptor.spec.ts
deleted file mode 100644
index 755dea8c..00000000
--- a/src/shared/interceptors/data-transform.interceptor.spec.ts
+++ /dev/null
@@ -1,65 +0,0 @@
-import { of } from 'rxjs';
-import {
- DataTransformInterceptor,
- Response,
-} from './data-transform.interceptor';
-
-const interceptor = new DataTransformInterceptor();
-
-const executionContext = {
- switchToHttp: jest.fn().mockReturnThis(),
- getRequest: jest.fn().mockReturnThis(),
-} as any;
-
-const callHandler = {
- handle: jest.fn(),
-};
-
-const response: Response = {
- message: 'teste',
- data: 'Data response',
-};
-
-describe('DataTransformInterceptor', () => {
- it('should be defined', () => {
- expect(interceptor).toBeDefined();
- });
-
- describe('should be intercept', () => {
- it('t1', async () => {
- jest.spyOn(callHandler, 'handle').mockImplementation(() => of(response));
- const actualValue = interceptor.intercept(executionContext, callHandler);
-
- actualValue.subscribe({
- next: (value) => {
- expect(value).toStrictEqual(response);
- },
- });
-
- expect(callHandler.handle).toBeCalledTimes(1);
- });
-
- it('should formatData with message', () => {
- const actualData: Response = interceptor.formatData(response);
- expect(actualData).toEqual(response);
- });
-
- it('should formatData with no message', () => {
- const actualData: Response =
- interceptor.formatData('Response message');
- expect(actualData).toEqual({
- message: null,
- data: 'Response message',
- });
- });
-
- it('should formatData with Paginate', () => {
- Object.assign(response, {
- count: 1,
- pageSize: 1,
- });
- const actualData: Response = interceptor.formatData(response);
- expect(actualData).toEqual(response);
- });
- });
-});
diff --git a/src/shared/interceptors/data-transform.interceptor.ts b/src/shared/interceptors/data-transform.interceptor.ts
deleted file mode 100644
index b4c441df..00000000
--- a/src/shared/interceptors/data-transform.interceptor.ts
+++ /dev/null
@@ -1,45 +0,0 @@
-import {
- CallHandler,
- ExecutionContext,
- Injectable,
- NestInterceptor,
-} from '@nestjs/common';
-import { Observable } from 'rxjs';
-import { map } from 'rxjs/operators';
-
-export interface Response {
- message: string | null | undefined;
- data: T | null | undefined;
- count?: number;
- pageSize?: number;
-}
-
-@Injectable()
-export class DataTransformInterceptor
- implements NestInterceptor>
-{
- intercept(
- context: ExecutionContext,
- next: CallHandler,
- ): Observable> {
- return next.handle().pipe(map((returned) => this.formatData(returned)));
- }
-
- formatData(returned: unknown): Response {
- const data = returned as Response;
- const dataResponse = {
- message: data.message ?? null,
- data: data.data ?? data,
- };
-
- if (data.count !== undefined && data.count >= 0) {
- Object.assign(dataResponse, { count: data.count });
- }
-
- if (data.pageSize !== undefined && data.pageSize >= 0) {
- Object.assign(dataResponse, { pageSize: data.pageSize });
- }
-
- return dataResponse as Response;
- }
-}
diff --git a/src/shared/interfaces/response-paginate.interface.ts b/src/shared/interfaces/response-paginate.interface.ts
deleted file mode 100644
index acb1c091..00000000
--- a/src/shared/interfaces/response-paginate.interface.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-export interface ResponsePaginate {
- data: T | Array;
- count: number;
- pageSize: number;
-}
diff --git a/src/shared/validators/id.validator.spec.ts b/src/shared/validators/id.validator.spec.ts
deleted file mode 100644
index 4a53001f..00000000
--- a/src/shared/validators/id.validator.spec.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import { IdValidator } from './id.validator';
-
-describe('HttpResponse', () => {
- it('should be defined', () => {
- expect(new IdValidator()).toBeDefined();
- });
-});
diff --git a/src/shared/validators/id.validator.ts b/src/shared/validators/id.validator.ts
deleted file mode 100644
index db6cbfe6..00000000
--- a/src/shared/validators/id.validator.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import { IsNotEmpty, IsNumberString } from 'class-validator';
-
-export class IdValidator {
- @IsNumberString('', { message: 'ID inválido' })
- @IsNotEmpty({ message: 'ID vazio' })
- id!: number;
-}
diff --git a/src/usuario/dto/create-usuario.dto.ts b/src/usuario/dto/create-usuario.dto.ts
deleted file mode 100644
index 99f871d3..00000000
--- a/src/usuario/dto/create-usuario.dto.ts
+++ /dev/null
@@ -1,38 +0,0 @@
-import {
- IsBoolean,
- IsEmail,
- IsNotEmpty,
- IsOptional,
- IsString,
- MaxLength,
- MinLength,
-} from 'class-validator';
-
-export class CreateUsuarioDto {
- // TODO colocar mensagens customizadas "user friendly" em todos os validators
-
- @IsString()
- @IsNotEmpty()
- @MaxLength(60)
- @MinLength(5)
- nome!: string;
-
- @IsOptional()
- @IsString()
- foto?: string;
-
- @IsString()
- @IsNotEmpty()
- @IsEmail()
- @MaxLength(100)
- email!: string;
-
- @IsString()
- @IsNotEmpty()
- @MaxLength(100)
- senha!: string;
-
- @IsOptional()
- @IsBoolean()
- admin?: boolean;
-}
diff --git a/src/usuario/dto/esqueci-senha.dto.ts b/src/usuario/dto/esqueci-senha.dto.ts
deleted file mode 100644
index 4c5b3073..00000000
--- a/src/usuario/dto/esqueci-senha.dto.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-export class EsqueciSenhaDto {
- email!: string;
-}
-
-// define a DTO (data transfer objects) necessária para receber o email do usuário;
diff --git a/src/usuario/dto/pull-usuarios-query-params.dto.ts b/src/usuario/dto/pull-usuarios-query-params.dto.ts
deleted file mode 100644
index 353194c9..00000000
--- a/src/usuario/dto/pull-usuarios-query-params.dto.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import { IsNotEmpty, IsOptional } from "class-validator";
-
-export class PullUsuariosQueryParamsDto {
- @IsNotEmpty()
- lastPulledAt!: number;
-
- @IsOptional()
- schemaVersion?: number;
-
- @IsOptional()
- migration?: any; // We'll just ignore this for a while
-}
\ No newline at end of file
diff --git a/src/usuario/dto/pull-usuarios-reponse.dto.ts b/src/usuario/dto/pull-usuarios-reponse.dto.ts
deleted file mode 100644
index 9fdec67e..00000000
--- a/src/usuario/dto/pull-usuarios-reponse.dto.ts
+++ /dev/null
@@ -1,35 +0,0 @@
-import { Expose, Transform } from "class-transformer";
-import { Usuario } from "../entities/usuario.entity";
-
-export class UsuarioDto {
- @Expose()
- @Transform(({ value }) => value.toString())
- id!: string;
-
- nome!: string;
- foto!: Buffer | null;
- email!: string;
- admin!: boolean;
-
- @Transform(({ value }) => Date.parse(value))
- created_at!: number;
-
- @Transform(({ value }) => Date.parse(value))
- updated_at!: number;
-
- constructor(partial: Partial) {
- Object.assign(this, partial);
- }
-}
-
-export class PullUsuariosResponseDto {
- changes!: {
- usuario: {
- created: UsuarioDto[],
- updated: UsuarioDto[],
- deleted: string[]
- }
- };
-
- timestamp!: number;
-}
diff --git a/src/usuario/dto/resetar-senha.dto.ts b/src/usuario/dto/resetar-senha.dto.ts
deleted file mode 100644
index b29bb4ac..00000000
--- a/src/usuario/dto/resetar-senha.dto.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-export class ResetarSenhaDto {
- email!: string;
- codigo!: string;
- novaSenha!: string;
-}
-
-// define as DTO (data transfer objects) novos, com os dados necessários pra resenhar a senha;
diff --git a/src/usuario/dto/update-usuario.dto.ts b/src/usuario/dto/update-usuario.dto.ts
deleted file mode 100644
index a2b8fbcd..00000000
--- a/src/usuario/dto/update-usuario.dto.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-import { PartialType } from '@nestjs/mapped-types';
-import { CreateUsuarioDto } from './create-usuario.dto';
-
-export class UpdateUsuarioDto extends PartialType(CreateUsuarioDto) {}
diff --git a/src/usuario/email.senha.ts b/src/usuario/email.senha.ts
deleted file mode 100644
index 512eac3c..00000000
--- a/src/usuario/email.senha.ts
+++ /dev/null
@@ -1,65 +0,0 @@
-import cors from 'cors';
-
-import express, { Request, Response } from 'express';
-import nodemailer from 'nodemailer';
-
-
-const app = express();
-
-app.use(express.json()); // Para processar o corpo das requisições em formato JSON
-app.use(cors());
-
-// Função para enviar o e-mail
-export async function sendResetEmail(email: string, codigo: string) {
-
- // Configuração do Nodemailer
- const transporter = nodemailer.createTransport({
- service: 'gmail', // Usando o serviço Gmail
- auth: {
- user: 'kauanfelipesousa1@gmail.com', // Meu e-mail
- pass: 'A@leatoria123', // Minha senha
- },
- });
-
- try {
- // Envia o e-mail
- const info = await transporter.sendMail({
- from: '"Sistema"