From 3fd0baad965303fdf9894154a822fecd4a1ade3b Mon Sep 17 00:00:00 2001 From: Araozu Date: Thu, 26 Oct 2023 21:43:45 -0500 Subject: [PATCH] Revert to 76f723a097c711f2e42837f8062d173a7dbd2db2 --- API.md | 217 --- __tests__/celdas.ts | 179 ++- jest.config.js | 5 - netlify.toml | 6 - package.json | 3 +- pnpm-lock.yaml | 1180 ++++++++--------- public/img/wall1.webp | Bin 208524 -> 0 bytes src/API/CargaHorarios.ts | 186 --- src/API/ListaCursos.ts | 82 -- src/API/Login.ts | 34 - src/API/VerMatricula.ts | 36 - src/App.tsx | 29 +- .../ContenedorHorarios/BotonIcono.tsx | 6 +- .../ContenedorHorarios/BotonMaxMin.tsx | 22 +- src/ContenedorHorarios/ContenedorHorarios.tsx | 137 ++ .../ContenedorHorarios/CursosElem.tsx | 91 +- src/ContenedorHorarios/Horarios.tsx | 139 ++ src/ContenedorHorarios/MiHorario.tsx | 146 ++ .../ContenedorHorarios/Tabla.tsx | 113 +- .../ContenedorHorarios/Tabla/CeldaFila.tsx | 112 +- .../ContenedorHorarios/Tabla/FilaTabla.tsx | 58 +- .../ContenedorHorarios/TablaObserver.ts | 111 +- .../ContenedorHorarios/useListaCursos.ts | 32 +- src/Estilos.ts | 4 +- src/Router.tsx | 26 +- src/Store.ts | 4 - src/Views/Editor.tsx | 4 +- src/Views/Index.tsx | 127 +- src/Views/Main.tsx | 49 + src/Views/MobileIndex.tsx | 85 -- src/Views/SeleccionCursos.tsx | 92 -- src/Views/SistemasMovil.tsx | 167 --- src/Views/SistemasMovil/Grupo.tsx | 64 - src/Views/SistemasMovil/Table.tsx | 100 -- src/Views/SistemasMovil/TopBar.tsx | 43 - src/Views/SistemasMovil/mapaCeldas.ts | 89 -- src/Views/VerMatricula.tsx | 34 - src/Views/pc/SeleccionCursos.tsx | 135 -- src/Views/pc/Sistemas.tsx | 101 -- src/Views/pc/Sistemas/ContenedorHorarios.tsx | 37 - .../Sistemas/ContenedorHorarios/MiHorario.tsx | 78 -- src/Views/pc/VerMatricula.tsx | 90 -- src/components/Button.tsx | 20 - src/components/Card.tsx | 19 - src/styles/global.css | 1 - src/types/DatosHorario.ts | 6 +- 46 files changed, 1610 insertions(+), 2689 deletions(-) delete mode 100644 API.md delete mode 100644 jest.config.js delete mode 100644 netlify.toml delete mode 100644 public/img/wall1.webp delete mode 100644 src/API/CargaHorarios.ts delete mode 100644 src/API/ListaCursos.ts delete mode 100644 src/API/Login.ts delete mode 100644 src/API/VerMatricula.ts rename src/{Views/pc/Sistemas => }/ContenedorHorarios/BotonIcono.tsx (87%) rename src/{Views/pc/Sistemas => }/ContenedorHorarios/BotonMaxMin.tsx (78%) create mode 100755 src/ContenedorHorarios/ContenedorHorarios.tsx rename src/{Views/pc/Sistemas => }/ContenedorHorarios/CursosElem.tsx (73%) create mode 100755 src/ContenedorHorarios/Horarios.tsx create mode 100755 src/ContenedorHorarios/MiHorario.tsx rename src/{Views/pc/Sistemas => }/ContenedorHorarios/Tabla.tsx (61%) rename src/{Views/pc/Sistemas => }/ContenedorHorarios/Tabla/CeldaFila.tsx (63%) rename src/{Views/pc/Sistemas => }/ContenedorHorarios/Tabla/FilaTabla.tsx (79%) rename src/{Views/pc/Sistemas => }/ContenedorHorarios/TablaObserver.ts (70%) rename src/{Views/pc/Sistemas => }/ContenedorHorarios/useListaCursos.ts (50%) create mode 100644 src/Views/Main.tsx delete mode 100644 src/Views/MobileIndex.tsx delete mode 100644 src/Views/SeleccionCursos.tsx delete mode 100644 src/Views/SistemasMovil.tsx delete mode 100644 src/Views/SistemasMovil/Grupo.tsx delete mode 100644 src/Views/SistemasMovil/Table.tsx delete mode 100644 src/Views/SistemasMovil/TopBar.tsx delete mode 100644 src/Views/SistemasMovil/mapaCeldas.ts delete mode 100644 src/Views/VerMatricula.tsx delete mode 100644 src/Views/pc/SeleccionCursos.tsx delete mode 100644 src/Views/pc/Sistemas.tsx delete mode 100755 src/Views/pc/Sistemas/ContenedorHorarios.tsx delete mode 100755 src/Views/pc/Sistemas/ContenedorHorarios/MiHorario.tsx delete mode 100644 src/Views/pc/VerMatricula.tsx delete mode 100644 src/components/Button.tsx delete mode 100644 src/components/Card.tsx diff --git a/API.md b/API.md deleted file mode 100644 index c64e514..0000000 --- a/API.md +++ /dev/null @@ -1,217 +0,0 @@ -# Inicio de sesion - -```ts -// HTTP POST -// Url: /login - -// Frontend envia el correo del usuario -{ - correo_usuario: string -} - -// Backend responde con una lista de matriculas -// Si el correo es valido y el usuario tiene alguna matricula -{ - matriculas: Array // Un array de id_laboratorio -} -// Si el correo es valido pero el usuario no tiene matriculas -{ - matriculas: [] // Un array vacio -} -// Si el correo es invalido: Se envia HTTP 401 -``` - - - - - -# Lista cursos - -```ts -// HTTP GET -// Url: /cursos - -// El frontend pide una lista de la informacion de todos los cursos - -// Backend responde con una lista de todos los cursos -[ - { - id_curso: number, - id_datos_carrera: any, // Opcional - nombre_curso: string, - curso_anio: number | string, // Numero o string, dependiendo de como este en DB - abreviado: string, - } -] -``` - - - - - -# Carga de horarios - -```ts -// HTTP POST -// Url: /horarios - -// El frontend envia una lista de cursos, de los cuales recuperar sus datos -{ - cursos: Array // Un array de id_curso -} - -// Backend responde con los cursos especificados y sus horarios -[ - // Cada objeto dentro del array sera un Curso - { - id_curso: number, - id_datos_carrera: any, // Opcional - nombre_curso: string, - curso_anio: number | string, - abreviado: string, - // Un array de objetos, estos objetos son de la entidad Laboratorio - laboratorios: [ - { - id_laboratorio: number, - id_curso: number, - grupo: string, - docente: string, - // Array de objetos de la entidad Horario - horario: [ - { - id_horario: number, - id_laboratorio: number, - dia: string, - hora_inicio: string, - hora_fin: string, - } - ] - } - ] - } -] - -``` - - - - -# Matricula - -```ts -// HTTP POST -// Url: /matricula - -// Frontend envia una lista de horarios en los cuales se matricula y el usuario -{ - correo_usuario: string, // Correo del usuario - horarios: Array // Array de id_laboratorio -} - -// Backend devuelve HTTP 200 si exitoso, HTTP 400 si hay error (no hay cupos) -``` - - - - - -# Recuperacion de matricula - -```ts -// HTTP POST -// Url: /recuperacion - -// Frontend envia una lista de id_laboratorio -{ - matriculas: Array // Array de id_laboratorio -} - -// Backend devuelve: -// Por cada id_laboratorio: datos del curso y el laboratorio -[ - // Un objeto asi por cada id_laboratorio - { - nombre_curso: string, // Este es el campo `nombre_curso` de la entidad Curso - grupo: string, // Campo `grupo` de la entidad Laboratorio - docente: string, // Campo `docente` de la entidad Laboratorio - } -] -``` - - - - - -# Creacion de datos - -Endpoints para insertar datos a la db - -```ts -// POST /crear-carrera - -// Front -{ - nombre_carrera: string -} - -// Backend -{ - id_carrera: number // id de la carrera creada -} -``` - -```ts -// POST /crear-curso - -// Front -{ - id_datos_carrera: number, - nombre_curso: string, - curso_anio: string, // Ejm: "1er", "2do", etc - abreviado: string -} - -// Backend -{ - id_curso: number // id del curso creado -} -``` - -```ts -// POST /crear-laboratorio - -// Front -{ - id_curso: number, - grupo: string, // Una letra - docente: string, - max_estudiantes: number -} - -// Backend -{ - id_laboratorio: number // id del lab creado -} -``` - -```ts -// POST /crear-horario - -// Front -{ - id_laboratorio: number, - dia: string, // "Lunes", "Martes", etc - hora_inicio: string, // "07:00" - hora_fin: string, // "08:50" -} - -// Backend -{ - id_horario: number // id del horario creado -} -``` - - - - - diff --git a/__tests__/celdas.ts b/__tests__/celdas.ts index 43bf902..182572e 100644 --- a/__tests__/celdas.ts +++ b/__tests__/celdas.ts @@ -1,52 +1,171 @@ +interface Curso { + // Nombre completo del curso + nombre: string, + // Nombre del curso abreviado + abreviado: string, + // Información de las horas de teoria + Teoria: { + // grupo es una letra: A, B, C, D + [grupo: string]: DatosGrupo, + }, + // Información de las horas de laboratorio + Laboratorio?: { + // grupo es una letra: A, B, C, D + [grupo: string]: DatosGrupo, + }, +} + +interface DatosGrupo { + // Nombre del docente de este grupo + Docente: string, + /* + Las horas del curso en el siguiente formato: DD_HHMM + DD puede ser Lu, Ma, Mi, Ju, Vi + Ejm: Ma0850, Vi1640, Ju1550 + */ + Horas: string[] +} + // Exclusivo de un unico dia -import { GrupoDia, TableInput } from "../src/Views/SistemasMovil/Table"; -import { generarMapaCeldas, MapaCeldas } from "../src/Views/SistemasMovil/mapaCeldas"; - type Input = { - offsetVertical: number, + horaInicio: number, nroHoras: number, } +type Output = { + horaInicio: number, + nroHoras: number, + offset: number, // 0, 1, 2 + fraccion: number, // por cuanto dividir la celda. 1, 2, 3, ... +} + +class MapaCeldas { + // Almacena referencias a input + private mapa: Map> = new Map(); + + private disponible(nroFila: number, nroColumna: number): boolean { + if (!this.mapa.has(nroFila)) return true; + + const fila = this.mapa.get(nroFila)!; + + return fila.has(nroColumna) === false; + } + + private obtenerFilaOCrear(nro: number): Map { + if (!this.mapa.has(nro)) { + const m = new Map(); + this.mapa.set(nro, m); + return m; + } + + return this.mapa.get(nro)!; + } + + // Devuelve el offset + public solicitar(inicio: number, cantidad: number, input: Input): number { + const filas = []; + for (let i = 0; i < cantidad; i += 1) filas.push(inicio + i); + + for (let offsetActual = 0; offsetActual < 8; offsetActual += 1) { + let todasCeldasDisponibles = true; + for (const fila of filas) { + if (!this.disponible(fila, offsetActual)) { + todasCeldasDisponibles = false; + break; + } + } + + if (todasCeldasDisponibles) { + // Crear estas celdas y almacenar + filas.forEach((nroFila) => { + const fila = this.obtenerFilaOCrear(nroFila); + fila.set(offsetActual, input); + }); + + // Devolver nro de offset + return offsetActual; + } + } + + throw new Error("Limite de celdas alcanzado"); + } + + public generarFraccion(nroFila: number, nroColumna: number, cantidad: number): number { + let fraccionActual = 1; + for (let i = 0; i < cantidad; i += 1) { + const nroFilaActual = nroFila + i; + const filaActual = this.mapa.get(nroFilaActual)!; + const numeroColumnas = filaActual.size; + if (numeroColumnas > fraccionActual) { + fraccionActual = numeroColumnas; + } + } + + return fraccionActual; + } +} + +function generarMapaCeldas(entrada: Readonly>): Array { + const mapa = new MapaCeldas(); + const salida: Array = []; + + // Obtener los offsets de cada curso + for (const input of entrada) { + const offset = mapa.solicitar(input.horaInicio, input.nroHoras, input); + salida.push({ + ...input, + offset, + fraccion: -1, + }); + } + + // Generar las fracciones de cada curso + for (const output of salida) { + output.fraccion = mapa.generarFraccion(output.horaInicio, output.offset, output.nroHoras); + } + + return salida; +} describe("generarMapaCeldas", () => { it("vacio si input es vacio", () => { - const input: Array = []; + const input: Array = []; const output = generarMapaCeldas(input); expect(output.length).toBe(0); }); it("funciona con 1 curso", () => { - const input: Array = [ + const input: Array = [ { - offsetVertical: 0, + horaInicio: 0, nroHoras: 2, }, ]; const output = generarMapaCeldas(input)[0]; expect(output).not.toBeUndefined(); - expect(output.offsetHorizontal).toBe(0); + expect(output.offset).toBe(0); expect(output.fraccion).toBe(1); }); it("funciona con 2 cursos", () => { - const input: Array = [ + const input: Array = [ { - offsetVertical: 0, + horaInicio: 0, nroHoras: 2, }, { - offsetVertical: 1, + horaInicio: 1, nroHoras: 3, }, ]; const output1 = generarMapaCeldas(input)[0]; - expect(output1.offsetHorizontal).toBe(0); + expect(output1.offset).toBe(0); expect(output1.fraccion).toBe(2); const output2 = generarMapaCeldas(input)[1]; - expect(output2.offsetHorizontal).toBe(1); + expect(output2.offset).toBe(1); expect(output2.fraccion).toBe(2); }); }); @@ -55,29 +174,29 @@ describe("MapaCeldas", () => { it("crea 1", () => { const mapa = new MapaCeldas(); const input = {} as unknown as Input; - const offset = mapa.solicitar(0, 2); + const offset = mapa.solicitar(0, 2, input); expect(offset).toBe(0); }); it("crea varios que no se solapan", () => { const mapa = new MapaCeldas(); const input = {} as unknown as Input; - let offset = mapa.solicitar(0, 2); + let offset = mapa.solicitar(0, 2, input); expect(offset).toBe(0); - offset = mapa.solicitar(4, 3); + offset = mapa.solicitar(4, 3, input); expect(offset).toBe(0); - offset = mapa.solicitar(7, 4); + offset = mapa.solicitar(7, 4, input); expect(offset).toBe(0); }); it("crea varios que se solapan", () => { const mapa = new MapaCeldas(); const input = {} as unknown as Input; - let offset = mapa.solicitar(0, 2); + let offset = mapa.solicitar(0, 2, input); expect(offset).toBe(0); - offset = mapa.solicitar(0, 2); + offset = mapa.solicitar(0, 2, input); expect(offset).toBe(1); - offset = mapa.solicitar(0, 4); + offset = mapa.solicitar(0, 4, input); expect(offset).toBe(2); }); @@ -93,33 +212,33 @@ describe("MapaCeldas", () => { */ const mapa = new MapaCeldas(); const input = {} as unknown as Input; - let offset = mapa.solicitar(0, 2); + let offset = mapa.solicitar(0, 2, input); expect(offset).toBe(0); - offset = mapa.solicitar(1, 3); + offset = mapa.solicitar(1, 3, input); expect(offset).toBe(1); - offset = mapa.solicitar(1, 4); + offset = mapa.solicitar(1, 4, input); expect(offset).toBe(2); - offset = mapa.solicitar(2, 3); + offset = mapa.solicitar(2, 3, input); expect(offset).toBe(0); - offset = mapa.solicitar(4, 2); + offset = mapa.solicitar(4, 2, input); expect(offset).toBe(1); }); it("genera offsets", () => { const mapa = new MapaCeldas(); const input = {} as unknown as Input; - let offset = mapa.solicitar(0, 2); + let offset = mapa.solicitar(0, 2, input); expect(offset).toBe(0); let fraccion = mapa.generarFraccion(0, offset, 2); expect(fraccion).toBe(1); - offset = mapa.solicitar(1, 3); + offset = mapa.solicitar(1, 3, input); fraccion = mapa.generarFraccion(1, offset, 3); expect(fraccion).toBe(2); - mapa.solicitar(1, 4); - mapa.solicitar(2, 3); - offset = mapa.solicitar(4, 2); + mapa.solicitar(1, 4, input); + mapa.solicitar(2, 3, input); + offset = mapa.solicitar(4, 2, input); fraccion = mapa.generarFraccion(4, offset, 2); expect(fraccion).toBe(3); }); diff --git a/jest.config.js b/jest.config.js deleted file mode 100644 index b0b26c2..0000000 --- a/jest.config.js +++ /dev/null @@ -1,5 +0,0 @@ -/** @type {import('ts-jest').JestConfigWithTsJest} */ -module.exports = { - preset: "ts-jest", - testEnvironment: "node", -}; diff --git a/netlify.toml b/netlify.toml deleted file mode 100644 index 6de963a..0000000 --- a/netlify.toml +++ /dev/null @@ -1,6 +0,0 @@ -[build.environment] -NPM_FLAGS="--version" -NODE_VERSION="16" -[build] -command = "npx pnpm install --store=node_modules/.pnpm-store && npx pnpm build" - diff --git a/package.json b/package.json index ee51d2b..f8ce5be 100755 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "jest": "^29.1.2", "normalize.css": "^8.0.1", "solid-app-router": "^0.3.2", - "solid-js": "1.5.7", + "solid-js": "^1.3.12", "ts-jest": "^29.0.3", "typescript": "^4.6.2", "vite": "^2.8.6", @@ -35,7 +35,6 @@ "Node 10" ], "dependencies": { - "swiper": "^8.4.4", "yaml": "^1.10.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6abd7ff..34c5d1d 100755 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,84 +1,102 @@ -lockfileVersion: 5.4 +lockfileVersion: '6.0' -specifiers: - '@types/jest': 26.0.20 - '@types/node': 14.14.20 - '@typescript-eslint/eslint-plugin': ^4.19.0 - '@typescript-eslint/parser': ^4.19.0 - aphrodite: ^2.4.0 - browserslist: ^4.20.2 - component-register: 0.7.x - eslint: ^7.22.0 - eslint-plugin-react: ^7.23.1 - jest: ^29.1.2 - normalize.css: ^8.0.1 - solid-app-router: ^0.3.2 - solid-js: 1.5.7 - swiper: ^8.4.4 - ts-jest: ^29.0.3 - typescript: ^4.6.2 - vite: ^2.8.6 - vite-plugin-solid: ^2.2.6 - yaml: ^1.10.0 +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false dependencies: - swiper: 8.4.4 - yaml: 1.10.0 + yaml: + specifier: ^1.10.0 + version: 1.10.0 devDependencies: - '@types/jest': 26.0.20 - '@types/node': 14.14.20 - '@typescript-eslint/eslint-plugin': 4.19.0_iyvuzu35chqcmd5bwc3xm5yn5y - '@typescript-eslint/parser': 4.19.0_fptv3jwziuge6fofprjqm5efei - aphrodite: 2.4.0 - browserslist: 4.20.2 - component-register: 0.7.1 - eslint: 7.22.0 - eslint-plugin-react: 7.23.1_eslint@7.22.0 - jest: 29.1.2_@types+node@14.14.20 - normalize.css: 8.0.1 - solid-app-router: 0.3.2_solid-js@1.5.7 - solid-js: 1.5.7 - ts-jest: 29.0.3_u3tawnhld4dxccrvbviil55jbq - typescript: 4.6.3 - vite: 2.9.0 - vite-plugin-solid: 2.2.6 + '@types/jest': + specifier: 26.0.20 + version: 26.0.20 + '@types/node': + specifier: 14.14.20 + version: 14.14.20 + '@typescript-eslint/eslint-plugin': + specifier: ^4.19.0 + version: 4.19.0(@typescript-eslint/parser@4.19.0)(eslint@7.22.0)(typescript@4.6.3) + '@typescript-eslint/parser': + specifier: ^4.19.0 + version: 4.19.0(eslint@7.22.0)(typescript@4.6.3) + aphrodite: + specifier: ^2.4.0 + version: 2.4.0 + browserslist: + specifier: ^4.20.2 + version: 4.20.2 + component-register: + specifier: 0.7.x + version: 0.7.1 + eslint: + specifier: ^7.22.0 + version: 7.22.0 + eslint-plugin-react: + specifier: ^7.23.1 + version: 7.23.1(eslint@7.22.0) + jest: + specifier: ^29.1.2 + version: 29.1.2(@types/node@14.14.20) + normalize.css: + specifier: ^8.0.1 + version: 8.0.1 + solid-app-router: + specifier: ^0.3.2 + version: 0.3.2(solid-js@1.3.13) + solid-js: + specifier: ^1.3.12 + version: 1.3.13 + ts-jest: + specifier: ^29.0.3 + version: 29.0.3(@babel/core@7.17.8)(jest@29.1.2)(typescript@4.6.3) + typescript: + specifier: ^4.6.2 + version: 4.6.3 + vite: + specifier: ^2.8.6 + version: 2.9.0 + vite-plugin-solid: + specifier: ^2.2.6 + version: 2.2.6 packages: - /@ampproject/remapping/2.1.2: + /@ampproject/remapping@2.1.2: resolution: {integrity: sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==} engines: {node: '>=6.0.0'} dependencies: '@jridgewell/trace-mapping': 0.3.4 dev: true - /@babel/code-frame/7.12.11: + /@babel/code-frame@7.12.11: resolution: {integrity: sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==} dependencies: '@babel/highlight': 7.10.4 dev: true - /@babel/code-frame/7.16.7: + /@babel/code-frame@7.16.7: resolution: {integrity: sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==} engines: {node: '>=6.9.0'} dependencies: '@babel/highlight': 7.16.10 dev: true - /@babel/compat-data/7.17.7: + /@babel/compat-data@7.17.7: resolution: {integrity: sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==} engines: {node: '>=6.9.0'} dev: true - /@babel/core/7.17.8: + /@babel/core@7.17.8: resolution: {integrity: sha512-OdQDV/7cRBtJHLSOBqqbYNkOcydOgnX59TZx4puf41fzcVtN3e/4yqY8lMQsK+5X2lJtAdmA+6OHqsj1hBJ4IQ==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.1.2 '@babel/code-frame': 7.16.7 '@babel/generator': 7.17.7 - '@babel/helper-compilation-targets': 7.17.7_@babel+core@7.17.8 + '@babel/helper-compilation-targets': 7.17.7(@babel/core@7.17.8) '@babel/helper-module-transforms': 7.17.7 '@babel/helpers': 7.17.8 '@babel/parser': 7.17.8 @@ -94,7 +112,7 @@ packages: - supports-color dev: true - /@babel/generator/7.17.7: + /@babel/generator@7.17.7: resolution: {integrity: sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==} engines: {node: '>=6.9.0'} dependencies: @@ -103,14 +121,14 @@ packages: source-map: 0.5.7 dev: true - /@babel/helper-annotate-as-pure/7.16.7: + /@babel/helper-annotate-as-pure@7.16.7: resolution: {integrity: sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.17.0 dev: true - /@babel/helper-compilation-targets/7.17.7_@babel+core@7.17.8: + /@babel/helper-compilation-targets@7.17.7(@babel/core@7.17.8): resolution: {integrity: sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==} engines: {node: '>=6.9.0'} peerDependencies: @@ -123,7 +141,7 @@ packages: semver: 6.3.0 dev: true - /@babel/helper-create-class-features-plugin/7.17.6_@babel+core@7.17.8: + /@babel/helper-create-class-features-plugin@7.17.6(@babel/core@7.17.8): resolution: {integrity: sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg==} engines: {node: '>=6.9.0'} peerDependencies: @@ -141,14 +159,14 @@ packages: - supports-color dev: true - /@babel/helper-environment-visitor/7.16.7: + /@babel/helper-environment-visitor@7.16.7: resolution: {integrity: sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.17.0 dev: true - /@babel/helper-function-name/7.16.7: + /@babel/helper-function-name@7.16.7: resolution: {integrity: sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==} engines: {node: '>=6.9.0'} dependencies: @@ -157,42 +175,42 @@ packages: '@babel/types': 7.17.0 dev: true - /@babel/helper-get-function-arity/7.16.7: + /@babel/helper-get-function-arity@7.16.7: resolution: {integrity: sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.17.0 dev: true - /@babel/helper-hoist-variables/7.16.7: + /@babel/helper-hoist-variables@7.16.7: resolution: {integrity: sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.17.0 dev: true - /@babel/helper-member-expression-to-functions/7.17.7: + /@babel/helper-member-expression-to-functions@7.17.7: resolution: {integrity: sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.17.0 dev: true - /@babel/helper-module-imports/7.16.0: + /@babel/helper-module-imports@7.16.0: resolution: {integrity: sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.17.0 dev: true - /@babel/helper-module-imports/7.16.7: + /@babel/helper-module-imports@7.16.7: resolution: {integrity: sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.17.0 dev: true - /@babel/helper-module-transforms/7.17.7: + /@babel/helper-module-transforms@7.17.7: resolution: {integrity: sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==} engines: {node: '>=6.9.0'} dependencies: @@ -208,19 +226,19 @@ packages: - supports-color dev: true - /@babel/helper-optimise-call-expression/7.16.7: + /@babel/helper-optimise-call-expression@7.16.7: resolution: {integrity: sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.17.0 dev: true - /@babel/helper-plugin-utils/7.16.7: + /@babel/helper-plugin-utils@7.16.7: resolution: {integrity: sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-replace-supers/7.16.7: + /@babel/helper-replace-supers@7.16.7: resolution: {integrity: sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==} engines: {node: '>=6.9.0'} dependencies: @@ -233,35 +251,35 @@ packages: - supports-color dev: true - /@babel/helper-simple-access/7.17.7: + /@babel/helper-simple-access@7.17.7: resolution: {integrity: sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.17.0 dev: true - /@babel/helper-split-export-declaration/7.16.7: + /@babel/helper-split-export-declaration@7.16.7: resolution: {integrity: sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.17.0 dev: true - /@babel/helper-validator-identifier/7.12.11: + /@babel/helper-validator-identifier@7.12.11: resolution: {integrity: sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==} dev: true - /@babel/helper-validator-identifier/7.16.7: + /@babel/helper-validator-identifier@7.16.7: resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-validator-option/7.16.7: + /@babel/helper-validator-option@7.16.7: resolution: {integrity: sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==} engines: {node: '>=6.9.0'} dev: true - /@babel/helpers/7.17.8: + /@babel/helpers@7.17.8: resolution: {integrity: sha512-QcL86FGxpfSJwGtAvv4iG93UL6bmqBdmoVY0CMCU2g+oD2ezQse3PT5Pa+jiD6LJndBQi0EDlpzOWNlLuhz5gw==} engines: {node: '>=6.9.0'} dependencies: @@ -272,7 +290,7 @@ packages: - supports-color dev: true - /@babel/highlight/7.10.4: + /@babel/highlight@7.10.4: resolution: {integrity: sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==} dependencies: '@babel/helper-validator-identifier': 7.12.11 @@ -280,7 +298,7 @@ packages: js-tokens: 4.0.0 dev: true - /@babel/highlight/7.16.10: + /@babel/highlight@7.16.10: resolution: {integrity: sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==} engines: {node: '>=6.9.0'} dependencies: @@ -289,7 +307,7 @@ packages: js-tokens: 4.0.0 dev: true - /@babel/parser/7.17.8: + /@babel/parser@7.17.8: resolution: {integrity: sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ==} engines: {node: '>=6.0.0'} hasBin: true @@ -297,7 +315,7 @@ packages: '@babel/types': 7.17.0 dev: true - /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.17.8: + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.17.8): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -306,7 +324,7 @@ packages: '@babel/helper-plugin-utils': 7.16.7 dev: true - /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.17.8: + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.17.8): resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -315,7 +333,7 @@ packages: '@babel/helper-plugin-utils': 7.16.7 dev: true - /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.17.8: + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.17.8): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -324,7 +342,7 @@ packages: '@babel/helper-plugin-utils': 7.16.7 dev: true - /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.17.8: + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.17.8): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -333,7 +351,7 @@ packages: '@babel/helper-plugin-utils': 7.16.7 dev: true - /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.17.8: + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.17.8): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -342,7 +360,7 @@ packages: '@babel/helper-plugin-utils': 7.16.7 dev: true - /@babel/plugin-syntax-jsx/7.16.7_@babel+core@7.17.8: + /@babel/plugin-syntax-jsx@7.16.7(@babel/core@7.17.8): resolution: {integrity: sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==} engines: {node: '>=6.9.0'} peerDependencies: @@ -352,7 +370,7 @@ packages: '@babel/helper-plugin-utils': 7.16.7 dev: true - /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.17.8: + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.17.8): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -361,7 +379,7 @@ packages: '@babel/helper-plugin-utils': 7.16.7 dev: true - /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.17.8: + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.17.8): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -370,7 +388,7 @@ packages: '@babel/helper-plugin-utils': 7.16.7 dev: true - /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.17.8: + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.17.8): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -379,7 +397,7 @@ packages: '@babel/helper-plugin-utils': 7.16.7 dev: true - /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.17.8: + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.17.8): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -388,7 +406,7 @@ packages: '@babel/helper-plugin-utils': 7.16.7 dev: true - /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.17.8: + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.17.8): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -397,7 +415,7 @@ packages: '@babel/helper-plugin-utils': 7.16.7 dev: true - /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.17.8: + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.17.8): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -406,7 +424,7 @@ packages: '@babel/helper-plugin-utils': 7.16.7 dev: true - /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.17.8: + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.17.8): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -416,7 +434,7 @@ packages: '@babel/helper-plugin-utils': 7.16.7 dev: true - /@babel/plugin-syntax-typescript/7.16.7_@babel+core@7.17.8: + /@babel/plugin-syntax-typescript@7.16.7(@babel/core@7.17.8): resolution: {integrity: sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==} engines: {node: '>=6.9.0'} peerDependencies: @@ -426,21 +444,21 @@ packages: '@babel/helper-plugin-utils': 7.16.7 dev: true - /@babel/plugin-transform-typescript/7.16.8_@babel+core@7.17.8: + /@babel/plugin-transform-typescript@7.16.8(@babel/core@7.17.8): resolution: {integrity: sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-create-class-features-plugin': 7.17.6_@babel+core@7.17.8 + '@babel/helper-create-class-features-plugin': 7.17.6(@babel/core@7.17.8) '@babel/helper-plugin-utils': 7.16.7 - '@babel/plugin-syntax-typescript': 7.16.7_@babel+core@7.17.8 + '@babel/plugin-syntax-typescript': 7.16.7(@babel/core@7.17.8) transitivePeerDependencies: - supports-color dev: true - /@babel/preset-typescript/7.16.7_@babel+core@7.17.8: + /@babel/preset-typescript@7.16.7(@babel/core@7.17.8): resolution: {integrity: sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -449,12 +467,12 @@ packages: '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.16.7 '@babel/helper-validator-option': 7.16.7 - '@babel/plugin-transform-typescript': 7.16.8_@babel+core@7.17.8 + '@babel/plugin-transform-typescript': 7.16.8(@babel/core@7.17.8) transitivePeerDependencies: - supports-color dev: true - /@babel/template/7.16.7: + /@babel/template@7.16.7: resolution: {integrity: sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==} engines: {node: '>=6.9.0'} dependencies: @@ -463,7 +481,7 @@ packages: '@babel/types': 7.17.0 dev: true - /@babel/traverse/7.17.3: + /@babel/traverse@7.17.3: resolution: {integrity: sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==} engines: {node: '>=6.9.0'} dependencies: @@ -481,7 +499,7 @@ packages: - supports-color dev: true - /@babel/types/7.17.0: + /@babel/types@7.17.0: resolution: {integrity: sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==} engines: {node: '>=6.9.0'} dependencies: @@ -489,11 +507,11 @@ packages: to-fast-properties: 2.0.0 dev: true - /@bcoe/v8-coverage/0.2.3: + /@bcoe/v8-coverage@0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@eslint/eslintrc/0.4.0: + /@eslint/eslintrc@0.4.0: resolution: {integrity: sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: @@ -510,7 +528,7 @@ packages: - supports-color dev: true - /@istanbuljs/load-nyc-config/1.1.0: + /@istanbuljs/load-nyc-config@1.1.0: resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} engines: {node: '>=8'} dependencies: @@ -521,12 +539,12 @@ packages: resolve-from: 5.0.0 dev: true - /@istanbuljs/schema/0.1.3: + /@istanbuljs/schema@0.1.3: resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} dev: true - /@jest/console/29.1.2: + /@jest/console@29.1.2: resolution: {integrity: sha512-ujEBCcYs82BTmRxqfHMQggSlkUZP63AE5YEaTPj7eFyJOzukkTorstOUC7L6nE3w5SYadGVAnTsQ/ZjTGL0qYQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -538,7 +556,7 @@ packages: slash: 3.0.0 dev: true - /@jest/core/29.1.2: + /@jest/core@29.1.2: resolution: {integrity: sha512-sCO2Va1gikvQU2ynDN8V4+6wB7iVrD2CvT0zaRst4rglf56yLly0NQ9nuRRAWFeimRf+tCdFsb1Vk1N9LrrMPA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -559,7 +577,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.10 jest-changed-files: 29.0.0 - jest-config: 29.1.2_@types+node@14.14.20 + jest-config: 29.1.2(@types/node@14.14.20) jest-haste-map: 29.1.2 jest-message-util: 29.1.2 jest-regex-util: 29.0.0 @@ -580,7 +598,7 @@ packages: - ts-node dev: true - /@jest/environment/29.1.2: + /@jest/environment@29.1.2: resolution: {integrity: sha512-rG7xZ2UeOfvOVzoLIJ0ZmvPl4tBEQ2n73CZJSlzUjPw4or1oSWC0s0Rk0ZX+pIBJ04aVr6hLWFn1DFtrnf8MhQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -590,14 +608,14 @@ packages: jest-mock: 29.1.2 dev: true - /@jest/expect-utils/29.1.2: + /@jest/expect-utils@29.1.2: resolution: {integrity: sha512-4a48bhKfGj/KAH39u0ppzNTABXQ8QPccWAFUFobWBaEMSMp+sB31Z2fK/l47c4a/Mu1po2ffmfAIPxXbVTXdtg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: jest-get-type: 29.0.0 dev: true - /@jest/expect/29.1.2: + /@jest/expect@29.1.2: resolution: {integrity: sha512-FXw/UmaZsyfRyvZw3M6POgSNqwmuOXJuzdNiMWW9LCYo0GRoRDhg+R5iq5higmRTHQY7hx32+j7WHwinRmoILQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -607,7 +625,7 @@ packages: - supports-color dev: true - /@jest/fake-timers/29.1.2: + /@jest/fake-timers@29.1.2: resolution: {integrity: sha512-GppaEqS+QQYegedxVMpCe2xCXxxeYwQ7RsNx55zc8f+1q1qevkZGKequfTASI7ejmg9WwI+SJCrHe9X11bLL9Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -619,7 +637,7 @@ packages: jest-util: 29.1.2 dev: true - /@jest/globals/29.1.2: + /@jest/globals@29.1.2: resolution: {integrity: sha512-uMgfERpJYoQmykAd0ffyMq8wignN4SvLUG6orJQRe9WAlTRc9cdpCaE/29qurXixYJVZWUqIBXhSk8v5xN1V9g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -631,7 +649,7 @@ packages: - supports-color dev: true - /@jest/reporters/29.1.2: + /@jest/reporters@29.1.2: resolution: {integrity: sha512-X4fiwwyxy9mnfpxL0g9DD0KcTmEIqP0jUdnc2cfa9riHy+I6Gwwp5vOZiwyg0vZxfSDxrOlK9S4+340W4d+DAA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -669,14 +687,14 @@ packages: - supports-color dev: true - /@jest/schemas/29.0.0: + /@jest/schemas@29.0.0: resolution: {integrity: sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@sinclair/typebox': 0.24.46 dev: true - /@jest/source-map/29.0.0: + /@jest/source-map@29.0.0: resolution: {integrity: sha512-nOr+0EM8GiHf34mq2GcJyz/gYFyLQ2INDhAylrZJ9mMWoW21mLBfZa0BUVPPMxVYrLjeiRe2Z7kWXOGnS0TFhQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -685,7 +703,7 @@ packages: graceful-fs: 4.2.10 dev: true - /@jest/test-result/29.1.2: + /@jest/test-result@29.1.2: resolution: {integrity: sha512-jjYYjjumCJjH9hHCoMhA8PCl1OxNeGgAoZ7yuGYILRJX9NjgzTN0pCT5qAoYR4jfOP8htIByvAlz9vfNSSBoVg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -695,7 +713,7 @@ packages: collect-v8-coverage: 1.0.1 dev: true - /@jest/test-sequencer/29.1.2: + /@jest/test-sequencer@29.1.2: resolution: {integrity: sha512-fU6dsUqqm8sA+cd85BmeF7Gu9DsXVWFdGn9taxM6xN1cKdcP/ivSgXh5QucFRFz1oZxKv3/9DYYbq0ULly3P/Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -705,7 +723,7 @@ packages: slash: 3.0.0 dev: true - /@jest/transform/29.1.2: + /@jest/transform@29.1.2: resolution: {integrity: sha512-2uaUuVHTitmkx1tHF+eBjb4p7UuzBG7SXIaA/hNIkaMP6K+gXYGxP38ZcrofzqN0HeZ7A90oqsOa97WU7WZkSw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -728,7 +746,7 @@ packages: - supports-color dev: true - /@jest/types/26.6.2: + /@jest/types@26.6.2: resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==} engines: {node: '>= 10.14.2'} dependencies: @@ -739,7 +757,7 @@ packages: chalk: 4.1.0 dev: true - /@jest/types/29.1.2: + /@jest/types@29.1.2: resolution: {integrity: sha512-DcXGtoTykQB5jiwCmVr8H4vdg2OJhQex3qPkG+ISyDO7xQXbt/4R6dowcRyPemRnkH7JoHvZuxPBdlq+9JxFCg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -751,39 +769,39 @@ packages: chalk: 4.1.0 dev: true - /@jridgewell/resolve-uri/3.0.5: + /@jridgewell/resolve-uri@3.0.5: resolution: {integrity: sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==} engines: {node: '>=6.0.0'} dev: true - /@jridgewell/resolve-uri/3.1.0: + /@jridgewell/resolve-uri@3.1.0: resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} engines: {node: '>=6.0.0'} dev: true - /@jridgewell/sourcemap-codec/1.4.11: + /@jridgewell/sourcemap-codec@1.4.11: resolution: {integrity: sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==} dev: true - /@jridgewell/sourcemap-codec/1.4.14: + /@jridgewell/sourcemap-codec@1.4.14: resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} dev: true - /@jridgewell/trace-mapping/0.3.16: + /@jridgewell/trace-mapping@0.3.16: resolution: {integrity: sha512-LCQ+NeThyJ4k1W2d+vIKdxuSt9R3pQSZ4P92m7EakaYuXcVWbHuT5bjNcqLd4Rdgi6xYWYDvBJZJLZSLanjDcA==} dependencies: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 dev: true - /@jridgewell/trace-mapping/0.3.4: + /@jridgewell/trace-mapping@0.3.4: resolution: {integrity: sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==} dependencies: '@jridgewell/resolve-uri': 3.0.5 '@jridgewell/sourcemap-codec': 1.4.11 dev: true - /@nodelib/fs.scandir/2.1.4: + /@nodelib/fs.scandir@2.1.4: resolution: {integrity: sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==} engines: {node: '>= 8'} dependencies: @@ -791,12 +809,12 @@ packages: run-parallel: 1.2.0 dev: true - /@nodelib/fs.stat/2.0.4: + /@nodelib/fs.stat@2.0.4: resolution: {integrity: sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==} engines: {node: '>= 8'} dev: true - /@nodelib/fs.walk/1.2.6: + /@nodelib/fs.walk@1.2.6: resolution: {integrity: sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==} engines: {node: '>= 8'} dependencies: @@ -804,23 +822,23 @@ packages: fastq: 1.11.0 dev: true - /@sinclair/typebox/0.24.46: + /@sinclair/typebox@0.24.46: resolution: {integrity: sha512-ng4ut1z2MCBhK/NwDVwIQp3pAUOCs/KNaW3cBxdFB2xTDrOuo1xuNmpr/9HHFhxqIvHrs1NTH3KJg6q+JSy1Kw==} dev: true - /@sinonjs/commons/1.8.3: + /@sinonjs/commons@1.8.3: resolution: {integrity: sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==} dependencies: type-detect: 4.0.8 dev: true - /@sinonjs/fake-timers/9.1.2: + /@sinonjs/fake-timers@9.1.2: resolution: {integrity: sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==} dependencies: '@sinonjs/commons': 1.8.3 dev: true - /@types/babel__core/7.1.19: + /@types/babel__core@7.1.19: resolution: {integrity: sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==} dependencies: '@babel/parser': 7.17.8 @@ -830,87 +848,87 @@ packages: '@types/babel__traverse': 7.18.2 dev: true - /@types/babel__generator/7.6.4: + /@types/babel__generator@7.6.4: resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} dependencies: '@babel/types': 7.17.0 dev: true - /@types/babel__template/7.4.1: + /@types/babel__template@7.4.1: resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: '@babel/parser': 7.17.8 '@babel/types': 7.17.0 dev: true - /@types/babel__traverse/7.18.2: + /@types/babel__traverse@7.18.2: resolution: {integrity: sha512-FcFaxOr2V5KZCviw1TnutEMVUVsGt4D2hP1TAfXZAMKuHYW3xQhe3jTxNPWutgCJ3/X1c5yX8ZoGVEItxKbwBg==} dependencies: '@babel/types': 7.17.0 dev: true - /@types/graceful-fs/4.1.5: + /@types/graceful-fs@4.1.5: resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} dependencies: '@types/node': 14.14.20 dev: true - /@types/istanbul-lib-coverage/2.0.3: + /@types/istanbul-lib-coverage@2.0.3: resolution: {integrity: sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==} dev: true - /@types/istanbul-lib-report/3.0.0: + /@types/istanbul-lib-report@3.0.0: resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} dependencies: '@types/istanbul-lib-coverage': 2.0.3 dev: true - /@types/istanbul-reports/3.0.0: + /@types/istanbul-reports@3.0.0: resolution: {integrity: sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==} dependencies: '@types/istanbul-lib-report': 3.0.0 dev: true - /@types/jest/26.0.20: + /@types/jest@26.0.20: resolution: {integrity: sha512-9zi2Y+5USJRxd0FsahERhBwlcvFh6D2GLQnY2FH2BzK8J9s9omvNHIbvABwIluXa0fD8XVKMLTO0aOEuUfACAA==} dependencies: jest-diff: 26.6.2 pretty-format: 26.6.2 dev: true - /@types/json-schema/7.0.7: + /@types/json-schema@7.0.7: resolution: {integrity: sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==} dev: true - /@types/node/14.14.20: + /@types/node@14.14.20: resolution: {integrity: sha512-Y93R97Ouif9JEOWPIUyU+eyIdyRqQR0I8Ez1dzku4hDx34NWh4HbtIc3WNzwB1Y9ULvNGeu5B8h8bVL5cAk4/A==} dev: true - /@types/prettier/2.7.1: + /@types/prettier@2.7.1: resolution: {integrity: sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow==} dev: true - /@types/stack-utils/2.0.1: + /@types/stack-utils@2.0.1: resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} dev: true - /@types/yargs-parser/20.2.0: + /@types/yargs-parser@20.2.0: resolution: {integrity: sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA==} dev: true - /@types/yargs/15.0.12: + /@types/yargs@15.0.12: resolution: {integrity: sha512-f+fD/fQAo3BCbCDlrUpznF1A5Zp9rB0noS5vnoormHSIPFKL0Z2DcUJ3Gxp5ytH4uLRNxy7AwYUC9exZzqGMAw==} dependencies: '@types/yargs-parser': 20.2.0 dev: true - /@types/yargs/17.0.13: + /@types/yargs@17.0.13: resolution: {integrity: sha512-9sWaruZk2JGxIQU+IhI1fhPYRcQ0UuTNuKuCW9bR5fp7qi2Llf7WDzNa17Cy7TKnh3cdxDOiyTu6gaLS0eDatg==} dependencies: '@types/yargs-parser': 20.2.0 dev: true - /@typescript-eslint/eslint-plugin/4.19.0_iyvuzu35chqcmd5bwc3xm5yn5y: + /@typescript-eslint/eslint-plugin@4.19.0(@typescript-eslint/parser@4.19.0)(eslint@7.22.0)(typescript@4.6.3): resolution: {integrity: sha512-CRQNQ0mC2Pa7VLwKFbrGVTArfdVDdefS+gTw0oC98vSI98IX5A8EVH4BzJ2FOB0YlCmm8Im36Elad/Jgtvveaw==} engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: @@ -921,8 +939,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/experimental-utils': 4.19.0_fptv3jwziuge6fofprjqm5efei - '@typescript-eslint/parser': 4.19.0_fptv3jwziuge6fofprjqm5efei + '@typescript-eslint/experimental-utils': 4.19.0(eslint@7.22.0)(typescript@4.6.3) + '@typescript-eslint/parser': 4.19.0(eslint@7.22.0)(typescript@4.6.3) '@typescript-eslint/scope-manager': 4.19.0 debug: 4.3.1 eslint: 7.22.0 @@ -930,13 +948,13 @@ packages: lodash: 4.17.21 regexpp: 3.1.0 semver: 7.3.5 - tsutils: 3.21.0_typescript@4.6.3 + tsutils: 3.21.0(typescript@4.6.3) typescript: 4.6.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/experimental-utils/4.19.0_fptv3jwziuge6fofprjqm5efei: + /@typescript-eslint/experimental-utils@4.19.0(eslint@7.22.0)(typescript@4.6.3): resolution: {integrity: sha512-9/23F1nnyzbHKuoTqFN1iXwN3bvOm/PRIXSBR3qFAYotK/0LveEOHr5JT1WZSzcD6BESl8kPOG3OoDRKO84bHA==} engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: @@ -945,7 +963,7 @@ packages: '@types/json-schema': 7.0.7 '@typescript-eslint/scope-manager': 4.19.0 '@typescript-eslint/types': 4.19.0 - '@typescript-eslint/typescript-estree': 4.19.0_typescript@4.6.3 + '@typescript-eslint/typescript-estree': 4.19.0(typescript@4.6.3) eslint: 7.22.0 eslint-scope: 5.1.1 eslint-utils: 2.1.0 @@ -954,7 +972,7 @@ packages: - typescript dev: true - /@typescript-eslint/parser/4.19.0_fptv3jwziuge6fofprjqm5efei: + /@typescript-eslint/parser@4.19.0(eslint@7.22.0)(typescript@4.6.3): resolution: {integrity: sha512-/uabZjo2ZZhm66rdAu21HA8nQebl3lAIDcybUoOxoI7VbZBYavLIwtOOmykKCJy+Xq6Vw6ugkiwn8Js7D6wieA==} engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: @@ -966,7 +984,7 @@ packages: dependencies: '@typescript-eslint/scope-manager': 4.19.0 '@typescript-eslint/types': 4.19.0 - '@typescript-eslint/typescript-estree': 4.19.0_typescript@4.6.3 + '@typescript-eslint/typescript-estree': 4.19.0(typescript@4.6.3) debug: 4.3.1 eslint: 7.22.0 typescript: 4.6.3 @@ -974,7 +992,7 @@ packages: - supports-color dev: true - /@typescript-eslint/scope-manager/4.19.0: + /@typescript-eslint/scope-manager@4.19.0: resolution: {integrity: sha512-GGy4Ba/hLXwJXygkXqMzduqOMc+Na6LrJTZXJWVhRrSuZeXmu8TAnniQVKgj8uTRKe4igO2ysYzH+Np879G75g==} engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} dependencies: @@ -982,12 +1000,12 @@ packages: '@typescript-eslint/visitor-keys': 4.19.0 dev: true - /@typescript-eslint/types/4.19.0: + /@typescript-eslint/types@4.19.0: resolution: {integrity: sha512-A4iAlexVvd4IBsSTNxdvdepW0D4uR/fwxDrKUa+iEY9UWvGREu2ZyB8ylTENM1SH8F7bVC9ac9+si3LWNxcBuA==} engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} dev: true - /@typescript-eslint/typescript-estree/4.19.0_typescript@4.6.3: + /@typescript-eslint/typescript-estree@4.19.0(typescript@4.6.3): resolution: {integrity: sha512-3xqArJ/A62smaQYRv2ZFyTA+XxGGWmlDYrsfZG68zJeNbeqRScnhf81rUVa6QG4UgzHnXw5VnMT5cg75dQGDkA==} engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: @@ -1002,13 +1020,13 @@ packages: globby: 11.0.3 is-glob: 4.0.1 semver: 7.3.5 - tsutils: 3.21.0_typescript@4.6.3 + tsutils: 3.21.0(typescript@4.6.3) typescript: 4.6.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/visitor-keys/4.19.0: + /@typescript-eslint/visitor-keys@4.19.0: resolution: {integrity: sha512-aGPS6kz//j7XLSlgpzU2SeTqHPsmRYxFztj2vPuMMFJXZudpRSehE3WCV+BaxwZFvfAqMoSd86TEuM0PQ59E/A==} engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} dependencies: @@ -1016,7 +1034,7 @@ packages: eslint-visitor-keys: 2.0.0 dev: true - /acorn-jsx/5.3.1_acorn@7.4.1: + /acorn-jsx@5.3.1(acorn@7.4.1): resolution: {integrity: sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -1024,13 +1042,13 @@ packages: acorn: 7.4.1 dev: true - /acorn/7.4.1: + /acorn@7.4.1: resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} engines: {node: '>=0.4.0'} hasBin: true dev: true - /ajv/6.12.6: + /ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: fast-deep-equal: 3.1.3 @@ -1039,7 +1057,7 @@ packages: uri-js: 4.4.1 dev: true - /ajv/7.2.3: + /ajv@7.2.3: resolution: {integrity: sha512-idv5WZvKVXDqKralOImQgPM9v6WOdLNa0IY3B3doOjw/YxRGT8I+allIJ6kd7Uaj+SF1xZUSU+nPM5aDNBVtnw==} dependencies: fast-deep-equal: 3.1.3 @@ -1048,48 +1066,48 @@ packages: uri-js: 4.4.1 dev: true - /ansi-colors/4.1.1: + /ansi-colors@4.1.1: resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} engines: {node: '>=6'} dev: true - /ansi-escapes/4.3.2: + /ansi-escapes@4.3.2: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} dependencies: type-fest: 0.21.3 dev: true - /ansi-regex/5.0.0: + /ansi-regex@5.0.0: resolution: {integrity: sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==} engines: {node: '>=8'} dev: true - /ansi-regex/5.0.1: + /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} dev: true - /ansi-styles/3.2.1: + /ansi-styles@3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} dependencies: color-convert: 1.9.3 dev: true - /ansi-styles/4.3.0: + /ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} dependencies: color-convert: 2.0.1 dev: true - /ansi-styles/5.2.0: + /ansi-styles@5.2.0: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} dev: true - /anymatch/3.1.2: + /anymatch@3.1.2: resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} engines: {node: '>= 8'} dependencies: @@ -1097,7 +1115,7 @@ packages: picomatch: 2.3.1 dev: true - /aphrodite/2.4.0: + /aphrodite@2.4.0: resolution: {integrity: sha512-1rVRlLco+j1YAT5aKEE8Wuw5zWV+tI41/quEheJAG0vNaGHE64iJ/a2SiVMz8Uc80VdP2/Hjlfd2bPJOWsqJuQ==} dependencies: asap: 2.0.6 @@ -1105,13 +1123,13 @@ packages: string-hash: 1.1.3 dev: true - /argparse/1.0.10: + /argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} dependencies: sprintf-js: 1.0.3 dev: true - /array-includes/3.1.3: + /array-includes@3.1.3: resolution: {integrity: sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==} engines: {node: '>= 0.4'} dependencies: @@ -1122,12 +1140,12 @@ packages: is-string: 1.0.5 dev: true - /array-union/2.1.0: + /array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} dev: true - /array.prototype.flatmap/1.2.4: + /array.prototype.flatmap@1.2.4: resolution: {integrity: sha512-r9Z0zYoxqHz60vvQbWEdXIEtCwHF0yxaWfno9qzXeNHvfyl3BZqygmGzb84dsubyaXLH4husF+NFgMSdpZhk2Q==} engines: {node: '>= 0.4'} dependencies: @@ -1137,16 +1155,16 @@ packages: function-bind: 1.1.1 dev: true - /asap/2.0.6: + /asap@2.0.6: resolution: {integrity: sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=} dev: true - /astral-regex/2.0.0: + /astral-regex@2.0.0: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} engines: {node: '>=8'} dev: true - /babel-jest/29.1.2_@babel+core@7.17.8: + /babel-jest@29.1.2(@babel/core@7.17.8): resolution: {integrity: sha512-IuG+F3HTHryJb7gacC7SQ59A9kO56BctUsT67uJHp1mMCHUOMXpDwOHWGifWqdWVknN2WNkCVQELPjXx0aLJ9Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -1156,7 +1174,7 @@ packages: '@jest/transform': 29.1.2 '@types/babel__core': 7.1.19 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.0.2_@babel+core@7.17.8 + babel-preset-jest: 29.0.2(@babel/core@7.17.8) chalk: 4.1.0 graceful-fs: 4.2.10 slash: 3.0.0 @@ -1164,7 +1182,7 @@ packages: - supports-color dev: true - /babel-plugin-istanbul/6.1.1: + /babel-plugin-istanbul@6.1.1: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} dependencies: @@ -1177,7 +1195,7 @@ packages: - supports-color dev: true - /babel-plugin-jest-hoist/29.0.2: + /babel-plugin-jest-hoist@29.0.2: resolution: {integrity: sha512-eBr2ynAEFjcebVvu8Ktx580BD1QKCrBG1XwEUTXJe285p9HA/4hOhfWCFRQhTKSyBV0VzjhG7H91Eifz9s29hg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -1187,38 +1205,38 @@ packages: '@types/babel__traverse': 7.18.2 dev: true - /babel-plugin-jsx-dom-expressions/0.32.11_@babel+core@7.17.8: + /babel-plugin-jsx-dom-expressions@0.32.11(@babel/core@7.17.8): resolution: {integrity: sha512-hytqY33SGW6B3obSLt8K5X510UwtNkTktCCWgwba+QOOV0CowDFiqeL+0ru895FLacFaYANHFTu1y76dg3GVtw==} dependencies: '@babel/helper-module-imports': 7.16.0 - '@babel/plugin-syntax-jsx': 7.16.7_@babel+core@7.17.8 + '@babel/plugin-syntax-jsx': 7.16.7(@babel/core@7.17.8) '@babel/types': 7.17.0 html-entities: 2.3.2 transitivePeerDependencies: - '@babel/core' dev: true - /babel-preset-current-node-syntax/1.0.1_@babel+core@7.17.8: + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.17.8): resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.17.8 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.17.8 - '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.17.8 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.17.8 - '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.17.8 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.17.8 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.17.8 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.17.8 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.17.8 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.17.8 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.17.8 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.17.8 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.17.8 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.17.8) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.17.8) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.17.8) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.17.8) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.17.8) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.17.8) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.17.8) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.17.8) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.17.8) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.17.8) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.17.8) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.17.8) dev: true - /babel-preset-jest/29.0.2_@babel+core@7.17.8: + /babel-preset-jest@29.0.2(@babel/core@7.17.8): resolution: {integrity: sha512-BeVXp7rH5TK96ofyEnHjznjLMQ2nAeDJ+QzxKnHAAMs0RgrQsCywjAN8m4mOm5Di0pxU//3AoEeJJrerMH5UeA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -1226,36 +1244,36 @@ packages: dependencies: '@babel/core': 7.17.8 babel-plugin-jest-hoist: 29.0.2 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.17.8 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.17.8) dev: true - /babel-preset-solid/1.3.13_@babel+core@7.17.8: + /babel-preset-solid@1.3.13(@babel/core@7.17.8): resolution: {integrity: sha512-MZnmsceI9yiHlwwFCSALTJhadk2eea/+2UP4ec4jkPZFR+XRKTLoIwRkrBh7uLtvHF+3lHGyUaXtZukOmmUwhA==} dependencies: - babel-plugin-jsx-dom-expressions: 0.32.11_@babel+core@7.17.8 + babel-plugin-jsx-dom-expressions: 0.32.11(@babel/core@7.17.8) transitivePeerDependencies: - '@babel/core' dev: true - /balanced-match/1.0.0: + /balanced-match@1.0.0: resolution: {integrity: sha1-ibTRmasr7kneFk6gK4nORi1xt2c=} dev: true - /brace-expansion/1.1.11: + /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: balanced-match: 1.0.0 concat-map: 0.0.1 dev: true - /braces/3.0.2: + /braces@3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} dependencies: fill-range: 7.0.1 dev: true - /browserslist/4.20.2: + /browserslist@4.20.2: resolution: {integrity: sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -1267,50 +1285,50 @@ packages: picocolors: 1.0.0 dev: true - /bs-logger/0.2.6: + /bs-logger@0.2.6: resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} engines: {node: '>= 6'} dependencies: fast-json-stable-stringify: 2.1.0 dev: true - /bser/2.1.1: + /bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} dependencies: node-int64: 0.4.0 dev: true - /buffer-from/1.1.2: + /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} dev: true - /call-bind/1.0.2: + /call-bind@1.0.2: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: function-bind: 1.1.1 get-intrinsic: 1.1.1 dev: true - /callsites/3.1.0: + /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} dev: true - /camelcase/5.3.1: + /camelcase@5.3.1: resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} engines: {node: '>=6'} dev: true - /camelcase/6.3.0: + /camelcase@6.3.0: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} dev: true - /caniuse-lite/1.0.30001322: + /caniuse-lite@1.0.30001322: resolution: {integrity: sha512-neRmrmIrCGuMnxGSoh+x7zYtQFFgnSY2jaomjU56sCkTA6JINqQrxutF459JpWcWRajvoyn95sOXq4Pqrnyjew==} dev: true - /chalk/2.4.2: + /chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} dependencies: @@ -1319,7 +1337,7 @@ packages: supports-color: 5.5.0 dev: true - /chalk/4.1.0: + /chalk@4.1.0: resolution: {integrity: sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==} engines: {node: '>=10'} dependencies: @@ -1327,20 +1345,20 @@ packages: supports-color: 7.2.0 dev: true - /char-regex/1.0.2: + /char-regex@1.0.2: resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} engines: {node: '>=10'} dev: true - /ci-info/3.5.0: + /ci-info@3.5.0: resolution: {integrity: sha512-yH4RezKOGlOhxkmhbeNuC4eYZKAUsEaGtBuBzDDP1eFUKiccDWzBABxBfOx31IDwDIXMTxWuwAxUGModvkbuVw==} dev: true - /cjs-module-lexer/1.2.2: + /cjs-module-lexer@1.2.2: resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} dev: true - /cliui/8.0.1: + /cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} dependencies: @@ -1349,51 +1367,51 @@ packages: wrap-ansi: 7.0.0 dev: true - /co/4.6.0: + /co@4.6.0: resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} dev: true - /collect-v8-coverage/1.0.1: + /collect-v8-coverage@1.0.1: resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} dev: true - /color-convert/1.9.3: + /color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: color-name: 1.1.3 dev: true - /color-convert/2.0.1: + /color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 dev: true - /color-name/1.1.3: + /color-name@1.1.3: resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=} dev: true - /color-name/1.1.4: + /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} dev: true - /component-register/0.7.1: + /component-register@0.7.1: resolution: {integrity: sha512-8cob6SUcl/y66nboT+4wXXOFvC/RYdyfcx7YA4KSvM3JQd1Oh/k8w+G4e960d4hPUgeM/jc5rF67pQDcmStQrg==} dev: true - /concat-map/0.0.1: + /concat-map@0.0.1: resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} dev: true - /convert-source-map/1.7.0: + /convert-source-map@1.7.0: resolution: {integrity: sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==} dependencies: safe-buffer: 5.1.2 dev: true - /cross-spawn/7.0.3: + /cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} dependencies: @@ -1402,18 +1420,14 @@ packages: which: 2.0.2 dev: true - /css-in-js-utils/2.0.1: + /css-in-js-utils@2.0.1: resolution: {integrity: sha512-PJF0SpJT+WdbVVt0AOYp9C8GnuruRlL/UFW7932nLWmFLQTaWEzTBQEx7/hn4BuV+WON75iAViSUJLiU3PKbpA==} dependencies: hyphenate-style-name: 1.0.4 isobject: 3.0.1 dev: true - /csstype/3.1.1: - resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==} - dev: true - - /debug/4.3.1: + /debug@4.3.1: resolution: {integrity: sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==} engines: {node: '>=6.0'} peerDependencies: @@ -1425,95 +1439,89 @@ packages: ms: 2.1.2 dev: true - /dedent/0.7.0: + /dedent@0.7.0: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} dev: true - /deep-is/0.1.3: + /deep-is@0.1.3: resolution: {integrity: sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=} dev: true - /deepmerge/4.2.2: + /deepmerge@4.2.2: resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} engines: {node: '>=0.10.0'} dev: true - /define-properties/1.1.3: + /define-properties@1.1.3: resolution: {integrity: sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==} engines: {node: '>= 0.4'} dependencies: object-keys: 1.1.1 dev: true - /detect-newline/3.1.0: + /detect-newline@3.1.0: resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} engines: {node: '>=8'} dev: true - /diff-sequences/26.6.2: + /diff-sequences@26.6.2: resolution: {integrity: sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==} engines: {node: '>= 10.14.2'} dev: true - /diff-sequences/29.0.0: + /diff-sequences@29.0.0: resolution: {integrity: sha512-7Qe/zd1wxSDL4D/X/FPjOMB+ZMDt71W94KYaq05I2l0oQqgXgs7s4ftYYmV38gBSrPz2vcygxfs1xn0FT+rKNA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /dir-glob/3.0.1: + /dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} dependencies: path-type: 4.0.0 dev: true - /doctrine/2.1.0: + /doctrine@2.1.0: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} engines: {node: '>=0.10.0'} dependencies: esutils: 2.0.3 dev: true - /doctrine/3.0.0: + /doctrine@3.0.0: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} dependencies: esutils: 2.0.3 dev: true - /dom7/4.0.4: - resolution: {integrity: sha512-DSSgBzQ4rJWQp1u6o+3FVwMNnT5bzQbMb+o31TjYYeRi05uAcpF8koxdfzeoe5ElzPmua7W7N28YJhF7iEKqIw==} - dependencies: - ssr-window: 4.0.2 - dev: false - - /electron-to-chromium/1.4.101: + /electron-to-chromium@1.4.101: resolution: {integrity: sha512-XJH+XmJjACx1S7ASl/b//KePcda5ocPnFH2jErztXcIS8LpP0SE6rX8ZxiY5/RaDPnaF1rj0fPaHfppzb0e2Aw==} dev: true - /emittery/0.10.2: + /emittery@0.10.2: resolution: {integrity: sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==} engines: {node: '>=12'} dev: true - /emoji-regex/8.0.0: + /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} dev: true - /enquirer/2.3.6: + /enquirer@2.3.6: resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} engines: {node: '>=8.6'} dependencies: ansi-colors: 4.1.1 dev: true - /error-ex/1.3.2: + /error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: is-arrayish: 0.2.1 dev: true - /es-abstract/1.18.0: + /es-abstract@1.18.0: resolution: {integrity: sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==} engines: {node: '>= 0.4'} dependencies: @@ -1535,7 +1543,7 @@ packages: unbox-primitive: 1.0.1 dev: true - /es-to-primitive/1.2.1: + /es-to-primitive@1.2.1: resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} engines: {node: '>= 0.4'} dependencies: @@ -1544,7 +1552,7 @@ packages: is-symbol: 1.0.3 dev: true - /esbuild-android-64/0.14.29: + /esbuild-android-64@0.14.29: resolution: {integrity: sha512-tJuaN33SVZyiHxRaVTo1pwW+rn3qetJX/SRuc/83rrKYtyZG0XfsQ1ao1nEudIt9w37ZSNXR236xEfm2C43sbw==} engines: {node: '>=12'} cpu: [x64] @@ -1553,7 +1561,7 @@ packages: dev: true optional: true - /esbuild-android-arm64/0.14.29: + /esbuild-android-arm64@0.14.29: resolution: {integrity: sha512-D74dCv6yYnMTlofVy1JKiLM5JdVSQd60/rQfJSDP9qvRAI0laPXIG/IXY1RG6jobmFMUfL38PbFnCqyI/6fPXg==} engines: {node: '>=12'} cpu: [arm64] @@ -1562,7 +1570,7 @@ packages: dev: true optional: true - /esbuild-darwin-64/0.14.29: + /esbuild-darwin-64@0.14.29: resolution: {integrity: sha512-+CJaRvfTkzs9t+CjGa0Oa28WoXa7EeLutQhxus+fFcu0MHhsBhlmeWHac3Cc/Sf/xPi1b2ccDFfzGYJCfV0RrA==} engines: {node: '>=12'} cpu: [x64] @@ -1571,7 +1579,7 @@ packages: dev: true optional: true - /esbuild-darwin-arm64/0.14.29: + /esbuild-darwin-arm64@0.14.29: resolution: {integrity: sha512-5Wgz/+zK+8X2ZW7vIbwoZ613Vfr4A8HmIs1XdzRmdC1kG0n5EG5fvKk/jUxhNlrYPx1gSY7XadQ3l4xAManPSw==} engines: {node: '>=12'} cpu: [arm64] @@ -1580,7 +1588,7 @@ packages: dev: true optional: true - /esbuild-freebsd-64/0.14.29: + /esbuild-freebsd-64@0.14.29: resolution: {integrity: sha512-VTfS7Bm9QA12JK1YXF8+WyYOfvD7WMpbArtDj6bGJ5Sy5xp01c/q70Arkn596aGcGj0TvQRplaaCIrfBG1Wdtg==} engines: {node: '>=12'} cpu: [x64] @@ -1589,7 +1597,7 @@ packages: dev: true optional: true - /esbuild-freebsd-arm64/0.14.29: + /esbuild-freebsd-arm64@0.14.29: resolution: {integrity: sha512-WP5L4ejwLWWvd3Fo2J5mlXvG3zQHaw5N1KxFGnUc4+2ZFZknP0ST63i0IQhpJLgEJwnQpXv2uZlU1iWZjFqEIg==} engines: {node: '>=12'} cpu: [arm64] @@ -1598,7 +1606,7 @@ packages: dev: true optional: true - /esbuild-linux-32/0.14.29: + /esbuild-linux-32@0.14.29: resolution: {integrity: sha512-4myeOvFmQBWdI2U1dEBe2DCSpaZyjdQtmjUY11Zu2eQg4ynqLb8Y5mNjNU9UN063aVsCYYfbs8jbken/PjyidA==} engines: {node: '>=12'} cpu: [ia32] @@ -1607,7 +1615,7 @@ packages: dev: true optional: true - /esbuild-linux-64/0.14.29: + /esbuild-linux-64@0.14.29: resolution: {integrity: sha512-iaEuLhssReAKE7HMwxwFJFn7D/EXEs43fFy5CJeA4DGmU6JHh0qVJD2p/UP46DvUXLRKXsXw0i+kv5TdJ1w5pg==} engines: {node: '>=12'} cpu: [x64] @@ -1616,16 +1624,7 @@ packages: dev: true optional: true - /esbuild-linux-arm/0.14.29: - resolution: {integrity: sha512-OXa9D9QL1hwrAnYYAHt/cXAuSCmoSqYfTW/0CEY0LgJNyTxJKtqc5mlwjAZAvgyjmha0auS/sQ0bXfGf2wAokQ==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-arm64/0.14.29: + /esbuild-linux-arm64@0.14.29: resolution: {integrity: sha512-KYf7s8wDfUy+kjKymW3twyGT14OABjGHRkm9gPJ0z4BuvqljfOOUbq9qT3JYFnZJHOgkr29atT//hcdD0Pi7Mw==} engines: {node: '>=12'} cpu: [arm64] @@ -1634,7 +1633,16 @@ packages: dev: true optional: true - /esbuild-linux-mips64le/0.14.29: + /esbuild-linux-arm@0.14.29: + resolution: {integrity: sha512-OXa9D9QL1hwrAnYYAHt/cXAuSCmoSqYfTW/0CEY0LgJNyTxJKtqc5mlwjAZAvgyjmha0auS/sQ0bXfGf2wAokQ==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-mips64le@0.14.29: resolution: {integrity: sha512-05jPtWQMsZ1aMGfHOvnR5KrTvigPbU35BtuItSSWLI2sJu5VrM8Pr9Owym4wPvA4153DFcOJ1EPN/2ujcDt54g==} engines: {node: '>=12'} cpu: [mips64el] @@ -1643,7 +1651,7 @@ packages: dev: true optional: true - /esbuild-linux-ppc64le/0.14.29: + /esbuild-linux-ppc64le@0.14.29: resolution: {integrity: sha512-FYhBqn4Ir9xG+f6B5VIQVbRuM4S6qwy29dDNYFPoxLRnwTEKToIYIUESN1qHyUmIbfO0YB4phG2JDV2JDN9Kgw==} engines: {node: '>=12'} cpu: [ppc64] @@ -1652,7 +1660,7 @@ packages: dev: true optional: true - /esbuild-linux-riscv64/0.14.29: + /esbuild-linux-riscv64@0.14.29: resolution: {integrity: sha512-eqZMqPehkb4nZcffnuOpXJQdGURGd6GXQ4ZsDHSWyIUaA+V4FpMBe+5zMPtXRD2N4BtyzVvnBko6K8IWWr36ew==} engines: {node: '>=12'} cpu: [riscv64] @@ -1661,7 +1669,7 @@ packages: dev: true optional: true - /esbuild-linux-s390x/0.14.29: + /esbuild-linux-s390x@0.14.29: resolution: {integrity: sha512-o7EYajF1rC/4ho7kpSG3gENVx0o2SsHm7cJ5fvewWB/TEczWU7teDgusGSujxCYcMottE3zqa423VTglNTYhjg==} engines: {node: '>=12'} cpu: [s390x] @@ -1670,7 +1678,7 @@ packages: dev: true optional: true - /esbuild-netbsd-64/0.14.29: + /esbuild-netbsd-64@0.14.29: resolution: {integrity: sha512-/esN6tb6OBSot6+JxgeOZeBk6P8V/WdR3GKBFeFpSqhgw4wx7xWUqPrdx4XNpBVO7X4Ipw9SAqgBrWHlXfddww==} engines: {node: '>=12'} cpu: [x64] @@ -1679,7 +1687,7 @@ packages: dev: true optional: true - /esbuild-openbsd-64/0.14.29: + /esbuild-openbsd-64@0.14.29: resolution: {integrity: sha512-jUTdDzhEKrD0pLpjmk0UxwlfNJNg/D50vdwhrVcW/D26Vg0hVbthMfb19PJMatzclbK7cmgk1Nu0eNS+abzoHw==} engines: {node: '>=12'} cpu: [x64] @@ -1688,7 +1696,7 @@ packages: dev: true optional: true - /esbuild-sunos-64/0.14.29: + /esbuild-sunos-64@0.14.29: resolution: {integrity: sha512-EfhQN/XO+TBHTbkxwsxwA7EfiTHFe+MNDfxcf0nj97moCppD9JHPq48MLtOaDcuvrTYOcrMdJVeqmmeQ7doTcg==} engines: {node: '>=12'} cpu: [x64] @@ -1697,7 +1705,7 @@ packages: dev: true optional: true - /esbuild-windows-32/0.14.29: + /esbuild-windows-32@0.14.29: resolution: {integrity: sha512-uoyb0YAJ6uWH4PYuYjfGNjvgLlb5t6b3zIaGmpWPOjgpr1Nb3SJtQiK4YCPGhONgfg2v6DcJgSbOteuKXhwqAw==} engines: {node: '>=12'} cpu: [ia32] @@ -1706,7 +1714,7 @@ packages: dev: true optional: true - /esbuild-windows-64/0.14.29: + /esbuild-windows-64@0.14.29: resolution: {integrity: sha512-X9cW/Wl95QjsH8WUyr3NqbmfdU72jCp71cH3pwPvI4CgBM2IeOUDdbt6oIGljPu2bf5eGDIo8K3Y3vvXCCTd8A==} engines: {node: '>=12'} cpu: [x64] @@ -1715,7 +1723,7 @@ packages: dev: true optional: true - /esbuild-windows-arm64/0.14.29: + /esbuild-windows-arm64@0.14.29: resolution: {integrity: sha512-+O/PI+68fbUZPpl3eXhqGHTGK7DjLcexNnyJqtLZXOFwoAjaXlS5UBCvVcR3o2va+AqZTj8o6URaz8D2K+yfQQ==} engines: {node: '>=12'} cpu: [arm64] @@ -1724,7 +1732,7 @@ packages: dev: true optional: true - /esbuild/0.14.29: + /esbuild@0.14.29: resolution: {integrity: sha512-SQS8cO8xFEqevYlrHt6exIhK853Me4nZ4aMW6ieysInLa0FMAL+AKs87HYNRtR2YWRcEIqoXAHh+Ytt5/66qpg==} engines: {node: '>=12'} hasBin: true @@ -1752,22 +1760,22 @@ packages: esbuild-windows-arm64: 0.14.29 dev: true - /escalade/3.1.1: + /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} dev: true - /escape-string-regexp/1.0.5: + /escape-string-regexp@1.0.5: resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=} engines: {node: '>=0.8.0'} dev: true - /escape-string-regexp/2.0.0: + /escape-string-regexp@2.0.0: resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} engines: {node: '>=8'} dev: true - /eslint-plugin-react/7.23.1_eslint@7.22.0: + /eslint-plugin-react@7.23.1(eslint@7.22.0): resolution: {integrity: sha512-MvFGhZjI8Z4HusajmSw0ougGrq3Gs4vT/0WgwksZgf5RrLrRa2oYAw56okU4tZJl8+j7IYNuTM+2RnFEuTSdRQ==} engines: {node: '>=4'} peerDependencies: @@ -1788,7 +1796,7 @@ packages: string.prototype.matchall: 4.0.4 dev: true - /eslint-scope/5.1.1: + /eslint-scope@5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} dependencies: @@ -1796,24 +1804,24 @@ packages: estraverse: 4.3.0 dev: true - /eslint-utils/2.1.0: + /eslint-utils@2.1.0: resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} engines: {node: '>=6'} dependencies: eslint-visitor-keys: 1.3.0 dev: true - /eslint-visitor-keys/1.3.0: + /eslint-visitor-keys@1.3.0: resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} engines: {node: '>=4'} dev: true - /eslint-visitor-keys/2.0.0: + /eslint-visitor-keys@2.0.0: resolution: {integrity: sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==} engines: {node: '>=10'} dev: true - /eslint/7.22.0: + /eslint@7.22.0: resolution: {integrity: sha512-3VawOtjSJUQiiqac8MQc+w457iGLfuNGLFn8JmF051tTKbh5/x/0vlcEj8OgDCaw7Ysa2Jn8paGshV7x2abKXg==} engines: {node: ^10.12.0 || >=12.0.0} hasBin: true @@ -1859,51 +1867,51 @@ packages: - supports-color dev: true - /espree/7.3.1: + /espree@7.3.1: resolution: {integrity: sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: acorn: 7.4.1 - acorn-jsx: 5.3.1_acorn@7.4.1 + acorn-jsx: 5.3.1(acorn@7.4.1) eslint-visitor-keys: 1.3.0 dev: true - /esprima/4.0.1: + /esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} hasBin: true dev: true - /esquery/1.4.0: + /esquery@1.4.0: resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} engines: {node: '>=0.10'} dependencies: estraverse: 5.2.0 dev: true - /esrecurse/4.3.0: + /esrecurse@4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} dependencies: estraverse: 5.2.0 dev: true - /estraverse/4.3.0: + /estraverse@4.3.0: resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} engines: {node: '>=4.0'} dev: true - /estraverse/5.2.0: + /estraverse@5.2.0: resolution: {integrity: sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==} engines: {node: '>=4.0'} dev: true - /esutils/2.0.3: + /esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} dev: true - /execa/5.1.1: + /execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} dependencies: @@ -1918,12 +1926,12 @@ packages: strip-final-newline: 2.0.0 dev: true - /exit/0.1.2: + /exit@0.1.2: resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} engines: {node: '>= 0.8.0'} dev: true - /expect/29.1.2: + /expect@29.1.2: resolution: {integrity: sha512-AuAGn1uxva5YBbBlXb+2JPxJRuemZsmlGcapPXWNSBNsQtAULfjioREGBWuI0EOvYUKjDnrCy8PW5Zlr1md5mw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -1934,11 +1942,11 @@ packages: jest-util: 29.1.2 dev: true - /fast-deep-equal/3.1.3: + /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true - /fast-glob/3.2.5: + /fast-glob@3.2.5: resolution: {integrity: sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==} engines: {node: '>=8'} dependencies: @@ -1950,41 +1958,41 @@ packages: picomatch: 2.2.2 dev: true - /fast-json-stable-stringify/2.1.0: + /fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} dev: true - /fast-levenshtein/2.0.6: + /fast-levenshtein@2.0.6: resolution: {integrity: sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=} dev: true - /fastq/1.11.0: + /fastq@1.11.0: resolution: {integrity: sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==} dependencies: reusify: 1.0.4 dev: true - /fb-watchman/2.0.2: + /fb-watchman@2.0.2: resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} dependencies: bser: 2.1.1 dev: true - /file-entry-cache/6.0.1: + /file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: flat-cache: 3.0.4 dev: true - /fill-range/7.0.1: + /fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 dev: true - /find-up/4.1.0: + /find-up@4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} dependencies: @@ -1992,7 +2000,7 @@ packages: path-exists: 4.0.0 dev: true - /flat-cache/3.0.4: + /flat-cache@3.0.4: resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: @@ -2000,15 +2008,15 @@ packages: rimraf: 3.0.2 dev: true - /flatted/3.1.1: + /flatted@3.1.1: resolution: {integrity: sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==} dev: true - /fs.realpath/1.0.0: + /fs.realpath@1.0.0: resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=} dev: true - /fsevents/2.3.2: + /fsevents@2.3.2: resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] @@ -2016,25 +2024,25 @@ packages: dev: true optional: true - /function-bind/1.1.1: + /function-bind@1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} dev: true - /functional-red-black-tree/1.0.1: + /functional-red-black-tree@1.0.1: resolution: {integrity: sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=} dev: true - /gensync/1.0.0-beta.2: + /gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} dev: true - /get-caller-file/2.0.5: + /get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} dev: true - /get-intrinsic/1.1.1: + /get-intrinsic@1.1.1: resolution: {integrity: sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==} dependencies: function-bind: 1.1.1 @@ -2042,24 +2050,24 @@ packages: has-symbols: 1.0.2 dev: true - /get-package-type/0.1.0: + /get-package-type@0.1.0: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} engines: {node: '>=8.0.0'} dev: true - /get-stream/6.0.1: + /get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} dev: true - /glob-parent/5.1.2: + /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} dependencies: is-glob: 4.0.1 dev: true - /glob/7.1.6: + /glob@7.1.6: resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} dependencies: fs.realpath: 1.0.0 @@ -2070,26 +2078,26 @@ packages: path-is-absolute: 1.0.1 dev: true - /globals/11.12.0: + /globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} dev: true - /globals/12.4.0: + /globals@12.4.0: resolution: {integrity: sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==} engines: {node: '>=8'} dependencies: type-fest: 0.8.1 dev: true - /globals/13.7.0: + /globals@13.7.0: resolution: {integrity: sha512-Aipsz6ZKRxa/xQkZhNg0qIWXT6x6rD46f6x/PCnBomlttdIyAPak4YD9jTmKpZ72uROSMU87qJtcgpgHaVchiA==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 dev: true - /globby/11.0.3: + /globby@11.0.3: resolution: {integrity: sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg==} engines: {node: '>=10'} dependencies: @@ -2101,64 +2109,64 @@ packages: slash: 3.0.0 dev: true - /graceful-fs/4.2.10: + /graceful-fs@4.2.10: resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} dev: true - /has-bigints/1.0.1: + /has-bigints@1.0.1: resolution: {integrity: sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==} dev: true - /has-flag/3.0.0: + /has-flag@3.0.0: resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=} engines: {node: '>=4'} dev: true - /has-flag/4.0.0: + /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} dev: true - /has-symbols/1.0.2: + /has-symbols@1.0.2: resolution: {integrity: sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==} engines: {node: '>= 0.4'} dev: true - /has/1.0.3: + /has@1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} dependencies: function-bind: 1.1.1 dev: true - /html-entities/2.3.2: + /html-entities@2.3.2: resolution: {integrity: sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==} dev: true - /html-escaper/2.0.2: + /html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} dev: true - /human-signals/2.1.0: + /human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} dev: true - /hyphenate-style-name/1.0.4: + /hyphenate-style-name@1.0.4: resolution: {integrity: sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==} dev: true - /ignore/4.0.6: + /ignore@4.0.6: resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} engines: {node: '>= 4'} dev: true - /ignore/5.1.8: + /ignore@5.1.8: resolution: {integrity: sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==} engines: {node: '>= 4'} dev: true - /import-fresh/3.3.0: + /import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} dependencies: @@ -2166,7 +2174,7 @@ packages: resolve-from: 4.0.0 dev: true - /import-local/3.1.0: + /import-local@3.1.0: resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} engines: {node: '>=8'} hasBin: true @@ -2175,29 +2183,29 @@ packages: resolve-cwd: 3.0.0 dev: true - /imurmurhash/0.1.4: + /imurmurhash@0.1.4: resolution: {integrity: sha1-khi5srkoojixPcT7a21XbyMUU+o=} engines: {node: '>=0.8.19'} dev: true - /inflight/1.0.6: + /inflight@1.0.6: resolution: {integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=} dependencies: once: 1.4.0 wrappy: 1.0.2 dev: true - /inherits/2.0.4: + /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} dev: true - /inline-style-prefixer/5.1.2: + /inline-style-prefixer@5.1.2: resolution: {integrity: sha512-PYUF+94gDfhy+LsQxM0g3d6Hge4l1pAqOSOiZuHWzMvQEGsbRQ/ck2WioLqrY2ZkHyPgVUXxn+hrkF7D6QUGbA==} dependencies: css-in-js-utils: 2.0.1 dev: true - /internal-slot/1.0.3: + /internal-slot@1.0.3: resolution: {integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==} engines: {node: '>= 0.4'} dependencies: @@ -2206,81 +2214,81 @@ packages: side-channel: 1.0.4 dev: true - /is-arrayish/0.2.1: + /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} dev: true - /is-bigint/1.0.1: + /is-bigint@1.0.1: resolution: {integrity: sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg==} dev: true - /is-boolean-object/1.1.0: + /is-boolean-object@1.1.0: resolution: {integrity: sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 dev: true - /is-callable/1.2.3: + /is-callable@1.2.3: resolution: {integrity: sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==} engines: {node: '>= 0.4'} dev: true - /is-core-module/2.2.0: + /is-core-module@2.2.0: resolution: {integrity: sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==} dependencies: has: 1.0.3 dev: true - /is-core-module/2.8.1: + /is-core-module@2.8.1: resolution: {integrity: sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==} dependencies: has: 1.0.3 dev: true - /is-date-object/1.0.2: + /is-date-object@1.0.2: resolution: {integrity: sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==} engines: {node: '>= 0.4'} dev: true - /is-extglob/2.1.1: + /is-extglob@2.1.1: resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=} engines: {node: '>=0.10.0'} dev: true - /is-fullwidth-code-point/3.0.0: + /is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} dev: true - /is-generator-fn/2.1.0: + /is-generator-fn@2.1.0: resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} engines: {node: '>=6'} dev: true - /is-glob/4.0.1: + /is-glob@4.0.1: resolution: {integrity: sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==} engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 dev: true - /is-negative-zero/2.0.1: + /is-negative-zero@2.0.1: resolution: {integrity: sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==} engines: {node: '>= 0.4'} dev: true - /is-number-object/1.0.4: + /is-number-object@1.0.4: resolution: {integrity: sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==} engines: {node: '>= 0.4'} dev: true - /is-number/7.0.0: + /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} dev: true - /is-regex/1.1.2: + /is-regex@1.1.2: resolution: {integrity: sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==} engines: {node: '>= 0.4'} dependencies: @@ -2288,43 +2296,43 @@ packages: has-symbols: 1.0.2 dev: true - /is-stream/2.0.1: + /is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} dev: true - /is-string/1.0.5: + /is-string@1.0.5: resolution: {integrity: sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==} engines: {node: '>= 0.4'} dev: true - /is-symbol/1.0.3: + /is-symbol@1.0.3: resolution: {integrity: sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.2 dev: true - /is-what/4.1.7: + /is-what@4.1.7: resolution: {integrity: sha512-DBVOQNiPKnGMxRMLIYSwERAS5MVY1B7xYiGnpgctsOFvVDz9f9PFXXxMcTOHuoqYp4NK9qFYQaIC1NRRxLMpBQ==} engines: {node: '>=12.13'} dev: true - /isexe/2.0.0: + /isexe@2.0.0: resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=} dev: true - /isobject/3.0.1: + /isobject@3.0.1: resolution: {integrity: sha1-TkMekrEalzFjaqH5yNHMvP2reN8=} engines: {node: '>=0.10.0'} dev: true - /istanbul-lib-coverage/3.2.0: + /istanbul-lib-coverage@3.2.0: resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} engines: {node: '>=8'} dev: true - /istanbul-lib-instrument/5.2.1: + /istanbul-lib-instrument@5.2.1: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} dependencies: @@ -2337,7 +2345,7 @@ packages: - supports-color dev: true - /istanbul-lib-report/3.0.0: + /istanbul-lib-report@3.0.0: resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} engines: {node: '>=8'} dependencies: @@ -2346,7 +2354,7 @@ packages: supports-color: 7.2.0 dev: true - /istanbul-lib-source-maps/4.0.1: + /istanbul-lib-source-maps@4.0.1: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: @@ -2357,7 +2365,7 @@ packages: - supports-color dev: true - /istanbul-reports/3.1.5: + /istanbul-reports@3.1.5: resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} engines: {node: '>=8'} dependencies: @@ -2365,7 +2373,7 @@ packages: istanbul-lib-report: 3.0.0 dev: true - /jest-changed-files/29.0.0: + /jest-changed-files@29.0.0: resolution: {integrity: sha512-28/iDMDrUpGoCitTURuDqUzWQoWmOmOKOFST1mi2lwh62X4BFf6khgH3uSuo1e49X/UDjuApAj3w0wLOex4VPQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -2373,7 +2381,7 @@ packages: p-limit: 3.1.0 dev: true - /jest-circus/29.1.2: + /jest-circus@29.1.2: resolution: {integrity: sha512-ajQOdxY6mT9GtnfJRZBRYS7toNIJayiiyjDyoZcnvPRUPwJ58JX0ci0PKAKUo2C1RyzlHw0jabjLGKksO42JGA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -2400,7 +2408,7 @@ packages: - supports-color dev: true - /jest-cli/29.1.2_@types+node@14.14.20: + /jest-cli@29.1.2(@types/node@14.14.20): resolution: {integrity: sha512-vsvBfQ7oS2o4MJdAH+4u9z76Vw5Q8WBQF5MchDbkylNknZdrPTX1Ix7YRJyTlOWqRaS7ue/cEAn+E4V1MWyMzw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -2417,7 +2425,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.10 import-local: 3.1.0 - jest-config: 29.1.2_@types+node@14.14.20 + jest-config: 29.1.2(@types/node@14.14.20) jest-util: 29.1.2 jest-validate: 29.1.2 prompts: 2.4.2 @@ -2428,7 +2436,7 @@ packages: - ts-node dev: true - /jest-config/29.1.2_@types+node@14.14.20: + /jest-config@29.1.2(@types/node@14.14.20): resolution: {integrity: sha512-EC3Zi86HJUOz+2YWQcJYQXlf0zuBhJoeyxLM6vb6qJsVmpP7KcCP1JnyF0iaqTaXdBP8Rlwsvs7hnKWQWWLwwA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -2444,7 +2452,7 @@ packages: '@jest/test-sequencer': 29.1.2 '@jest/types': 29.1.2 '@types/node': 14.14.20 - babel-jest: 29.1.2_@babel+core@7.17.8 + babel-jest: 29.1.2(@babel/core@7.17.8) chalk: 4.1.0 ci-info: 3.5.0 deepmerge: 4.2.2 @@ -2467,7 +2475,7 @@ packages: - supports-color dev: true - /jest-diff/26.6.2: + /jest-diff@26.6.2: resolution: {integrity: sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==} engines: {node: '>= 10.14.2'} dependencies: @@ -2477,7 +2485,7 @@ packages: pretty-format: 26.6.2 dev: true - /jest-diff/29.1.2: + /jest-diff@29.1.2: resolution: {integrity: sha512-4GQts0aUopVvecIT4IwD/7xsBaMhKTYoM4/njE/aVw9wpw+pIUVp8Vab/KnSzSilr84GnLBkaP3JLDnQYCKqVQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -2487,14 +2495,14 @@ packages: pretty-format: 29.1.2 dev: true - /jest-docblock/29.0.0: + /jest-docblock@29.0.0: resolution: {integrity: sha512-s5Kpra/kLzbqu9dEjov30kj1n4tfu3e7Pl8v+f8jOkeWNqM6Ds8jRaJfZow3ducoQUrf2Z4rs2N5S3zXnb83gw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: detect-newline: 3.1.0 dev: true - /jest-each/29.1.2: + /jest-each@29.1.2: resolution: {integrity: sha512-AmTQp9b2etNeEwMyr4jc0Ql/LIX/dhbgP21gHAizya2X6rUspHn2gysMXaj6iwWuOJ2sYRgP8c1P4cXswgvS1A==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -2505,7 +2513,7 @@ packages: pretty-format: 29.1.2 dev: true - /jest-environment-node/29.1.2: + /jest-environment-node@29.1.2: resolution: {integrity: sha512-C59yVbdpY8682u6k/lh8SUMDJPbOyCHOTgLVVi1USWFxtNV+J8fyIwzkg+RJIVI30EKhKiAGNxYaFr3z6eyNhQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -2517,17 +2525,17 @@ packages: jest-util: 29.1.2 dev: true - /jest-get-type/26.3.0: + /jest-get-type@26.3.0: resolution: {integrity: sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==} engines: {node: '>= 10.14.2'} dev: true - /jest-get-type/29.0.0: + /jest-get-type@29.0.0: resolution: {integrity: sha512-83X19z/HuLKYXYHskZlBAShO7UfLFXu/vWajw9ZNJASN32li8yHMaVGAQqxFW1RCFOkB7cubaL6FaJVQqqJLSw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /jest-haste-map/29.1.2: + /jest-haste-map@29.1.2: resolution: {integrity: sha512-xSjbY8/BF11Jh3hGSPfYTa/qBFrm3TPM7WU8pU93m2gqzORVLkHFWvuZmFsTEBPRKndfewXhMOuzJNHyJIZGsw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -2546,7 +2554,7 @@ packages: fsevents: 2.3.2 dev: true - /jest-leak-detector/29.1.2: + /jest-leak-detector@29.1.2: resolution: {integrity: sha512-TG5gAZJpgmZtjb6oWxBLf2N6CfQ73iwCe6cofu/Uqv9iiAm6g502CAnGtxQaTfpHECBdVEMRBhomSXeLnoKjiQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -2554,7 +2562,7 @@ packages: pretty-format: 29.1.2 dev: true - /jest-matcher-utils/29.1.2: + /jest-matcher-utils@29.1.2: resolution: {integrity: sha512-MV5XrD3qYSW2zZSHRRceFzqJ39B2z11Qv0KPyZYxnzDHFeYZGJlgGi0SW+IXSJfOewgJp/Km/7lpcFT+cgZypw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -2564,7 +2572,7 @@ packages: pretty-format: 29.1.2 dev: true - /jest-message-util/29.1.2: + /jest-message-util@29.1.2: resolution: {integrity: sha512-9oJ2Os+Qh6IlxLpmvshVbGUiSkZVc2FK+uGOm6tghafnB2RyjKAxMZhtxThRMxfX1J1SOMhTn9oK3/MutRWQJQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -2579,7 +2587,7 @@ packages: stack-utils: 2.0.5 dev: true - /jest-mock/29.1.2: + /jest-mock@29.1.2: resolution: {integrity: sha512-PFDAdjjWbjPUtQPkQufvniXIS3N9Tv7tbibePEjIIprzjgo0qQlyUiVMrT4vL8FaSJo1QXifQUOuPH3HQC/aMA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -2588,7 +2596,7 @@ packages: jest-util: 29.1.2 dev: true - /jest-pnp-resolver/1.2.2_jest-resolve@29.1.2: + /jest-pnp-resolver@1.2.2(jest-resolve@29.1.2): resolution: {integrity: sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==} engines: {node: '>=6'} peerDependencies: @@ -2600,12 +2608,12 @@ packages: jest-resolve: 29.1.2 dev: true - /jest-regex-util/29.0.0: + /jest-regex-util@29.0.0: resolution: {integrity: sha512-BV7VW7Sy0fInHWN93MMPtlClweYv2qrSCwfeFWmpribGZtQPWNvRSq9XOVgOEjU1iBGRKXUZil0o2AH7Iy9Lug==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /jest-resolve-dependencies/29.1.2: + /jest-resolve-dependencies@29.1.2: resolution: {integrity: sha512-44yYi+yHqNmH3OoWZvPgmeeiwKxhKV/0CfrzaKLSkZG9gT973PX8i+m8j6pDrTYhhHoiKfF3YUFg/6AeuHw4HQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -2615,14 +2623,14 @@ packages: - supports-color dev: true - /jest-resolve/29.1.2: + /jest-resolve@29.1.2: resolution: {integrity: sha512-7fcOr+k7UYSVRJYhSmJHIid3AnDBcLQX3VmT9OSbPWsWz1MfT7bcoerMhADKGvKCoMpOHUQaDHtQoNp/P9JMGg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.0 graceful-fs: 4.2.10 jest-haste-map: 29.1.2 - jest-pnp-resolver: 1.2.2_jest-resolve@29.1.2 + jest-pnp-resolver: 1.2.2(jest-resolve@29.1.2) jest-util: 29.1.2 jest-validate: 29.1.2 resolve: 1.22.0 @@ -2630,7 +2638,7 @@ packages: slash: 3.0.0 dev: true - /jest-runner/29.1.2: + /jest-runner@29.1.2: resolution: {integrity: sha512-yy3LEWw8KuBCmg7sCGDIqKwJlULBuNIQa2eFSVgVASWdXbMYZ9H/X0tnXt70XFoGf92W2sOQDOIFAA6f2BG04Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -2659,7 +2667,7 @@ packages: - supports-color dev: true - /jest-runtime/29.1.2: + /jest-runtime@29.1.2: resolution: {integrity: sha512-jr8VJLIf+cYc+8hbrpt412n5jX3tiXmpPSYTGnwcvNemY+EOuLNiYnHJ3Kp25rkaAcTWOEI4ZdOIQcwYcXIAZw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -2689,14 +2697,14 @@ packages: - supports-color dev: true - /jest-snapshot/29.1.2: + /jest-snapshot@29.1.2: resolution: {integrity: sha512-rYFomGpVMdBlfwTYxkUp3sjD6usptvZcONFYNqVlaz4EpHPnDvlWjvmOQ9OCSNKqYZqLM2aS3wq01tWujLg7gg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/core': 7.17.8 '@babel/generator': 7.17.7 - '@babel/plugin-syntax-jsx': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-syntax-typescript': 7.16.7_@babel+core@7.17.8 + '@babel/plugin-syntax-jsx': 7.16.7(@babel/core@7.17.8) + '@babel/plugin-syntax-typescript': 7.16.7(@babel/core@7.17.8) '@babel/traverse': 7.17.3 '@babel/types': 7.17.0 '@jest/expect-utils': 29.1.2 @@ -2704,7 +2712,7 @@ packages: '@jest/types': 29.1.2 '@types/babel__traverse': 7.18.2 '@types/prettier': 2.7.1 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.17.8 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.17.8) chalk: 4.1.0 expect: 29.1.2 graceful-fs: 4.2.10 @@ -2721,7 +2729,7 @@ packages: - supports-color dev: true - /jest-util/29.1.2: + /jest-util@29.1.2: resolution: {integrity: sha512-vPCk9F353i0Ymx3WQq3+a4lZ07NXu9Ca8wya6o4Fe4/aO1e1awMMprZ3woPFpKwghEOW+UXgd15vVotuNN9ONQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -2733,7 +2741,7 @@ packages: picomatch: 2.3.1 dev: true - /jest-validate/29.1.2: + /jest-validate@29.1.2: resolution: {integrity: sha512-k71pOslNlV8fVyI+mEySy2pq9KdXdgZtm7NHrBX8LghJayc3wWZH0Yr0mtYNGaCU4F1OLPXRkwZR0dBm/ClshA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -2745,7 +2753,7 @@ packages: pretty-format: 29.1.2 dev: true - /jest-watcher/29.1.2: + /jest-watcher@29.1.2: resolution: {integrity: sha512-6JUIUKVdAvcxC6bM8/dMgqY2N4lbT+jZVsxh0hCJRbwkIEnbr/aPjMQ28fNDI5lB51Klh00MWZZeVf27KBUj5w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -2759,7 +2767,7 @@ packages: string-length: 4.0.2 dev: true - /jest-worker/29.1.2: + /jest-worker@29.1.2: resolution: {integrity: sha512-AdTZJxKjTSPHbXT/AIOjQVmoFx0LHFcVabWu0sxI7PAy7rFf8c0upyvgBKgguVXdM4vY74JdwkyD4hSmpTW8jA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -2769,7 +2777,7 @@ packages: supports-color: 8.1.1 dev: true - /jest/29.1.2_@types+node@14.14.20: + /jest@29.1.2(@types/node@14.14.20): resolution: {integrity: sha512-5wEIPpCezgORnqf+rCaYD1SK+mNN7NsstWzIsuvsnrhR/hSxXWd82oI7DkrbJ+XTD28/eG8SmxdGvukrGGK6Tw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -2782,18 +2790,18 @@ packages: '@jest/core': 29.1.2 '@jest/types': 29.1.2 import-local: 3.1.0 - jest-cli: 29.1.2_@types+node@14.14.20 + jest-cli: 29.1.2(@types/node@14.14.20) transitivePeerDependencies: - '@types/node' - supports-color - ts-node dev: true - /js-tokens/4.0.0: + /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} dev: true - /js-yaml/3.14.1: + /js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true dependencies: @@ -2801,29 +2809,29 @@ packages: esprima: 4.0.1 dev: true - /jsesc/2.5.2: + /jsesc@2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} hasBin: true dev: true - /json-parse-even-better-errors/2.3.1: + /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} dev: true - /json-schema-traverse/0.4.1: + /json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} dev: true - /json-schema-traverse/1.0.0: + /json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} dev: true - /json-stable-stringify-without-jsonify/1.0.1: + /json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=} dev: true - /json5/2.1.3: + /json5@2.1.3: resolution: {integrity: sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==} engines: {node: '>=6'} hasBin: true @@ -2831,13 +2839,13 @@ packages: minimist: 1.2.5 dev: true - /json5/2.2.1: + /json5@2.2.1: resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==} engines: {node: '>=6'} hasBin: true dev: true - /jsx-ast-utils/3.2.0: + /jsx-ast-utils@3.2.0: resolution: {integrity: sha512-EIsmt3O3ljsU6sot/J4E1zDRxfBNrhjyf/OKjlydwgEimQuznlM4Wv7U+ueONJMyEn1WRE0K8dhi3dVAXYT24Q==} engines: {node: '>=4.0'} dependencies: @@ -2845,17 +2853,17 @@ packages: object.assign: 4.1.2 dev: true - /kleur/3.0.3: + /kleur@3.0.3: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} dev: true - /leven/3.1.0: + /leven@3.1.0: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} dev: true - /levn/0.4.1: + /levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} dependencies: @@ -2863,57 +2871,57 @@ packages: type-check: 0.4.0 dev: true - /lines-and-columns/1.2.4: + /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} dev: true - /locate-path/5.0.0: + /locate-path@5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} dependencies: p-locate: 4.1.0 dev: true - /lodash.memoize/4.1.2: + /lodash.memoize@4.1.2: resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} dev: true - /lodash/4.17.21: + /lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} dev: true - /loose-envify/1.4.0: + /loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true dependencies: js-tokens: 4.0.0 dev: true - /lru-cache/6.0.0: + /lru-cache@6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} dependencies: yallist: 4.0.0 dev: true - /make-dir/3.1.0: + /make-dir@3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} dependencies: semver: 6.3.0 dev: true - /make-error/1.3.6: + /make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} dev: true - /makeerror/1.0.12: + /makeerror@1.0.12: resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} dependencies: tmpl: 1.0.5 dev: true - /merge-anything/5.0.2: + /merge-anything@5.0.2: resolution: {integrity: sha512-POPQBWkBC0vxdgzRJ2Mkj4+2NTKbvkHo93ih+jGDhNMLzIw+rYKjO7949hOQM2X7DxMHH1uoUkwWFLIzImw7gA==} engines: {node: '>=12.13'} dependencies: @@ -2921,16 +2929,16 @@ packages: ts-toolbelt: 9.6.0 dev: true - /merge-stream/2.0.0: + /merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} dev: true - /merge2/1.4.1: + /merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} dev: true - /micromatch/4.0.2: + /micromatch@4.0.2: resolution: {integrity: sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==} engines: {node: '>=8'} dependencies: @@ -2938,7 +2946,7 @@ packages: picomatch: 2.2.2 dev: true - /micromatch/4.0.5: + /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} dependencies: @@ -2946,74 +2954,74 @@ packages: picomatch: 2.3.1 dev: true - /mimic-fn/2.1.0: + /mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} dev: true - /minimatch/3.0.4: + /minimatch@3.0.4: resolution: {integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==} dependencies: brace-expansion: 1.1.11 dev: true - /minimist/1.2.5: + /minimist@1.2.5: resolution: {integrity: sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==} dev: true - /ms/2.1.2: + /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} dev: true - /nanoid/3.3.2: + /nanoid@3.3.2: resolution: {integrity: sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true dev: true - /natural-compare/1.4.0: + /natural-compare@1.4.0: resolution: {integrity: sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=} dev: true - /node-int64/0.4.0: + /node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} dev: true - /node-releases/2.0.2: + /node-releases@2.0.2: resolution: {integrity: sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==} dev: true - /normalize-path/3.0.0: + /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} dev: true - /normalize.css/8.0.1: + /normalize.css@8.0.1: resolution: {integrity: sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==} dev: true - /npm-run-path/4.0.1: + /npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} dependencies: path-key: 3.1.1 dev: true - /object-assign/4.1.1: + /object-assign@4.1.1: resolution: {integrity: sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=} engines: {node: '>=0.10.0'} dev: true - /object-inspect/1.9.0: + /object-inspect@1.9.0: resolution: {integrity: sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==} dev: true - /object-keys/1.1.1: + /object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} dev: true - /object.assign/4.1.2: + /object.assign@4.1.2: resolution: {integrity: sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==} engines: {node: '>= 0.4'} dependencies: @@ -3023,7 +3031,7 @@ packages: object-keys: 1.1.1 dev: true - /object.entries/1.1.3: + /object.entries@1.1.3: resolution: {integrity: sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg==} engines: {node: '>= 0.4'} dependencies: @@ -3033,7 +3041,7 @@ packages: has: 1.0.3 dev: true - /object.fromentries/2.0.4: + /object.fromentries@2.0.4: resolution: {integrity: sha512-EsFBshs5RUUpQEY1D4q/m59kMfz4YJvxuNCJcv/jWwOJr34EaVnG11ZrZa0UHB3wnzV1wx8m58T4hQL8IuNXlQ==} engines: {node: '>= 0.4'} dependencies: @@ -3043,7 +3051,7 @@ packages: has: 1.0.3 dev: true - /object.values/1.1.3: + /object.values@1.1.3: resolution: {integrity: sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw==} engines: {node: '>= 0.4'} dependencies: @@ -3053,20 +3061,20 @@ packages: has: 1.0.3 dev: true - /once/1.4.0: + /once@1.4.0: resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=} dependencies: wrappy: 1.0.2 dev: true - /onetime/5.1.2: + /onetime@5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} dependencies: mimic-fn: 2.1.0 dev: true - /optionator/0.9.1: + /optionator@0.9.1: resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} engines: {node: '>= 0.8.0'} dependencies: @@ -3078,40 +3086,40 @@ packages: word-wrap: 1.2.3 dev: true - /p-limit/2.3.0: + /p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} dependencies: p-try: 2.2.0 dev: true - /p-limit/3.1.0: + /p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} dependencies: yocto-queue: 0.1.0 dev: true - /p-locate/4.1.0: + /p-locate@4.1.0: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} dependencies: p-limit: 2.3.0 dev: true - /p-try/2.2.0: + /p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} dev: true - /parent-module/1.0.1: + /parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} dependencies: callsites: 3.1.0 dev: true - /parse-json/5.2.0: + /parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: @@ -3121,61 +3129,61 @@ packages: lines-and-columns: 1.2.4 dev: true - /path-exists/4.0.0: + /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} dev: true - /path-is-absolute/1.0.1: + /path-is-absolute@1.0.1: resolution: {integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18=} engines: {node: '>=0.10.0'} dev: true - /path-key/3.1.1: + /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} dev: true - /path-parse/1.0.6: + /path-parse@1.0.6: resolution: {integrity: sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==} dev: true - /path-parse/1.0.7: + /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} dev: true - /path-type/4.0.0: + /path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} dev: true - /picocolors/1.0.0: + /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} dev: true - /picomatch/2.2.2: + /picomatch@2.2.2: resolution: {integrity: sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==} engines: {node: '>=8.6'} dev: true - /picomatch/2.3.1: + /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} dev: true - /pirates/4.0.5: + /pirates@4.0.5: resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} engines: {node: '>= 6'} dev: true - /pkg-dir/4.2.0: + /pkg-dir@4.2.0: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} dependencies: find-up: 4.1.0 dev: true - /postcss/8.4.12: + /postcss@8.4.12: resolution: {integrity: sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==} engines: {node: ^10 || ^12 || >=14} dependencies: @@ -3184,12 +3192,12 @@ packages: source-map-js: 1.0.2 dev: true - /prelude-ls/1.2.1: + /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} dev: true - /pretty-format/26.6.2: + /pretty-format@26.6.2: resolution: {integrity: sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==} engines: {node: '>= 10'} dependencies: @@ -3199,7 +3207,7 @@ packages: react-is: 17.0.1 dev: true - /pretty-format/29.1.2: + /pretty-format@29.1.2: resolution: {integrity: sha512-CGJ6VVGXVRP2o2Dorl4mAwwvDWT25luIsYhkyVQW32E4nL+TgW939J7LlKT/npq5Cpq6j3s+sy+13yk7xYpBmg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -3208,12 +3216,12 @@ packages: react-is: 18.2.0 dev: true - /progress/2.0.3: + /progress@2.0.3: resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} engines: {node: '>=0.4.0'} dev: true - /prompts/2.4.2: + /prompts@2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} dependencies: @@ -3221,7 +3229,7 @@ packages: sisteransi: 1.0.5 dev: true - /prop-types/15.7.2: + /prop-types@15.7.2: resolution: {integrity: sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==} dependencies: loose-envify: 1.4.0 @@ -3229,28 +3237,28 @@ packages: react-is: 16.13.1 dev: true - /punycode/2.1.1: + /punycode@2.1.1: resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} engines: {node: '>=6'} dev: true - /queue-microtask/1.2.3: + /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: true - /react-is/16.13.1: + /react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} dev: true - /react-is/17.0.1: + /react-is@17.0.1: resolution: {integrity: sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA==} dev: true - /react-is/18.2.0: + /react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} dev: true - /regexp.prototype.flags/1.3.1: + /regexp.prototype.flags@1.3.1: resolution: {integrity: sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==} engines: {node: '>= 0.4'} dependencies: @@ -3258,44 +3266,44 @@ packages: define-properties: 1.1.3 dev: true - /regexpp/3.1.0: + /regexpp@3.1.0: resolution: {integrity: sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==} engines: {node: '>=8'} dev: true - /require-directory/2.1.1: + /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} dev: true - /require-from-string/2.0.2: + /require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} dev: true - /resolve-cwd/3.0.0: + /resolve-cwd@3.0.0: resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} engines: {node: '>=8'} dependencies: resolve-from: 5.0.0 dev: true - /resolve-from/4.0.0: + /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} dev: true - /resolve-from/5.0.0: + /resolve-from@5.0.0: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} dev: true - /resolve.exports/1.1.0: + /resolve.exports@1.1.0: resolution: {integrity: sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==} engines: {node: '>=10'} dev: true - /resolve/1.22.0: + /resolve@1.22.0: resolution: {integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==} hasBin: true dependencies: @@ -3304,26 +3312,26 @@ packages: supports-preserve-symlinks-flag: 1.0.0 dev: true - /resolve/2.0.0-next.3: + /resolve@2.0.0-next.3: resolution: {integrity: sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==} dependencies: is-core-module: 2.2.0 path-parse: 1.0.6 dev: true - /reusify/1.0.4: + /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} dev: true - /rimraf/3.0.2: + /rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true dependencies: glob: 7.1.6 dev: true - /rollup/2.70.1: + /rollup@2.70.1: resolution: {integrity: sha512-CRYsI5EuzLbXdxC6RnYhOuRdtz4bhejPMSWjsFLfVM/7w/85n2szZv6yExqUXsBdz5KT8eoubeyDUDjhLHEslA==} engines: {node: '>=10.0.0'} hasBin: true @@ -3331,22 +3339,22 @@ packages: fsevents: 2.3.2 dev: true - /run-parallel/1.2.0: + /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 dev: true - /safe-buffer/5.1.2: + /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} dev: true - /semver/6.3.0: + /semver@6.3.0: resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} hasBin: true dev: true - /semver/7.3.5: + /semver@7.3.5: resolution: {integrity: sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==} engines: {node: '>=10'} hasBin: true @@ -3354,19 +3362,19 @@ packages: lru-cache: 6.0.0 dev: true - /shebang-command/2.0.0: + /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 dev: true - /shebang-regex/3.0.0: + /shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} dev: true - /side-channel/1.0.4: + /side-channel@1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: call-bind: 1.0.2 @@ -3374,20 +3382,20 @@ packages: object-inspect: 1.9.0 dev: true - /signal-exit/3.0.7: + /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: true - /sisteransi/1.0.5: + /sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} dev: true - /slash/3.0.0: + /slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} dev: true - /slice-ansi/4.0.0: + /slice-ansi@4.0.0: resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} engines: {node: '>=10'} dependencies: @@ -3396,21 +3404,19 @@ packages: is-fullwidth-code-point: 3.0.0 dev: true - /solid-app-router/0.3.2_solid-js@1.5.7: + /solid-app-router@0.3.2(solid-js@1.3.13): resolution: {integrity: sha512-zh6Ui87xy23JUxrH0z1xAROJPpiuxa3JRx9jP2qqjr07q2EKQOjn9BrmTFvQd/azQWzLjSMU+hN2fy6kLh5Bdw==} peerDependencies: solid-js: ^1.3.5 dependencies: - solid-js: 1.5.7 + solid-js: 1.3.13 dev: true - /solid-js/1.5.7: - resolution: {integrity: sha512-L1UuyMuZZARAwzXo5NZDhE6yxc14aqNbVOUoGzvlcxRZo1Cm4ExhPV0diEfwDyiKG/igqNNLkNurHkXiI5sVEg==} - dependencies: - csstype: 3.1.1 + /solid-js@1.3.13: + resolution: {integrity: sha512-1EBEIW9u2yqT5QNjFdvz/tMAoKsDdaRA2Jbgykd2Dt13Ia0D4mV+BFvPkOaseSyu7DsMKS23+ZZofV8BVKmpuQ==} dev: true - /solid-refresh/0.4.0_solid-js@1.5.7: + /solid-refresh@0.4.0(solid-js@1.3.13): resolution: {integrity: sha512-5XCUz845n/sHPzKK2i2G2EeV61tAmzv6SqzqhXcPaYhrgzVy7nKTQaBpKK8InKrriq9Z2JFF/mguIU00t/73xw==} peerDependencies: solid-js: ^1.3.0 @@ -3418,51 +3424,47 @@ packages: '@babel/generator': 7.17.7 '@babel/helper-module-imports': 7.16.7 '@babel/types': 7.17.0 - solid-js: 1.5.7 + solid-js: 1.3.13 dev: true - /source-map-js/1.0.2: + /source-map-js@1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} dev: true - /source-map-support/0.5.13: + /source-map-support@0.5.13: resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} dependencies: buffer-from: 1.1.2 source-map: 0.6.1 dev: true - /source-map/0.5.7: + /source-map@0.5.7: resolution: {integrity: sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=} engines: {node: '>=0.10.0'} dev: true - /source-map/0.6.1: + /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} dev: true - /sprintf-js/1.0.3: + /sprintf-js@1.0.3: resolution: {integrity: sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=} dev: true - /ssr-window/4.0.2: - resolution: {integrity: sha512-ISv/Ch+ig7SOtw7G2+qkwfVASzazUnvlDTwypdLoPoySv+6MqlOV10VwPSE6EWkGjhW50lUmghPmpYZXMu/+AQ==} - dev: false - - /stack-utils/2.0.5: + /stack-utils@2.0.5: resolution: {integrity: sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==} engines: {node: '>=10'} dependencies: escape-string-regexp: 2.0.0 dev: true - /string-hash/1.1.3: + /string-hash@1.1.3: resolution: {integrity: sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=} dev: true - /string-length/4.0.2: + /string-length@4.0.2: resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} engines: {node: '>=10'} dependencies: @@ -3470,7 +3472,7 @@ packages: strip-ansi: 6.0.1 dev: true - /string-width/4.2.2: + /string-width@4.2.2: resolution: {integrity: sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==} engines: {node: '>=8'} dependencies: @@ -3479,7 +3481,7 @@ packages: strip-ansi: 6.0.0 dev: true - /string-width/4.2.3: + /string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} dependencies: @@ -3488,7 +3490,7 @@ packages: strip-ansi: 6.0.1 dev: true - /string.prototype.matchall/4.0.4: + /string.prototype.matchall@4.0.4: resolution: {integrity: sha512-pknFIWVachNcyqRfaQSeu/FUfpvJTe4uskUSZ9Wc1RijsPuzbZ8TyYT8WCNnntCjUEqQ3vUHMAfVj2+wLAisPQ==} dependencies: call-bind: 1.0.2 @@ -3500,71 +3502,71 @@ packages: side-channel: 1.0.4 dev: true - /string.prototype.trimend/1.0.4: + /string.prototype.trimend@1.0.4: resolution: {integrity: sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==} dependencies: call-bind: 1.0.2 define-properties: 1.1.3 dev: true - /string.prototype.trimstart/1.0.4: + /string.prototype.trimstart@1.0.4: resolution: {integrity: sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==} dependencies: call-bind: 1.0.2 define-properties: 1.1.3 dev: true - /strip-ansi/6.0.0: + /strip-ansi@6.0.0: resolution: {integrity: sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==} engines: {node: '>=8'} dependencies: ansi-regex: 5.0.0 dev: true - /strip-ansi/6.0.1: + /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 dev: true - /strip-bom/4.0.0: + /strip-bom@4.0.0: resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} engines: {node: '>=8'} dev: true - /strip-final-newline/2.0.0: + /strip-final-newline@2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} dev: true - /strip-json-comments/3.1.1: + /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} dev: true - /supports-color/5.5.0: + /supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} dependencies: has-flag: 3.0.0 dev: true - /supports-color/7.2.0: + /supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} dependencies: has-flag: 4.0.0 dev: true - /supports-color/8.1.1: + /supports-color@8.1.1: resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} engines: {node: '>=10'} dependencies: has-flag: 4.0.0 dev: true - /supports-hyperlinks/2.3.0: + /supports-hyperlinks@2.3.0: resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} engines: {node: '>=8'} dependencies: @@ -3572,21 +3574,12 @@ packages: supports-color: 7.2.0 dev: true - /supports-preserve-symlinks-flag/1.0.0: + /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} dev: true - /swiper/8.4.4: - resolution: {integrity: sha512-jA/8BfOZwT8PqPSnMX0TENZYitXEhNa7ZSNj1Diqh5LZyUJoBQaZcqAiPQ/PIg1+IPaRn/V8ZYVb0nxHMh51yw==} - engines: {node: '>= 4.7.0'} - requiresBuild: true - dependencies: - dom7: 4.0.4 - ssr-window: 4.0.2 - dev: false - - /table/6.0.7: + /table@6.0.7: resolution: {integrity: sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==} engines: {node: '>=10.0.0'} dependencies: @@ -3596,7 +3589,7 @@ packages: string-width: 4.2.2 dev: true - /terminal-link/2.1.1: + /terminal-link@2.1.1: resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} engines: {node: '>=8'} dependencies: @@ -3604,7 +3597,7 @@ packages: supports-hyperlinks: 2.3.0 dev: true - /test-exclude/6.0.0: + /test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} dependencies: @@ -3613,27 +3606,27 @@ packages: minimatch: 3.0.4 dev: true - /text-table/0.2.0: + /text-table@0.2.0: resolution: {integrity: sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=} dev: true - /tmpl/1.0.5: + /tmpl@1.0.5: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} dev: true - /to-fast-properties/2.0.0: + /to-fast-properties@2.0.0: resolution: {integrity: sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=} engines: {node: '>=4'} dev: true - /to-regex-range/5.0.1: + /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 dev: true - /ts-jest/29.0.3_u3tawnhld4dxccrvbviil55jbq: + /ts-jest@29.0.3(@babel/core@7.17.8)(jest@29.1.2)(typescript@4.6.3): resolution: {integrity: sha512-Ibygvmuyq1qp/z3yTh9QTwVVAbFdDy/+4BtIQR2sp6baF2SJU/8CKK/hhnGIDY2L90Az2jIqTwZPnN2p+BweiQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -3654,9 +3647,10 @@ packages: esbuild: optional: true dependencies: + '@babel/core': 7.17.8 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.1.2_@types+node@14.14.20 + jest: 29.1.2(@types/node@14.14.20) jest-util: 29.1.2 json5: 2.2.1 lodash.memoize: 4.1.2 @@ -3666,15 +3660,15 @@ packages: yargs-parser: 21.1.1 dev: true - /ts-toolbelt/9.6.0: + /ts-toolbelt@9.6.0: resolution: {integrity: sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==} dev: true - /tslib/1.14.1: + /tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true - /tsutils/3.21.0_typescript@4.6.3: + /tsutils@3.21.0(typescript@4.6.3): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: @@ -3684,40 +3678,40 @@ packages: typescript: 4.6.3 dev: true - /type-check/0.4.0: + /type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.2.1 dev: true - /type-detect/4.0.8: + /type-detect@4.0.8: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} dev: true - /type-fest/0.20.2: + /type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} dev: true - /type-fest/0.21.3: + /type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} dev: true - /type-fest/0.8.1: + /type-fest@0.8.1: resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} engines: {node: '>=8'} dev: true - /typescript/4.6.3: + /typescript@4.6.3: resolution: {integrity: sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==} engines: {node: '>=4.2.0'} hasBin: true dev: true - /unbox-primitive/1.0.1: + /unbox-primitive@1.0.1: resolution: {integrity: sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==} dependencies: function-bind: 1.1.1 @@ -3726,17 +3720,17 @@ packages: which-boxed-primitive: 1.0.2 dev: true - /uri-js/4.4.1: + /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.1.1 dev: true - /v8-compile-cache/2.3.0: + /v8-compile-cache@2.3.0: resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} dev: true - /v8-to-istanbul/9.0.1: + /v8-to-istanbul@9.0.1: resolution: {integrity: sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==} engines: {node: '>=10.12.0'} dependencies: @@ -3745,15 +3739,15 @@ packages: convert-source-map: 1.7.0 dev: true - /vite-plugin-solid/2.2.6: + /vite-plugin-solid@2.2.6: resolution: {integrity: sha512-J1RnmqkZZJSNYDW7vZj0giKKHLWGr9tS/gxR70WDSTYfhyXrgukbZdIfSEFbtrsg8ZiQ2t2zXcvkWoeefenqKw==} dependencies: '@babel/core': 7.17.8 - '@babel/preset-typescript': 7.16.7_@babel+core@7.17.8 - babel-preset-solid: 1.3.13_@babel+core@7.17.8 + '@babel/preset-typescript': 7.16.7(@babel/core@7.17.8) + babel-preset-solid: 1.3.13(@babel/core@7.17.8) merge-anything: 5.0.2 - solid-js: 1.5.7 - solid-refresh: 0.4.0_solid-js@1.5.7 + solid-js: 1.3.13 + solid-refresh: 0.4.0(solid-js@1.3.13) vite: 2.9.0 transitivePeerDependencies: - less @@ -3762,7 +3756,7 @@ packages: - supports-color dev: true - /vite/2.9.0: + /vite@2.9.0: resolution: {integrity: sha512-5NAnNqzPmZzJvrswZGeTS2JHrBGIzIWJA2hBTTMYuoBVEMh0xwE0b5yyIXFxf7F07hrK4ugX2LJ7q6t7iIbd4Q==} engines: {node: '>=12.2.0'} hasBin: true @@ -3786,13 +3780,13 @@ packages: fsevents: 2.3.2 dev: true - /walker/1.0.8: + /walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} dependencies: makeerror: 1.0.12 dev: true - /which-boxed-primitive/1.0.2: + /which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} dependencies: is-bigint: 1.0.1 @@ -3802,7 +3796,7 @@ packages: is-symbol: 1.0.3 dev: true - /which/2.0.2: + /which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} hasBin: true @@ -3810,12 +3804,12 @@ packages: isexe: 2.0.0 dev: true - /word-wrap/1.2.3: + /word-wrap@1.2.3: resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} engines: {node: '>=0.10.0'} dev: true - /wrap-ansi/7.0.0: + /wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} dependencies: @@ -3824,11 +3818,11 @@ packages: strip-ansi: 6.0.1 dev: true - /wrappy/1.0.2: + /wrappy@1.0.2: resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=} dev: true - /write-file-atomic/4.0.2: + /write-file-atomic@4.0.2: resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} dependencies: @@ -3836,26 +3830,26 @@ packages: signal-exit: 3.0.7 dev: true - /y18n/5.0.8: + /y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} dev: true - /yallist/4.0.0: + /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} dev: true - /yaml/1.10.0: + /yaml@1.10.0: resolution: {integrity: sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==} engines: {node: '>= 6'} dev: false - /yargs-parser/21.1.1: + /yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} dev: true - /yargs/17.6.0: + /yargs@17.6.0: resolution: {integrity: sha512-8H/wTDqlSwoSnScvV2N/JHfLWOKuh5MVla9hqLjK3nsfyy6Y4kDSYSvkU5YCUEPOSnRXfIyx3Sq+B/IWudTo4g==} engines: {node: '>=12'} dependencies: @@ -3868,7 +3862,7 @@ packages: yargs-parser: 21.1.1 dev: true - /yocto-queue/0.1.0: + /yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} dev: true diff --git a/public/img/wall1.webp b/public/img/wall1.webp deleted file mode 100644 index 1ceef0bd66e48ab3b9caa35e7429fecc46afd5b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 208524 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�^772=LMKg%Rrzdx0@lEtC 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≻XjA&IH=?xl(SH7Bmz5`jYo7=X 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 W={z9n`*SF0Filv$Z~l~g0000>$Uhwb diff --git a/src/API/CargaHorarios.ts b/src/API/CargaHorarios.ts deleted file mode 100644 index e434898..0000000 --- a/src/API/CargaHorarios.ts +++ /dev/null @@ -1,186 +0,0 @@ -/* -// HTTP POST -// Url: /horarios - -// El frontend envia una lista de cursos, de los cuales recuperar sus datos -{ - cursos: Array // Un array de id_curso -} - -// Backend responde con los cursos especificados y sus horarios -[ - // Cada objeto dentro del array sera un Curso - { - id_curso: number, - id_datos_carrera: any, // Opcional - nombre_curso: string, - curso_anio: number | string, - abreviado: string, - // Un array de objetos, estos objetos son de la entidad Laboratorio - laboratorios: [ - { - id_laboratorio: number, - id_curso: number, - grupo: string, - docente: string, - // Array de objetos de la entidad Horario - horario: [ - { - id_horario: number, - dia: string, - hora_inicio: string, - hora_fin: string, - } - ] - } - ] - } -] - */ - - -import { SERVER_PATH } from "../Store"; - -export type Horario = { - id_horario: number, - id_laboratorio: number, - dia: string, - hora_inicio: string, - hora_fin: string, -} -export type Laboratorio = { - id_laboratorio: number, - id_curso: number, - grupo: string, - docente: string, - // Array de objetos de la entidad Horario - horarios: Array -} -export type CursoCompleto = { - id_curso: number, - nombre_curso: string, - curso_anio: number | string, - abreviado: string, - // Un array de objetos, estos objetos son de la entidad Laboratorio - laboratorios: Array -} - -type InputData = { - cursos: Array -} -export type ListaCursosCompleto = Array - -type GetHorariosFn = (_: InputData) => Promise - -export const getHorarios: GetHorariosFn = async(data) => { - const response = await fetch(`${SERVER_PATH}/horarios`, { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify(data), - }); - return await response.json(); -}; - -export const getHorariosMock: GetHorariosFn = async(_) => { - const c1: CursoCompleto = { - id_curso: 0, - nombre_curso: "Gestion de Sistemas y Tecnologias de Informacion", - curso_anio: "5to", - abreviado: "GSTI", - laboratorios: [ - { - id_laboratorio: 0, - id_curso: 0, - grupo: "A", - docente: "Luis Rocha", - horarios: [ - { - id_horario: 0, - id_laboratorio: 0, - hora_inicio: "1830", - hora_fin: "1920", - dia: "Jueves", - }, - { - id_horario: 1, - id_laboratorio: 0, - hora_inicio: "1550", - hora_fin: "1740", - dia: "Viernes", - }, - ], - }, - { - id_laboratorio: 1, - id_curso: 0, - grupo: "B", - docente: "Luis Rocha", - horarios: [ - { - id_horario: 2, - id_laboratorio: 1, - hora_inicio: "0700", - hora_fin: "0850", - dia: "Lunes", - }, - { - id_horario: 3, - id_laboratorio: 1, - hora_inicio: "1400", - hora_fin: "1640", - dia: "Miercoles", - }, - { - id_horario: 6, - id_laboratorio: 1, - hora_inicio: "1400", - hora_fin: "1640", - dia: "Viernes", - }, - ], - }, - ], - }; - const c2: CursoCompleto = { - id_curso: 1, - nombre_curso: "Plataformas Emergentes", - curso_anio: "5to", - abreviado: "PE", - laboratorios: [ - { - id_laboratorio: 2, - id_curso: 1, - grupo: "A", - docente: "Diego Iquira", - horarios: [ - { - id_horario: 4, - id_laboratorio: 2, - hora_inicio: "0850", - hora_fin: "1040", - dia: "Jueves", - }, - ], - }, - { - id_laboratorio: 3, - id_curso: 1, - grupo: "B", - docente: "Diego Iquira", - horarios: [ - { - id_horario: 5, - id_laboratorio: 3, - hora_inicio: "1740", - hora_fin: "1920", - dia: "Martes", - }, - ], - }, - ], - }; - - return [c1, c2]; -}; diff --git a/src/API/ListaCursos.ts b/src/API/ListaCursos.ts deleted file mode 100644 index 9b154f6..0000000 --- a/src/API/ListaCursos.ts +++ /dev/null @@ -1,82 +0,0 @@ -/* -// HTTP GET -// Url: /cursos - -// El frontend pide una lista de la informacion de todos los cursos - -// Backend responde con una lista de todos los cursos -[ - { - id_curso: number, - id_datos_carrera: any, // Opcional - nombre_curso: string, - curso_anio: number | string, // Numero o string, dependiendo de como este en DB - abreviado: string, - } -] -*/ - -import { SERVER_PATH } from "../Store"; - -export type InfoCurso = { - id_curso: number, - nombre_curso: string, - curso_anio: string, - abreviado: string, -} -// `"1er"`, `"2do"`, etc -type NombreAnio = string -export type RespuestaListaCursos = {[key: NombreAnio]: Array} -type ListaCursosFn = () => Promise - -export const getAllListaCursos: ListaCursosFn = async() => { - const response = await fetch(`${SERVER_PATH}/cursos`); - const data = await response.json() as Array; - - const resultMap: RespuestaListaCursos = {}; - data.forEach((curso) => { - if (resultMap[curso.curso_anio] === undefined) { - resultMap[curso.curso_anio] = []; - } - - resultMap[curso.curso_anio]?.push(curso); - }); - - return resultMap; -}; - -export const getAllListaCursosMock: ListaCursosFn = async() => { - const arr5to: Array = [ - { - id_curso: 0, - nombre_curso: "Gestion de Sistemas y Tecnologias de Informacion", - curso_anio: "5to", - abreviado: "GSTI", - }, - { - id_curso: 1, - nombre_curso: "Practicas Pre Profesionales", - curso_anio: "5to", - abreviado: "PPP", - }, - ]; - const arr4to: Array = [ - { - id_curso: 2, - nombre_curso: "Diseño y Arquitectura de Software", - curso_anio: "4to", - abreviado: "DAS", - }, - { - id_curso: 3, - nombre_curso: "Gestion de Proyectos de Software", - curso_anio: "4to", - abreviado: "GPS", - }, - ]; - - return { - "5to": arr5to, - "4to": arr4to, - }; -}; diff --git a/src/API/Login.ts b/src/API/Login.ts deleted file mode 100644 index 73fa550..0000000 --- a/src/API/Login.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { SERVER_PATH } from "../Store"; - -type IdLaboratorio = number; -type LoginData = {correo_usuario: string}; -type LoginResponse = Promise<{matriculas: Array} | null>; -export type LoginFunction = (data: LoginData) => LoginResponse; - -// Mock for a login without courses -export const mockLoginEmpty: LoginFunction = async(data) => ({matriculas: []}); - -// Mock for a login with courses -export const mockLoginNotEmpty: LoginFunction = async(_) => ({ - matriculas: [0, 1, 2, 3], -}); - -// Error login mock -export const mockLoginWithError: LoginFunction = async(_) => null; - -// Standard login -export const loginFn: LoginFunction = async(data) => { - const petition = await fetch(`${SERVER_PATH}/login`, { - method: "POST", - headers: { - "Accept": "application/json", - "Content-Type": "application/json", - }, - body: JSON.stringify({ - correo_usuario: data.correo_usuario, - }), - }); - if (!petition.ok) return null; - return await petition.json() as {matriculas: Array}; -}; - diff --git a/src/API/VerMatricula.ts b/src/API/VerMatricula.ts deleted file mode 100644 index 8c1edf9..0000000 --- a/src/API/VerMatricula.ts +++ /dev/null @@ -1,36 +0,0 @@ -import {SERVER_PATH} from "../Store"; - -type Input = { - matriculas: Array -} -export type InfoMatricula = { - nombre_curso: string, - grupo: string, - docente: string, -} -type VerMatriculaFn = (_: Input) => Promise>; - -export const getMatricula: VerMatriculaFn = async(input) => { - const response = await fetch(`${SERVER_PATH}/recuperacion`, { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify(input), - }); - return await response.json(); -}; - -export const getMatriculaMock: VerMatriculaFn = async(_) => [ - { - nombre_curso: "Plataformas Emergentes", - grupo: "LA", - docente: "Diego Iquira", - }, - { - nombre_curso: "Gestión de Proyectos de Software", - grupo: "LB", - docente: "Luis Rocha", - }, -]; - diff --git a/src/App.tsx b/src/App.tsx index 6393f89..d96f9da 100755 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,21 +1,16 @@ -import { Sistemas } from "./Views/pc/Sistemas"; +import { Main } from "./Views/Main"; import { Index } from "./Views/Index"; import { Editor } from "./Views/Editor"; import { useRouter } from "./Router"; import { Switch, Match, Show } from "solid-js"; import { Wallpaper } from "./Wallpaper"; -import { SistemasMovil } from "./Views/SistemasMovil"; -import { SeleccionCursos } from "./Views/SeleccionCursos"; -import { VerMatricula } from "./Views/VerMatricula"; -import {SeleccionCursos as SeleccionCursosPC} from "./Views/pc/SeleccionCursos"; -import { VerMatricula as VerMatriculaPC } from "./Views/pc/VerMatricula"; function App() { const route = useRouter(); const isMobile = screen.width <= 500; return ( -
+
@@ -26,24 +21,8 @@ function App() { - - - - - - - - - - - - - - - - - - + +
diff --git a/src/Views/pc/Sistemas/ContenedorHorarios/BotonIcono.tsx b/src/ContenedorHorarios/BotonIcono.tsx similarity index 87% rename from src/Views/pc/Sistemas/ContenedorHorarios/BotonIcono.tsx rename to src/ContenedorHorarios/BotonIcono.tsx index 273eeae..e416db0 100644 --- a/src/Views/pc/Sistemas/ContenedorHorarios/BotonIcono.tsx +++ b/src/ContenedorHorarios/BotonIcono.tsx @@ -1,5 +1,5 @@ -import { css } from "aphrodite"; -import {estilosGlobales} from "../../../../Estilos"; +import { css } from "aphrodite" +import { estilosGlobales } from "../Estilos" interface BotonMaxMinProps { icono: string, @@ -21,5 +21,5 @@ export function BotonIcono(props: BotonMaxMinProps) { >
- ); + ) } diff --git a/src/Views/pc/Sistemas/ContenedorHorarios/BotonMaxMin.tsx b/src/ContenedorHorarios/BotonMaxMin.tsx similarity index 78% rename from src/Views/pc/Sistemas/ContenedorHorarios/BotonMaxMin.tsx rename to src/ContenedorHorarios/BotonMaxMin.tsx index 25d4b0f..9da4f8a 100644 --- a/src/Views/pc/Sistemas/ContenedorHorarios/BotonMaxMin.tsx +++ b/src/ContenedorHorarios/BotonMaxMin.tsx @@ -1,6 +1,6 @@ -import { css } from "aphrodite"; -import { estilosGlobales } from "../../../../Estilos"; -import {EstadoLayout} from "../ContenedorHorarios"; +import { css } from "aphrodite" +import { estilosGlobales } from "../Estilos" +import { EstadoLayout } from "./ContenedorHorarios" interface BotonMaxMinProps { fnMaximizar: () => void, @@ -10,19 +10,19 @@ interface BotonMaxMinProps { } export function BotonMaxMin(props: BotonMaxMinProps) { - const horariosMax = () => props.estadoActualLayout() === props.estadoLayoutMax; + const horariosMax = () => props.estadoActualLayout() === props.estadoLayoutMax - const tituloBoton = () => (horariosMax() ? "Minimizar" : "Maximizar"); - const iconoBoton = () => (horariosMax() ? "ph-arrows-in" : "ph-arrows-out"); + const tituloBoton = () => (horariosMax() ? "Minimizar" : "Maximizar") + const iconoBoton = () => (horariosMax() ? "ph-arrows-in" : "ph-arrows-out") const funcionBoton = () => { - const estaMaximizado = horariosMax(); + const estaMaximizado = horariosMax() if (estaMaximizado) { - props.fnMinimizar(); + props.fnMinimizar() } else { - props.fnMaximizar(); + props.fnMaximizar() } - }; + } return ( - ); + ) } diff --git a/src/ContenedorHorarios/ContenedorHorarios.tsx b/src/ContenedorHorarios/ContenedorHorarios.tsx new file mode 100755 index 0000000..01974d4 --- /dev/null +++ b/src/ContenedorHorarios/ContenedorHorarios.tsx @@ -0,0 +1,137 @@ +import YAML from "yaml" +import { css, StyleSheet } from "aphrodite" +import { MiHorario } from "./MiHorario" +import { Horarios } from "./Horarios" +import { + Anios, + Cursos, + DatosHorario, + DatosHorarioRaw, + DatosGrupo, +} from "../types/DatosHorario" +import { estilosGlobales } from "../Estilos" +import { batch, createEffect, createMemo, createSignal, Show } from "solid-js" +import { useListaCursos } from "./useListaCursos" + +const datosPromise = (async() => { + const file = await fetch("/horarios/2022_2_fps_ingenieriadesistemas.yaml") + const text = await file.text() + const datosRaw = YAML.parse(text) as DatosHorarioRaw + + // Agregar los campos faltantes a DatosHorarioRaw para que sea DatosHorario + const datos: DatosHorario = { + ...datosRaw, + años: {}, + } + + const anios: Anios = {} + for (const [nombreAnio, anio] of Object.entries(datosRaw.años)) { + const anioData: Cursos = {} + for (const [nombreCurso, curso] of Object.entries(anio)) { + + const gruposTeoria: { [k: string]: DatosGrupo } = {} + for (const [key, data] of Object.entries(curso.Teoria)) { + gruposTeoria[key] = Object.assign({seleccionado: false}, data) + } + + const gruposLab: { [k: string]: DatosGrupo } = {} + for (const [key, data] of Object.entries(curso.Laboratorio ?? {})) { + gruposLab[key] = Object.assign({seleccionado: false}, data) + } + + anioData[nombreCurso] = { + ...curso, + oculto: false, + Teoria: gruposTeoria, + Laboratorio: gruposLab, + } + } + + anios[nombreAnio] = anioData + } + + datos.años = anios + return datos +})() + +const ElemCargando = () => ( +
+ Recuperando horarios... +
+) + +export type EstadoLayout = "MaxPersonal" | "Normal" | "MaxHorarios"; + +const { + listaCursos: cursosUsuario, + setListaCursos: setCursosUsuarios, + agregarCursoALista: agregarCursoUsuario, +} = useListaCursos() + +export function ContenedorHorarios() { + const [datosCargados, setDatosCargados] = createSignal(false) + const [datos, setDatos] = createSignal(null) + const [estadoLayout, setEstadoLayout] = ( + createSignal(localStorage.getItem("estadoLayout") as EstadoLayout || "Normal") + ) + + const e = createMemo(() => { + let templateColumns = "" + switch (estadoLayout()) { + case "MaxHorarios": { + templateColumns = "0 auto" + break + } + case "MaxPersonal": { + templateColumns = "auto 0m" + break + } + case "Normal": { + templateColumns = "50% 50%" + } + } + + localStorage.setItem("estadoLayout", estadoLayout()) + + return StyleSheet.create({ + contenedor: { + display: "grid", + gridTemplateColumns: templateColumns, + }, + }) + }) + + createEffect(async() => { + const datos = await datosPromise + batch(() => { + setDatos(datos) + setDatosCargados(true) + }) + }) + + return ( +
+
+ +
+
+ + agregarCursoUsuario(JSON.parse(JSON.stringify(c)))} + listaCursosUsuario={cursosUsuario} + setCursosUsuarios={setCursosUsuarios} + /> + +
+
+ ) +} diff --git a/src/Views/pc/Sistemas/ContenedorHorarios/CursosElem.tsx b/src/ContenedorHorarios/CursosElem.tsx similarity index 73% rename from src/Views/pc/Sistemas/ContenedorHorarios/CursosElem.tsx rename to src/ContenedorHorarios/CursosElem.tsx index d9ca607..46f12ee 100755 --- a/src/Views/pc/Sistemas/ContenedorHorarios/CursosElem.tsx +++ b/src/ContenedorHorarios/CursosElem.tsx @@ -1,10 +1,9 @@ -import { Cursos, DatosGrupo, ListaCursosUsuario, Curso } from "../../../../types/DatosHorario"; -import { createMemo, For } from "solid-js"; -import { produce, SetStoreFunction } from "solid-js/store"; -import { StyleSheet, css } from "aphrodite"; -import { estilosGlobales } from "../../../../Estilos"; -import { TablaObserver } from "./TablaObserver"; -import { setGruposSeleccionados } from "../../../../Store"; +import { Cursos, DatosGrupo, ListaCursosUsuario, Curso } from "../types/DatosHorario" +import { createMemo, For } from "solid-js" +import { produce, SetStoreFunction } from "solid-js/store" +import { StyleSheet, css } from "aphrodite" +import { estilosGlobales } from "../Estilos" +import { TablaObserver } from "./TablaObserver" const e = StyleSheet.create({ inline: { @@ -34,20 +33,21 @@ const e = StyleSheet.create({ border: "none", color: "var(--color)", }, -}); +}) const claseCursoNoAgregado = css( e.contenedorCurso, estilosGlobales.contenedor, -); +) -const claseCursoOculto = css(e.cursoOculto); +const claseCursoOculto = css(e.cursoOculto) interface Props { version: number, dataAnio: Cursos, anioActual: () => string, fnAgregarCurso: (c: Curso) => void, + listaCursosUsuario: ListaCursosUsuario, esCursoMiHorario: boolean, setCursosUsuarios: SetStoreFunction, tablaObserver: TablaObserver, @@ -64,7 +64,7 @@ interface PropsIndicadorGrupo { } function IndicadorGrupo(props: PropsIndicadorGrupo) { - const id = `${props.idParcial}_${props.esLab ? "L" : "T"}_${props.nombre}`; + const id = `${props.idParcial}_${props.esLab ? "L" : "T"}_${props.nombre}` return ( {props.esLab ? "L" : ""}{props.nombre} - ); + ) } const agruparProfesores = ( @@ -84,21 +84,31 @@ const agruparProfesores = ( esLab: boolean, setCursosUsuarios: FnSetCursosUsuarios, ) => { - const profesores: { [k: string]: [string, () => void][] } = {}; + const profesores: { [k: string]: [string, () => void][] } = {} for (const [grupo, datosGrupo] of Object.entries(datos)) { - const nombreProfesor = datosGrupo.Docente; + const nombreProfesor = datosGrupo.Docente if (!profesores[nombreProfesor]) { - profesores[nombreProfesor] = []; + profesores[nombreProfesor] = [] } profesores[nombreProfesor].push([ grupo, () => { - setGruposSeleccionados(datosGrupo.id_laboratorio, (x) => !x); + setCursosUsuarios("cursos", Number(indiceCurso), "Teoria", produce<{ [p: string]: DatosGrupo }>((x) => { + const grupoActualSeleccionado = x[grupo].seleccionado + + if (grupoActualSeleccionado) { + x[grupo].seleccionado = false + } else { + for (const xKey in x) { + x[xKey].seleccionado = xKey === grupo + } + } + })) }, - ]); + ]) } - return profesores; -}; + return profesores +} function CursoE( indiceCurso: string, @@ -107,27 +117,42 @@ function CursoE( claseCursoAgregado: string, props: Props, ) { - const idCurso = `${props.version}_${anio()}_${datosCurso.abreviado}`; + const idCurso = `${props.version}_${anio()}_${datosCurso.abreviado}` + + const cursoAgregadoMemo = createMemo( + () => props.listaCursosUsuario.cursos.find((x) => x.nombre === datosCurso.nombre && !x.oculto) !== undefined, + undefined, + { + equals: + (x, y) => x === y, + }, + ) + + const tituloMemo = createMemo(() => (cursoAgregadoMemo() + ? "Remover de mi horario" + : "Agregar a mi horario")) const claseMemo = createMemo(() => { if (props.esCursoMiHorario && datosCurso.oculto) { - return claseCursoOculto; + return claseCursoOculto } - return claseCursoNoAgregado; - }); + return cursoAgregadoMemo() + ? claseCursoAgregado + : claseCursoNoAgregado + }) const profesoresTeoria = createMemo(() => agruparProfesores( datosCurso.Teoria, Number(indiceCurso), false, props.setCursosUsuarios, - )); + )) const profesoresLab = createMemo(() => agruparProfesores( datosCurso.Laboratorio ?? {}, Number(indiceCurso), true, props.setCursosUsuarios, - )); + )) const IndicadorGrupos = (profesor: string, grupos: [string, () => void][], esLab: boolean) => ( @@ -147,7 +172,7 @@ function CursoE( } - ); + ) return (
@@ -172,18 +197,24 @@ function CursoE( +
- ); + ) } export function CursosElem(props: Props) { - const anio = () => props.anioActual().substring(0, props.anioActual().indexOf(" ")); + const anio = () => props.anioActual().substring(0, props.anioActual().indexOf(" ")) const claseCursoAgregado = css( e.contenedorCurso, estilosGlobales.contenedor, !props.esCursoMiHorario && estilosGlobales.contenedorCursorActivo, - ); + ) return ( <> @@ -191,5 +222,5 @@ export function CursosElem(props: Props) { {([indiceCurso, datosCurso]) => CursoE(indiceCurso, datosCurso, anio, claseCursoAgregado, props)} - ); + ) } diff --git a/src/ContenedorHorarios/Horarios.tsx b/src/ContenedorHorarios/Horarios.tsx new file mode 100755 index 0000000..84c36da --- /dev/null +++ b/src/ContenedorHorarios/Horarios.tsx @@ -0,0 +1,139 @@ +import { Curso, Cursos, DatosHorario, ListaCursosUsuario } from "../types/DatosHorario" +import { batch, createMemo, createSignal, For, Match, Switch, untrack } from "solid-js" +import {SetStoreFunction} from "solid-js/store" +import { css } from "aphrodite" +import { estilosGlobales } from "../Estilos" +import { Tabla } from "./Tabla" +import { CursosElem } from "./CursosElem" +import { EstadoLayout } from "./ContenedorHorarios" +import { BotonMaxMin } from "./BotonMaxMin" +import { useListaCursos } from "./useListaCursos" +import { TablaObserver } from "./TablaObserver" + +interface HorariosProps { + data: DatosHorario, + estadoLayout: EstadoLayout, + setEstadoLayout: (v: EstadoLayout) => EstadoLayout, + fnAgregarCurso: (c: Curso) => void, + listaCursosUsuario: ListaCursosUsuario, + setCursosUsuarios: SetStoreFunction +} + +const { + setListaCursos, + agregarCursoALista, + eliminarCursosDeLista, +} = useListaCursos() + +export function Horarios(props: HorariosProps) { + const [anioActual, setAnioActual] = createSignal("1er año") + + const tablaObserver = new TablaObserver() + + const elAnios = ( + + {([nombre]) => { + const clases = createMemo(() => { + const vAnio = anioActual() + return css( + estilosGlobales.contenedor, + estilosGlobales.inlineBlock, + estilosGlobales.contenedorCursor, + estilosGlobales.contenedorCursorSoft, + nombre === vAnio && estilosGlobales.contenedorCursorActivo, + ) + }) + + return ( + + ) + }} + + ) + + const dataTabla = createMemo(() => { + const anio = anioActual() + const obj: Cursos = {} + untrack(() => { + const cursos = props.data.años[anio] + batch(() => { + eliminarCursosDeLista() + + let i = 0 + for (const [, curso] of Object.entries(cursos)) { + // El curso devuelto por esta fun. es reactivo + obj[i] = agregarCursoALista(curso) + i += 1 + } + }) + }) + + return obj + }) + + const fnMaximizar = () => props.setEstadoLayout("MaxHorarios") + const fnMinimizar = () => props.setEstadoLayout("Normal") + const estadoActualLayout = () => props.estadoLayout + + return ( +
+ + +
+
+ Horarios disponibles +
+
+ {elAnios} + | + +
+
+ +
+
+ +
+
+ + {/* + + */} +
+ + + +
+ ) +} diff --git a/src/ContenedorHorarios/MiHorario.tsx b/src/ContenedorHorarios/MiHorario.tsx new file mode 100755 index 0000000..40511ca --- /dev/null +++ b/src/ContenedorHorarios/MiHorario.tsx @@ -0,0 +1,146 @@ +import { estilosGlobales } from "../Estilos" +import { StyleSheet, css } from "aphrodite" +import { Tabla } from "./Tabla" +import { EstadoLayout } from "./ContenedorHorarios" +import { Switch, Match, createMemo } from "solid-js" +import {SetStoreFunction} from "solid-js/store" +import { BotonMaxMin } from "./BotonMaxMin" +import { BotonIcono } from "./BotonIcono" +import { Curso, Cursos, ListaCursosUsuario } from "../types/DatosHorario" +import { CursosElem } from "./CursosElem" +import { TablaObserver } from "./TablaObserver" + +interface MiHorarioProps { + estadoLayout: EstadoLayout, + setEstadoLayout: (v: EstadoLayout) => EstadoLayout, + cursosUsuario: ListaCursosUsuario, + fnAgregarCurso: (c: Curso) => void, + setCursosUsuarios: SetStoreFunction +} + +const e = StyleSheet.create({ + horario: {}, + boton: { + textDecoration: "none", + // paddingRight: "0.5rem", + "::before": { + fontSize: "1rem", + // transform: "translateY(0.2rem)", + textDecoration: "none", + }, + }, +}) + +export function MiHorario(props: MiHorarioProps) { + const tablaObserver = new TablaObserver() + + const datosMiHorario = createMemo(() => { + const obj: Cursos = {} + props.cursosUsuario.cursos.forEach((x, i) => { + obj[i] = x + }) + return obj + }) + + const fnMaximizar = () => props.setEstadoLayout("MaxPersonal") + const fnMinimizar = () => props.setEstadoLayout("Normal") + const estadoActualLayout = () => props.estadoLayout + + /* TODO: En barra superior colocar todos los horarios. En barra inferior el horario + actual. + Al hacer click en un horario de la barra superior, llevarlo al inicio de la lista. + */ + return ( +
+ + + +
+
+ Mi horario +
+
+ +
+
+ Mi horario +
+ | + {/* + {}} + /> + {}} + /> + {}} + /> + {}} + /> + | + */} + +
+ +
+ +
+ + "Mi horario"} + dataAnio={datosMiHorario()} + fnAgregarCurso={props.fnAgregarCurso} + listaCursosUsuario={props.cursosUsuario} + esCursoMiHorario + setCursosUsuarios={props.setCursosUsuarios} + tablaObserver={tablaObserver} + /> +
+ + {/* + + */} +
+ + +
+ ) +} diff --git a/src/Views/pc/Sistemas/ContenedorHorarios/Tabla.tsx b/src/ContenedorHorarios/Tabla.tsx similarity index 61% rename from src/Views/pc/Sistemas/ContenedorHorarios/Tabla.tsx rename to src/ContenedorHorarios/Tabla.tsx index c310782..6b0df56 100755 --- a/src/Views/pc/Sistemas/ContenedorHorarios/Tabla.tsx +++ b/src/ContenedorHorarios/Tabla.tsx @@ -1,11 +1,11 @@ -import { StyleSheet, css } from "aphrodite"; -import { batch, createMemo, For } from "solid-js"; -import { produce, SetStoreFunction } from "solid-js/store"; -import {estilosGlobales} from "../../../../Estilos"; -import { Cursos, ListaCursosUsuario, DataProcesada, DatosGrupo } from "../../../../types/DatosHorario"; -import { Dia, dias, gruposSeleccionados, horas, setGruposSeleccionados } from "../../../../Store"; -import { FilaTabla } from "./Tabla/FilaTabla"; -import { TablaObserver } from "./TablaObserver"; +import { StyleSheet, css } from "aphrodite" +import { batch, createMemo, For } from "solid-js" +import { produce, SetStoreFunction } from "solid-js/store" +import { estilosGlobales } from "../Estilos" +import { Cursos, ListaCursosUsuario, DataProcesada, DatosGrupo } from "../types/DatosHorario" +import { Dia, dias, horas } from "../Store" +import { FilaTabla } from "./Tabla/FilaTabla" +import { TablaObserver } from "./TablaObserver" export const coloresBorde = Object.freeze([ "rgba(33,150,243,1)", @@ -13,22 +13,22 @@ export const coloresBorde = Object.freeze([ "rgba(236,64,122 ,1)", "rgba(29,233,182 ,1)", "rgba(244,67,54,1)", -]); +]) export const diaANum = (d: Dia) => { switch (d) { case "Lunes": - return 0; + return 0 case "Martes": - return 1; + return 1 case "Miercoles": - return 2; + return 2 case "Jueves": - return 3; + return 3 case "Viernes": - return 4; + return 4 } -}; +} const e = StyleSheet.create({ fila: { @@ -81,34 +81,34 @@ const e = StyleSheet.create({ celdaCursoTeoria: { fontWeight: "bold", }, -}); +}) type FnSetCursosUsuarios = SetStoreFunction; const procesarAnio = (data: Cursos, anio: string, version: number, setCursosUsuarios: FnSetCursosUsuarios) => { - const obj: DataProcesada = {}; + const obj: DataProcesada = {} for (const [indiceCurso, curso] of Object.entries(data)) { - if (curso.oculto) continue; + if (curso.oculto) continue - const nombreAbreviado = curso.abreviado; + const nombreAbreviado = curso.abreviado for (const [grupoStr, grupo] of Object.entries(curso.Teoria)) { for (const hora of grupo.Horas) { - const dia = hora.substring(0, 2); - const horas = hora.substring(2, 4); - const minutos = hora.substr(4); + const dia = hora.substring(0, 2) + const horas = hora.substring(2, 4) + const minutos = hora.substr(4) - const horaCompleta = `${horas}:${minutos}`; + const horaCompleta = `${horas}:${minutos}` - const id = `${version}_${anio}_${nombreAbreviado}_T_${grupoStr}`; + const id = `${version}_${anio}_${nombreAbreviado}_T_${grupoStr}` if (!(horaCompleta in obj)) { - obj[horaCompleta] = {}; + obj[horaCompleta] = {} } if (!(dia in obj[horaCompleta])) { - obj[horaCompleta][dia] = []; + obj[horaCompleta][dia] = [] } obj[horaCompleta][dia].push({ @@ -117,28 +117,38 @@ const procesarAnio = (data: Cursos, anio: string, version: number, setCursosUsua esLab: false, datosGrupo: grupo, fnSeleccionar: () => { + setCursosUsuarios("cursos", Number(indiceCurso), "Teoria", produce<{ [p: string]: DatosGrupo }>((x) => { + const grupoActualSeleccionado = x[grupoStr].seleccionado + if (grupoActualSeleccionado) { + x[grupoStr].seleccionado = false + } else { + for (const xKey in x) { + x[xKey].seleccionado = xKey === grupoStr + } + } + })) }, - }); + }) } } for (const [grupoStr, grupo] of Object.entries(curso.Laboratorio ?? {})) { for (const hora of grupo.Horas) { - const dia = hora.substring(0, 2); - const horas = hora.substring(2, 4); - const minutos = hora.substr(4); + const dia = hora.substring(0, 2) + const horas = hora.substring(2, 4) + const minutos = hora.substr(4) - const horaCompleta = `${horas}:${minutos}`; + const horaCompleta = `${horas}:${minutos}` - const id = `${version}_${anio}_${nombreAbreviado}_L_${grupoStr}`; + const id = `${version}_${anio}_${nombreAbreviado}_L_${grupoStr}` if (!(horaCompleta in obj)) { - obj[horaCompleta] = {}; + obj[horaCompleta] = {} } if (!(dia in obj[horaCompleta])) { - obj[horaCompleta][dia] = []; + obj[horaCompleta][dia] = [] } obj[horaCompleta][dia].push({ @@ -147,15 +157,30 @@ const procesarAnio = (data: Cursos, anio: string, version: number, setCursosUsua esLab: true, datosGrupo: grupo, fnSeleccionar: () => { - setGruposSeleccionados(grupo.id_laboratorio, (x) => !x); + setCursosUsuarios( + "cursos", + Number(indiceCurso), + "Laboratorio", + produce<{ [p: string]: DatosGrupo }>((x) => { + const grupoActualSeleccionado = x[grupoStr].seleccionado + + if (grupoActualSeleccionado) { + x[grupoStr].seleccionado = false + } else { + for (const xKey in x) { + x[xKey].seleccionado = xKey === grupoStr + } + } + }), + ) }, - }); + }) } } } - return obj; -}; + return obj +} interface Props { data: Cursos, @@ -166,12 +191,12 @@ interface Props { } export function Tabla(props: Props) { - const anio = () => props.anio.substring(0, props.anio.indexOf(" ")); - const data = createMemo(() => procesarAnio(props.data, anio(), props.version, props.setCursosUsuarios)); + const anio = () => props.anio.substring(0, props.anio.indexOf(" ")) + const data = createMemo(() => procesarAnio(props.data, anio(), props.version, props.setCursosUsuarios)) const celdas = createMemo(() => { // Hace reaccionar a la reactividad de Solid - const d = data(); + const d = data() return ( {(hora) => ( @@ -182,8 +207,8 @@ export function Tabla(props: Props) { /> )} - ); - }); + ) + }) return (
@@ -198,5 +223,5 @@ export function Tabla(props: Props) {
{celdas()}
- ); + ) } diff --git a/src/Views/pc/Sistemas/ContenedorHorarios/Tabla/CeldaFila.tsx b/src/ContenedorHorarios/Tabla/CeldaFila.tsx similarity index 63% rename from src/Views/pc/Sistemas/ContenedorHorarios/Tabla/CeldaFila.tsx rename to src/ContenedorHorarios/Tabla/CeldaFila.tsx index 1a9ad95..4c2d72d 100755 --- a/src/Views/pc/Sistemas/ContenedorHorarios/Tabla/CeldaFila.tsx +++ b/src/ContenedorHorarios/Tabla/CeldaFila.tsx @@ -1,9 +1,9 @@ -import { StyleSheet, css } from "aphrodite"; -import { estilosGlobales } from "../../../../../Estilos"; -import { For, createSignal, createMemo, createEffect, onCleanup } from "solid-js"; -import { Dia } from "../../../../../Store"; -import { DatosGrupo } from "../../../../../types/DatosHorario"; -import {TablaObserver} from "../TablaObserver"; +import { StyleSheet, css } from "aphrodite" +import { estilosGlobales } from "../../Estilos" +import { For, createSignal, createMemo, createEffect, onCleanup } from "solid-js" +import { Dia } from "../../Store" +import { DatosGrupo } from "../../types/DatosHorario" +import { TablaObserver } from "../TablaObserver" const e = StyleSheet.create({ celdaComun: { @@ -42,7 +42,7 @@ const e = StyleSheet.create({ celdaResaltadoSeleccionado: { textDecoration: "underline", }, -}); +}) const eColores = StyleSheet.create({ lunes: { @@ -62,7 +62,7 @@ const eColores = StyleSheet.create({ viernes: { backgroundColor: "rgba(244,67,54,1)", }, -}); +}) const clasesColores = { Lunes: css(eColores.lunes), @@ -70,7 +70,7 @@ const clasesColores = { Miercoles: css(eColores.miercoles), Jueves: css(eColores.jueves), Viernes: css(eColores.viernes), -}; +} interface DatosProps { id: string, @@ -97,110 +97,108 @@ interface Props { tablaObserver: TablaObserver, } -const claseSeldaSeleccionada = css(e.celdaSeleccionado); +const claseSeldaSeleccionada = css(e.celdaSeleccionado) function RenderFila(datos: DatosProps, props: Props) { - const id = datos.id; - const txt = datos.txt; - const esLab = datos.esLab; - const fnSeleccionar = datos.fnSeleccionar; + const id = datos.id + const txt = datos.txt + const esLab = datos.esLab + const fnSeleccionar = datos.fnSeleccionar - const estadoCeldaMemo = props.tablaObserver.registrarConId(id, datos.datosGrupo); + const estadoCeldaMemo = props.tablaObserver.registrarConId(id, datos.datosGrupo) - const [estabaResaltado, setEstabaResaltado] = createSignal(false); + const [estabaResaltado, setEstabaResaltado] = createSignal(false) // Limpiar los memos, porque cuando se desmonta la celda esos memos quedan sin efecto onCleanup(() => { - props.tablaObserver.limpiar(id); - }); + props.tablaObserver.limpiar(id) + }) const clases = createMemo( () => { const clases = [ e.celdaCurso, esLab ? e.celdaCursoLab : e.celdaCursoTeoria, - ]; - let adicional = ""; + ] + let adicional = "" - const estadoCelda = estadoCeldaMemo(); + const estadoCelda = estadoCeldaMemo() switch (estadoCelda) { case "Normal": { if (estabaResaltado()) { - props.fnDesresaltarFila(); - setEstabaResaltado(false); + props.fnDesresaltarFila() + setEstabaResaltado(false) } - break; + break } case "Oculto": { if (estabaResaltado()) { - props.fnDesresaltarFila(); - setEstabaResaltado(false); + props.fnDesresaltarFila() + setEstabaResaltado(false) } - clases.push(e.celdaOculto); - break; + clases.push(e.celdaOculto) + break } case "Resaltado": { - props.fnResaltarFila(); - setEstabaResaltado(true); - clases.push(e.celdaResaltado); - adicional = clasesColores[props.dia]; - break; + props.fnResaltarFila() + setEstabaResaltado(true) + clases.push(e.celdaResaltado) + adicional = clasesColores[props.dia] + break } case "Seleccionado": { if (estabaResaltado()) { - props.fnDesresaltarFila(); - setEstabaResaltado(false); + props.fnDesresaltarFila() + setEstabaResaltado(false) } - clases.push(e.celdaSeleccionado); - break; + clases.push(e.celdaSeleccionado) + break } case "ResaltadoOculto": { - props.fnResaltarFila(); - setEstabaResaltado(true); + props.fnResaltarFila() + setEstabaResaltado(true) - clases.push(e.celdaResaltadoOculto); - adicional = clasesColores[props.dia]; - break; + clases.push(e.celdaResaltadoOculto) + adicional = clasesColores[props.dia] + break } case "ResaltadoSeleccionado": { - props.fnResaltarFila(); - setEstabaResaltado(true); + props.fnResaltarFila() + setEstabaResaltado(true) - clases.push(e.celdaResaltadoSeleccionado); - adicional = clasesColores[props.dia]; - break; + clases.push(e.celdaResaltadoSeleccionado) + adicional = clasesColores[props.dia] + break } } - return `${css(...clases)} ${adicional}`; + return `${css(...clases)} ${adicional}` }, undefined, - { - equals: (x, y) => x === y, - }, - ); + (x, y) => x === y, + ) return ( - ); + ) } export function CeldaFila(props: Props) { - const datos = props.datos; + const datos = props.datos return (
@@ -208,5 +206,5 @@ export function CeldaFila(props: Props) { {(datos) => RenderFila(datos, props)}
- ); + ) } diff --git a/src/Views/pc/Sistemas/ContenedorHorarios/Tabla/FilaTabla.tsx b/src/ContenedorHorarios/Tabla/FilaTabla.tsx similarity index 79% rename from src/Views/pc/Sistemas/ContenedorHorarios/Tabla/FilaTabla.tsx rename to src/ContenedorHorarios/Tabla/FilaTabla.tsx index 7da16ae..0b9994c 100755 --- a/src/Views/pc/Sistemas/ContenedorHorarios/Tabla/FilaTabla.tsx +++ b/src/ContenedorHorarios/Tabla/FilaTabla.tsx @@ -1,12 +1,12 @@ -import { StyleSheet, css } from "aphrodite"; -import { estilosGlobales } from "../../../../../Estilos"; -import { For, createMemo } from "solid-js"; -import {createStore, Store} from "solid-js/store"; -import { Dia, dias } from "../../../../../Store"; -import { CeldaFila } from "./CeldaFila"; -import { DataProcesada } from "../../../../../types/DatosHorario"; -import { coloresBorde, diaANum } from "../Tabla"; -import { TablaObserver } from "../TablaObserver"; +import { StyleSheet, css } from "aphrodite" +import { estilosGlobales } from "../../Estilos" +import { For, createMemo } from "solid-js" +import {createStore, Store} from "solid-js/store" +import { Dia, dias } from "../../Store" +import { CeldaFila } from "./CeldaFila" +import { DataProcesada } from "../../types/DatosHorario" +import { coloresBorde, diaANum } from "../Tabla" +import { TablaObserver } from "../TablaObserver" const e = StyleSheet.create({ celdaHora: { @@ -50,7 +50,7 @@ const e = StyleSheet.create({ celdaResaltadoTransparente: { backgroundColor: "transparent", }, -}); +}) const [diasResaltados, setDiasResaltados] = createStore({ Lunes: 0, @@ -58,7 +58,7 @@ const [diasResaltados, setDiasResaltados] = createStore({ Miercoles: 0, Jueves: 0, Viernes: 0, -} as { [k: string]: number }); +} as { [k: string]: number }) interface Props { hora: string, @@ -69,7 +69,7 @@ interface Props { const diasFilter = createMemo(() => Object.entries(diasResaltados) .filter((x) => x[1] > 0) .map((x) => x[0] as Dia) - .sort((x, y) => (diaANum(x) > diaANum(y) ? 1 : -1))); + .sort((x, y) => (diaANum(x) > diaANum(y) ? 1 : -1))) const useDiasResaltados: () => [ Store<{ [k: string]: boolean }>, @@ -82,26 +82,26 @@ const useDiasResaltados: () => [ Miercoles: false, Jueves: false, Viernes: false, - } as { [k: string]: boolean }); + } as { [k: string]: boolean }) const fnResaltar = (d: Dia) => { - setDiasResaltadosLocal(d, true); - setDiasResaltados(d, (v) => v + 1); - }; + setDiasResaltadosLocal(d, true) + setDiasResaltados(d, (v) => v + 1) + } const fnDesresaltar = (d: Dia) => { - setDiasResaltadosLocal(d, false); - setDiasResaltados(d, (v) => v - 1); - }; + setDiasResaltadosLocal(d, false) + setDiasResaltados(d, (v) => v - 1) + } - return [diasResaltadosLocal, fnResaltar, fnDesresaltar]; -}; + return [diasResaltadosLocal, fnResaltar, fnDesresaltar] +} export function FilaTabla(props: Props) { - const [diasResaltadosLocal, fnResaltar, fnDesresaltar] = useDiasResaltados(); + const [diasResaltadosLocal, fnResaltar, fnDesresaltar] = useDiasResaltados() - const hora = props.hora; - const data = props.data; + const hora = props.hora + const data = props.data return (
@@ -133,10 +133,10 @@ export function FilaTabla(props: Props) {
{(dia) => { - const diaStr = dia.substring(0, 2); - const horaStr = hora.substring(0, 5); + const diaStr = dia.substring(0, 2) + const horaStr = hora.substring(0, 5) - const datos = data?.[horaStr]?.[diaStr] ?? []; + const datos = data?.[horaStr]?.[diaStr] ?? [] return ( - ); + ) }}
- ); + ) } diff --git a/src/Views/pc/Sistemas/ContenedorHorarios/TablaObserver.ts b/src/ContenedorHorarios/TablaObserver.ts similarity index 70% rename from src/Views/pc/Sistemas/ContenedorHorarios/TablaObserver.ts rename to src/ContenedorHorarios/TablaObserver.ts index 9b5274c..4dd9a31 100644 --- a/src/Views/pc/Sistemas/ContenedorHorarios/TablaObserver.ts +++ b/src/ContenedorHorarios/TablaObserver.ts @@ -1,7 +1,6 @@ -import { createMemo, createEffect, untrack } from "solid-js"; -import {createStore, SetStoreFunction, Store, produce} from "solid-js/store"; -import { DatosGrupo } from "../../../../types/DatosHorario"; -import { gruposSeleccionados } from "../../../../Store"; +import { createMemo, createEffect, untrack } from "solid-js" +import {createStore, SetStoreFunction, Store, produce} from "solid-js/store" +import { DatosGrupo } from "../types/DatosHorario" const createMemoDefault = (f: () => T) => createMemo( f, @@ -9,7 +8,7 @@ const createMemoDefault = (f: () => T) => createMemo( { equals: (x, y) => x === y, }, -); +) /** * - Normal @@ -63,18 +62,17 @@ export class TablaObserver { curso: undefined, esLab: undefined, grupo: undefined, - }); - this.resaltado = resaltado; - this.setResaltado = setResaltado; + }) + this.resaltado = resaltado + this.setResaltado = setResaltado - const [seleccionado, setSeleccionado] = createStore({}); - this.seleccionado = seleccionado; - this.setSeleccionado = setSeleccionado; + const [seleccionado, setSeleccionado] = createStore({}) + this.seleccionado = seleccionado + this.setSeleccionado = setSeleccionado } /** * Crea un memo que indica el estado de la celda - * @param id_laboratorio Id del laboratorio * @param anio El año * @param curso Curso abreviado * @param esLab Si es laboratorio @@ -82,82 +80,89 @@ export class TablaObserver { * @param datosGrupo Contiene `seleccionado`, se usa ese valor reactivo */ private registrar( - id_laboratorio: number, anio: string, curso: string, esLab: boolean, grupo: string, datosGrupo: DatosGrupo, ): () => EstadoCelda { - const resaltado = this.resaltado; + const resaltado = this.resaltado const resaltadoMemo = createMemoDefault(() => { if (resaltado.anio === anio && resaltado.curso === curso) { if (resaltado.esLab === undefined) { - return true; + return true } else if (resaltado.esLab !== esLab) { - return false; + return false } else { if (resaltado.grupo === undefined) { - return true; - } else return resaltado.grupo === grupo; + return true + } else return resaltado.grupo === grupo } } else { - return false; + return false } - }); + }) // Registrar curso en `seleccionado` this.setSeleccionado((obj: Store) => { - const nuevoObj = {...obj}; + const nuevoObj = {...obj} if (!nuevoObj[anio]) { - nuevoObj[anio] = {}; + nuevoObj[anio] = {} } if (!nuevoObj[anio][curso]) { nuevoObj[anio][curso] = { Laboratorio: [], Teoria: [], - }; + } } - return nuevoObj; - }); + return nuevoObj + }) // Crear un effect para que cada vez que la celda se seleccione se actualize `seleccionado` createEffect(() => { - const seleccionado = datosGrupo.seleccionado; + const seleccionado = datosGrupo.seleccionado if (seleccionado) { - this.setSeleccionado(anio, curso, esLab ? "Laboratorio" : "Teoria", (x) => [...x, grupo]); + this.setSeleccionado(anio, curso, esLab ? "Laboratorio" : "Teoria", (x) => [...x, grupo]) } else { - this.setSeleccionado(anio, curso, esLab ? "Laboratorio" : "Teoria", (x) => x.filter((x) => x !== grupo)); + this.setSeleccionado(anio, curso, esLab ? "Laboratorio" : "Teoria", (x) => x.filter((x) => x !== grupo)) } - }); + }) - const seleccionadoMemo = createMemoDefault(() => ((gruposSeleccionados[id_laboratorio]) ? "Seleccionado" : "Normal")); + const seleccionadoMemo = createMemoDefault(() => { + const gruposSeleccionados = this.seleccionado[anio][curso][esLab ? "Laboratorio" : "Teoria"] + + if (gruposSeleccionados.length > 0) { + return gruposSeleccionados.find((x) => x === grupo) ? "Seleccionado" : "Oculto" + } else { + return "Normal" + } + }) return createMemoDefault((): EstadoCelda => { - const resaltado = resaltadoMemo(); - const seleccionado = seleccionadoMemo(); + const resaltado = resaltadoMemo() + const seleccionado = seleccionadoMemo() switch (seleccionado) { case "Normal": { - return resaltado ? "Resaltado" : "Normal"; + return resaltado ? "Resaltado" : "Normal" } case "Oculto": { - return resaltado ? "ResaltadoOculto" : "Oculto"; + return resaltado ? "ResaltadoOculto" : "Oculto" } case "Seleccionado": { - return resaltado ? "ResaltadoSeleccionado" : "Seleccionado"; + return resaltado ? "ResaltadoSeleccionado" : "Seleccionado" } default: { - let _: never; + let _: never // eslint-disable-next-line prefer-const - _ = seleccionado; - return _; + _ = seleccionado + return _ } } - }); + }) } /** @@ -167,13 +172,13 @@ export class TablaObserver { */ registrarConId(id: string, datosGrupo: DatosGrupo): () => EstadoCelda { if (this.memos[id]) { - return this.memos[id]; + return this.memos[id] } - const [, anio, curso, lab, grupo] = id.split("_"); - const memo = this.registrar(datosGrupo.id_laboratorio, anio, curso, lab === "L", grupo, datosGrupo); - this.memos[id] = memo; - return memo; + const [, anio, curso, lab, grupo] = id.split("_") + const memo = this.registrar(anio, curso, lab === "L", grupo, datosGrupo) + this.memos[id] = memo + return memo } /** @@ -181,24 +186,24 @@ export class TablaObserver { * @param id Id a resaltar - YYYYMMDD_Año_Curso[\_Lab[_Grupo]] */ resaltar(id: string) { - const [, anio, curso, lab, grupo] = id.split("_"); + const [, anio, curso, lab, grupo] = id.split("_") if (anio === undefined || curso === undefined) { - console.error("Error al intentar resaltar celda: anio o curso son undefined:", anio, curso); - return; + console.error("Error al intentar resaltar celda: anio o curso son undefined:", anio, curso) + return } - let esLab: boolean | undefined; + let esLab: boolean | undefined if (lab === undefined) { - esLab = undefined; + esLab = undefined } else { - esLab = lab === "L"; + esLab = lab === "L" } this.setResaltado({ anio, curso, esLab, grupo, - }); + }) } quitarResaltado() { @@ -207,10 +212,10 @@ export class TablaObserver { curso: undefined, esLab: undefined, grupo: undefined, - }); + }) } limpiar(id: string) { - delete this.memos[id]; + delete this.memos[id] } } diff --git a/src/Views/pc/Sistemas/ContenedorHorarios/useListaCursos.ts b/src/ContenedorHorarios/useListaCursos.ts similarity index 50% rename from src/Views/pc/Sistemas/ContenedorHorarios/useListaCursos.ts rename to src/ContenedorHorarios/useListaCursos.ts index f14032f..396b917 100644 --- a/src/Views/pc/Sistemas/ContenedorHorarios/useListaCursos.ts +++ b/src/ContenedorHorarios/useListaCursos.ts @@ -1,5 +1,5 @@ -import {createStore, SetStoreFunction, Store} from "solid-js/store"; -import { Curso, ListaCursosUsuario } from "../../../../types/DatosHorario"; +import {createStore, SetStoreFunction, Store} from "solid-js/store" +import { Curso, ListaCursosUsuario } from "../types/DatosHorario" interface ReturnType { listaCursos: Store, @@ -9,27 +9,33 @@ interface ReturnType { } export const useListaCursos = (): ReturnType => { - const [listaCursos, setListaCursos] = createStore({}); + const [listaCursos, setListaCursos] = createStore({ + sigIndice: 0, + cursos: [], + }) const agregarCursoALista = (curso: Curso): Curso => { // Si el horario ya se habia agregado, ocultarlo - if (listaCursos[curso.nombre]) { - setListaCursos(curso.nombre, "oculto", (x) => !x); - return listaCursos[curso.nombre]; + const cursoActualIndex = listaCursos.cursos.findIndex((x) => x.nombre === curso.nombre) + if (cursoActualIndex !== -1) { + setListaCursos("cursos", cursoActualIndex, "oculto", (x) => !x) + return listaCursos.cursos[cursoActualIndex] } else { - setListaCursos(curso.nombre, curso); - return listaCursos[curso.nombre]; + setListaCursos("cursos", listaCursos.sigIndice, curso) + setListaCursos("sigIndice", (x) => x + 1) + return listaCursos.cursos[listaCursos.sigIndice - 1] } - }; + } const eliminarCursosDeLista = () => { - setListaCursos({}); - }; + setListaCursos("cursos", []) + setListaCursos("sigIndice", 0) + } return { listaCursos, setListaCursos, agregarCursoALista, eliminarCursosDeLista, - }; -}; + } +} diff --git a/src/Estilos.ts b/src/Estilos.ts index 40a2b76..1cd622a 100755 --- a/src/Estilos.ts +++ b/src/Estilos.ts @@ -1,4 +1,4 @@ -import { StyleSheet } from "aphrodite"; +import { StyleSheet } from "aphrodite" export const estilosGlobales = StyleSheet.create({ contenedor: { @@ -58,4 +58,4 @@ export const estilosGlobales = StyleSheet.create({ padding: "0.25rem 0.35rem", borderRadius: "5px", }, -}); +}) diff --git a/src/Router.tsx b/src/Router.tsx index 3be99d5..7e23553 100644 --- a/src/Router.tsx +++ b/src/Router.tsx @@ -1,31 +1,31 @@ -import { createSignal, JSX } from "solid-js"; +import { createSignal, JSX } from "solid-js" export const useRouter = (): () => string => { - let rutaPrevia = window.location.hash; + let rutaPrevia = window.location.hash if (rutaPrevia === "") { - window.history.pushState({}, "Horarios UNSA", "#/"); - rutaPrevia = "/"; + window.history.pushState({}, "Horarios UNSA", "#/") + rutaPrevia = "/" } else { - rutaPrevia = rutaPrevia.substr(1); + rutaPrevia = rutaPrevia.substr(1) } - const [rutaActual, setRutaActual] = createSignal(rutaPrevia); + const [rutaActual, setRutaActual] = createSignal(rutaPrevia) const fnEffect = () => { - const nuevaRuta = window.location.hash.substr(1); - setRutaActual(nuevaRuta); - }; + const nuevaRuta = window.location.hash.substr(1) + setRutaActual(nuevaRuta) + } - window.addEventListener("hashchange", fnEffect); + window.addEventListener("hashchange", fnEffect) - return rutaActual; -}; + return rutaActual +} export function RouterLink(props: { to: string, className?: string, children: JSX.Element }) { return (
{props.children} - ); + ) } diff --git a/src/Store.ts b/src/Store.ts index 8ecfec5..38eb32f 100755 --- a/src/Store.ts +++ b/src/Store.ts @@ -1,5 +1,4 @@ import { createSignal } from "solid-js"; -import { createStore } from "solid-js/store"; export type Dia = "Lunes" | "Martes" | "Miercoles" | "Jueves" | "Viernes"; @@ -29,7 +28,6 @@ export const horasDescanso = [ "15:40 - 15:50", "17:30 - 17:40", ]; -export const SERVER_PATH = "https://matriculas.fly.dev/sistema"; const numImgGuardado = Number(localStorage.getItem("num-img") ?? "0"); const tamanoLetraGuardado = Number(/* localStorage.getItem("tamano-letra") ?? */ "16"); @@ -37,5 +35,3 @@ const tamanoLetraGuardado = Number(/* localStorage.getItem("tamano-letra") ?? */ export const [numWallpaper, setNumWallpaper] = createSignal(numImgGuardado); export const [tamanoLetra, setTamanoLetra] = createSignal(tamanoLetraGuardado); export const [isMobile, setIsMobile] = createSignal(screen.width < 500); - -export const [gruposSeleccionados, setGruposSeleccionados] = createStore<{[k: number]: boolean}>({}); diff --git a/src/Views/Editor.tsx b/src/Views/Editor.tsx index e69ea08..ed7bd76 100644 --- a/src/Views/Editor.tsx +++ b/src/Views/Editor.tsx @@ -2,8 +2,8 @@ import { BarraSuperior } from "../BarraSuperior"; import { estilosGlobales } from "../Estilos"; import { StyleSheet, css } from "aphrodite"; import { Separador } from "../Separador"; -import { Tabla } from "./pc/Sistemas/ContenedorHorarios/Tabla"; -import { TablaObserver } from "./pc/Sistemas/ContenedorHorarios/TablaObserver"; +import { Tabla } from "../ContenedorHorarios/Tabla"; +import { TablaObserver } from "../ContenedorHorarios/TablaObserver"; import { Curso, Cursos } from "../types/DatosHorario"; import { For, createMemo } from "solid-js"; import {createStore} from "solid-js/store"; diff --git a/src/Views/Index.tsx b/src/Views/Index.tsx index f5ea7ee..2d89bca 100644 --- a/src/Views/Index.tsx +++ b/src/Views/Index.tsx @@ -1,10 +1,8 @@ import { estilosGlobales } from "../Estilos"; import { StyleSheet, css } from "aphrodite/no-important"; import { RouterLink } from "../Router"; -import { batch, createSignal, Show } from "solid-js"; -import { isMobile, setGruposSeleccionados } from "../Store"; -import { MobileIndex } from "./MobileIndex"; -import { loginFn } from "../API/Login"; +import { Show } from "solid-js"; +import { isMobile } from "../Store"; const e = StyleSheet.create({ contenedorGlobal: { @@ -31,51 +29,55 @@ const e = StyleSheet.create({ verticalAlign: "bottom", marginRight: "0.5rem", }, - inputCorreo: { - width: "100%", - backgroundColor: "rgba(159,159,159,0.44)", - border: "none", - borderBottom: "solid 2px var(--color-texto)", - padding: "0.5rem 1rem", - boxSizing: "border-box", - marginTop: "1rem", - borderRadius: "5px", - }, }); +function MobileIndex() { + const s = StyleSheet.create({ + boton: { + backgroundColor: "var(--color-primario)", + color: "white", + padding: "1rem 5rem", + borderRadius: "25px", + margin: "1.5rem 0", + boxShadow: "2px 2px 2px 0 gray", + cursor: "pointer", + }, + entrada: { + borderTop: "none", + borderRight: "none", + borderLeft: "none", + borderBottom: "solid 2px gray", + padding: "0.75rem 1rem", + }, + }); -export function Index() { - const [msgErrorVisible, setMsgErrorVisible] = createSignal(false); - const inputElement = ; + const inputElement = ; - const login = async(ev: Event) => { - ev.preventDefault(); - const email = (inputElement as HTMLInputElement).value; - const response = await loginFn({correo_usuario: email}); - - if (response === null) { - setMsgErrorVisible(true); - setTimeout(() => setMsgErrorVisible(false), 2500); - } else if (!response.matriculas || response.matriculas.length === 0) { - localStorage.setItem("correo", email); - window.location.href = "#/pc/seleccion-cursos/"; - } else if (response.matriculas.length > 0) { - localStorage.setItem("correo", email); - batch(() => { - for (const id_lab of response.matriculas) { - setGruposSeleccionados(id_lab, true); - } - }); - window.location.href = "#/pc/ver-matricula/"; - } + const login = () => { + console.log((inputElement as HTMLInputElement).value); }; + return ( +
+
+

Iniciar sesión

+
+
+ {inputElement} +
+ +
+
+ ); +} + +export function Index() { return ( <> -
-
-
+
+
+

Horarios UNSA

-

- Inicia sesión con tu correo institucional. -
- {inputElement} +

+ Esta página te permite crear tu horario fácilmente, sin importar de que + año son los cursos. +

+

+ Por ahora solo está disponible para ing. de sistemas. Proximamente se habilitarán + otras carreras. +

+

+ Se recomienda usar un computador/laptop y un navegador actualizado (Firefox, Chrome, + Qutebrowser).

- - El correo es invalido -
- -
-
+ + Ing. de Sistemas + + {/* + + */} + + + Editor + - + Código fuente en GitHub
diff --git a/src/Views/Main.tsx b/src/Views/Main.tsx new file mode 100644 index 0000000..2cce948 --- /dev/null +++ b/src/Views/Main.tsx @@ -0,0 +1,49 @@ +import { BarraSuperior } from "../BarraSuperior" +import { ContenedorHorarios } from "../ContenedorHorarios/ContenedorHorarios" +import { Show, createSignal } from "solid-js" +import { css } from "aphrodite" +import { estilosGlobales } from "../Estilos" +import { Creditos } from "../Creditos" +import { Separador } from "../Separador" + +export function Main() { + /// @ts-ignore + const soportaBackdropFilter = document.body.style.backdropFilter !== undefined + const mostrarMensajeBackdropFilterRaw = !localStorage.getItem("mensaje-backdrop-filter-oculto") + + const [mostrarMensajeBackdropFilter, setMostrarMensaje] = createSignal(mostrarMensajeBackdropFilterRaw) + + const ocultarMensajeBackdropFilter = () => { + setMostrarMensaje(false) + localStorage.setItem("mensaje-backdrop-filter-oculto", "true") + } + + return ( +
+ + +
+ Tu navegador no soporta "backdrop-filter". Este es solo un efecto + visual, no afecta la funcionalidad de la página.  + + No volver a mostrar. + +
+
+ {/* +
+ Solo teoria por ahora. Actualizado el 2021/03/28. Fuente:  + + Página de Facebook de la escuela. + +
+ */} + + + +
+ ) +} diff --git a/src/Views/MobileIndex.tsx b/src/Views/MobileIndex.tsx deleted file mode 100644 index 610f7be..0000000 --- a/src/Views/MobileIndex.tsx +++ /dev/null @@ -1,85 +0,0 @@ -import { css, StyleSheet } from "aphrodite/no-important"; -import { batch, createSignal } from "solid-js"; -import { SERVER_PATH, setGruposSeleccionados } from "../Store"; -import { loginFn } from "../API/Login"; - -const e = StyleSheet.create({ - contenedorGlobal: { - width: "100vw", - height: "100vh", - display: "flex", - alignItems: "center", - justifyContent: "center", - }, - cont: { - width: "30rem", - }, - parrafo: { - textAlign: "justify", - lineHeight: "1.4rem", - }, - botonAccion: { - width: "30rem", - display: "inline-block", - textAlign: "center", - }, - iconoGitHub: { - fontSize: "1.25rem", - verticalAlign: "bottom", - marginRight: "0.5rem", - }, -}); - -export function MobileIndex() { - const s = StyleSheet.create({ - boton: { - backgroundColor: "var(--color-primario)", - color: "white", - padding: "1rem 5rem", - borderRadius: "25px", - margin: "1.5rem 0", - boxShadow: "2px 2px 2px 0 gray", - cursor: "pointer", - }, - entrada: { - borderTop: "none", - borderRight: "none", - borderLeft: "none", - borderBottom: "solid 2px gray", - padding: "0.75rem 1rem", - }, - }); - const [msgErrorVisible, setMsgErrorVisible] = createSignal(false); - - const inputElement = ; - - const login = async(ev: Event) => { - ev.preventDefault(); - const email = (inputElement as HTMLInputElement).value; - const response = await loginFn({correo_usuario: email}); - - if (response === null) { - setMsgErrorVisible(true); - setTimeout(() => setMsgErrorVisible(false), 2500); - } else { - localStorage.setItem("correo", email); - window.location.href = "#/seleccion-cursos/"; - } - }; - - return ( -
-
-

Iniciar sesión

-
-
-
login(ev)}> - {inputElement} -
- -
- El correo es invalido -
-
- ); -} diff --git a/src/Views/SeleccionCursos.tsx b/src/Views/SeleccionCursos.tsx deleted file mode 100644 index 6e55fd3..0000000 --- a/src/Views/SeleccionCursos.tsx +++ /dev/null @@ -1,92 +0,0 @@ -import { TopBar } from "./SistemasMovil/TopBar"; -import { StyleSheet, css } from "aphrodite/no-important"; -import { Card } from "../components/Card"; -import { createSignal, For } from "solid-js"; -import { getAllListaCursos, RespuestaListaCursos } from "../API/ListaCursos"; -import { Button } from "../components/Button"; - -const s = StyleSheet.create({ - checkbox: { - width: "1.25rem", - height: "1.25rem", - margin: "0 0.5rem", - }, - grid: { - display: "grid", - gridTemplateColumns: "3rem auto", - gridRowGap: "1rem", - }, -}); - -export function SeleccionCursos() { - const [cursos, setCursos] = createSignal({}); - const [msjErr, setMsjError] = createSignal(false); - - // Recuperar cursos de back - (async() => setCursos(await getAllListaCursos()))(); - - const submit = (ev: Event) => { - ev.preventDefault(); - const form = ev.target as HTMLFormElement; - // Los checkboxes - const elements = form.elements; - const idsAEnviar: Array = []; - for (let i = 0; i < elements.length; i += 1) { - const inputBox = elements[i] as HTMLInputElement; - if (inputBox.checked) { - idsAEnviar.push(inputBox.value); - } - } - - if (idsAEnviar.length === 0) { - setMsjError(true); - setTimeout(() => setMsjError(false), 2500); - return; - } - - // Almacenar en localStorage - localStorage.setItem("cursos-seleccionados", JSON.stringify(idsAEnviar)); - // Ir a sig pantalla - window.location.href = "#/sistemas-movil/"; - }; - - return ( -
- - - -

Escoge los cursos en los que matricularte

-
-
submit(ev)}> - - {([nombreAnio, infoCurso]) => ( - -

{nombreAnio} año

-
- - {(curso) => ( - <> - - {curso.nombre_curso} - - )} - -
-
- )} -
-
- Selecciona al menos 1 curso -
-
-
-
- ); -} - - diff --git a/src/Views/SistemasMovil.tsx b/src/Views/SistemasMovil.tsx deleted file mode 100644 index 8d47804..0000000 --- a/src/Views/SistemasMovil.tsx +++ /dev/null @@ -1,167 +0,0 @@ -import { TopBar } from "./SistemasMovil/TopBar"; -import { GrupoDia, Table, TableInput } from "./SistemasMovil/Table"; -import { getHorarios, Horario, ListaCursosCompleto } from "../API/CargaHorarios"; -import { createSignal } from "solid-js"; -import { generarMapaCeldas } from "./SistemasMovil/mapaCeldas"; -import { Button } from "../components/Button"; -import { gruposSeleccionados, SERVER_PATH } from "../Store"; - -export function SistemasMovil() { - const [rawData, setRawData] = createSignal([]); - - // Obtener cursos seleccionados del servidor - (async() => { - const cursos: Array = JSON.parse(localStorage.getItem("cursos-seleccionados") ?? "[]"); - const data = await getHorarios({ - cursos: cursos.map((x) => parseInt(x, 10)), - }); - setRawData(data); - })(); - - const matricular = async() => { - const laboratoriosAMatricular = Object.entries(gruposSeleccionados) - .filter((x) => x[1] === true) - .map((x) => x[0]); - - const response = await fetch(`${SERVER_PATH}/matricula`, { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify({ - correo_usuario: localStorage.getItem("correo"), - horarios: laboratoriosAMatricular, - }), - }); - if (response.ok) { - window.location.href = "#/ver-matricula/"; - } else { - alert("No se pudo procesar la matricula"); - } - }; - - return ( -
- - -
-
-
- - ); -} - - -function transformar(input: ListaCursosCompleto): TableInput { - const data: TableInput = { - lunes: [], - martes: [], - miercoles: [], - jueves: [], - viernes: [], - }; - - // Organizar por dias - for (const curso of input) { - for (const lab of curso.laboratorios) { - for (const horas of lab.horarios) { - const dia = horas.dia; - const [idx, nroHoras] = infoDiaAOffsets(horas.hora_inicio, horas.hora_fin); - const datos = { - id_horario: horas.id_horario, - id_laboratorio: lab.id_laboratorio, - abreviado: curso.abreviado, - grupo: lab.grupo, - offsetVertical: idx, - nroHoras: nroHoras, - offsetHorizontal: 0, - fraccion: 0, - }; - - if (dia === "Lunes") { - data.lunes.push(datos); - } else if (dia === "Martes") { - data.martes.push(datos); - } else if (dia === "Miercoles") { - data.miercoles.push(datos); - } else if (dia === "Jueves") { - data.jueves.push(datos); - } else if (dia === "Viernes") { - data.viernes.push(datos); - } - } - } - } - - // Procesar cada dia y devolver - return { - lunes: generarMapaCeldas(data.lunes), - martes: generarMapaCeldas(data.martes), - miercoles: generarMapaCeldas(data.miercoles), - jueves: generarMapaCeldas(data.jueves), - viernes: generarMapaCeldas(data.viernes), - }; -} - -const horasStr = ["0700","0750","0850","0940","1040","1130","1220","1310","1400", - "1450","1550","1640","1740","1830","1920","2010","2100","2150"]; - -const horas = [ - 700, - 750, - 850, - 940, - 1040, - 1130, - 1220, - 1310, - 1400, - 1450, - 1550, - 1640, - 1740, - 1830, - 1920, - 2010, - 2100, - 2150, -]; - -/** - * Convierte horas en texto a offsets - */ -// Ejm: 0700, 0850 -> 0, 2 -function infoDiaAOffsets(horaInicio: string, horaFinal: string): [number, number] { - const inicio = parseInt(horaInicio, 10); - const final = parseInt(horaFinal, 10); - - const idxInicio = horas.findIndex((x) => x === inicio); - let nroHoras = 0; - - for (let i = idxInicio; i < horas.length; i += 1) { - if (final > horas[i]) { - nroHoras += 1; - } else { - break; - } - } - - return [idxInicio, nroHoras]; -} - -// inicio: 1740 fin 2010 -> 1740,1830,1920 -export function infoDiaAListaHoras(horas: Array): Array { - const horasFin: Array = []; - - for (const grupoHoras of horas) { - const [idx, cantidad] = infoDiaAOffsets(grupoHoras.hora_inicio, grupoHoras.hora_fin); - const strDia = grupoHoras.dia.substring(0, 2); - - for (let i = 0; i < cantidad; i += 1) { - horasFin.push(`${strDia}${horasStr[idx + i]}`); - } - } - - return horasFin; -} diff --git a/src/Views/SistemasMovil/Grupo.tsx b/src/Views/SistemasMovil/Grupo.tsx deleted file mode 100644 index 06d1653..0000000 --- a/src/Views/SistemasMovil/Grupo.tsx +++ /dev/null @@ -1,64 +0,0 @@ -import { css, StyleSheet } from "aphrodite/no-important"; -import { GrupoDia } from "./Table"; -import { gruposSeleccionados, setGruposSeleccionados } from "../../Store"; - -const colores: Array<[string, string]> = [ - ["#FFEBEE", "#F44336"], - ["#F3E5F5", "#9C27B0"], - ["#E8EAF6", "#3F51B5"], - ["#E1F5FE", "#03A9F4"], - ["#E0F2F1", "#009688"], - ["#F1F8E9", "#689F38"], - ["#FFF9C4", "#FBC02D"], - ["#FBE9E7", "#F4511E"], - ["#EFEBE9", "#795548"], -]; - -export function Grupo(props: { data: GrupoDia }) { - const [colorDesactivado, colorActivado] = colores[props.data.id_laboratorio % 9]; - const ss = StyleSheet.create({ - button: { - display: "inline-block", - padding: "0.2rem 1rem", - textAlign: "left", - borderRadius: "10px", - border: `solid 2px ${colorActivado}`, - position: "absolute", - }, - }); - - const estiloFondo = () => { - if (gruposSeleccionados[props.data.id_laboratorio]) { - return `background-color: ${colorActivado}; color: white; font-weight: 600;`; - } else { - return `background-color: ${colorDesactivado};`; - } - }; - - const estilo = () => { - const fraccion = props.data.fraccion; - const offsetHorizontal = props.data.offsetHorizontal; - const offsetVertical = props.data.offsetVertical; - const nroHoras = props.data.nroHoras; - - return `left: calc((43vw / ${fraccion}) * ${offsetHorizontal}); top: ${offsetVertical * 3}rem;` + - `height: ${nroHoras * 3}rem; width: calc(100% / ${fraccion});`; - }; - - const handleClick = () => { - setGruposSeleccionados(props.data.id_laboratorio, (x) => !x); - }; - - return ( - - ); -} diff --git a/src/Views/SistemasMovil/Table.tsx b/src/Views/SistemasMovil/Table.tsx deleted file mode 100644 index df01b0b..0000000 --- a/src/Views/SistemasMovil/Table.tsx +++ /dev/null @@ -1,100 +0,0 @@ -import { StyleSheet, css } from "aphrodite/no-important"; -import { createSignal, For } from "solid-js"; -import { Swiper, SwiperSlide } from "swiper/solid"; -import { horas } from "../../Store"; - -import "swiper/css"; -import { Grupo } from "./Grupo"; - -const s = StyleSheet.create({ - container: { - display: "grid", - gridTemplateColumns: "13vw 1fr", - textAlign: "center", - fontSize: "0.9rem", - }, - tableIndex: { - backgroundColor: "rgb(108,67,75)", - color: "white", - padding: "0.5rem 0.25rem", - textAlign: "center", - width: "42vw", - }, - columna: { - borderRight: "solid 2px var(--color-borde)", - }, - celdaHora: { - position: "relative", - top: "-0.75rem", - height: "3rem", - }, -}); - -export type GrupoDia = { - id_horario: number, - id_laboratorio: number, - abreviado: string, - grupo: string, - offsetVertical: number, // 07:00 -> 0, 07:50 -> 1 - nroHoras: number, - offsetHorizontal: number, // 0, 1, 2 - fraccion: number, // por cuanto dividir la celda. 1, 2, 3, ... -} - -function Dia(props: { dia: string, grupos: Array }) { - const ss = StyleSheet.create({ - contenedorDia: { - position: "relative", - width: "42vw", - }, - }); - return ( -
-
{props.dia}
-
- - {(grupo) => ( - - )} - -
-
- ); -} - -export type TableInput = { - lunes: Array, - martes: Array, - miercoles: Array, - jueves: Array, - viernes: Array, -} - -export function Table(props: { datos: TableInput }) { - const lunes = ; - const martes = ; - const miercoles = ; - const jueves = ; - const viernes = ; - - return ( -
-
-
 
- - {(hora) =>
{hora.substring(0, 5)}
} -
-
- - {lunes} - {martes} - {miercoles} - {jueves} - {viernes} - -
- ); -} diff --git a/src/Views/SistemasMovil/TopBar.tsx b/src/Views/SistemasMovil/TopBar.tsx deleted file mode 100644 index 1a2c365..0000000 --- a/src/Views/SistemasMovil/TopBar.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import { StyleSheet, css } from "aphrodite/no-important"; - -const s = StyleSheet.create({ - bar: { - backgroundColor: "var(--color-primario)", - color: "white", - height: "3.5rem", - display: "flex", - alignItems: "center", - position: "sticky", - top: 0, - zIndex: 100, - }, - icon: { - display: "inline-block", - color: "white", - fontSize: "1.5rem", - verticalAlign: "bottom", - cursor: "pointer", - height: "1.5rem", - padding: "0 0.5rem", - }, - barLabel: { - color: "white", - padding: "0 1rem", - fontWeight: 500, - fontSize: "1.25rem", - }, -}); - -export function TopBar(props: {tituloBarra: string}) { - return ( - - ); -} diff --git a/src/Views/SistemasMovil/mapaCeldas.ts b/src/Views/SistemasMovil/mapaCeldas.ts deleted file mode 100644 index 12153ff..0000000 --- a/src/Views/SistemasMovil/mapaCeldas.ts +++ /dev/null @@ -1,89 +0,0 @@ -import { GrupoDia } from "./Table"; - -export class MapaCeldas { - // Almacena referencias a input - private mapa: Map> = new Map(); - - private disponible(nroFila: number, nroColumna: number): boolean { - if (!this.mapa.has(nroFila)) return true; - - const fila = this.mapa.get(nroFila)!; - - return fila.has(nroColumna) === false; - } - - private obtenerFilaOCrear(nro: number): Map { - if (!this.mapa.has(nro)) { - const m = new Map(); - this.mapa.set(nro, m); - return m; - } - - return this.mapa.get(nro)!; - } - - // Devuelve el offset - public solicitar(inicio: number, cantidad: number): number { - const filas = []; - for (let i = 0; i < cantidad; i += 1) filas.push(inicio + i); - - for (let offsetActual = 0; offsetActual < 8; offsetActual += 1) { - let todasCeldasDisponibles = true; - for (const fila of filas) { - if (!this.disponible(fila, offsetActual)) { - todasCeldasDisponibles = false; - break; - } - } - - if (todasCeldasDisponibles) { - // Crear estas celdas y almacenar - filas.forEach((nroFila) => { - const fila = this.obtenerFilaOCrear(nroFila); - fila.set(offsetActual, null); - }); - - // Devolver nro de offset - return offsetActual; - } - } - - throw new Error("Limite de celdas alcanzado"); - } - - public generarFraccion(nroFila: number, nroColumna: number, cantidad: number): number { - let fraccionActual = 1; - for (let i = 0; i < cantidad; i += 1) { - const nroFilaActual = nroFila + i; - const filaActual = this.mapa.get(nroFilaActual)!; - const numeroColumnas = filaActual.size; - if (numeroColumnas > fraccionActual) { - fraccionActual = numeroColumnas; - } - } - - return fraccionActual; - } -} - -export function generarMapaCeldas(entrada: Readonly>): Array { - const mapa = new MapaCeldas(); - const salida: Array = []; - - // Obtener los offsets de cada curso - for (const input of entrada) { - const offset = mapa.solicitar(input.offsetVertical, input.nroHoras); - salida.push({ - ...input, - offsetHorizontal: offset, - fraccion: -1, - }); - } - - // Generar las fracciones de cada curso - for (const output of salida) { - output.fraccion = mapa.generarFraccion(output.offsetVertical, output.offsetHorizontal, output.nroHoras); - } - - return salida; -} diff --git a/src/Views/VerMatricula.tsx b/src/Views/VerMatricula.tsx deleted file mode 100644 index d3cf54d..0000000 --- a/src/Views/VerMatricula.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import { TopBar } from "./SistemasMovil/TopBar"; -import { Card } from "../components/Card"; -import { createSignal, For } from "solid-js"; -import { getMatricula, InfoMatricula } from "../API/VerMatricula"; -import { gruposSeleccionados } from "../Store"; - -export function VerMatricula() { - const [infoMatriculas, setInfoMatriculas] = createSignal>([]); - - (async() => { - const laboratorios = Object.entries(gruposSeleccionados) - .filter((x) => x[1] === true) - .map((x) => parseInt(x[0], 10)); - setInfoMatriculas(await getMatricula({matriculas: laboratorios})); - })(); - - return ( -
- - -

Tu matrícula

- - {(matricula) => ( -
-

{matricula.nombre_curso}

-

Grupo: {matricula.grupo}

-

Docente: {matricula.docente}

-
- )} -
-
-
- ); -} diff --git a/src/Views/pc/SeleccionCursos.tsx b/src/Views/pc/SeleccionCursos.tsx deleted file mode 100644 index 20f1cf9..0000000 --- a/src/Views/pc/SeleccionCursos.tsx +++ /dev/null @@ -1,135 +0,0 @@ -import { css, StyleSheet } from "aphrodite/no-important"; -import { estilosGlobales } from "../../Estilos"; -import { createSignal, For } from "solid-js"; -import { getAllListaCursos, RespuestaListaCursos } from "../../API/ListaCursos"; - -const e = StyleSheet.create({ - contenedorGlobal: { - width: "100vw", - height: "100vh", - display: "flex", - alignItems: "center", - justifyContent: "center", - }, - cont: { - width: "30rem", - }, - parrafo: { - textAlign: "justify", - lineHeight: "1.4rem", - }, - botonAccion: { - width: "30rem", - display: "inline-block", - textAlign: "center", - }, - iconoGitHub: { - fontSize: "1.25rem", - verticalAlign: "bottom", - marginRight: "0.5rem", - }, - inputCorreo: { - width: "100%", - backgroundColor: "rgba(159,159,159,0.44)", - border: "none", - borderBottom: "solid 2px var(--color-texto)", - padding: "0.5rem 1rem", - boxSizing: "border-box", - marginTop: "1rem", - borderRadius: "5px", - }, - checkbox: { - width: "1.25rem", - height: "1.25rem", - margin: "0 0.5rem", - }, - grid: { - display: "grid", - gridTemplateColumns: "3rem auto", - gridRowGap: "1rem", - }, -}); - -export function SeleccionCursos() { - const [cursos, setCursos] = createSignal({}); - const [msgErr, setMsgError] = createSignal(false); - - // Recuperar cursos de back - (async() => setCursos(await getAllListaCursos()))(); - - const submit = (ev: Event) => { - ev.preventDefault(); - const form = ev.target as HTMLFormElement; - // Los checkboxes - const elements = form.elements; - const idsAEnviar: Array = []; - for (let i = 0; i < elements.length; i += 1) { - const inputBox = elements[i] as HTMLInputElement; - if (inputBox.checked) { - idsAEnviar.push(inputBox.value); - } - } - - if (idsAEnviar.length === 0) { - setMsgError(true); - setTimeout(() => setMsgError(false), 2500); - return; - } - - // Almacenar en localStorage - localStorage.setItem("cursos-seleccionados", JSON.stringify(idsAEnviar)); - // Ir a sig pantalla - window.location.href = "#/pc/sistemas/"; - }; - - return ( -
-
-
-
-

- Seleccion de cursos -

-

Selecciona los cursos en los que matricularte

- - - {([nombreAnio, infoCurso]) => ( - <> -

{nombreAnio} año

-
- - {(curso) => ( - <> - - {curso.nombre_curso} - - )} - -
- - )} -
-
- - Selecciona al menos un curso - -
- - -
-
- ); -} diff --git a/src/Views/pc/Sistemas.tsx b/src/Views/pc/Sistemas.tsx deleted file mode 100644 index 95fee8a..0000000 --- a/src/Views/pc/Sistemas.tsx +++ /dev/null @@ -1,101 +0,0 @@ -import { BarraSuperior } from "../../BarraSuperior"; -import { ContenedorHorarios } from "./Sistemas/ContenedorHorarios"; -import { Creditos } from "../../Creditos"; -import { Separador } from "../../Separador"; -import { createSignal } from "solid-js"; -import { getHorarios, ListaCursosCompleto } from "../../API/CargaHorarios"; -import { Cursos, DatosGrupo } from "../../types/DatosHorario"; -import { infoDiaAListaHoras } from "../SistemasMovil"; -import { StyleSheet, css } from "aphrodite/no-important"; -import { estilosGlobales } from "../../Estilos"; -import { gruposSeleccionados, SERVER_PATH } from "../../Store"; - -const s = StyleSheet.create({ - botonAccion: { - width: "50%", - display: "inline-block", - textAlign: "center", - backgroundColor: "var(--color-primario)", - }, -}); - -export function Sistemas() { - const [data, setData] = createSignal({}); - - // Obtener cursos seleccionados del servidor - (async() => { - const cursos: Array = JSON.parse(localStorage.getItem("cursos-seleccionados") ?? "[]"); - const data = await getHorarios({ - cursos: cursos.map((x) => parseInt(x, 10)), - }); - setData(listaCursosADatos(data)); - })(); - - const matricular = async() => { - const laboratoriosAMatricular = Object.entries(gruposSeleccionados) - .filter((x) => x[1] === true) - .map((x) => x[0]); - - const response = await fetch(`${SERVER_PATH}/matricula`, { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify({ - correo_usuario: localStorage.getItem("correo"), - horarios: laboratoriosAMatricular, - }), - }); - if (response.ok) { - window.location.href = "#/pc/ver-matricula/"; - } else { - alert("No se pudo procesar la matricula"); - } - }; - - return ( -
- - - - - -
- -
- -
- ); -} - -function listaCursosADatos(cursosEntrada: ListaCursosCompleto): Cursos { - const result: Cursos = {}; - - for (const curso of cursosEntrada) { - const gruposLab: {[grupo: string]: DatosGrupo} = {}; - for (const lab of curso.laboratorios) { - gruposLab[lab.grupo] = { - id_laboratorio: lab.id_laboratorio, - Docente: lab.docente, - Horas: infoDiaAListaHoras(lab.horarios), - seleccionado: false, - }; - } - - result[curso.nombre_curso] = { - nombre: curso.nombre_curso, - abreviado: curso.abreviado, - oculto: false, - Teoria: {}, - Laboratorio: gruposLab, - }; - } - - return result; -} - diff --git a/src/Views/pc/Sistemas/ContenedorHorarios.tsx b/src/Views/pc/Sistemas/ContenedorHorarios.tsx deleted file mode 100755 index 61cf7e7..0000000 --- a/src/Views/pc/Sistemas/ContenedorHorarios.tsx +++ /dev/null @@ -1,37 +0,0 @@ -import YAML from "yaml"; -import { css, StyleSheet } from "aphrodite"; -import { MiHorario } from "./ContenedorHorarios/MiHorario"; -import { - Anios, - Cursos, - DatosHorario, - DatosGrupo, -} from "../../../types/DatosHorario"; -import { batch, createEffect, createMemo, createSignal, Show } from "solid-js"; -import { useListaCursos } from "./ContenedorHorarios/useListaCursos"; - -export type EstadoLayout = "MaxPersonal" | "Normal" | "MaxHorarios"; - -const { - listaCursos: cursosUsuario, - setListaCursos: setCursosUsuarios, - agregarCursoALista: agregarCursoUsuario, -} = useListaCursos(); - -export function ContenedorHorarios(props: {datos: Cursos}) { - - createEffect(async() => { - const d2 = props.datos; - batch(() => { - Object.entries(d2).forEach(([_, curso]) => agregarCursoUsuario(curso)); - }); - }); - - return ( - - ); -} diff --git a/src/Views/pc/Sistemas/ContenedorHorarios/MiHorario.tsx b/src/Views/pc/Sistemas/ContenedorHorarios/MiHorario.tsx deleted file mode 100755 index 45f8042..0000000 --- a/src/Views/pc/Sistemas/ContenedorHorarios/MiHorario.tsx +++ /dev/null @@ -1,78 +0,0 @@ -import { estilosGlobales } from "../../../../Estilos"; -import { StyleSheet, css } from "aphrodite"; -import {Tabla} from "./Tabla"; -import { EstadoLayout } from "../ContenedorHorarios"; -import { Switch, Match, createMemo } from "solid-js"; -import {SetStoreFunction} from "solid-js/store"; -import { BotonMaxMin } from "./BotonMaxMin"; -import { BotonIcono } from "./BotonIcono"; -import { Curso, Cursos, ListaCursosUsuario } from "../../../../types/DatosHorario"; -import { CursosElem } from "./CursosElem"; -import { TablaObserver } from "./TablaObserver"; - -interface MiHorarioProps { - cursos: Cursos, - fnAgregarCurso: (c: Curso) => void, - setCursosUsuarios: SetStoreFunction -} - -const e = StyleSheet.create({ - horario: {}, - boton: { - textDecoration: "none", - // paddingRight: "0.5rem", - "::before": { - fontSize: "1rem", - // transform: "translateY(0.2rem)", - textDecoration: "none", - }, - }, -}); - -export function MiHorario(props: MiHorarioProps) { - const tablaObserver = new TablaObserver(); - - const datosMiHorario = createMemo(() => { - const obj: Cursos = {}; - Object.entries(props.cursos).forEach(([_, x], i) => { - obj[i] = x; - }); - return obj; - }); - - return ( -
-
- Mi horario -
- -
- -
- - "Mi horario"} - dataAnio={datosMiHorario()} - fnAgregarCurso={props.fnAgregarCurso} - esCursoMiHorario - setCursosUsuarios={props.setCursosUsuarios} - tablaObserver={tablaObserver} - /> -
- ); -} diff --git a/src/Views/pc/VerMatricula.tsx b/src/Views/pc/VerMatricula.tsx deleted file mode 100644 index 6ed513d..0000000 --- a/src/Views/pc/VerMatricula.tsx +++ /dev/null @@ -1,90 +0,0 @@ -import { css, StyleSheet } from "aphrodite/no-important"; -import { estilosGlobales } from "../../Estilos"; -import { createSignal, For } from "solid-js"; -import { getMatricula, InfoMatricula } from "../../API/VerMatricula"; -import { gruposSeleccionados } from "../../Store"; - -const e = StyleSheet.create({ - contenedorGlobal: { - width: "100vw", - height: "100vh", - display: "flex", - alignItems: "center", - justifyContent: "center", - }, - cont: { - width: "30rem", - }, - parrafo: { - textAlign: "justify", - lineHeight: "1.4rem", - }, - botonAccion: { - width: "30rem", - display: "inline-block", - textAlign: "center", - }, - iconoGitHub: { - fontSize: "1.25rem", - verticalAlign: "bottom", - marginRight: "0.5rem", - }, - inputCorreo: { - width: "100%", - backgroundColor: "rgba(159,159,159,0.44)", - border: "none", - borderBottom: "solid 2px var(--color-texto)", - padding: "0.5rem 1rem", - boxSizing: "border-box", - marginTop: "1rem", - borderRadius: "5px", - }, - checkbox: { - width: "1.25rem", - height: "1.25rem", - margin: "0 0.5rem", - }, - grid: { - display: "grid", - gridTemplateColumns: "3rem auto", - gridRowGap: "1rem", - }, -}); - -export function VerMatricula() { - const [infoMatriculas, setInfoMatriculas] = createSignal>([]); - - (async() => { - const laboratorios = Object.entries(gruposSeleccionados) - .filter((x) => x[1] === true) - .map((x) => parseInt(x[0], 10)); - setInfoMatriculas(await getMatricula({matriculas: laboratorios})); - })(); - - return ( -
-
- -
-

- Matricula realizada -

- - {(matricula) => ( -
-

{matricula.nombre_curso}

-

Grupo: {matricula.grupo}

-

Docente: {matricula.docente}

-
- )} -
- -
-
-
- ); -} diff --git a/src/components/Button.tsx b/src/components/Button.tsx deleted file mode 100644 index 043c7ae..0000000 --- a/src/components/Button.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import { StyleSheet, css } from "aphrodite/no-important"; - -export function Button(props: {texto: string, onClick?: () => void}) { - const s = StyleSheet.create({ - boton: { - backgroundColor: "var(--color-primario)", - color: "white", - padding: "1rem 5rem", - borderRadius: "25px", - margin: "1.5rem 0", - boxShadow: "2px 2px 2px 0 gray", - cursor: "pointer", - }, - }); - return ( - - ); -} diff --git a/src/components/Card.tsx b/src/components/Card.tsx deleted file mode 100644 index 7cc6ebd..0000000 --- a/src/components/Card.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import { JSX } from "solid-js"; -import { StyleSheet, css } from "aphrodite/no-important"; - -const s = StyleSheet.create({ - card: { - padding: "0.5rem", - border: "solid 2px var(--color-borde)", - borderRadius: "10px", - margin: "0.5rem", - }, -}); - -export function Card(props: {children?: JSX.Element}) { - return ( -
- {props.children} -
- ); -} diff --git a/src/styles/global.css b/src/styles/global.css index 1df264e..1db1445 100755 --- a/src/styles/global.css +++ b/src/styles/global.css @@ -1,7 +1,6 @@ :root { --color-texto: white; --color-primario: #531925; - --color-borde: rgba(83, 25, 37, 0.49); } body { diff --git a/src/types/DatosHorario.ts b/src/types/DatosHorario.ts index 91210a0..3eb6c34 100755 --- a/src/types/DatosHorario.ts +++ b/src/types/DatosHorario.ts @@ -27,7 +27,6 @@ export interface DatosHorarioRaw { } export interface DatosGrupo { - id_laboratorio: number, Docente: string, Horas: string[] seleccionado: boolean @@ -45,8 +44,9 @@ export interface Curso { } } -export type ListaCursosUsuario = { - [key: string]: Curso +export interface ListaCursosUsuario { + sigIndice: number, + cursos: Curso[] } export interface Cursos {