From 6c346006c327a1e21f323cdd0148c831fe59c3cf Mon Sep 17 00:00:00 2001 From: Jits Date: Fri, 16 Feb 2024 10:57:06 +0000 Subject: [PATCH] First pass on docs update --- README.md | 319 +++++++++++++- app/package.json | 53 +-- app/pnpm-lock.yaml | 821 ++++++++++++++++++----------------- app/src/index.html | 2 +- app/src/manifest.webmanifest | 4 +- firebase/package.json | 10 +- firebase/pnpm-lock.yaml | 597 +++++++++++++------------ project.code-workspace | 2 +- 8 files changed, 1081 insertions(+), 727 deletions(-) diff --git a/README.md b/README.md index a41c863..f63a976 100644 --- a/README.md +++ b/README.md @@ -1,30 +1,319 @@ -# The [FullStacksDev](https://FullStacks.dev) Angular and Firebase base template +# [FullStacksDev](https://FullStacks.dev) Angular and Firebase base template -## How to use and set up this template +Part of the curated **[FullStacksDev](https://FullStacks.dev) Angular and Firebase tech stack**. For solo devs and very small teams. -1. Start a new repo from the base template. - - TODO: explain how to do this from the GitHub UI, as well as using the `gh` CLI. -1. Git clone it locally. +A great starting point for building your own web app — aiming to be lean and useful enough so you can hit the ground running and focus on stuff that matters. You are free to use it as you want, whether it's to build a prototype, an internal tool, a side project, or the next million-dollar app. + +This base template gives you an empty app skeleton with the following included: + +- Simple folder-based monorepo with completely separate frontend ([`app`](./app)) and backend ([`firebase`](./firebase/)) folders (with a VSCode workspace config to work on both at the same time). +- A place for shared common code between frontend and backend ([`firebase/common`](./firebase/common/)). +- Modern Angular features configured and used throughout (inject function, signals, signal inputs, router input bindings, control flow, etc.) +- Full Firebase local development and testing using the Firebase Emulator Suite (with local persistence of emulator data) +- Firebase Hosting, Auth, Firestore, Realtime Database, Cloud Functions and Cloud Storage all set up and ready to use. +- Firebase Hosting configured with appropriate caching rules. +- Basic progressive web app (PWA) set up (manifest, service worker, icons, etc) with in-app update notification. +- Static pre-rendered pages (home and about), configured to work with Firebase Hosting and the PWA set up. +- State management using NgRx Signals. +- Global auth store and auth guard. +- Login flow using [Firebase Auth's Email Link](https://firebase.google.com/docs/auth/web/email-link-auth). +- Angular Material and Tailwind CSS (with styling overrides to make them work well together). +- Client side helpers to inject Firebase services. +- [RxFire](https://github.com/FirebaseExtended/rxfire) used for Observable wrappers for Firebase access. +- Client side logging using [consola](https://github.com/unjs/consola). +- VSCode, ESLint, Prettier, etc. all set up for a consistent development experience. +- Continuous integration (CI) set up with GitHub Actions (for linting, tests and builds). +- Deploy script to deploy to a "live" Firebase project (which you set up). +- Basic app tests using Jasmine and ng-mocks. +- Firebase security rules test suites using the Firebase Emulator Suite. + +For more details see the "Architecture and design decisions" section below. + +## The tech stack + +> [!NOTE] +> Basic familiarity with the technologies / services listed is required to make the best of this tech stack and template. + +- [Node.js](https://nodejs.org/en/) v20.x +- [TypeScript](https://www.typescriptlang.org/) v5.3 +- [Angular](https://angular.io/) v17.2 +- [Angular Material](https://material.angular.io/) v17.2 +- [Tailwind CSS](https://tailwindcss.com/) v3.4 +- [NgRx Signals](https://ngrx.io/guide/signals) v17.1 +- [RxFire](https://github.com/FirebaseExtended/rxfire) v6 +- [Firebase](https://firebase.google.com/) + - [Hosting](https://firebase.google.com/products/hosting) + - [Authentication](https://firebase.google.com/products/auth) + - [Firestore](https://firebase.google.com/products/firestore) + - [Realtime Database](https://firebase.google.com/products/realtime-database) + - [Cloud Functions](https://firebase.google.com/products/functions) + - [Cloud Storage](https://firebase.google.com/products/storage) + +### For local development, testing and deployment + +- [Git](https://git-scm.com/) for version control. +- [GitHub](https://github.com/) for hosting the code and running the CI pipeline. +- [VSCode](https://code.visualstudio.com/) as the main editor. +- [pnpm](https://pnpm.io/) as the package manager. +- [Angular CLI](https://angular.io/cli). +- [Firebase CLI](https://firebase.google.com/docs/cli). +- [Firebase Emulator Suite](https://firebase.google.com/docs/emulator-suite) for local Firebase services. +- [ESLint](https://eslint.org/) for linting. +- [Prettier](https://prettier.io/) for code formatting. +- [Jasmine](https://jasmine.github.io/) for Angular unit testing. +- [ng-mocks](https://ng-mocks.sudo.eu/) for Angular testing and mocking helpers. +- [Vitest](https://vitejs.dev/guide/why) for Firebase testing. + +## How do I use this template? + +Full instructions on how to use this template are outlined below. + +This template is designed to be easily reused as part of the GitHub new repo creation flow, using [GitHub's template repository feature](https://docs.github.com/en/repositories/creating-and-managing-repositories/creating-a-template-repository). + +### Pre-requisites — what you need locally before you start + +- [Node.js](https://nodejs.org/en/) + - It's recommended to use [nvm](https://github.com/nvm-sh/nvm) to manage Node.js versions locally. You can run `nvm use` in the root of the repo to use the correct Node.js version (picked up from the `.nvmrc` file). +- [pnpm](https://pnpm.io/) + - You can install this globally with `npm install -g pnpm`. +- [Git](https://git-scm.com/) + - You can use the GitHub Desktop app (or similar tool) if you prefer. +- [VSCode](https://code.visualstudio.com/) + - You're welcome to use a different editor, but the workspace settings and integrations are set up for VSCode. +- [Angular CLI](https://angular.io/cli) + - You can install this globally with `npm install -g @angular/cli`. + - If you want, you can also set `pnpm` as the default package manager for Angular CLI by running `ng config -g cli.packageManager pnpm` (not necessary for this project, but useful for other projects). +- [Firebase CLI](https://firebase.google.com/docs/cli) + - You can install this globally with `npm install -g firebase-tools`. + - You'll also need to log in using `firebase login`. + +### Steps to create your own app from this template + +1. Create a new GitHub repo from the base template. + - See [the GitHub instructions on how to create a new repo from a template](https://docs.github.com/en/repositories/creating-and-managing-repositories/creating-a-repository-from-a-template) (either via the GitHub UI or the GitHub CLI). + - We recommend **not** selecting "Include all branches" when creating the new repo. +1. Git clone your new repo locally. + - You can find instructions for this in the GitHub UI after creating the repo. 1. Open a terminal and open the following 3 panes / tabs: 1. For the root of the project: `cd` into the root of the repo 1. For the `app` folder: `cd` into the `app` folder within the repo 1. For the `firebase` folder: `cd` into the `firebase` folder within the repo 1. Run `pnpm install` in both the `app` and `firebase` folders. 1. Run `./edit` in the root to open VSCode with the workspace. + - This will open the workspace with the `app` and `firebase` folders as separate groups in the explorer. + - The workspace settings come with some extension recommendations. When you first open the workspace you may be alerted to this and given the option to install them (the alert only shows if you don't already have them installed). It's highly recommended to install these extensions to get the best development experience. 1. Update the `window.title` in the `project.code-workspace` file. - - You can open this file to edit by opening the command palette and then searching for (and selecting) “Preferences: Open Workspace Settings (JSON)”. -1. Set up the live Firebase project: - - Create a new Firebase project (TODO — need to write up these instructions). - - Use the credentials from this to update the `environment.live.ts` file. - - Update the project ID in `.firebaserc` -1. Run `pnpm dev` in both the `app` and `firebase` folders. + - You can open this file to edit by opening the VSCode command palette and searching for (and selecting) "Preferences: Open Workspace Settings (JSON)". +1. Update the app name in a couple of places: + - `app/src/manifest.webmanifest` — update the `name` and `short_name` fields. + - `app/src/index.html` — update the `` tag. +1. Set up your live Firebase project and add the configuration to the app: + 1. See the next section for instructions on how to set up your "live" Firebase project, and then come back here. + 1. Take the newly created "PWA" config from the step above and update the `firebaseConfig` object in the `environment.live.ts` file. + 1. Update the project ID in `.firebaserc` +1. Run `pnpm dev` in both the `app` and `firebase` folders (in the separate terminal tabs). + - This will start the separate local development servers for the frontend and backend, including the Firebase Emulator Suite. 1. Open a browser tab to `http://localhost:4200` and check that the app is running. -1. Customise the `HomePageComponent` to add some project specific text and test that it all looks and works okay locally. +1. Customize the `HomePageComponent` to add some project specific text and test that it all looks and works okay locally. +1. Run `pnpm test` in both the `app` and `firebase` folders to check that all existing tests pass. + - Note: to exit out of the dev processes (from the previous step) you can press `Cmd+C` or `Ctrl+C` in the terminal. + - You should notice that the `HomePageComponent` test fails because you've changed the text. Fix this test to have the updated text and watch as the test suite goes green. 1. Run `pnpm build` in the `app` folder to test the production build. -1. Run `./deploy` in the root to deploy the app to the live Firebase project. + - Note: this is not necessary to do a deploy, but it's useful to check that the production build works as expected. +1. Edit or delete the root `README.md` file as you see fit. + - Because VSCode Workspaces [don't support adding single files](https://github.com/microsoft/vscode/issues/45177), you can open the files at the root of the repo (like `README.md`, `edit` and `deploy`) by running `code {filename}` in the terminal (in the root folder). This will open the file in the current VSCode window. +1. Commit your changes to a branch in your local Git repository and push to GitHub, then open a pull request (PR) from your branch (on GitHub). + - It's good to get in the habit of pushing changes up to GitHub, preferably in a separate branch first, as you work on your app. + - When you make (or update) a pull request (PR) on GitHub, or merge to the `main` branch, the CI pipeline will run the linting, tests and build processes to check that everything is okay. Once this is green you can continue with the deploy locally. +1. Run `./deploy` in the root to build and deploy the app to the live Firebase project. - This script will prompt you for confirmation before running anything. + - It will fail if you haven't already logged into to Firebase using `firebase login` locally. + - The first time you run this, Firebase will likely ask you to enable more permissions on the project. Go ahead and do this when prompted. 1. Open the link to the live site (from the Firebase deploy output) and check that it all works as expected. +1. Celebrate! 🎉 +1. Start building your app. + - See the "Architecture and design decisions" and "How-to guides" sections below for more details. + +### Setting up your "live" Firebase project + +1. Go to the [Firebase Console](https://console.firebase.google.com/). +1. Click "Add project" and follow the steps to create a new project. + - Tip: call your project "{project name} LIVE" to make it stand out in the list of projects. + - Don't enable Google Analytics. +1. Once the project is created, let's configure some settings and services: + 1. Click the cog icon next to "Project Overview" ar the top of the left hand sidebar and select "Project settings". + 1. Set the "Default GCP resource location" to the location closest to you. Note that this cannot be changed later so choose wisely. + 1. Set the "Environment type" to "Production". + 1. In the "Your apps" section click the icon representing web app ("</>") and give the app a name, like "PWA". You can skip the Firebase Hosting setup for now. You'll copy the config at the end of this Firebase project set up process (see below). + 1. If you plan on using Firebase Functions then you need to be on [a paid plan](https://firebase.google.com/pricing) (as Functions are not supported on the free tier). Use the "Upgrade" button at the bottom of the left hand sidebar (this will need a billing account to be set up). + - The base template doesn't come with functions out of the box so it can be used on [the free tier](https://firebase.google.com/pricing) if needed. + - You'll be able to set a budget alert as part of the upgrade process. + - IMPORTANT: Firebase won't actually stop charging you if you go over the budget amount, so keep a very close eye on usage and make sure you understand your usage patterns (and the costs associated with them). + - This is covered in more detail in the [advanced example app](TODO). + 1. Click "Authentication" in the left hand menu (under "Build") and enable the "Email/Password" sign-in method together with the "Email link (passwordless sign-in)" option too (on the same page). + 1. Click "Firestore" (under "Build") in the left hand menu and create a Firestore database. + - Make sure to select a location that matches (or is close to) the "Default GCP resource location" you set earlier. + - Start in "production mode" for now. + - Note: sometimes, this process fails or the Firestore database is created in "datastore mode" instead of "native mode". If this happens, go to the <https://console.cloud.google.com/> and find that Firestore instance and click on the option to switch to "native mode". (I know, this is annoying, sorry). + 1. Click "Realtime Database" (under "Build") in the left hand menu and create a Realtime Database. + - Make sure to select a location that matches (or is close to) the "Default GCP resource location" you set earlier. + - Start in "locked mode" for now. + - Note: after this is created, you may need to go back to the config and copy the + 1. Click "Storage" (under "Build") in the left hand menu and click on "Get started" and create it. + - Start in "production mode" for now. + 1. Click "Hosting" (under "Build") in the left hand menu and set up Firebase Hosting. + - You can skip the instructions they give as that should all be done already. + 1. Go back to the "Project setting" and copy the `firebaseConfig` object — you'll need this to continue setting up the app. + +### Quick overview + +- The Angular app is in the `app` folder. +- All static pre-rendered pages are in the `app/src/app/website` folder. +- Shared code for the app is in the `app/src/app/shared` folder. +- The Firebase config etc. is all in the `firebase` folder. +- The code for the Firebase functions are in the `firebase/functions` folder. +- Shared common code is in the `firebase/common` folder + - The app can use anything exported here by importing from `@common`. +- All Firebase security rules (for Firestore, Realtime Database and Storage) are managed in their relevant files in the `firebase` folder, and are deployed with the app to the live Firebase project. + +### Tips and tricks + +- To configure various aspects of Firebase (like a custom domain name, emails, etc.) see the "How-to guides" section below. +- The Firestore and Realtime Database security rules ([`firestore.rules`](./firebase/firestore.rules) and [`database.rules.json`](./firebase/database.rules.json), respectively) are locked down by default. You'll need to update these as you start interacting with Firestore and Realtime Database in your app. + - If you only plan to use these from the backend functions then you can keep the rules locked down, as the Firebase Admin SDK has full access. + +## Local development, testing and deploy + +Open VSCode with the workspace: + +```shell +./edit +``` + +Run dev servers, in both the `app` and `firebase` folders: + +```shell +pnpm dev +``` + +Run the linter (ESLint), in both the `app` and `firebase` folders: + +```shell +pnpm lint +``` + +Run tests, in both the `app` and `firebase` folders: + +```shell +pnpm test +``` + +Build the app (if you want to test the production build test locally), in the `app` folder: + +```shell +pnpm build +``` + +Deploy the app to the "live" Firebase project, in the root folder: + +```shell +./deploy +``` + +## Updating + +### How to update your app with the latest base template + +TODO + +### How to update dependencies + +TODO + +## Architecture and design decisions + +This section goes through the overall architecture and design decisions made for this template (and the associated [FullStacksDev](https://FullStacks.dev) Angular and Firebase tech stack). + +### Folder-based monorepo structure + +TODO + +### The shared "common" code between frontend and backend + +TODO + +### Frontend (app) architecture and folder structure + +TODO + +- Static pre-rendered pages vs dynamic +- Shared folder +- Top level feature-based folders +- High level type-based folders within feature and shared folders. (Inspired by Nx — TODO: link the relevant Nx doc page). + +### Backend (Firebase) architecture and folder structure + +TODO + +### Firebase Hosting and PWA set up + +TODO + +### Local development and testing using the Firebase Emulator + +TODO + +Demo project... + +This does mean you can't use Firebase services that don't support the local emulator. + +### One "live" Firebase project / environment + +TODO + +### How the deploy works + +TODO + +### State management using NgRx Signals + +TODO + +### Authentication and login flow + +TODO + +## How-to guides + +### Adding a new static / pre-rendered page + +TODO + +### Adding your dynamic app + +TODO + +### Setting up a custom domain + +TODO + +### Customizing the Firebase emails + +TODO + +## How we decide what goes into the base template + +It's important that the base template is as lean and broadly useful as possible, whilst maintaining the opinionated approach to the tech stack, architecture and patterns that we are developing as part of the _curated tech stacks_ approach in [FullStacksDev](https://FullStacks.dev). + +For this reason, we carefully consider what goes into the base template and err on the side of caution. New capabilities are only added to the base template when they are proven to be broadly useful and fit within the tech stack, by first applying them to real-world projects and the example apps. + +## What next? Check out the example apps for this tech stack… + +If you want to continue learning more about the [FullStacksDev](https://FullStacks.dev) Angular and Firebase tech stack you can check out the simple and advanced example apps that are built using this template: + +- [Simple example app](TODO) +- [Advanced example app](TODO) -## Tips and tricks +These apps showcase the capabilities of the tech stack and give you an opinionated, pragmatic and in-depth learning experience. Each come with comprehensive documentation and learning content covering architecture, design decisions, data models, patterns, practices, tech stack capabilities and more. -- Because VSCode Workspaces [don't support adding single files](https://github.com/microsoft/vscode/issues/45177), you can open the files at the root of the repo (like `README.md`, `edit` and `deploy`) by running `code {filename}` in the terminal (in the root folder). This will open the file in the current VSCode window. +You can read more about the purpose and specs of the example apps here: TODO: link to the example apps spec page diff --git a/app/package.json b/app/package.json index b17a8a8..57e9ad8 100644 --- a/app/package.json +++ b/app/package.json @@ -13,51 +13,54 @@ "serve:ssr:app": "node dist/app/server/server.mjs", "lint": "ng lint" }, + "engines": { + "node": "20" + }, "private": true, "dependencies": { - "@angular/animations": "^17.2.1", - "@angular/cdk": "17.2.0", - "@angular/common": "^17.2.1", - "@angular/compiler": "^17.2.1", - "@angular/core": "^17.2.1", - "@angular/forms": "^17.2.1", - "@angular/material": "17.2.0", - "@angular/platform-browser": "^17.2.1", - "@angular/platform-browser-dynamic": "^17.2.1", - "@angular/platform-server": "^17.2.1", - "@angular/router": "^17.2.1", - "@angular/service-worker": "^17.2.1", - "@angular/ssr": "^17.2.0", - "@ngrx/operators": "^17.1.0", - "@ngrx/signals": "^17.1.0", + "@angular/animations": "^17.2.3", + "@angular/cdk": "17.2.1", + "@angular/common": "^17.2.3", + "@angular/compiler": "^17.2.3", + "@angular/core": "^17.2.3", + "@angular/forms": "^17.2.3", + "@angular/material": "17.2.1", + "@angular/platform-browser": "^17.2.3", + "@angular/platform-browser-dynamic": "^17.2.3", + "@angular/platform-server": "^17.2.3", + "@angular/router": "^17.2.3", + "@angular/service-worker": "^17.2.3", + "@angular/ssr": "^17.2.2", + "@ngrx/operators": "^17.1.1", + "@ngrx/signals": "^17.1.1", "consola": "^3.2.3", "express": "^4.18.2", - "firebase": "^10.8.0", - "ngxtension": "^2.0.0", + "firebase": "^10.8.1", + "ngxtension": "^2.1.0", "rxfire": "^6.0.5", "rxjs": "~7.8.0", "tslib": "^2.3.0", "zone.js": "~0.14.4" }, "devDependencies": { - "@angular-devkit/build-angular": "^17.2.0", + "@angular-devkit/build-angular": "^17.2.2", "@angular-eslint/builder": "17.2.1", "@angular-eslint/eslint-plugin": "17.2.1", "@angular-eslint/eslint-plugin-template": "17.2.1", "@angular-eslint/schematics": "17.2.1", "@angular-eslint/template-parser": "17.2.1", - "@angular/cli": "^17.2.0", - "@angular/compiler-cli": "^17.2.1", + "@angular/cli": "^17.2.2", + "@angular/compiler-cli": "^17.2.3", "@types/express": "^4.17.17", "@types/jasmine": "~5.1.0", - "@types/node": "^20.11.19", - "@typescript-eslint/eslint-plugin": "7.0.1", - "@typescript-eslint/parser": "7.0.1", + "@types/node": "^20.11.22", + "@typescript-eslint/eslint-plugin": "7.1.0", + "@typescript-eslint/parser": "7.1.0", "autoprefixer": "^10.4.17", - "eslint": "^8.56.0", + "eslint": "^8.57.0", "eslint-config-prettier": "^9.1.0", "jasmine-core": "~5.1.2", - "karma": "~6.4.0", + "karma": "~6.4.3", "karma-chrome-launcher": "~3.2.0", "karma-coverage": "~2.2.0", "karma-jasmine": "~5.1.0", diff --git a/app/pnpm-lock.yaml b/app/pnpm-lock.yaml index eb5fdb1..9634863 100644 --- a/app/pnpm-lock.yaml +++ b/app/pnpm-lock.yaml @@ -6,50 +6,50 @@ settings: dependencies: '@angular/animations': - specifier: ^17.2.1 - version: 17.2.1(@angular/core@17.2.1) + specifier: ^17.2.3 + version: 17.2.3(@angular/core@17.2.3) '@angular/cdk': - specifier: 17.2.0 - version: 17.2.0(@angular/common@17.2.1)(@angular/core@17.2.1)(rxjs@7.8.1) + specifier: 17.2.1 + version: 17.2.1(@angular/common@17.2.3)(@angular/core@17.2.3)(rxjs@7.8.1) '@angular/common': - specifier: ^17.2.1 - version: 17.2.1(@angular/core@17.2.1)(rxjs@7.8.1) + specifier: ^17.2.3 + version: 17.2.3(@angular/core@17.2.3)(rxjs@7.8.1) '@angular/compiler': - specifier: ^17.2.1 - version: 17.2.1(@angular/core@17.2.1) + specifier: ^17.2.3 + version: 17.2.3(@angular/core@17.2.3) '@angular/core': - specifier: ^17.2.1 - version: 17.2.1(rxjs@7.8.1)(zone.js@0.14.4) + specifier: ^17.2.3 + version: 17.2.3(rxjs@7.8.1)(zone.js@0.14.4) '@angular/forms': - specifier: ^17.2.1 - version: 17.2.1(@angular/common@17.2.1)(@angular/core@17.2.1)(@angular/platform-browser@17.2.1)(rxjs@7.8.1) + specifier: ^17.2.3 + version: 17.2.3(@angular/common@17.2.3)(@angular/core@17.2.3)(@angular/platform-browser@17.2.3)(rxjs@7.8.1) '@angular/material': - specifier: 17.2.0 - version: 17.2.0(@angular/animations@17.2.1)(@angular/cdk@17.2.0)(@angular/common@17.2.1)(@angular/core@17.2.1)(@angular/forms@17.2.1)(@angular/platform-browser@17.2.1)(rxjs@7.8.1) + specifier: 17.2.1 + version: 17.2.1(@angular/animations@17.2.3)(@angular/cdk@17.2.1)(@angular/common@17.2.3)(@angular/core@17.2.3)(@angular/forms@17.2.3)(@angular/platform-browser@17.2.3)(rxjs@7.8.1) '@angular/platform-browser': - specifier: ^17.2.1 - version: 17.2.1(@angular/animations@17.2.1)(@angular/common@17.2.1)(@angular/core@17.2.1) + specifier: ^17.2.3 + version: 17.2.3(@angular/animations@17.2.3)(@angular/common@17.2.3)(@angular/core@17.2.3) '@angular/platform-browser-dynamic': - specifier: ^17.2.1 - version: 17.2.1(@angular/common@17.2.1)(@angular/compiler@17.2.1)(@angular/core@17.2.1)(@angular/platform-browser@17.2.1) + specifier: ^17.2.3 + version: 17.2.3(@angular/common@17.2.3)(@angular/compiler@17.2.3)(@angular/core@17.2.3)(@angular/platform-browser@17.2.3) '@angular/platform-server': - specifier: ^17.2.1 - version: 17.2.1(@angular/animations@17.2.1)(@angular/common@17.2.1)(@angular/compiler@17.2.1)(@angular/core@17.2.1)(@angular/platform-browser@17.2.1) + specifier: ^17.2.3 + version: 17.2.3(@angular/animations@17.2.3)(@angular/common@17.2.3)(@angular/compiler@17.2.3)(@angular/core@17.2.3)(@angular/platform-browser@17.2.3) '@angular/router': - specifier: ^17.2.1 - version: 17.2.1(@angular/common@17.2.1)(@angular/core@17.2.1)(@angular/platform-browser@17.2.1)(rxjs@7.8.1) + specifier: ^17.2.3 + version: 17.2.3(@angular/common@17.2.3)(@angular/core@17.2.3)(@angular/platform-browser@17.2.3)(rxjs@7.8.1) '@angular/service-worker': - specifier: ^17.2.1 - version: 17.2.1(@angular/common@17.2.1)(@angular/core@17.2.1) + specifier: ^17.2.3 + version: 17.2.3(@angular/common@17.2.3)(@angular/core@17.2.3) '@angular/ssr': - specifier: ^17.2.0 - version: 17.2.0(@angular/common@17.2.1)(@angular/core@17.2.1) + specifier: ^17.2.2 + version: 17.2.2(@angular/common@17.2.3)(@angular/core@17.2.3) '@ngrx/operators': - specifier: ^17.1.0 - version: 17.1.0(rxjs@7.8.1) + specifier: ^17.1.1 + version: 17.1.1(rxjs@7.8.1) '@ngrx/signals': - specifier: ^17.1.0 - version: 17.1.0(@angular/core@17.2.1)(rxjs@7.8.1) + specifier: ^17.1.1 + version: 17.1.1(@angular/core@17.2.3)(rxjs@7.8.1) consola: specifier: ^3.2.3 version: 3.2.3 @@ -57,14 +57,14 @@ dependencies: specifier: ^4.18.2 version: 4.18.2 firebase: - specifier: ^10.8.0 - version: 10.8.0 + specifier: ^10.8.1 + version: 10.8.1 ngxtension: - specifier: ^2.0.0 - version: 2.0.0(@angular/common@17.2.1)(@angular/core@17.2.1)(@use-gesture/vanilla@10.3.0)(rxjs@7.8.1) + specifier: ^2.1.0 + version: 2.1.0(@angular/common@17.2.3)(@angular/core@17.2.3)(@use-gesture/vanilla@10.3.0)(rxjs@7.8.1) rxfire: specifier: ^6.0.5 - version: 6.0.5(firebase@10.8.0)(rxjs@7.8.1) + version: 6.0.5(firebase@10.8.1)(rxjs@7.8.1) rxjs: specifier: ~7.8.0 version: 7.8.1 @@ -77,29 +77,29 @@ dependencies: devDependencies: '@angular-devkit/build-angular': - specifier: ^17.2.0 - version: 17.2.0(@angular/compiler-cli@17.2.1)(@angular/platform-server@17.2.1)(@angular/service-worker@17.2.1)(@types/express@4.17.21)(@types/node@20.11.19)(karma@6.4.2)(tailwindcss@3.4.1)(typescript@5.3.3) + specifier: ^17.2.2 + version: 17.2.2(@angular/compiler-cli@17.2.3)(@angular/platform-server@17.2.3)(@angular/service-worker@17.2.3)(@types/express@4.17.21)(@types/node@20.11.22)(karma@6.4.3)(tailwindcss@3.4.1)(typescript@5.3.3) '@angular-eslint/builder': specifier: 17.2.1 - version: 17.2.1(eslint@8.56.0)(typescript@5.3.3) + version: 17.2.1(eslint@8.57.0)(typescript@5.3.3) '@angular-eslint/eslint-plugin': specifier: 17.2.1 - version: 17.2.1(eslint@8.56.0)(typescript@5.3.3) + version: 17.2.1(eslint@8.57.0)(typescript@5.3.3) '@angular-eslint/eslint-plugin-template': specifier: 17.2.1 - version: 17.2.1(eslint@8.56.0)(typescript@5.3.3) + version: 17.2.1(eslint@8.57.0)(typescript@5.3.3) '@angular-eslint/schematics': specifier: 17.2.1 - version: 17.2.1(@angular/cli@17.2.0)(eslint@8.56.0)(typescript@5.3.3) + version: 17.2.1(@angular/cli@17.2.2)(eslint@8.57.0)(typescript@5.3.3) '@angular-eslint/template-parser': specifier: 17.2.1 - version: 17.2.1(eslint@8.56.0)(typescript@5.3.3) + version: 17.2.1(eslint@8.57.0)(typescript@5.3.3) '@angular/cli': - specifier: ^17.2.0 - version: 17.2.0 + specifier: ^17.2.2 + version: 17.2.2 '@angular/compiler-cli': - specifier: ^17.2.1 - version: 17.2.1(@angular/compiler@17.2.1)(typescript@5.3.3) + specifier: ^17.2.3 + version: 17.2.3(@angular/compiler@17.2.3)(typescript@5.3.3) '@types/express': specifier: ^4.17.17 version: 4.17.21 @@ -107,29 +107,29 @@ devDependencies: specifier: ~5.1.0 version: 5.1.4 '@types/node': - specifier: ^20.11.19 - version: 20.11.19 + specifier: ^20.11.22 + version: 20.11.22 '@typescript-eslint/eslint-plugin': - specifier: 7.0.1 - version: 7.0.1(@typescript-eslint/parser@7.0.1)(eslint@8.56.0)(typescript@5.3.3) + specifier: 7.1.0 + version: 7.1.0(@typescript-eslint/parser@7.1.0)(eslint@8.57.0)(typescript@5.3.3) '@typescript-eslint/parser': - specifier: 7.0.1 - version: 7.0.1(eslint@8.56.0)(typescript@5.3.3) + specifier: 7.1.0 + version: 7.1.0(eslint@8.57.0)(typescript@5.3.3) autoprefixer: specifier: ^10.4.17 version: 10.4.17(postcss@8.4.35) eslint: - specifier: ^8.56.0 - version: 8.56.0 + specifier: ^8.57.0 + version: 8.57.0 eslint-config-prettier: specifier: ^9.1.0 - version: 9.1.0(eslint@8.56.0) + version: 9.1.0(eslint@8.57.0) jasmine-core: specifier: ~5.1.2 version: 5.1.2 karma: - specifier: ~6.4.0 - version: 6.4.2 + specifier: ~6.4.3 + version: 6.4.3 karma-chrome-launcher: specifier: ~3.2.0 version: 3.2.0 @@ -138,13 +138,13 @@ devDependencies: version: 2.2.1 karma-jasmine: specifier: ~5.1.0 - version: 5.1.0(karma@6.4.2) + version: 5.1.0(karma@6.4.3) karma-jasmine-html-reporter: specifier: ~2.1.0 - version: 2.1.0(jasmine-core@5.1.2)(karma-jasmine@5.1.0)(karma@6.4.2) + version: 2.1.0(jasmine-core@5.1.2)(karma-jasmine@5.1.0)(karma@6.4.3) ng-mocks: specifier: ^14.12.1 - version: 14.12.1(@angular/common@17.2.1)(@angular/core@17.2.1)(@angular/forms@17.2.1)(@angular/platform-browser@17.2.1) + version: 14.12.1(@angular/common@17.2.3)(@angular/core@17.2.3)(@angular/forms@17.2.3)(@angular/platform-browser@17.2.3) postcss: specifier: ^8.4.35 version: 8.4.35 @@ -181,18 +181,18 @@ packages: '@jridgewell/trace-mapping': 0.3.22 dev: true - /@angular-devkit/architect@0.1702.0: - resolution: {integrity: sha512-+HkOYhdq8ez2+yqpxaQ6XtQevOYJNaDpM4oDmZ2lIpiIusFNsmpY2b9iL5PZGb4EfUgN8KsY3n9Q9fmRlRB9eA==} + /@angular-devkit/architect@0.1702.2: + resolution: {integrity: sha512-qBvif8/NquFUqVQgs4U+8wXh/rQZv+YlYwg6eDZly1bIaTd/k9spko/seTtNT1OpK/Be+GLo5IbiQ7i2SON3iQ==} engines: {node: ^18.13.0 || >=20.9.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} dependencies: - '@angular-devkit/core': 17.2.0 + '@angular-devkit/core': 17.2.2 rxjs: 7.8.1 transitivePeerDependencies: - chokidar dev: true - /@angular-devkit/build-angular@17.2.0(@angular/compiler-cli@17.2.1)(@angular/platform-server@17.2.1)(@angular/service-worker@17.2.1)(@types/express@4.17.21)(@types/node@20.11.19)(karma@6.4.2)(tailwindcss@3.4.1)(typescript@5.3.3): - resolution: {integrity: sha512-zO2YKcRRL3Ck3KZ3Ir/lWlciYIguJd3W9iYICKkeK4whi94y3NhrCy0Iualoo2WP7hE043uKQ0SwtVABft0SgA==} + /@angular-devkit/build-angular@17.2.2(@angular/compiler-cli@17.2.3)(@angular/platform-server@17.2.3)(@angular/service-worker@17.2.3)(@types/express@4.17.21)(@types/node@20.11.22)(karma@6.4.3)(tailwindcss@3.4.1)(typescript@5.3.3): + resolution: {integrity: sha512-K55xBiWBfxD4wmxLR2viOPbBryOk6YaZeNr72IMkp1yIrIy1BES6LDJi7R9fDW7+TprqZdM4B91Tkc+BCwYQzQ==} engines: {node: ^18.13.0 || >=20.9.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler-cli': ^17.0.0 @@ -233,12 +233,12 @@ packages: optional: true dependencies: '@ampproject/remapping': 2.2.1 - '@angular-devkit/architect': 0.1702.0 - '@angular-devkit/build-webpack': 0.1702.0(webpack-dev-server@4.15.1)(webpack@5.90.1) - '@angular-devkit/core': 17.2.0 - '@angular/compiler-cli': 17.2.1(@angular/compiler@17.2.1)(typescript@5.3.3) - '@angular/platform-server': 17.2.1(@angular/animations@17.2.1)(@angular/common@17.2.1)(@angular/compiler@17.2.1)(@angular/core@17.2.1)(@angular/platform-browser@17.2.1) - '@angular/service-worker': 17.2.1(@angular/common@17.2.1)(@angular/core@17.2.1) + '@angular-devkit/architect': 0.1702.2 + '@angular-devkit/build-webpack': 0.1702.2(webpack-dev-server@4.15.1)(webpack@5.90.1) + '@angular-devkit/core': 17.2.2 + '@angular/compiler-cli': 17.2.3(@angular/compiler@17.2.3)(typescript@5.3.3) + '@angular/platform-server': 17.2.3(@angular/animations@17.2.3)(@angular/common@17.2.3)(@angular/compiler@17.2.3)(@angular/core@17.2.3)(@angular/platform-browser@17.2.3) + '@angular/service-worker': 17.2.3(@angular/common@17.2.3)(@angular/core@17.2.3) '@babel/core': 7.23.9 '@babel/generator': 7.23.6 '@babel/helper-annotate-as-pure': 7.22.5 @@ -249,7 +249,7 @@ packages: '@babel/preset-env': 7.23.9(@babel/core@7.23.9) '@babel/runtime': 7.23.9 '@discoveryjs/json-ext': 0.5.7 - '@ngtools/webpack': 17.2.0(@angular/compiler-cli@17.2.1)(typescript@5.3.3)(webpack@5.90.1) + '@ngtools/webpack': 17.2.2(@angular/compiler-cli@17.2.3)(typescript@5.3.3)(webpack@5.90.1) '@vitejs/plugin-basic-ssl': 1.1.0(vite@5.0.12) ansi-colors: 4.1.3 autoprefixer: 10.4.17(postcss@8.4.35) @@ -265,7 +265,7 @@ packages: https-proxy-agent: 7.0.2 inquirer: 9.2.14 jsonc-parser: 3.2.1 - karma: 6.4.2 + karma: 6.4.3 karma-source-map-support: 1.4.0 less: 4.2.0 less-loader: 11.1.0(less@4.2.0)(webpack@5.90.1) @@ -294,7 +294,7 @@ packages: tslib: 2.6.2 typescript: 5.3.3 undici: 6.6.2 - vite: 5.0.12(@types/node@20.11.19)(less@4.2.0)(sass@1.70.0)(terser@5.27.0) + vite: 5.0.12(@types/node@20.11.22)(less@4.2.0)(sass@1.70.0)(terser@5.27.0) watchpack: 2.4.0 webpack: 5.90.1(esbuild@0.20.0) webpack-dev-middleware: 6.1.1(webpack@5.90.1) @@ -323,14 +323,14 @@ packages: - webpack-cli dev: true - /@angular-devkit/build-webpack@0.1702.0(webpack-dev-server@4.15.1)(webpack@5.90.1): - resolution: {integrity: sha512-HrJ01MXlXNCeJeohIOIjpulWktUUJQpq01OWX4UazLnN0DAHKIFCwiKZZio5rYIFFUjdKI0+cCGxFbkzetRjWg==} + /@angular-devkit/build-webpack@0.1702.2(webpack-dev-server@4.15.1)(webpack@5.90.1): + resolution: {integrity: sha512-+c7rHD2Se1VD9i9uPEYHqhq8hTnsUAn5LfeJCLS8g7FU8T42tDSC/k1qWxHp7d99kf7ecg2BvYcZDlYaBUnl3A==} engines: {node: ^18.13.0 || >=20.9.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: webpack: ^5.30.0 webpack-dev-server: ^4.0.0 dependencies: - '@angular-devkit/architect': 0.1702.0 + '@angular-devkit/architect': 0.1702.2 rxjs: 7.8.1 webpack: 5.90.1(esbuild@0.20.0) webpack-dev-server: 4.15.1(webpack@5.90.1) @@ -338,8 +338,8 @@ packages: - chokidar dev: true - /@angular-devkit/core@17.2.0: - resolution: {integrity: sha512-GIOYHChtDqSOvSiEefJ6hAledEl55J5Pxw8JuKXrM4IJBbviI3c40FAc0Lu5NCj2lYoELOhrLy/UP36sLy+DGA==} + /@angular-devkit/core@17.2.2: + resolution: {integrity: sha512-bKMi6bBkEeN4a3qTxCykhrAvE0ESHhKO38Qh1bN/8QSyvKVAEyVAVls5W9IN5GKRHvXgEn9aw+DSzRnPpy9nyw==} engines: {node: ^18.13.0 || >=20.9.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: chokidar: ^3.5.2 @@ -355,11 +355,11 @@ packages: source-map: 0.7.4 dev: true - /@angular-devkit/schematics@17.2.0: - resolution: {integrity: sha512-gGyUVYRKTeRODW9S0MohfBlryoUHrbxqN27olhktrM/fZavyUVnZpyfb8okp6tTUz9HWmGac8ULE6IU+YW16gw==} + /@angular-devkit/schematics@17.2.2: + resolution: {integrity: sha512-t6dBhHvto9BEIo+Kew0+YyIS3TV1SEd4MActUk+zF4NNQyJ8wRUHL+8glUKB6ZWPyCTYSinJ+QKn/3yytELTHg==} engines: {node: ^18.13.0 || >=20.9.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} dependencies: - '@angular-devkit/core': 17.2.0 + '@angular-devkit/core': 17.2.2 jsonc-parser: 3.2.1 magic-string: 0.30.7 ora: 5.4.1 @@ -368,14 +368,14 @@ packages: - chokidar dev: true - /@angular-eslint/builder@17.2.1(eslint@8.56.0)(typescript@5.3.3): + /@angular-eslint/builder@17.2.1(eslint@8.57.0)(typescript@5.3.3): resolution: {integrity: sha512-O30eaR0wCPiP+zKWvXj2JM8hVq30Wok2rp7zJMFm3PurjF9nWIIyexXkE5fa538DYZYxu8N3gQRqhpv5jvTXCg==} peerDependencies: eslint: ^7.20.0 || ^8.0.0 typescript: '*' dependencies: '@nx/devkit': 17.2.8(nx@17.2.8) - eslint: 8.56.0 + eslint: 8.57.0 nx: 17.2.8 typescript: 5.3.3 transitivePeerDependencies: @@ -388,46 +388,46 @@ packages: resolution: {integrity: sha512-puC0itsZv2QlrDOCcWtq1KZH+DvfrpV+mV78HHhi6+h25R5iIhr8ARKcl3EQxFjvrFq34jhG8pSupxKvFbHVfA==} dev: true - /@angular-eslint/eslint-plugin-template@17.2.1(eslint@8.56.0)(typescript@5.3.3): + /@angular-eslint/eslint-plugin-template@17.2.1(eslint@8.57.0)(typescript@5.3.3): resolution: {integrity: sha512-hl1hcHtcm90wyVL1OQGTz16oA0KHon+FFb3Qg0fLXObaXxA495Ecefd9ub5Xxg4JEOPRDi29bF1Y3YKpwflgeg==} peerDependencies: eslint: ^7.20.0 || ^8.0.0 typescript: '*' dependencies: '@angular-eslint/bundled-angular-compiler': 17.2.1 - '@angular-eslint/utils': 17.2.1(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/type-utils': 6.19.0(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/utils': 6.19.0(eslint@8.56.0)(typescript@5.3.3) + '@angular-eslint/utils': 17.2.1(eslint@8.57.0)(typescript@5.3.3) + '@typescript-eslint/type-utils': 6.19.0(eslint@8.57.0)(typescript@5.3.3) + '@typescript-eslint/utils': 6.19.0(eslint@8.57.0)(typescript@5.3.3) aria-query: 5.3.0 axobject-query: 4.0.0 - eslint: 8.56.0 + eslint: 8.57.0 typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@angular-eslint/eslint-plugin@17.2.1(eslint@8.56.0)(typescript@5.3.3): + /@angular-eslint/eslint-plugin@17.2.1(eslint@8.57.0)(typescript@5.3.3): resolution: {integrity: sha512-9yA81BHpsaCUKRBtHGN3ieAy8HpIoffzPQMu34lYqZFT4yGHGhYmhQjNSQGBRbV2LD9dVv2U35rMHNmUcozXpw==} peerDependencies: eslint: ^7.20.0 || ^8.0.0 typescript: '*' dependencies: - '@angular-eslint/utils': 17.2.1(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/utils': 6.19.0(eslint@8.56.0)(typescript@5.3.3) - eslint: 8.56.0 + '@angular-eslint/utils': 17.2.1(eslint@8.57.0)(typescript@5.3.3) + '@typescript-eslint/utils': 6.19.0(eslint@8.57.0)(typescript@5.3.3) + eslint: 8.57.0 typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@angular-eslint/schematics@17.2.1(@angular/cli@17.2.0)(eslint@8.56.0)(typescript@5.3.3): + /@angular-eslint/schematics@17.2.1(@angular/cli@17.2.2)(eslint@8.57.0)(typescript@5.3.3): resolution: {integrity: sha512-7ldtIePI4ZTp/TBpeOZkzfv30HSAn//4TgtFuqvojudI8n8batV5FqQ0VNm1e0zitl75t8Zwtr0KYT4I6vh59g==} peerDependencies: '@angular/cli': '>= 17.0.0 < 18.0.0' dependencies: - '@angular-eslint/eslint-plugin': 17.2.1(eslint@8.56.0)(typescript@5.3.3) - '@angular-eslint/eslint-plugin-template': 17.2.1(eslint@8.56.0)(typescript@5.3.3) - '@angular/cli': 17.2.0 + '@angular-eslint/eslint-plugin': 17.2.1(eslint@8.57.0)(typescript@5.3.3) + '@angular-eslint/eslint-plugin-template': 17.2.1(eslint@8.57.0)(typescript@5.3.3) + '@angular/cli': 17.2.2 '@nx/devkit': 17.2.8(nx@17.2.8) ignore: 5.3.0 nx: 17.2.8 @@ -442,65 +442,65 @@ packages: - typescript dev: true - /@angular-eslint/template-parser@17.2.1(eslint@8.56.0)(typescript@5.3.3): + /@angular-eslint/template-parser@17.2.1(eslint@8.57.0)(typescript@5.3.3): resolution: {integrity: sha512-WPQYFvRju0tCDXQ/pwrzC911pE07JvpeDgcN2elhzV6lxDHJEZpA5O9pnW9qgNA6J6XM9Q7dBkJ22ztAzC4WFw==} peerDependencies: eslint: ^7.20.0 || ^8.0.0 typescript: '*' dependencies: '@angular-eslint/bundled-angular-compiler': 17.2.1 - eslint: 8.56.0 + eslint: 8.57.0 eslint-scope: 8.0.0 typescript: 5.3.3 dev: true - /@angular-eslint/utils@17.2.1(eslint@8.56.0)(typescript@5.3.3): + /@angular-eslint/utils@17.2.1(eslint@8.57.0)(typescript@5.3.3): resolution: {integrity: sha512-qQYTBXy90dWM7fhhpa5i9lTtqqhJisvRa+naCrQx9kBgR458JScLdkVIdcZ9D/rPiDCmKiVUfgcDISnjUeqTqg==} peerDependencies: eslint: ^7.20.0 || ^8.0.0 typescript: '*' dependencies: '@angular-eslint/bundled-angular-compiler': 17.2.1 - '@typescript-eslint/utils': 6.19.0(eslint@8.56.0)(typescript@5.3.3) - eslint: 8.56.0 + '@typescript-eslint/utils': 6.19.0(eslint@8.57.0)(typescript@5.3.3) + eslint: 8.57.0 typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@angular/animations@17.2.1(@angular/core@17.2.1): - resolution: {integrity: sha512-JCccG8EPM04OtN+Wayi79QnbkCYpKY69okWjEM7cPq8fbjIQE/ZAWxnzYMR/Xq3prwUtlH7LMyB5YdYCc6Ea1A==} + /@angular/animations@17.2.3(@angular/core@17.2.3): + resolution: {integrity: sha512-eQcN6hC/dXISEYC/TjRuQJgfdZieBROBlXrS+BxRbsy9T4/QeKxChC3yiNxTmdxl5mvjLKvQTXHR8X0AWc07/Q==} engines: {node: ^18.13.0 || >=20.9.0} peerDependencies: - '@angular/core': 17.2.1 + '@angular/core': 17.2.3 dependencies: - '@angular/core': 17.2.1(rxjs@7.8.1)(zone.js@0.14.4) + '@angular/core': 17.2.3(rxjs@7.8.1)(zone.js@0.14.4) tslib: 2.6.2 - /@angular/cdk@17.2.0(@angular/common@17.2.1)(@angular/core@17.2.1)(rxjs@7.8.1): - resolution: {integrity: sha512-++qEQHzfUvccDw4IFimG9Ig7b4i9d64POUZ8H5cSflTiR3mBVZOlIhnRE/3PifYukoSetrkyedR8BDS6nwGxJQ==} + /@angular/cdk@17.2.1(@angular/common@17.2.3)(@angular/core@17.2.3)(rxjs@7.8.1): + resolution: {integrity: sha512-9cWV9MyWnpImns/WQApgoQBKblXA9Zx2CpCkDNipRgx9RyvGrvCLjpEfwQI4HjpPAQDI1trsbeJKihzgz4tFgw==} peerDependencies: '@angular/common': ^17.0.0 || ^18.0.0 '@angular/core': ^17.0.0 || ^18.0.0 rxjs: ^6.5.3 || ^7.4.0 dependencies: - '@angular/common': 17.2.1(@angular/core@17.2.1)(rxjs@7.8.1) - '@angular/core': 17.2.1(rxjs@7.8.1)(zone.js@0.14.4) + '@angular/common': 17.2.3(@angular/core@17.2.3)(rxjs@7.8.1) + '@angular/core': 17.2.3(rxjs@7.8.1)(zone.js@0.14.4) rxjs: 7.8.1 tslib: 2.6.2 optionalDependencies: parse5: 7.1.2 dev: false - /@angular/cli@17.2.0: - resolution: {integrity: sha512-JSfNQB76qrc8QNPLUvvqR10T4+WUrfz+ogmOliO+jAdhbpfZQ4tIt0WwUYvo+0foM8x7hTe3Wdhg8zWwteBnuw==} + /@angular/cli@17.2.2: + resolution: {integrity: sha512-cGGOnOTjU1bHBAU+5LMR1vfjUSmIY204pUcRAHu6xq1Qp8jm0Wf1lYOG1KrzpDezKa8d0WZe6FIVlxsCZRRYSw==} engines: {node: ^18.13.0 || >=20.9.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true dependencies: - '@angular-devkit/architect': 0.1702.0 - '@angular-devkit/core': 17.2.0 - '@angular-devkit/schematics': 17.2.0 - '@schematics/angular': 17.2.0 + '@angular-devkit/architect': 0.1702.2 + '@angular-devkit/core': 17.2.2 + '@angular-devkit/schematics': 17.2.2 + '@schematics/angular': 17.2.2 '@yarnpkg/lockfile': 1.1.0 ansi-colors: 4.1.3 ini: 4.1.1 @@ -521,26 +521,26 @@ packages: - supports-color dev: true - /@angular/common@17.2.1(@angular/core@17.2.1)(rxjs@7.8.1): - resolution: {integrity: sha512-ZkQwvjJhnqKulJn3kwbnodYvQf8g8hy2FUMB2MRLXKgwLPv9iqF/KRgSwcNIZnq8hyvIr6FmAntMdyCOonykDQ==} + /@angular/common@17.2.3(@angular/core@17.2.3)(rxjs@7.8.1): + resolution: {integrity: sha512-XR3rWS4W7/+RknyJMUUo9E81mSeyUznpclqTZ+Hy7+i4Naeso0qcRaIyr6JJmB5UGvlnfT1MlH9Fj78Dc80NEw==} engines: {node: ^18.13.0 || >=20.9.0} peerDependencies: - '@angular/core': 17.2.1 + '@angular/core': 17.2.3 rxjs: ^6.5.3 || ^7.4.0 dependencies: - '@angular/core': 17.2.1(rxjs@7.8.1)(zone.js@0.14.4) + '@angular/core': 17.2.3(rxjs@7.8.1)(zone.js@0.14.4) rxjs: 7.8.1 tslib: 2.6.2 - /@angular/compiler-cli@17.2.1(@angular/compiler@17.2.1)(typescript@5.3.3): - resolution: {integrity: sha512-7/1KgQOyjekVJxxLnGq+PcpbhIosK4yUaYDyUr33ehDYE5MoEGtyukNx6Sn/CPex4AcJ/978zKfSXHYY451S8w==} + /@angular/compiler-cli@17.2.3(@angular/compiler@17.2.3)(typescript@5.3.3): + resolution: {integrity: sha512-mATybangypneXwO270VQeIw3N0avzc2Lpvdb8nm9WZYj23AcTUzpUUKOn63HtJdwMT5J2GjkyZFSRXisiPmpkA==} engines: {node: ^18.13.0 || >=20.9.0} hasBin: true peerDependencies: - '@angular/compiler': 17.2.1 + '@angular/compiler': 17.2.3 typescript: '>=5.2 <5.4' dependencies: - '@angular/compiler': 17.2.1(@angular/core@17.2.1) + '@angular/compiler': 17.2.3(@angular/core@17.2.3) '@babel/core': 7.23.9 '@jridgewell/sourcemap-codec': 1.4.15 chokidar: 3.5.3 @@ -554,20 +554,20 @@ packages: - supports-color dev: true - /@angular/compiler@17.2.1(@angular/core@17.2.1): - resolution: {integrity: sha512-jKk1ZQxZA/iGj0RsCa5rbd4gaygmfZcj7K1+VfGcY6NPyFkBGfFxIcA5fkZPOBvlNHjurXGuejA8NrsQ0kHbOw==} + /@angular/compiler@17.2.3(@angular/core@17.2.3): + resolution: {integrity: sha512-U2okLZ+4ipD5zTv32pMp+RsrM3kkP0XneSsIMPRpYZZfKgfnGLIwkRx6FoVoBwByugng6lBG/PiIe8DhRU/HFg==} engines: {node: ^18.13.0 || >=20.9.0} peerDependencies: - '@angular/core': 17.2.1 + '@angular/core': 17.2.3 peerDependenciesMeta: '@angular/core': optional: true dependencies: - '@angular/core': 17.2.1(rxjs@7.8.1)(zone.js@0.14.4) + '@angular/core': 17.2.3(rxjs@7.8.1)(zone.js@0.14.4) tslib: 2.6.2 - /@angular/core@17.2.1(rxjs@7.8.1)(zone.js@0.14.4): - resolution: {integrity: sha512-gfWeskXA8RA0D3WOPBV5wT8RpqtqFhB8OCR8diGfLojqbMrmZXEvxALBHKAgfarWcR1rnRgmjCQKejWLWCLmmg==} + /@angular/core@17.2.3(rxjs@7.8.1)(zone.js@0.14.4): + resolution: {integrity: sha512-DU+RdUB4E4I489R2P2hOrgkCDJNXlVaTzYixpgeDnuldCIYM0MatEzjor9DYNL3EDCayHF+M4HlVOcn6T/IVPQ==} engines: {node: ^18.13.0 || >=20.9.0} peerDependencies: rxjs: ^6.5.3 || ^7.4.0 @@ -577,38 +577,38 @@ packages: tslib: 2.6.2 zone.js: 0.14.4 - /@angular/forms@17.2.1(@angular/common@17.2.1)(@angular/core@17.2.1)(@angular/platform-browser@17.2.1)(rxjs@7.8.1): - resolution: {integrity: sha512-ACV2sxBOHfoHiVQFQfP5a7pXWSNPpnYbl8NKjuZzHDWueQ/IInAk6ycUEsycTh8mTm0+bBAUMw8uXTCRItML9A==} + /@angular/forms@17.2.3(@angular/common@17.2.3)(@angular/core@17.2.3)(@angular/platform-browser@17.2.3)(rxjs@7.8.1): + resolution: {integrity: sha512-v+/6pimht808F5XpmVTNV4/109s+A7m3nadQP97qvIDsrtwrPPZR7cST+DRioG2C41VwtjXM0HVbIon/3ydo6A==} engines: {node: ^18.13.0 || >=20.9.0} peerDependencies: - '@angular/common': 17.2.1 - '@angular/core': 17.2.1 - '@angular/platform-browser': 17.2.1 + '@angular/common': 17.2.3 + '@angular/core': 17.2.3 + '@angular/platform-browser': 17.2.3 rxjs: ^6.5.3 || ^7.4.0 dependencies: - '@angular/common': 17.2.1(@angular/core@17.2.1)(rxjs@7.8.1) - '@angular/core': 17.2.1(rxjs@7.8.1)(zone.js@0.14.4) - '@angular/platform-browser': 17.2.1(@angular/animations@17.2.1)(@angular/common@17.2.1)(@angular/core@17.2.1) + '@angular/common': 17.2.3(@angular/core@17.2.3)(rxjs@7.8.1) + '@angular/core': 17.2.3(rxjs@7.8.1)(zone.js@0.14.4) + '@angular/platform-browser': 17.2.3(@angular/animations@17.2.3)(@angular/common@17.2.3)(@angular/core@17.2.3) rxjs: 7.8.1 tslib: 2.6.2 - /@angular/material@17.2.0(@angular/animations@17.2.1)(@angular/cdk@17.2.0)(@angular/common@17.2.1)(@angular/core@17.2.1)(@angular/forms@17.2.1)(@angular/platform-browser@17.2.1)(rxjs@7.8.1): - resolution: {integrity: sha512-8jUaJmx5qptuK8QZudL7AJrk50IOGnLB3uyRnxXjY+5uDJ3jTyC1HqmbsyYDNAX69PD2xKfd+9p1OTz+YLxbQw==} + /@angular/material@17.2.1(@angular/animations@17.2.3)(@angular/cdk@17.2.1)(@angular/common@17.2.3)(@angular/core@17.2.3)(@angular/forms@17.2.3)(@angular/platform-browser@17.2.3)(rxjs@7.8.1): + resolution: {integrity: sha512-NLQJkX4XiwIm32dGdNseoc+ARn6JvuB2xMY5XfWTtjJBbQaPk5sIvjH4wsAEeYqDKtZbRCjxGwRz0K1djyaVqQ==} peerDependencies: '@angular/animations': ^17.0.0 || ^18.0.0 - '@angular/cdk': 17.2.0 + '@angular/cdk': 17.2.1 '@angular/common': ^17.0.0 || ^18.0.0 '@angular/core': ^17.0.0 || ^18.0.0 '@angular/forms': ^17.0.0 || ^18.0.0 '@angular/platform-browser': ^17.0.0 || ^18.0.0 rxjs: ^6.5.3 || ^7.4.0 dependencies: - '@angular/animations': 17.2.1(@angular/core@17.2.1) - '@angular/cdk': 17.2.0(@angular/common@17.2.1)(@angular/core@17.2.1)(rxjs@7.8.1) - '@angular/common': 17.2.1(@angular/core@17.2.1)(rxjs@7.8.1) - '@angular/core': 17.2.1(rxjs@7.8.1)(zone.js@0.14.4) - '@angular/forms': 17.2.1(@angular/common@17.2.1)(@angular/core@17.2.1)(@angular/platform-browser@17.2.1)(rxjs@7.8.1) - '@angular/platform-browser': 17.2.1(@angular/animations@17.2.1)(@angular/common@17.2.1)(@angular/core@17.2.1) + '@angular/animations': 17.2.3(@angular/core@17.2.3) + '@angular/cdk': 17.2.1(@angular/common@17.2.3)(@angular/core@17.2.3)(rxjs@7.8.1) + '@angular/common': 17.2.3(@angular/core@17.2.3)(rxjs@7.8.1) + '@angular/core': 17.2.3(rxjs@7.8.1)(zone.js@0.14.4) + '@angular/forms': 17.2.3(@angular/common@17.2.3)(@angular/core@17.2.3)(@angular/platform-browser@17.2.3)(rxjs@7.8.1) + '@angular/platform-browser': 17.2.3(@angular/animations@17.2.3)(@angular/common@17.2.3)(@angular/core@17.2.3) '@material/animation': 15.0.0-canary.7f224ddd4.0 '@material/auto-init': 15.0.0-canary.7f224ddd4.0 '@material/banner': 15.0.0-canary.7f224ddd4.0 @@ -660,92 +660,92 @@ packages: tslib: 2.6.2 dev: false - /@angular/platform-browser-dynamic@17.2.1(@angular/common@17.2.1)(@angular/compiler@17.2.1)(@angular/core@17.2.1)(@angular/platform-browser@17.2.1): - resolution: {integrity: sha512-J8mpB/LDMnPez1Xtaq/j4JEp7E1m7vVMfzJQvKPt1vZmp5EEzyo++u9k5yYKnGpfWTudBXHRIjK2mCjo7wNajg==} + /@angular/platform-browser-dynamic@17.2.3(@angular/common@17.2.3)(@angular/compiler@17.2.3)(@angular/core@17.2.3)(@angular/platform-browser@17.2.3): + resolution: {integrity: sha512-K8CsHbmG2nvV1jrNN9PYxyA0zJNoIWp+qf2udvPhG8rJ+Pyw61qmptrarpQUUkr8ONOtjwtOsnKa9/w+15nExw==} engines: {node: ^18.13.0 || >=20.9.0} peerDependencies: - '@angular/common': 17.2.1 - '@angular/compiler': 17.2.1 - '@angular/core': 17.2.1 - '@angular/platform-browser': 17.2.1 + '@angular/common': 17.2.3 + '@angular/compiler': 17.2.3 + '@angular/core': 17.2.3 + '@angular/platform-browser': 17.2.3 dependencies: - '@angular/common': 17.2.1(@angular/core@17.2.1)(rxjs@7.8.1) - '@angular/compiler': 17.2.1(@angular/core@17.2.1) - '@angular/core': 17.2.1(rxjs@7.8.1)(zone.js@0.14.4) - '@angular/platform-browser': 17.2.1(@angular/animations@17.2.1)(@angular/common@17.2.1)(@angular/core@17.2.1) + '@angular/common': 17.2.3(@angular/core@17.2.3)(rxjs@7.8.1) + '@angular/compiler': 17.2.3(@angular/core@17.2.3) + '@angular/core': 17.2.3(rxjs@7.8.1)(zone.js@0.14.4) + '@angular/platform-browser': 17.2.3(@angular/animations@17.2.3)(@angular/common@17.2.3)(@angular/core@17.2.3) tslib: 2.6.2 dev: false - /@angular/platform-browser@17.2.1(@angular/animations@17.2.1)(@angular/common@17.2.1)(@angular/core@17.2.1): - resolution: {integrity: sha512-on+fTZiDTBJmRQbQe6GOClqaUFe4GJdLS1EbmI+6/8Ntv4QW2PowWnaxajoqTj2Zrh22J9DSNy7RWcrQDdyU3g==} + /@angular/platform-browser@17.2.3(@angular/animations@17.2.3)(@angular/common@17.2.3)(@angular/core@17.2.3): + resolution: {integrity: sha512-bFi+H8avyCjwSBy+zpOKmqx852MRH8fkuZa4XgwKCPJRay8BfSCjHdtIo3eokUNPMu9JsyXM7HYKIfzLu5y6LA==} engines: {node: ^18.13.0 || >=20.9.0} peerDependencies: - '@angular/animations': 17.2.1 - '@angular/common': 17.2.1 - '@angular/core': 17.2.1 + '@angular/animations': 17.2.3 + '@angular/common': 17.2.3 + '@angular/core': 17.2.3 peerDependenciesMeta: '@angular/animations': optional: true dependencies: - '@angular/animations': 17.2.1(@angular/core@17.2.1) - '@angular/common': 17.2.1(@angular/core@17.2.1)(rxjs@7.8.1) - '@angular/core': 17.2.1(rxjs@7.8.1)(zone.js@0.14.4) + '@angular/animations': 17.2.3(@angular/core@17.2.3) + '@angular/common': 17.2.3(@angular/core@17.2.3)(rxjs@7.8.1) + '@angular/core': 17.2.3(rxjs@7.8.1)(zone.js@0.14.4) tslib: 2.6.2 - /@angular/platform-server@17.2.1(@angular/animations@17.2.1)(@angular/common@17.2.1)(@angular/compiler@17.2.1)(@angular/core@17.2.1)(@angular/platform-browser@17.2.1): - resolution: {integrity: sha512-7R06FkmZ4/nDoHj4m15N9Bm92YcKU+YyDfg+vZIqDMGHAX1D5G2tFE2a5Bb+fG2xUfvpmJ6AoRQpdMMOltp7WQ==} + /@angular/platform-server@17.2.3(@angular/animations@17.2.3)(@angular/common@17.2.3)(@angular/compiler@17.2.3)(@angular/core@17.2.3)(@angular/platform-browser@17.2.3): + resolution: {integrity: sha512-RUzyNyx9TTkfJ5HZhifOhQG6b9B3JH+OiB+RgwOb0lHHYHrhg8vKlBEueVmqkMwk6odd7gTcyVJDmKXpwfGgpg==} engines: {node: ^18.13.0 || >=20.9.0} peerDependencies: - '@angular/animations': 17.2.1 - '@angular/common': 17.2.1 - '@angular/compiler': 17.2.1 - '@angular/core': 17.2.1 - '@angular/platform-browser': 17.2.1 - dependencies: - '@angular/animations': 17.2.1(@angular/core@17.2.1) - '@angular/common': 17.2.1(@angular/core@17.2.1)(rxjs@7.8.1) - '@angular/compiler': 17.2.1(@angular/core@17.2.1) - '@angular/core': 17.2.1(rxjs@7.8.1)(zone.js@0.14.4) - '@angular/platform-browser': 17.2.1(@angular/animations@17.2.1)(@angular/common@17.2.1)(@angular/core@17.2.1) + '@angular/animations': 17.2.3 + '@angular/common': 17.2.3 + '@angular/compiler': 17.2.3 + '@angular/core': 17.2.3 + '@angular/platform-browser': 17.2.3 + dependencies: + '@angular/animations': 17.2.3(@angular/core@17.2.3) + '@angular/common': 17.2.3(@angular/core@17.2.3)(rxjs@7.8.1) + '@angular/compiler': 17.2.3(@angular/core@17.2.3) + '@angular/core': 17.2.3(rxjs@7.8.1)(zone.js@0.14.4) + '@angular/platform-browser': 17.2.3(@angular/animations@17.2.3)(@angular/common@17.2.3)(@angular/core@17.2.3) tslib: 2.6.2 xhr2: 0.2.1 - /@angular/router@17.2.1(@angular/common@17.2.1)(@angular/core@17.2.1)(@angular/platform-browser@17.2.1)(rxjs@7.8.1): - resolution: {integrity: sha512-sJFraoPTHV09jZQV3XcFHRJsY7EAuXcBn5k+7GGye60YgTXAjL3OC++Cuv4AScFYRp+IqbrE3I0tflsRtQzemw==} + /@angular/router@17.2.3(@angular/common@17.2.3)(@angular/core@17.2.3)(@angular/platform-browser@17.2.3)(rxjs@7.8.1): + resolution: {integrity: sha512-8UPjMzI98xZ6cDNm0MzHd9hFq6aOQJGmgxKDUPIG2h74glRwwbiewpo5hPo2EGIF8BLvQmmAm9ytr5zesHu0cg==} engines: {node: ^18.13.0 || >=20.9.0} peerDependencies: - '@angular/common': 17.2.1 - '@angular/core': 17.2.1 - '@angular/platform-browser': 17.2.1 + '@angular/common': 17.2.3 + '@angular/core': 17.2.3 + '@angular/platform-browser': 17.2.3 rxjs: ^6.5.3 || ^7.4.0 dependencies: - '@angular/common': 17.2.1(@angular/core@17.2.1)(rxjs@7.8.1) - '@angular/core': 17.2.1(rxjs@7.8.1)(zone.js@0.14.4) - '@angular/platform-browser': 17.2.1(@angular/animations@17.2.1)(@angular/common@17.2.1)(@angular/core@17.2.1) + '@angular/common': 17.2.3(@angular/core@17.2.3)(rxjs@7.8.1) + '@angular/core': 17.2.3(rxjs@7.8.1)(zone.js@0.14.4) + '@angular/platform-browser': 17.2.3(@angular/animations@17.2.3)(@angular/common@17.2.3)(@angular/core@17.2.3) rxjs: 7.8.1 tslib: 2.6.2 dev: false - /@angular/service-worker@17.2.1(@angular/common@17.2.1)(@angular/core@17.2.1): - resolution: {integrity: sha512-wOHfh3tL59ATZ9oOiwNtI6ofp9vbwZschc7Wwdw6+JMzy1r2gQ1jRs0+RjPKbfha5ZggFnlQm4d/v7gMqooIpQ==} + /@angular/service-worker@17.2.3(@angular/common@17.2.3)(@angular/core@17.2.3): + resolution: {integrity: sha512-PWaQQfx9mEVs1UHRz/VCMjNu4v+YMhH97TkznfhxZvpzUd8JszSQP48V7bkBLEYHziqwuirPIu3hOTu1Bp7lfQ==} engines: {node: ^18.13.0 || >=20.9.0} hasBin: true peerDependencies: - '@angular/common': 17.2.1 - '@angular/core': 17.2.1 + '@angular/common': 17.2.3 + '@angular/core': 17.2.3 dependencies: - '@angular/common': 17.2.1(@angular/core@17.2.1)(rxjs@7.8.1) - '@angular/core': 17.2.1(rxjs@7.8.1)(zone.js@0.14.4) + '@angular/common': 17.2.3(@angular/core@17.2.3)(rxjs@7.8.1) + '@angular/core': 17.2.3(rxjs@7.8.1)(zone.js@0.14.4) tslib: 2.6.2 - /@angular/ssr@17.2.0(@angular/common@17.2.1)(@angular/core@17.2.1): - resolution: {integrity: sha512-HLmqSbohO7X7zEmaTBjEsgXri9MXl/9L+6grNn+VEPBVSLiw8Q/CdZE4OSBPEisgY2vGz15RXy7OaZhiZ960Jg==} + /@angular/ssr@17.2.2(@angular/common@17.2.3)(@angular/core@17.2.3): + resolution: {integrity: sha512-GaRKJEEZKcPY5GaQ15VqKJsMeOfnuY4WnA01OmrS+VWoEQe2A5EFUjVx3sRTWFC5gCNJi/B4guRHOjpSLE6fFQ==} peerDependencies: '@angular/common': ^17.0.0 '@angular/core': ^17.0.0 dependencies: - '@angular/common': 17.2.1(@angular/core@17.2.1)(rxjs@7.8.1) - '@angular/core': 17.2.1(rxjs@7.8.1)(zone.js@0.14.4) + '@angular/common': 17.2.3(@angular/core@17.2.3)(rxjs@7.8.1) + '@angular/core': 17.2.3(rxjs@7.8.1)(zone.js@0.14.4) critters: 0.0.20 tslib: 2.6.2 dev: false @@ -2356,13 +2356,13 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.56.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.56.0 + eslint: 8.57.0 eslint-visitor-keys: 3.4.3 dev: true @@ -2388,23 +2388,29 @@ packages: - supports-color dev: true - /@eslint/js@8.56.0: - resolution: {integrity: sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==} + /@eslint/js@8.57.0: + resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true /@fastify/busboy@2.1.0: resolution: {integrity: sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==} engines: {node: '>=14'} + dev: true + + /@fastify/busboy@2.1.1: + resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} + engines: {node: '>=14'} + dev: false - /@firebase/analytics-compat@0.2.7(@firebase/app-compat@0.2.27)(@firebase/app@0.9.27): + /@firebase/analytics-compat@0.2.7(@firebase/app-compat@0.2.28)(@firebase/app@0.9.28): resolution: {integrity: sha512-17VCly4P0VFBDqaaal7m1nhyYQwsygtaTpSsnc51sFPRrr9XIYtnD8ficon9fneEGEoJQ2g7OtASvhwX9EbK8g==} peerDependencies: '@firebase/app-compat': 0.x dependencies: - '@firebase/analytics': 0.10.1(@firebase/app@0.9.27) + '@firebase/analytics': 0.10.1(@firebase/app@0.9.28) '@firebase/analytics-types': 0.8.0 - '@firebase/app-compat': 0.2.27 + '@firebase/app-compat': 0.2.28 '@firebase/component': 0.6.5 '@firebase/util': 1.9.4 tslib: 2.6.2 @@ -2416,27 +2422,27 @@ packages: resolution: {integrity: sha512-iRP+QKI2+oz3UAh4nPEq14CsEjrjD6a5+fuypjScisAh9kXKFvdJOZJDwk7kikLvWVLGEs9+kIUS4LPQV7VZVw==} dev: false - /@firebase/analytics@0.10.1(@firebase/app@0.9.27): + /@firebase/analytics@0.10.1(@firebase/app@0.9.28): resolution: {integrity: sha512-5mnH1aQa99J5lZMJwTNzIoRc4yGXHf+fOn+EoEWhCDA3XGPweGHcylCbqq+G1wVJmfILL57fohDMa8ftMZ+44g==} peerDependencies: '@firebase/app': 0.x dependencies: - '@firebase/app': 0.9.27 + '@firebase/app': 0.9.28 '@firebase/component': 0.6.5 - '@firebase/installations': 0.6.5(@firebase/app@0.9.27) + '@firebase/installations': 0.6.5(@firebase/app@0.9.28) '@firebase/logger': 0.4.0 '@firebase/util': 1.9.4 tslib: 2.6.2 dev: false - /@firebase/app-check-compat@0.3.9(@firebase/app-compat@0.2.27)(@firebase/app@0.9.27): + /@firebase/app-check-compat@0.3.9(@firebase/app-compat@0.2.28)(@firebase/app@0.9.28): resolution: {integrity: sha512-7LxyupQ8XeEHRh72mO+tqm69kHT6KbWi2KtFMGedJ6tNbwzFzojcXESMKN8RpADXbYoQgY3loWMJjMx4r2Zt7w==} peerDependencies: '@firebase/app-compat': 0.x dependencies: - '@firebase/app-check': 0.8.2(@firebase/app@0.9.27) + '@firebase/app-check': 0.8.2(@firebase/app@0.9.28) '@firebase/app-check-types': 0.5.0 - '@firebase/app-compat': 0.2.27 + '@firebase/app-compat': 0.2.28 '@firebase/component': 0.6.5 '@firebase/logger': 0.4.0 '@firebase/util': 1.9.4 @@ -2453,22 +2459,22 @@ packages: resolution: {integrity: sha512-uwSUj32Mlubybw7tedRzR24RP8M8JUVR3NPiMk3/Z4bCmgEKTlQBwMXrehDAZ2wF+TsBq0SN1c6ema71U/JPyQ==} dev: false - /@firebase/app-check@0.8.2(@firebase/app@0.9.27): + /@firebase/app-check@0.8.2(@firebase/app@0.9.28): resolution: {integrity: sha512-A2B5+ldOguYAeqW1quFN5qNdruSNRrg4W59ag1Eq6QzxuHNIkrE+TrapfrW/z5NYFjCxAYqr/unVCgmk80Dwcg==} peerDependencies: '@firebase/app': 0.x dependencies: - '@firebase/app': 0.9.27 + '@firebase/app': 0.9.28 '@firebase/component': 0.6.5 '@firebase/logger': 0.4.0 '@firebase/util': 1.9.4 tslib: 2.6.2 dev: false - /@firebase/app-compat@0.2.27: - resolution: {integrity: sha512-SYlqocfUDKPHR6MSFC8hree0BTiWFu5o8wbf6zFlYXyG41w7TcHp4wJi4H/EL5V6cM4kxwruXTJtqXX/fRAZtw==} + /@firebase/app-compat@0.2.28: + resolution: {integrity: sha512-Mr2NbeM1Oaayuw5unUAMzt+7/MN+e2uklT1l87D+ZLJl2UvhZAZmMt74GjEI9N3sDYKMeszSbszBqtJ1fGVafQ==} dependencies: - '@firebase/app': 0.9.27 + '@firebase/app': 0.9.28 '@firebase/component': 0.6.5 '@firebase/logger': 0.4.0 '@firebase/util': 1.9.4 @@ -2479,8 +2485,8 @@ packages: resolution: {integrity: sha512-AeweANOIo0Mb8GiYm3xhTEBVCmPwTYAu9Hcd2qSkLuga/6+j9b1Jskl5bpiSQWy9eJ/j5pavxj6eYogmnuzm+Q==} dev: false - /@firebase/app@0.9.27: - resolution: {integrity: sha512-p2Dvl1ge4kRsyK5+wWcmdAIE9MSwZ0pDKAYB51LZgZuz6wciUZk4E1yAEdkfQlRxuHehn+Ol9WP5Qk2XQZiHGg==} + /@firebase/app@0.9.28: + resolution: {integrity: sha512-MS0+EtNixrwJbVDs5Bt/lhUhzeWGUtUoP6X+zYZck5GAZwI5g4F91noVA9oIXlFlpn6Q1xIbiaHA2GwGk7/7Ag==} dependencies: '@firebase/component': 0.6.5 '@firebase/logger': 0.4.0 @@ -2489,18 +2495,18 @@ packages: tslib: 2.6.2 dev: false - /@firebase/auth-compat@0.5.2(@firebase/app-compat@0.2.27)(@firebase/app-types@0.9.0)(@firebase/app@0.9.27): - resolution: {integrity: sha512-pRgje5BPCNR1vXyvGOVXwOHtv88A2WooXfklI8sV7/jWi03ExFqNfpJT26GUo/oD39NoKJ3Kt6rD5gVvdV7lMw==} + /@firebase/auth-compat@0.5.3(@firebase/app-compat@0.2.28)(@firebase/app-types@0.9.0)(@firebase/app@0.9.28): + resolution: {integrity: sha512-2pVtVEvu8P7SF6jSPfLPKWUClQFj+StqAZ0fD/uQ6mv8DyWn7AuuANFEu7Pv96JPcaL6Gy9jC5dFqjpptjqSRA==} peerDependencies: '@firebase/app-compat': 0.x dependencies: - '@firebase/app-compat': 0.2.27 - '@firebase/auth': 1.6.0(@firebase/app@0.9.27) + '@firebase/app-compat': 0.2.28 + '@firebase/auth': 1.6.1(@firebase/app@0.9.28) '@firebase/auth-types': 0.12.0(@firebase/app-types@0.9.0)(@firebase/util@1.9.4) '@firebase/component': 0.6.5 '@firebase/util': 1.9.4 tslib: 2.6.2 - undici: 5.26.5 + undici: 5.28.3 transitivePeerDependencies: - '@firebase/app' - '@firebase/app-types' @@ -2521,8 +2527,8 @@ packages: '@firebase/util': 1.9.4 dev: false - /@firebase/auth@1.6.0(@firebase/app@0.9.27): - resolution: {integrity: sha512-Qhl35eJTV6BwvuueTPCY6x8kUlYyzALtjp/Ws0X3fw3AnjVVfuVb7oQ3Xh5VPVfMFhaIuUAd1KXwcAuIklkSDw==} + /@firebase/auth@1.6.1(@firebase/app@0.9.28): + resolution: {integrity: sha512-oOuQVOxtxKr+kTTqEkkI2qXIeGbkNLpA8FzO030LF4KXmMcETqsPaIqw7Aw1Y4Zl82l1qpZtpc4vN4Da2qZdfQ==} peerDependencies: '@firebase/app': 0.x '@react-native-async-storage/async-storage': ^1.18.1 @@ -2530,12 +2536,12 @@ packages: '@react-native-async-storage/async-storage': optional: true dependencies: - '@firebase/app': 0.9.27 + '@firebase/app': 0.9.28 '@firebase/component': 0.6.5 '@firebase/logger': 0.4.0 '@firebase/util': 1.9.4 tslib: 2.6.2 - undici: 5.26.5 + undici: 5.28.3 dev: false /@firebase/component@0.6.5: @@ -2575,14 +2581,14 @@ packages: tslib: 2.6.2 dev: false - /@firebase/firestore-compat@0.3.25(@firebase/app-compat@0.2.27)(@firebase/app-types@0.9.0)(@firebase/app@0.9.27): - resolution: {integrity: sha512-+xI7WmsgZCBhMn/+uhDKcg+lsOUJ9FJyt5PGTzkFPbCsozWfeQZ7eVnfPh0rMkUOf0yIQ924RIe04gwvEIbcoQ==} + /@firebase/firestore-compat@0.3.26(@firebase/app-compat@0.2.28)(@firebase/app-types@0.9.0)(@firebase/app@0.9.28): + resolution: {integrity: sha512-dNrKiH5Cn6ItANV9nJI2Y0msKBj/skO7skDlRo/BUSQE1DKbNzumxpJEz+PK/PV1nTegnRgVvs47gpQeVWXtYQ==} peerDependencies: '@firebase/app-compat': 0.x dependencies: - '@firebase/app-compat': 0.2.27 + '@firebase/app-compat': 0.2.28 '@firebase/component': 0.6.5 - '@firebase/firestore': 4.4.2(@firebase/app@0.9.27) + '@firebase/firestore': 4.4.3(@firebase/app@0.9.28) '@firebase/firestore-types': 3.0.0(@firebase/app-types@0.9.0)(@firebase/util@1.9.4) '@firebase/util': 1.9.4 tslib: 2.6.2 @@ -2601,13 +2607,13 @@ packages: '@firebase/util': 1.9.4 dev: false - /@firebase/firestore@4.4.2(@firebase/app@0.9.27): - resolution: {integrity: sha512-YaX6ypa/RzU6OkxzUQlpSxwhOIWdTraCNz7sMsbaSEjjl/pj/QvX6TqjkdWGzuBYh2S6rz7ErhDO0g39oZZw/g==} + /@firebase/firestore@4.4.3(@firebase/app@0.9.28): + resolution: {integrity: sha512-Ix61zbeuTsHf0WFbk6+67n89Vzd9M8MMTdnz7c7z+BRE3BS5Vuc3gX5ZcHFjqPkQJ7rpLB1egHsYe4Przp5C2g==} engines: {node: '>=10.10.0'} peerDependencies: '@firebase/app': 0.x dependencies: - '@firebase/app': 0.9.27 + '@firebase/app': 0.9.28 '@firebase/component': 0.6.5 '@firebase/logger': 0.4.0 '@firebase/util': 1.9.4 @@ -2615,17 +2621,17 @@ packages: '@grpc/grpc-js': 1.9.14 '@grpc/proto-loader': 0.7.10 tslib: 2.6.2 - undici: 5.26.5 + undici: 5.28.3 dev: false - /@firebase/functions-compat@0.3.7(@firebase/app-compat@0.2.27)(@firebase/app@0.9.27): - resolution: {integrity: sha512-uXe6Kmku5lNogp3OpPBcOJbSvnaCOn+YxS3zlXKNU6Q/NLwcvO3RY1zwYyctCos2RemEw3KEQ7YdzcECXjHWLw==} + /@firebase/functions-compat@0.3.8(@firebase/app-compat@0.2.28)(@firebase/app@0.9.28): + resolution: {integrity: sha512-VDHSw6UOu8RxfgAY/q8e+Jn+9Fh60Fc28yck0yfMsi2e0BiWgonIMWkFspFGGLgOJebTHl+hc+9v91rhzU6xlg==} peerDependencies: '@firebase/app-compat': 0.x dependencies: - '@firebase/app-compat': 0.2.27 + '@firebase/app-compat': 0.2.28 '@firebase/component': 0.6.5 - '@firebase/functions': 0.11.1(@firebase/app@0.9.27) + '@firebase/functions': 0.11.2(@firebase/app@0.9.28) '@firebase/functions-types': 0.6.0 '@firebase/util': 1.9.4 tslib: 2.6.2 @@ -2637,29 +2643,29 @@ packages: resolution: {integrity: sha512-hfEw5VJtgWXIRf92ImLkgENqpL6IWpYaXVYiRkFY1jJ9+6tIhWM7IzzwbevwIIud/jaxKVdRzD7QBWfPmkwCYw==} dev: false - /@firebase/functions@0.11.1(@firebase/app@0.9.27): - resolution: {integrity: sha512-3uUa1hB79Gmy6E1gHTfzoHeZolBeHc/I/n3+lOCDe6BOos9AHmzRjKygcFE/7VA2FJjitCE0K+OHI6+OuoY8fQ==} + /@firebase/functions@0.11.2(@firebase/app@0.9.28): + resolution: {integrity: sha512-2NULTYOZbu0rXczwfYdqQH0w1FmmYrKjTy1YPQSHLCAkMBdfewoKmVm4Lyo2vRn0H9ZndciLY7NszKDFt9MKCQ==} peerDependencies: '@firebase/app': 0.x dependencies: - '@firebase/app': 0.9.27 + '@firebase/app': 0.9.28 '@firebase/app-check-interop-types': 0.3.0 '@firebase/auth-interop-types': 0.2.1 '@firebase/component': 0.6.5 '@firebase/messaging-interop-types': 0.2.0 '@firebase/util': 1.9.4 tslib: 2.6.2 - undici: 5.26.5 + undici: 5.28.3 dev: false - /@firebase/installations-compat@0.2.5(@firebase/app-compat@0.2.27)(@firebase/app-types@0.9.0)(@firebase/app@0.9.27): + /@firebase/installations-compat@0.2.5(@firebase/app-compat@0.2.28)(@firebase/app-types@0.9.0)(@firebase/app@0.9.28): resolution: {integrity: sha512-usvoIaog5CHEw082HXLrKAZ1qd4hIC3N/LDe2NqBgI3pkGE/7auLVM4Gn5gvyryp0x8z/IP1+d9fkGUj2OaGLQ==} peerDependencies: '@firebase/app-compat': 0.x dependencies: - '@firebase/app-compat': 0.2.27 + '@firebase/app-compat': 0.2.28 '@firebase/component': 0.6.5 - '@firebase/installations': 0.6.5(@firebase/app@0.9.27) + '@firebase/installations': 0.6.5(@firebase/app@0.9.28) '@firebase/installations-types': 0.5.0(@firebase/app-types@0.9.0) '@firebase/util': 1.9.4 tslib: 2.6.2 @@ -2676,12 +2682,12 @@ packages: '@firebase/app-types': 0.9.0 dev: false - /@firebase/installations@0.6.5(@firebase/app@0.9.27): + /@firebase/installations@0.6.5(@firebase/app@0.9.28): resolution: {integrity: sha512-0xxnQWw8rSRzu0ZOCkZaO+MJ0LkDAfwwTB2Z1SxRK6FAz5xkxD1ZUwM0WbCRni49PKubCrZYOJ6yg7tSjU7AKA==} peerDependencies: '@firebase/app': 0.x dependencies: - '@firebase/app': 0.9.27 + '@firebase/app': 0.9.28 '@firebase/component': 0.6.5 '@firebase/util': 1.9.4 idb: 7.1.1 @@ -2694,14 +2700,14 @@ packages: tslib: 2.6.2 dev: false - /@firebase/messaging-compat@0.2.6(@firebase/app-compat@0.2.27)(@firebase/app@0.9.27): + /@firebase/messaging-compat@0.2.6(@firebase/app-compat@0.2.28)(@firebase/app@0.9.28): resolution: {integrity: sha512-Q2xC1s4L7Vpss7P7Gy6GuIS+xmJrf/vm9+gX76IK1Bo1TjoKwleCLHt1LHkPz5Rvqg5pTgzzI8qqPhBpZosFCg==} peerDependencies: '@firebase/app-compat': 0.x dependencies: - '@firebase/app-compat': 0.2.27 + '@firebase/app-compat': 0.2.28 '@firebase/component': 0.6.5 - '@firebase/messaging': 0.12.6(@firebase/app@0.9.27) + '@firebase/messaging': 0.12.6(@firebase/app@0.9.28) '@firebase/util': 1.9.4 tslib: 2.6.2 transitivePeerDependencies: @@ -2712,29 +2718,29 @@ packages: resolution: {integrity: sha512-ujA8dcRuVeBixGR9CtegfpU4YmZf3Lt7QYkcj693FFannwNuZgfAYaTmbJ40dtjB81SAu6tbFPL9YLNT15KmOQ==} dev: false - /@firebase/messaging@0.12.6(@firebase/app@0.9.27): + /@firebase/messaging@0.12.6(@firebase/app@0.9.28): resolution: {integrity: sha512-IORsPp9IPWq4j4yEhTOZ6GAGi3gQwGc+4yexmTAlya+qeBRSdRnJg2iIU/aj+tcKDQYr9RQuQPgHHOdFIx//vA==} peerDependencies: '@firebase/app': 0.x dependencies: - '@firebase/app': 0.9.27 + '@firebase/app': 0.9.28 '@firebase/component': 0.6.5 - '@firebase/installations': 0.6.5(@firebase/app@0.9.27) + '@firebase/installations': 0.6.5(@firebase/app@0.9.28) '@firebase/messaging-interop-types': 0.2.0 '@firebase/util': 1.9.4 idb: 7.1.1 tslib: 2.6.2 dev: false - /@firebase/performance-compat@0.2.5(@firebase/app-compat@0.2.27)(@firebase/app@0.9.27): + /@firebase/performance-compat@0.2.5(@firebase/app-compat@0.2.28)(@firebase/app@0.9.28): resolution: {integrity: sha512-jJwJkVyDcIMBaVGrZ6CRGs4m5FCZsWB5QCWYI3FdsHyIa9/TfteNDilxj9wGciF2naFIHDW7TgE69U5dAH9Ktg==} peerDependencies: '@firebase/app-compat': 0.x dependencies: - '@firebase/app-compat': 0.2.27 + '@firebase/app-compat': 0.2.28 '@firebase/component': 0.6.5 '@firebase/logger': 0.4.0 - '@firebase/performance': 0.6.5(@firebase/app@0.9.27) + '@firebase/performance': 0.6.5(@firebase/app@0.9.28) '@firebase/performance-types': 0.2.0 '@firebase/util': 1.9.4 tslib: 2.6.2 @@ -2746,28 +2752,28 @@ packages: resolution: {integrity: sha512-kYrbr8e/CYr1KLrLYZZt2noNnf+pRwDq2KK9Au9jHrBMnb0/C9X9yWSXmZkFt4UIdsQknBq8uBB7fsybZdOBTA==} dev: false - /@firebase/performance@0.6.5(@firebase/app@0.9.27): + /@firebase/performance@0.6.5(@firebase/app@0.9.28): resolution: {integrity: sha512-OzAGcWhOqEFH9GdwUuY0oC5FSlnMejcnmSAhR+EjpI7exdDvixyLyCR4txjSHYNTbumrFBG+EP8GO11CNXRaJA==} peerDependencies: '@firebase/app': 0.x dependencies: - '@firebase/app': 0.9.27 + '@firebase/app': 0.9.28 '@firebase/component': 0.6.5 - '@firebase/installations': 0.6.5(@firebase/app@0.9.27) + '@firebase/installations': 0.6.5(@firebase/app@0.9.28) '@firebase/logger': 0.4.0 '@firebase/util': 1.9.4 tslib: 2.6.2 dev: false - /@firebase/remote-config-compat@0.2.5(@firebase/app-compat@0.2.27)(@firebase/app@0.9.27): + /@firebase/remote-config-compat@0.2.5(@firebase/app-compat@0.2.28)(@firebase/app@0.9.28): resolution: {integrity: sha512-ImkNnLuGrD/bylBHDJigSY6LMwRrwt37wQbsGZhWG4QQ6KLzHzSf0nnFRRFvkOZodEUE57Ib8l74d6Yn/6TDUQ==} peerDependencies: '@firebase/app-compat': 0.x dependencies: - '@firebase/app-compat': 0.2.27 + '@firebase/app-compat': 0.2.28 '@firebase/component': 0.6.5 '@firebase/logger': 0.4.0 - '@firebase/remote-config': 0.4.5(@firebase/app@0.9.27) + '@firebase/remote-config': 0.4.5(@firebase/app@0.9.28) '@firebase/remote-config-types': 0.3.0 '@firebase/util': 1.9.4 tslib: 2.6.2 @@ -2779,27 +2785,27 @@ packages: resolution: {integrity: sha512-RtEH4vdcbXZuZWRZbIRmQVBNsE7VDQpet2qFvq6vwKLBIQRQR5Kh58M4ok3A3US8Sr3rubYnaGqZSurCwI8uMA==} dev: false - /@firebase/remote-config@0.4.5(@firebase/app@0.9.27): + /@firebase/remote-config@0.4.5(@firebase/app@0.9.28): resolution: {integrity: sha512-rGLqc/4OmxrS39RA9kgwa6JmgWytQuMo+B8pFhmGp3d++x2Hf9j+MLQfhOLyyUo64fNw20J19mLXhrXvKHsjZQ==} peerDependencies: '@firebase/app': 0.x dependencies: - '@firebase/app': 0.9.27 + '@firebase/app': 0.9.28 '@firebase/component': 0.6.5 - '@firebase/installations': 0.6.5(@firebase/app@0.9.27) + '@firebase/installations': 0.6.5(@firebase/app@0.9.28) '@firebase/logger': 0.4.0 '@firebase/util': 1.9.4 tslib: 2.6.2 dev: false - /@firebase/storage-compat@0.3.4(@firebase/app-compat@0.2.27)(@firebase/app-types@0.9.0)(@firebase/app@0.9.27): - resolution: {integrity: sha512-Y0m5e2gS/wB9Ioth2X/Sgz76vcxvqgQrCmfa9qwhss/N31kxY2Gks6Frv0nrE18AjVfcSmcfDitqUwxcMOTRSg==} + /@firebase/storage-compat@0.3.5(@firebase/app-compat@0.2.28)(@firebase/app-types@0.9.0)(@firebase/app@0.9.28): + resolution: {integrity: sha512-5dJXfY5NxCF5NAk4dLvJqC+m6cgcf0Fr29nrMHwhwI34pBheQq2PdRZqALsqZCES9dnHTuFNlqGQDpLr+Ph4rw==} peerDependencies: '@firebase/app-compat': 0.x dependencies: - '@firebase/app-compat': 0.2.27 + '@firebase/app-compat': 0.2.28 '@firebase/component': 0.6.5 - '@firebase/storage': 0.12.1(@firebase/app@0.9.27) + '@firebase/storage': 0.12.2(@firebase/app@0.9.28) '@firebase/storage-types': 0.8.0(@firebase/app-types@0.9.0)(@firebase/util@1.9.4) '@firebase/util': 1.9.4 tslib: 2.6.2 @@ -2818,16 +2824,16 @@ packages: '@firebase/util': 1.9.4 dev: false - /@firebase/storage@0.12.1(@firebase/app@0.9.27): - resolution: {integrity: sha512-KJ5NV7FUh54TeTlEjdkTTX60ciCKOp9EqlbLnpdcXUYRJg0Z4810TXbilPc1z7fTIG4iPjtdi95bGE9n4dBX8A==} + /@firebase/storage@0.12.2(@firebase/app@0.9.28): + resolution: {integrity: sha512-MzanOBcxDx9oOwDaDPMuiYxd6CxcN1xZm+os5uNE3C1itbRKLhM9rzpODDKWzcbnHHFtXk3Q3lsK/d3Xa1WYYw==} peerDependencies: '@firebase/app': 0.x dependencies: - '@firebase/app': 0.9.27 + '@firebase/app': 0.9.28 '@firebase/component': 0.6.5 '@firebase/util': 1.9.4 tslib: 2.6.2 - undici: 5.26.5 + undici: 5.28.3 dev: false /@firebase/util@1.9.4: @@ -2845,7 +2851,7 @@ packages: engines: {node: ^8.13.0 || >=10.10.0} dependencies: '@grpc/proto-loader': 0.7.10 - '@types/node': 20.11.19 + '@types/node': 20.11.22 dev: false /@grpc/proto-loader@0.7.10: @@ -3613,8 +3619,8 @@ packages: tslib: 2.6.2 dev: false - /@ngrx/operators@17.1.0(rxjs@7.8.1): - resolution: {integrity: sha512-Dc2vPdBcVpDPy1PAappTRQe6fMXR/hUXjQL5olIqI9jA/08Yj2Y3MMmXG4uPXMj9iVACy1B3kmxz424uTpfc1w==} + /@ngrx/operators@17.1.1(rxjs@7.8.1): + resolution: {integrity: sha512-B+D8zGSsVeIzonKhDLhO/T8g+RykjFhyhCLNJTJ5wCXuVVgk20JCxRc/71nx6efNvO08uzyXPU4ncR3aHxuThQ==} peerDependencies: rxjs: ^6.5.3 || ^7.4.0 dependencies: @@ -3622,8 +3628,8 @@ packages: tslib: 2.6.2 dev: false - /@ngrx/signals@17.1.0(@angular/core@17.2.1)(rxjs@7.8.1): - resolution: {integrity: sha512-CF387SNYUoPeFCh13S/vmsyFRZHXm7cZjxuwXbI3AWDS/JXO9GC2061O9f0Fy7DIyQtDisY9uGV5eOiKTYmT0w==} + /@ngrx/signals@17.1.1(@angular/core@17.2.3)(rxjs@7.8.1): + resolution: {integrity: sha512-9Rlw7u8LxkyS+HMZe7DzUkV1p/2IL5tDa1ZHhX8Ldilx4HoOHvISdzCagCpXMoXDLZGEaWOA/n/BcQQxsjytEg==} peerDependencies: '@angular/core': ^17.0.0 rxjs: ^6.5.3 || ^7.4.0 @@ -3631,20 +3637,20 @@ packages: rxjs: optional: true dependencies: - '@angular/core': 17.2.1(rxjs@7.8.1)(zone.js@0.14.4) + '@angular/core': 17.2.3(rxjs@7.8.1)(zone.js@0.14.4) rxjs: 7.8.1 tslib: 2.6.2 dev: false - /@ngtools/webpack@17.2.0(@angular/compiler-cli@17.2.1)(typescript@5.3.3)(webpack@5.90.1): - resolution: {integrity: sha512-3VilWAMylVpOqffhnLdc/UeElUWhBbG5j2XzxYWfQXb8OcVYoKNYPmJLc1vemoaYkkbaUX3zc5AEAN93Hk/q/g==} + /@ngtools/webpack@17.2.2(@angular/compiler-cli@17.2.3)(typescript@5.3.3)(webpack@5.90.1): + resolution: {integrity: sha512-HgvClGO6WVq4VA5d0ZvlDG5hrj8lQzRH99Gt87URm7G8E5XkatysdOsMqUQsJz+OwFWhP4PvTRWVblpBDiDl/A==} engines: {node: ^18.13.0 || >=20.9.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler-cli': ^17.0.0 typescript: '>=5.2 <5.4' webpack: ^5.54.0 dependencies: - '@angular/compiler-cli': 17.2.1(@angular/compiler@17.2.1)(typescript@5.3.3) + '@angular/compiler-cli': 17.2.3(@angular/compiler@17.2.3)(typescript@5.3.3) typescript: 5.3.3 webpack: 5.90.1(esbuild@0.20.0) dev: true @@ -4158,12 +4164,12 @@ packages: dev: true optional: true - /@schematics/angular@17.2.0: - resolution: {integrity: sha512-k5SisAPTRXxP2WVjWHgQl2sQkaAkUiOZJrHhTmUghTowULN2eIiW+1SSdNBFCbv+qkl276NfavOi22j+C7uaKQ==} + /@schematics/angular@17.2.2: + resolution: {integrity: sha512-Q3VAQ/S4gj8D1JPWgWG4enDdDZUu8mUXWVRG1rOi4sHgOF5zgPieQFp3LXqMUgOncmzbXrctkbO6NKc4N2FAag==} engines: {node: ^18.13.0 || >=20.9.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} dependencies: - '@angular-devkit/core': 17.2.0 - '@angular-devkit/schematics': 17.2.0 + '@angular-devkit/core': 17.2.2 + '@angular-devkit/schematics': 17.2.2 jsonc-parser: 3.2.1 transitivePeerDependencies: - chokidar @@ -4250,26 +4256,26 @@ packages: resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} dependencies: '@types/connect': 3.4.38 - '@types/node': 20.11.19 + '@types/node': 20.11.22 dev: true /@types/bonjour@3.5.13: resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} dependencies: - '@types/node': 20.11.19 + '@types/node': 20.11.22 dev: true /@types/connect-history-api-fallback@1.5.4: resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} dependencies: '@types/express-serve-static-core': 4.17.43 - '@types/node': 20.11.19 + '@types/node': 20.11.22 dev: true /@types/connect@3.4.38: resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} dependencies: - '@types/node': 20.11.19 + '@types/node': 20.11.22 dev: true /@types/cookie@0.4.1: @@ -4279,7 +4285,7 @@ packages: /@types/cors@2.8.17: resolution: {integrity: sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==} dependencies: - '@types/node': 20.11.19 + '@types/node': 20.11.22 dev: true /@types/eslint-scope@3.7.7: @@ -4303,7 +4309,7 @@ packages: /@types/express-serve-static-core@4.17.43: resolution: {integrity: sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==} dependencies: - '@types/node': 20.11.19 + '@types/node': 20.11.22 '@types/qs': 6.9.11 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -4325,7 +4331,7 @@ packages: /@types/http-proxy@1.17.14: resolution: {integrity: sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==} dependencies: - '@types/node': 20.11.19 + '@types/node': 20.11.22 dev: true /@types/jasmine@5.1.4: @@ -4347,11 +4353,11 @@ packages: /@types/node-forge@1.3.11: resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} dependencies: - '@types/node': 20.11.19 + '@types/node': 20.11.22 dev: true - /@types/node@20.11.19: - resolution: {integrity: sha512-7xMnVEcZFu0DikYjWOlRq7NTPETrm7teqUT2WkQjrTIkEgUyyGdWsj/Zg8bEJt5TNklzbPD1X3fqfsHw3SpapQ==} + /@types/node@20.11.22: + resolution: {integrity: sha512-/G+IxWxma6V3E+pqK1tSl2Fo1kl41pK1yeCyDsgkF9WlVAme4j5ISYM2zR11bgLFJGLN5sVK40T4RJNuiZbEjA==} dependencies: undici-types: 5.26.5 @@ -4371,15 +4377,15 @@ packages: resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==} dev: true - /@types/semver@7.5.7: - resolution: {integrity: sha512-/wdoPq1QqkSj9/QOeKkFquEuPzQbHTWAMPH/PaUMB+JuR31lXhlWXRZ52IpfDYVlDOUBvX09uBrPwxGT1hjNBg==} + /@types/semver@7.5.8: + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} dev: true /@types/send@0.17.4: resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} dependencies: '@types/mime': 1.3.5 - '@types/node': 20.11.19 + '@types/node': 20.11.22 dev: true /@types/serve-index@1.9.4: @@ -4393,23 +4399,23 @@ packages: dependencies: '@types/http-errors': 2.0.4 '@types/mime': 3.0.4 - '@types/node': 20.11.19 + '@types/node': 20.11.22 dev: true /@types/sockjs@0.3.36: resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} dependencies: - '@types/node': 20.11.19 + '@types/node': 20.11.22 dev: true /@types/ws@8.5.10: resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} dependencies: - '@types/node': 20.11.19 + '@types/node': 20.11.22 dev: true - /@typescript-eslint/eslint-plugin@7.0.1(@typescript-eslint/parser@7.0.1)(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-OLvgeBv3vXlnnJGIAgCLYKjgMEU+wBGj07MQ/nxAaON+3mLzX7mJbhRYrVGiVvFiXtwFlkcBa/TtmglHy0UbzQ==} + /@typescript-eslint/eslint-plugin@7.1.0(@typescript-eslint/parser@7.1.0)(eslint@8.57.0)(typescript@5.3.3): + resolution: {integrity: sha512-j6vT/kCulhG5wBmGtstKeiVr1rdXE4nk+DT1k6trYkwlrvW9eOF5ZbgKnd/YR6PcM4uTEXa0h6Fcvf6X7Dxl0w==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^7.0.0 @@ -4420,13 +4426,13 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.0.1(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/scope-manager': 7.0.1 - '@typescript-eslint/type-utils': 7.0.1(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/utils': 7.0.1(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/visitor-keys': 7.0.1 + '@typescript-eslint/parser': 7.1.0(eslint@8.57.0)(typescript@5.3.3) + '@typescript-eslint/scope-manager': 7.1.0 + '@typescript-eslint/type-utils': 7.1.0(eslint@8.57.0)(typescript@5.3.3) + '@typescript-eslint/utils': 7.1.0(eslint@8.57.0)(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 7.1.0 debug: 4.3.4 - eslint: 8.56.0 + eslint: 8.57.0 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 @@ -4437,8 +4443,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@7.0.1(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-8GcRRZNzaHxKzBPU3tKtFNing571/GwPBeCvmAUw0yBtfE2XVd0zFKJIMSWkHJcPQi0ekxjIts6L/rrZq5cxGQ==} + /@typescript-eslint/parser@7.1.0(eslint@8.57.0)(typescript@5.3.3): + resolution: {integrity: sha512-V1EknKUubZ1gWFjiOZhDSNToOjs63/9O0puCgGS8aDOgpZY326fzFu15QAUjwaXzRZjf/qdsdBrckYdv9YxB8w==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^8.56.0 @@ -4447,12 +4453,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 7.0.1 - '@typescript-eslint/types': 7.0.1 - '@typescript-eslint/typescript-estree': 7.0.1(typescript@5.3.3) - '@typescript-eslint/visitor-keys': 7.0.1 + '@typescript-eslint/scope-manager': 7.1.0 + '@typescript-eslint/types': 7.1.0 + '@typescript-eslint/typescript-estree': 7.1.0(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 7.1.0 debug: 4.3.4 - eslint: 8.56.0 + eslint: 8.57.0 typescript: 5.3.3 transitivePeerDependencies: - supports-color @@ -4466,15 +4472,15 @@ packages: '@typescript-eslint/visitor-keys': 6.19.0 dev: true - /@typescript-eslint/scope-manager@7.0.1: - resolution: {integrity: sha512-v7/T7As10g3bcWOOPAcbnMDuvctHzCFYCG/8R4bK4iYzdFqsZTbXGln0cZNVcwQcwewsYU2BJLay8j0/4zOk4w==} + /@typescript-eslint/scope-manager@7.1.0: + resolution: {integrity: sha512-6TmN4OJiohHfoOdGZ3huuLhpiUgOGTpgXNUPJgeZOZR3DnIpdSgtt83RS35OYNNXxM4TScVlpVKC9jyQSETR1A==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 7.0.1 - '@typescript-eslint/visitor-keys': 7.0.1 + '@typescript-eslint/types': 7.1.0 + '@typescript-eslint/visitor-keys': 7.1.0 dev: true - /@typescript-eslint/type-utils@6.19.0(eslint@8.56.0)(typescript@5.3.3): + /@typescript-eslint/type-utils@6.19.0(eslint@8.57.0)(typescript@5.3.3): resolution: {integrity: sha512-mcvS6WSWbjiSxKCwBcXtOM5pRkPQ6kcDds/juxcy/727IQr3xMEcwr/YLHW2A2+Fp5ql6khjbKBzOyjuPqGi/w==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -4485,17 +4491,17 @@ packages: optional: true dependencies: '@typescript-eslint/typescript-estree': 6.19.0(typescript@5.3.3) - '@typescript-eslint/utils': 6.19.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/utils': 6.19.0(eslint@8.57.0)(typescript@5.3.3) debug: 4.3.4 - eslint: 8.56.0 + eslint: 8.57.0 ts-api-utils: 1.2.0(typescript@5.3.3) typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/type-utils@7.0.1(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-YtT9UcstTG5Yqy4xtLiClm1ZpM/pWVGFnkAa90UfdkkZsR1eP2mR/1jbHeYp8Ay1l1JHPyGvoUYR6o3On5Nhmw==} + /@typescript-eslint/type-utils@7.1.0(eslint@8.57.0)(typescript@5.3.3): + resolution: {integrity: sha512-UZIhv8G+5b5skkcuhgvxYWHjk7FW7/JP5lPASMEUoliAPwIH/rxoUSQPia2cuOj9AmDZmwUl1usKm85t5VUMew==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^8.56.0 @@ -4504,10 +4510,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 7.0.1(typescript@5.3.3) - '@typescript-eslint/utils': 7.0.1(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/typescript-estree': 7.1.0(typescript@5.3.3) + '@typescript-eslint/utils': 7.1.0(eslint@8.57.0)(typescript@5.3.3) debug: 4.3.4 - eslint: 8.56.0 + eslint: 8.57.0 ts-api-utils: 1.2.0(typescript@5.3.3) typescript: 5.3.3 transitivePeerDependencies: @@ -4519,8 +4525,8 @@ packages: engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/types@7.0.1: - resolution: {integrity: sha512-uJDfmirz4FHib6ENju/7cz9SdMSkeVvJDK3VcMFvf/hAShg8C74FW+06MaQPODHfDJp/z/zHfgawIJRjlu0RLg==} + /@typescript-eslint/types@7.1.0: + resolution: {integrity: sha512-qTWjWieJ1tRJkxgZYXx6WUYtWlBc48YRxgY2JN1aGeVpkhmnopq+SUC8UEVGNXIvWH7XyuTjwALfG6bFEgCkQA==} engines: {node: ^16.0.0 || >=18.0.0} dev: true @@ -4546,8 +4552,8 @@ packages: - supports-color dev: true - /@typescript-eslint/typescript-estree@7.0.1(typescript@5.3.3): - resolution: {integrity: sha512-SO9wHb6ph0/FN5OJxH4MiPscGah5wjOd0RRpaLvuBv9g8565Fgu0uMySFEPqwPHiQU90yzJ2FjRYKGrAhS1xig==} + /@typescript-eslint/typescript-estree@7.1.0(typescript@5.3.3): + resolution: {integrity: sha512-k7MyrbD6E463CBbSpcOnwa8oXRdHzH1WiVzOipK3L5KSML92ZKgUBrTlehdi7PEIMT8k0bQixHUGXggPAlKnOQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -4555,8 +4561,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 7.0.1 - '@typescript-eslint/visitor-keys': 7.0.1 + '@typescript-eslint/types': 7.1.0 + '@typescript-eslint/visitor-keys': 7.1.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -4568,38 +4574,38 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@6.19.0(eslint@8.56.0)(typescript@5.3.3): + /@typescript-eslint/utils@6.19.0(eslint@8.57.0)(typescript@5.3.3): resolution: {integrity: sha512-QR41YXySiuN++/dC9UArYOg4X86OAYP83OWTewpVx5ct1IZhjjgTLocj7QNxGhWoTqknsgpl7L+hGygCO+sdYw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@types/json-schema': 7.0.15 '@types/semver': 7.5.6 '@typescript-eslint/scope-manager': 6.19.0 '@typescript-eslint/types': 6.19.0 '@typescript-eslint/typescript-estree': 6.19.0(typescript@5.3.3) - eslint: 8.56.0 + eslint: 8.57.0 semver: 7.6.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/utils@7.0.1(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-oe4his30JgPbnv+9Vef1h48jm0S6ft4mNwi9wj7bX10joGn07QRfqIqFHoMiajrtoU88cIhXf8ahwgrcbNLgPA==} + /@typescript-eslint/utils@7.1.0(eslint@8.57.0)(typescript@5.3.3): + resolution: {integrity: sha512-WUFba6PZC5OCGEmbweGpnNJytJiLG7ZvDBJJoUcX4qZYf1mGZ97mO2Mps6O2efxJcJdRNpqweCistDbZMwIVHw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^8.56.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@types/json-schema': 7.0.15 - '@types/semver': 7.5.7 - '@typescript-eslint/scope-manager': 7.0.1 - '@typescript-eslint/types': 7.0.1 - '@typescript-eslint/typescript-estree': 7.0.1(typescript@5.3.3) - eslint: 8.56.0 + '@types/semver': 7.5.8 + '@typescript-eslint/scope-manager': 7.1.0 + '@typescript-eslint/types': 7.1.0 + '@typescript-eslint/typescript-estree': 7.1.0(typescript@5.3.3) + eslint: 8.57.0 semver: 7.6.0 transitivePeerDependencies: - supports-color @@ -4614,11 +4620,11 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@typescript-eslint/visitor-keys@7.0.1: - resolution: {integrity: sha512-hwAgrOyk++RTXrP4KzCg7zB2U0xt7RUU0ZdMSCsqF3eKUwkdXUMyTb0qdCuji7VIbcpG62kKTU9M1J1c9UpFBw==} + /@typescript-eslint/visitor-keys@7.1.0: + resolution: {integrity: sha512-FhUqNWluiGNzlvnDZiXad4mZRhtghdoKW6e98GoEOYSu5cND+E39rG5KwJMUzeENwm1ztYBRqof8wMLP+wNPIA==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 7.0.1 + '@typescript-eslint/types': 7.1.0 eslint-visitor-keys: 3.4.3 dev: true @@ -4642,7 +4648,7 @@ packages: peerDependencies: vite: ^3.0.0 || ^4.0.0 || ^5.0.0 dependencies: - vite: 5.0.12(@types/node@20.11.19)(less@4.2.0)(sass@1.70.0)(terser@5.27.0) + vite: 5.0.12(@types/node@20.11.22)(less@4.2.0)(sass@1.70.0)(terser@5.27.0) dev: true /@webassemblyjs/ast@1.11.6: @@ -5312,7 +5318,6 @@ packages: /cli-spinners@2.9.2: resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} - dev: true /cli-width@4.1.0: resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} @@ -5812,7 +5817,7 @@ packages: dependencies: '@types/cookie': 0.4.1 '@types/cors': 2.8.17 - '@types/node': 20.11.19 + '@types/node': 20.11.22 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.4.2 @@ -5964,13 +5969,13 @@ packages: engines: {node: '>=10'} dev: true - /eslint-config-prettier@9.1.0(eslint@8.56.0): + /eslint-config-prettier@9.1.0(eslint@8.57.0): resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.56.0 + eslint: 8.57.0 dev: true /eslint-scope@5.1.1: @@ -6002,15 +6007,15 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.56.0: - resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==} + /eslint@8.57.0: + resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@eslint-community/regexpp': 4.10.0 '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.56.0 + '@eslint/js': 8.57.0 '@humanwhocodes/config-array': 0.11.14 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 @@ -6293,34 +6298,34 @@ packages: path-exists: 5.0.0 dev: true - /firebase@10.8.0: - resolution: {integrity: sha512-UJpC24vw8JFuHEOQyArBGKTUd7+kohLISCzHyn0M/prP0KOTx2io1eyLliEid330QqnWI7FOlPxoU97qecCSfQ==} + /firebase@10.8.1: + resolution: {integrity: sha512-4B2jzhU/aumfKL446MG41/T5+t+9d9urf5XGrjC0HRQUm4Ya/amV48HBchnje69ExaJP5f2WxO9OX3wh9ee4wA==} dependencies: - '@firebase/analytics': 0.10.1(@firebase/app@0.9.27) - '@firebase/analytics-compat': 0.2.7(@firebase/app-compat@0.2.27)(@firebase/app@0.9.27) - '@firebase/app': 0.9.27 - '@firebase/app-check': 0.8.2(@firebase/app@0.9.27) - '@firebase/app-check-compat': 0.3.9(@firebase/app-compat@0.2.27)(@firebase/app@0.9.27) - '@firebase/app-compat': 0.2.27 + '@firebase/analytics': 0.10.1(@firebase/app@0.9.28) + '@firebase/analytics-compat': 0.2.7(@firebase/app-compat@0.2.28)(@firebase/app@0.9.28) + '@firebase/app': 0.9.28 + '@firebase/app-check': 0.8.2(@firebase/app@0.9.28) + '@firebase/app-check-compat': 0.3.9(@firebase/app-compat@0.2.28)(@firebase/app@0.9.28) + '@firebase/app-compat': 0.2.28 '@firebase/app-types': 0.9.0 - '@firebase/auth': 1.6.0(@firebase/app@0.9.27) - '@firebase/auth-compat': 0.5.2(@firebase/app-compat@0.2.27)(@firebase/app-types@0.9.0)(@firebase/app@0.9.27) + '@firebase/auth': 1.6.1(@firebase/app@0.9.28) + '@firebase/auth-compat': 0.5.3(@firebase/app-compat@0.2.28)(@firebase/app-types@0.9.0)(@firebase/app@0.9.28) '@firebase/database': 1.0.3 '@firebase/database-compat': 1.0.3 - '@firebase/firestore': 4.4.2(@firebase/app@0.9.27) - '@firebase/firestore-compat': 0.3.25(@firebase/app-compat@0.2.27)(@firebase/app-types@0.9.0)(@firebase/app@0.9.27) - '@firebase/functions': 0.11.1(@firebase/app@0.9.27) - '@firebase/functions-compat': 0.3.7(@firebase/app-compat@0.2.27)(@firebase/app@0.9.27) - '@firebase/installations': 0.6.5(@firebase/app@0.9.27) - '@firebase/installations-compat': 0.2.5(@firebase/app-compat@0.2.27)(@firebase/app-types@0.9.0)(@firebase/app@0.9.27) - '@firebase/messaging': 0.12.6(@firebase/app@0.9.27) - '@firebase/messaging-compat': 0.2.6(@firebase/app-compat@0.2.27)(@firebase/app@0.9.27) - '@firebase/performance': 0.6.5(@firebase/app@0.9.27) - '@firebase/performance-compat': 0.2.5(@firebase/app-compat@0.2.27)(@firebase/app@0.9.27) - '@firebase/remote-config': 0.4.5(@firebase/app@0.9.27) - '@firebase/remote-config-compat': 0.2.5(@firebase/app-compat@0.2.27)(@firebase/app@0.9.27) - '@firebase/storage': 0.12.1(@firebase/app@0.9.27) - '@firebase/storage-compat': 0.3.4(@firebase/app-compat@0.2.27)(@firebase/app-types@0.9.0)(@firebase/app@0.9.27) + '@firebase/firestore': 4.4.3(@firebase/app@0.9.28) + '@firebase/firestore-compat': 0.3.26(@firebase/app-compat@0.2.28)(@firebase/app-types@0.9.0)(@firebase/app@0.9.28) + '@firebase/functions': 0.11.2(@firebase/app@0.9.28) + '@firebase/functions-compat': 0.3.8(@firebase/app-compat@0.2.28)(@firebase/app@0.9.28) + '@firebase/installations': 0.6.5(@firebase/app@0.9.28) + '@firebase/installations-compat': 0.2.5(@firebase/app-compat@0.2.28)(@firebase/app-types@0.9.0)(@firebase/app@0.9.28) + '@firebase/messaging': 0.12.6(@firebase/app@0.9.28) + '@firebase/messaging-compat': 0.2.6(@firebase/app-compat@0.2.28)(@firebase/app@0.9.28) + '@firebase/performance': 0.6.5(@firebase/app@0.9.28) + '@firebase/performance-compat': 0.2.5(@firebase/app-compat@0.2.28)(@firebase/app@0.9.28) + '@firebase/remote-config': 0.4.5(@firebase/app@0.9.28) + '@firebase/remote-config-compat': 0.2.5(@firebase/app-compat@0.2.28)(@firebase/app@0.9.28) + '@firebase/storage': 0.12.2(@firebase/app@0.9.28) + '@firebase/storage-compat': 0.3.5(@firebase/app-compat@0.2.28)(@firebase/app-types@0.9.0)(@firebase/app@0.9.28) '@firebase/util': 1.9.4 transitivePeerDependencies: - '@react-native-async-storage/async-storage' @@ -7032,7 +7037,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 20.11.19 + '@types/node': 20.11.22 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true @@ -7145,7 +7150,7 @@ packages: - supports-color dev: true - /karma-jasmine-html-reporter@2.1.0(jasmine-core@5.1.2)(karma-jasmine@5.1.0)(karma@6.4.2): + /karma-jasmine-html-reporter@2.1.0(jasmine-core@5.1.2)(karma-jasmine@5.1.0)(karma@6.4.3): resolution: {integrity: sha512-sPQE1+nlsn6Hwb5t+HHwyy0A1FNCVKuL1192b+XNauMYWThz2kweiBVW1DqloRpVvZIJkIoHVB7XRpK78n1xbQ==} peerDependencies: jasmine-core: ^4.0.0 || ^5.0.0 @@ -7153,18 +7158,18 @@ packages: karma-jasmine: ^5.0.0 dependencies: jasmine-core: 5.1.2 - karma: 6.4.2 - karma-jasmine: 5.1.0(karma@6.4.2) + karma: 6.4.3 + karma-jasmine: 5.1.0(karma@6.4.3) dev: true - /karma-jasmine@5.1.0(karma@6.4.2): + /karma-jasmine@5.1.0(karma@6.4.3): resolution: {integrity: sha512-i/zQLFrfEpRyQoJF9fsCdTMOF5c2dK7C7OmsuKg2D0YSsuZSfQDiLuaiktbuio6F2wiCsZSnSnieIQ0ant/uzQ==} engines: {node: '>=12'} peerDependencies: karma: ^6.0.0 dependencies: jasmine-core: 4.6.0 - karma: 6.4.2 + karma: 6.4.3 dev: true /karma-source-map-support@1.4.0: @@ -7173,8 +7178,8 @@ packages: source-map-support: 0.5.21 dev: true - /karma@6.4.2: - resolution: {integrity: sha512-C6SU/53LB31BEgRg+omznBEMY4SjHU3ricV6zBcAe1EeILKkeScr+fZXtaI5WyDbkVowJxxAI6h73NcFPmXolQ==} + /karma@6.4.3: + resolution: {integrity: sha512-LuucC/RE92tJ8mlCwqEoRWXP38UMAqpnq98vktmS9SznSoUPPUJQbc91dHcxcunROvfQjdORVA/YFviH+Xci9Q==} engines: {node: '>= 10'} hasBin: true dependencies: @@ -7277,8 +7282,6 @@ packages: peerDependenciesMeta: webpack: optional: true - webpack-sources: - optional: true dependencies: webpack: 5.90.1(esbuild@0.20.0) webpack-sources: 3.2.3 @@ -7695,7 +7698,7 @@ packages: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} dev: true - /ng-mocks@14.12.1(@angular/common@17.2.1)(@angular/core@17.2.1)(@angular/forms@17.2.1)(@angular/platform-browser@17.2.1): + /ng-mocks@14.12.1(@angular/common@17.2.3)(@angular/core@17.2.3)(@angular/forms@17.2.3)(@angular/platform-browser@17.2.3): resolution: {integrity: sha512-5OdTYYOva7IkCCi6kTtgnII1hSfw+qYOM1ScrKhyo7iaI/ViV8xI4MGa89Ts7XnH6XqISSez2Un3zFSomkFpmg==} peerDependencies: '@angular/common': 5.0.0-alpha - 5 || 6.0.0-alpha - 6 || 7.0.0-alpha - 7 || 8.0.0-alpha - 8 || 9.0.0-alpha - 9 || 10.0.0-alpha - 10 || 11.0.0-alpha - 11 || 12.0.0-alpha - 12 || 13.0.0-alpha - 13 || 14.0.0-alpha - 14 || 15.0.0-alpha - 15 || 16.0.0-alpha - 16 || 17.0.0-alpha - 17 @@ -7703,14 +7706,14 @@ packages: '@angular/forms': 5.0.0-alpha - 5 || 6.0.0-alpha - 6 || 7.0.0-alpha - 7 || 8.0.0-alpha - 8 || 9.0.0-alpha - 9 || 10.0.0-alpha - 10 || 11.0.0-alpha - 11 || 12.0.0-alpha - 12 || 13.0.0-alpha - 13 || 14.0.0-alpha - 14 || 15.0.0-alpha - 15 || 16.0.0-alpha - 16 || 17.0.0-alpha - 17 '@angular/platform-browser': 5.0.0-alpha - 5 || 6.0.0-alpha - 6 || 7.0.0-alpha - 7 || 8.0.0-alpha - 8 || 9.0.0-alpha - 9 || 10.0.0-alpha - 10 || 11.0.0-alpha - 11 || 12.0.0-alpha - 12 || 13.0.0-alpha - 13 || 14.0.0-alpha - 14 || 15.0.0-alpha - 15 || 16.0.0-alpha - 16 || 17.0.0-alpha - 17 dependencies: - '@angular/common': 17.2.1(@angular/core@17.2.1)(rxjs@7.8.1) - '@angular/core': 17.2.1(rxjs@7.8.1)(zone.js@0.14.4) - '@angular/forms': 17.2.1(@angular/common@17.2.1)(@angular/core@17.2.1)(@angular/platform-browser@17.2.1)(rxjs@7.8.1) - '@angular/platform-browser': 17.2.1(@angular/animations@17.2.1)(@angular/common@17.2.1)(@angular/core@17.2.1) + '@angular/common': 17.2.3(@angular/core@17.2.3)(rxjs@7.8.1) + '@angular/core': 17.2.3(rxjs@7.8.1)(zone.js@0.14.4) + '@angular/forms': 17.2.3(@angular/common@17.2.3)(@angular/core@17.2.3)(@angular/platform-browser@17.2.3)(rxjs@7.8.1) + '@angular/platform-browser': 17.2.3(@angular/animations@17.2.3)(@angular/common@17.2.3)(@angular/core@17.2.3) dev: true - /ngxtension@2.0.0(@angular/common@17.2.1)(@angular/core@17.2.1)(@use-gesture/vanilla@10.3.0)(rxjs@7.8.1): - resolution: {integrity: sha512-S/MJ2rifemopwmq4rexfWmxnURGZeBxUwivG6ymbLusHsfHuQo821RzMl+fmJwMr4Yt5nLwUsralM7Vipd7/nQ==} + /ngxtension@2.1.0(@angular/common@17.2.3)(@angular/core@17.2.3)(@use-gesture/vanilla@10.3.0)(rxjs@7.8.1): + resolution: {integrity: sha512-3i9YsCb5+HV/Oj+LNcZwPkaYnGADQ0wQs6PRcBdfriQ7/ibXbl0hkOlFHh5bW7gSJOq91hTr0DtvDkmgy6+Uqw==} engines: {node: '>=18'} peerDependencies: '@angular/common': '>=16.0.0' @@ -7718,8 +7721,8 @@ packages: '@use-gesture/vanilla': ^10.0.0 rxjs: ^6.0.0 || ^7.0.0 dependencies: - '@angular/common': 17.2.1(@angular/core@17.2.1)(rxjs@7.8.1) - '@angular/core': 17.2.1(rxjs@7.8.1)(zone.js@0.14.4) + '@angular/common': 17.2.3(@angular/core@17.2.3)(rxjs@7.8.1) + '@angular/core': 17.2.3(rxjs@7.8.1)(zone.js@0.14.4) '@nx/devkit': 17.3.2(nx@17.3.2) '@use-gesture/vanilla': 10.3.0 nx: 17.3.2 @@ -8083,7 +8086,7 @@ packages: bl: 4.1.0 chalk: 4.1.2 cli-cursor: 3.1.0 - cli-spinners: 2.6.1 + cli-spinners: 2.9.2 is-interactive: 1.0.0 log-symbols: 4.1.0 strip-ansi: 6.0.1 @@ -8577,7 +8580,7 @@ packages: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 20.11.19 + '@types/node': 20.11.22 long: 5.2.3 dev: false @@ -8854,13 +8857,13 @@ packages: dependencies: queue-microtask: 1.2.3 - /rxfire@6.0.5(firebase@10.8.0)(rxjs@7.8.1): + /rxfire@6.0.5(firebase@10.8.1)(rxjs@7.8.1): resolution: {integrity: sha512-ycBsANGbya3GNtOBKzZVATLEV+0S9gUrlTfwnN15TCXtgG8OgIMAuv2k9+kMeVaevp/DRp1KT+vYf6Wkop6gvw==} peerDependencies: firebase: ^9.0.0 || ^10.0.0 rxjs: ^6.0.0 || ^7.0.0 dependencies: - firebase: 10.8.0 + firebase: 10.8.1 rxjs: 7.8.1 dev: false @@ -9652,11 +9655,11 @@ packages: /undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - /undici@5.26.5: - resolution: {integrity: sha512-cSb4bPFd5qgR7qr2jYAi0hlX9n5YKK2ONKkLFkxl+v/9BvC0sOpZjBHDBSXc5lWAf5ty9oZdRXytBIHzgUcerw==} + /undici@5.28.3: + resolution: {integrity: sha512-3ItfzbrhDlINjaP0duwnNsKpDQk3acHI3gVJ1z4fmwMK31k5G9OVIAMLSIaP6w4FaGkaAkN6zaQO9LUvZ1t7VA==} engines: {node: '>=14.0'} dependencies: - '@fastify/busboy': 2.1.0 + '@fastify/busboy': 2.1.1 dev: false /undici@6.6.2: @@ -9763,7 +9766,7 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - /vite@5.0.12(@types/node@20.11.19)(less@4.2.0)(sass@1.70.0)(terser@5.27.0): + /vite@5.0.12(@types/node@20.11.22)(less@4.2.0)(sass@1.70.0)(terser@5.27.0): resolution: {integrity: sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -9791,7 +9794,7 @@ packages: terser: optional: true dependencies: - '@types/node': 20.11.19 + '@types/node': 20.11.22 esbuild: 0.19.11 less: 4.2.0 postcss: 8.4.35 diff --git a/app/src/index.html b/app/src/index.html index 99099c9..5f4f1d5 100644 --- a/app/src/index.html +++ b/app/src/index.html @@ -2,7 +2,7 @@ <html lang="en"> <head> <meta charset="utf-8" /> - <title>App + FullStacksDev Angular and Firebase base template diff --git a/app/src/manifest.webmanifest b/app/src/manifest.webmanifest index 1f18ec5..e575d07 100644 --- a/app/src/manifest.webmanifest +++ b/app/src/manifest.webmanifest @@ -1,6 +1,6 @@ { - "name": "My Angular and Firebase app", - "short_name": "My app", + "name": "FullStacksDev Angular and Firebase base template", + "short_name": "Angular and Firebase template", "theme_color": "#1976d2", "background_color": "#f3f4f6", "display": "standalone", diff --git a/firebase/package.json b/firebase/package.json index af81836..9c286cf 100644 --- a/firebase/package.json +++ b/firebase/package.json @@ -25,17 +25,17 @@ }, "devDependencies": { "@firebase/rules-unit-testing": "^3.0.1", - "@typescript-eslint/eslint-plugin": "^7.0.1", - "@typescript-eslint/parser": "^7.0.1", - "eslint": "^8.56.0", + "@typescript-eslint/eslint-plugin": "^7.1.0", + "@typescript-eslint/parser": "^7.1.0", + "eslint": "^8.57.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-import": "^2.29.1", "firebase-functions-test": "^3.1.1", - "firebase-tools": "^13.3.0", + "firebase-tools": "^13.4.0", "npm-run-all": "^4.1.5", "prettier": "^3.2.5", "typescript": "~5.3.3", - "vitest": "^1.2.2" + "vitest": "^1.3.1" }, "private": true } diff --git a/firebase/pnpm-lock.yaml b/firebase/pnpm-lock.yaml index c3f4dc0..744d668 100644 --- a/firebase/pnpm-lock.yaml +++ b/firebase/pnpm-lock.yaml @@ -23,26 +23,26 @@ devDependencies: specifier: ^3.0.1 version: 3.0.1(firebase@10.8.0) '@typescript-eslint/eslint-plugin': - specifier: ^7.0.1 - version: 7.0.1(@typescript-eslint/parser@7.0.1)(eslint@8.56.0)(typescript@5.3.3) + specifier: ^7.1.0 + version: 7.1.0(@typescript-eslint/parser@7.1.0)(eslint@8.57.0)(typescript@5.3.3) '@typescript-eslint/parser': - specifier: ^7.0.1 - version: 7.0.1(eslint@8.56.0)(typescript@5.3.3) + specifier: ^7.1.0 + version: 7.1.0(eslint@8.57.0)(typescript@5.3.3) eslint: - specifier: ^8.56.0 - version: 8.56.0 + specifier: ^8.57.0 + version: 8.57.0 eslint-config-prettier: specifier: ^9.1.0 - version: 9.1.0(eslint@8.56.0) + version: 9.1.0(eslint@8.57.0) eslint-plugin-import: specifier: ^2.29.1 - version: 2.29.1(@typescript-eslint/parser@7.0.1)(eslint@8.56.0) + version: 2.29.1(@typescript-eslint/parser@7.1.0)(eslint@8.57.0) firebase-functions-test: specifier: ^3.1.1 version: 3.1.1(firebase-admin@12.0.0)(firebase-functions@4.7.0)(jest@29.7.0) firebase-tools: - specifier: ^13.3.0 - version: 13.3.0 + specifier: ^13.4.0 + version: 13.4.0 npm-run-all: specifier: ^4.1.5 version: 4.1.5 @@ -53,8 +53,8 @@ devDependencies: specifier: ~5.3.3 version: 5.3.3 vitest: - specifier: ^1.2.2 - version: 1.2.2 + specifier: ^1.3.1 + version: 1.3.1 packages: @@ -67,8 +67,8 @@ packages: resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} engines: {node: '>=6.0.0'} dependencies: - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.22 + '@jridgewell/gen-mapping': 0.3.4 + '@jridgewell/trace-mapping': 0.3.23 dev: true /@apidevtools/json-schema-ref-parser@9.1.2: @@ -92,20 +92,20 @@ packages: engines: {node: '>=6.9.0'} dev: true - /@babel/core@7.23.9: - resolution: {integrity: sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==} + /@babel/core@7.24.0: + resolution: {integrity: sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.1 '@babel/code-frame': 7.23.5 '@babel/generator': 7.23.6 '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) - '@babel/helpers': 7.23.9 - '@babel/parser': 7.23.9 - '@babel/template': 7.23.9 - '@babel/traverse': 7.23.9 - '@babel/types': 7.23.9 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.0) + '@babel/helpers': 7.24.0 + '@babel/parser': 7.24.0 + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.0 + '@babel/types': 7.24.0 convert-source-map: 2.0.0 debug: 4.3.4 gensync: 1.0.0-beta.2 @@ -119,9 +119,9 @@ packages: resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.9 - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.22 + '@babel/types': 7.24.0 + '@jridgewell/gen-mapping': 0.3.4 + '@jridgewell/trace-mapping': 0.3.23 jsesc: 2.5.2 dev: true @@ -145,31 +145,31 @@ packages: resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.23.9 - '@babel/types': 7.23.9 + '@babel/template': 7.24.0 + '@babel/types': 7.24.0 dev: true /@babel/helper-hoist-variables@7.22.5: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.24.0 dev: true /@babel/helper-module-imports@7.22.15: resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.24.0 dev: true - /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.9): + /@babel/helper-module-transforms@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.0 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-module-imports': 7.22.15 '@babel/helper-simple-access': 7.22.5 @@ -177,8 +177,8 @@ packages: '@babel/helper-validator-identifier': 7.22.20 dev: true - /@babel/helper-plugin-utils@7.22.5: - resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} + /@babel/helper-plugin-utils@7.24.0: + resolution: {integrity: sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==} engines: {node: '>=6.9.0'} dev: true @@ -186,14 +186,14 @@ packages: resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.24.0 dev: true /@babel/helper-split-export-declaration@7.22.6: resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.24.0 dev: true /@babel/helper-string-parser@7.23.4: @@ -211,13 +211,13 @@ packages: engines: {node: '>=6.9.0'} dev: true - /@babel/helpers@7.23.9: - resolution: {integrity: sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==} + /@babel/helpers@7.24.0: + resolution: {integrity: sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.23.9 - '@babel/traverse': 7.23.9 - '@babel/types': 7.23.9 + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.0 + '@babel/types': 7.24.0 transitivePeerDependencies: - supports-color dev: true @@ -238,146 +238,154 @@ packages: '@babel/types': 7.23.9 dev: true - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.9): + /@babel/parser@7.24.0: + resolution: {integrity: sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.24.0 + dev: true + + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.0): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 dev: true - /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.23.9): + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.24.0): resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 dev: true - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.9): + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.0): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 dev: true - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.9): + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.0): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 dev: true - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.9): + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.0): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 dev: true - /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.9): + /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 dev: true - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.9): + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.0): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 dev: true - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.9): + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.0): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 dev: true - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.9): + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.0): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 dev: true - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.9): + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.0): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 dev: true - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.9): + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.0): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 dev: true - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.9): + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.0): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 dev: true - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.9): + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.0): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 dev: true - /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.9): + /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 dev: true - /@babel/template@7.23.9: - resolution: {integrity: sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==} + /@babel/template@7.24.0: + resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.23.5 - '@babel/parser': 7.23.9 - '@babel/types': 7.23.9 + '@babel/parser': 7.24.0 + '@babel/types': 7.24.0 dev: true - /@babel/traverse@7.23.9: - resolution: {integrity: sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==} + /@babel/traverse@7.24.0: + resolution: {integrity: sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.23.5 @@ -386,8 +394,8 @@ packages: '@babel/helper-function-name': 7.23.0 '@babel/helper-hoist-variables': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.23.9 - '@babel/types': 7.23.9 + '@babel/parser': 7.24.0 + '@babel/types': 7.24.0 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: @@ -403,6 +411,15 @@ packages: to-fast-properties: 2.0.0 dev: true + /@babel/types@7.24.0: + resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.23.4 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 + dev: true + /@bcoe/v8-coverage@0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true @@ -634,13 +651,13 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.56.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.56.0 + eslint: 8.57.0 eslint-visitor-keys: 3.4.3 dev: true @@ -666,8 +683,8 @@ packages: - supports-color dev: true - /@eslint/js@8.56.0: - resolution: {integrity: sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==} + /@eslint/js@8.57.0: + resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -1338,7 +1355,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.11.19 + '@types/node': 20.11.21 chalk: 4.1.2 jest-message-util: 29.7.0 jest-util: 29.7.0 @@ -1359,14 +1376,14 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.11.19 + '@types/node': 20.11.21 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.11.19) + jest-config: 29.7.0(@types/node@20.11.21) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -1394,7 +1411,7 @@ packages: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.11.19 + '@types/node': 20.11.21 jest-mock: 29.7.0 dev: true @@ -1421,7 +1438,7 @@ packages: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 20.11.19 + '@types/node': 20.11.21 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -1453,18 +1470,18 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.22 - '@types/node': 20.11.19 + '@jridgewell/trace-mapping': 0.3.23 + '@types/node': 20.11.21 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit: 0.1.2 glob: 7.2.3 graceful-fs: 4.2.11 istanbul-lib-coverage: 3.2.2 - istanbul-lib-instrument: 6.0.1 + istanbul-lib-instrument: 6.0.2 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.6 + istanbul-reports: 3.1.7 jest-message-util: 29.7.0 jest-util: 29.7.0 jest-worker: 29.7.0 @@ -1487,7 +1504,7 @@ packages: resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jridgewell/trace-mapping': 0.3.22 + '@jridgewell/trace-mapping': 0.3.23 callsites: 3.1.0 graceful-fs: 4.2.11 dev: true @@ -1516,9 +1533,9 @@ packages: resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.0 '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.22 + '@jridgewell/trace-mapping': 0.3.23 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 convert-source-map: 2.0.0 @@ -1542,18 +1559,18 @@ packages: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.11.19 + '@types/node': 20.11.21 '@types/yargs': 17.0.32 chalk: 4.1.2 dev: true - /@jridgewell/gen-mapping@0.3.3: - resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + /@jridgewell/gen-mapping@0.3.4: + resolution: {integrity: sha512-Oud2QPM5dHviZNn4y/WhhYKSXksv+1xLEIsNrAbGcFzUN3ubqWRFT5gwPchNc5NuzILOU4tPBDTZ4VwhL8Y7cw==} engines: {node: '>=6.0.0'} dependencies: '@jridgewell/set-array': 1.1.2 '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.22 + '@jridgewell/trace-mapping': 0.3.23 dev: true /@jridgewell/resolve-uri@3.1.2: @@ -1570,8 +1587,8 @@ packages: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} dev: true - /@jridgewell/trace-mapping@0.3.22: - resolution: {integrity: sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==} + /@jridgewell/trace-mapping@0.3.23: + resolution: {integrity: sha512-9/4foRoUKp8s96tSkh8DlAAc5A0Ty8vLXld+l9gjKKY6ckwI8G15f0hskGmuLZu78ZlGa1vtsfOa+lnB4vG6Jg==} dependencies: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.4.15 @@ -1838,8 +1855,8 @@ packages: /@types/babel__core@7.20.5: resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} dependencies: - '@babel/parser': 7.23.9 - '@babel/types': 7.23.9 + '@babel/parser': 7.24.0 + '@babel/types': 7.24.0 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.5 @@ -1848,20 +1865,20 @@ packages: /@types/babel__generator@7.6.8: resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.24.0 dev: true /@types/babel__template@7.4.4: resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} dependencies: - '@babel/parser': 7.23.9 - '@babel/types': 7.23.9 + '@babel/parser': 7.24.0 + '@babel/types': 7.24.0 dev: true /@types/babel__traverse@7.20.5: resolution: {integrity: sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==} dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.24.0 dev: true /@types/body-parser@1.19.5: @@ -1938,7 +1955,7 @@ packages: /@types/graceful-fs@4.1.9: resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} dependencies: - '@types/node': 20.11.19 + '@types/node': 20.11.21 dev: true /@types/http-errors@2.0.4: @@ -2014,8 +2031,8 @@ packages: dependencies: undici-types: 5.26.5 - /@types/node@20.11.19: - resolution: {integrity: sha512-7xMnVEcZFu0DikYjWOlRq7NTPETrm7teqUT2WkQjrTIkEgUyyGdWsj/Zg8bEJt5TNklzbPD1X3fqfsHw3SpapQ==} + /@types/node@20.11.21: + resolution: {integrity: sha512-/ySDLGscFPNasfqStUuWWPfL78jompfIoVzLJPVVAHBh6rpG68+pI2Gk+fNLeI8/f1yPYL4s46EleVIc20F1Ow==} dependencies: undici-types: 5.26.5 dev: true @@ -2048,8 +2065,8 @@ packages: '@types/node': 20.11.16 dev: true - /@types/semver@7.5.7: - resolution: {integrity: sha512-/wdoPq1QqkSj9/QOeKkFquEuPzQbHTWAMPH/PaUMB+JuR31lXhlWXRZ52IpfDYVlDOUBvX09uBrPwxGT1hjNBg==} + /@types/semver@7.5.8: + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} dev: true /@types/send@0.17.4: @@ -2088,8 +2105,8 @@ packages: '@types/yargs-parser': 21.0.3 dev: true - /@typescript-eslint/eslint-plugin@7.0.1(@typescript-eslint/parser@7.0.1)(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-OLvgeBv3vXlnnJGIAgCLYKjgMEU+wBGj07MQ/nxAaON+3mLzX7mJbhRYrVGiVvFiXtwFlkcBa/TtmglHy0UbzQ==} + /@typescript-eslint/eslint-plugin@7.1.0(@typescript-eslint/parser@7.1.0)(eslint@8.57.0)(typescript@5.3.3): + resolution: {integrity: sha512-j6vT/kCulhG5wBmGtstKeiVr1rdXE4nk+DT1k6trYkwlrvW9eOF5ZbgKnd/YR6PcM4uTEXa0h6Fcvf6X7Dxl0w==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^7.0.0 @@ -2100,13 +2117,13 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.0.1(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/scope-manager': 7.0.1 - '@typescript-eslint/type-utils': 7.0.1(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/utils': 7.0.1(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/visitor-keys': 7.0.1 + '@typescript-eslint/parser': 7.1.0(eslint@8.57.0)(typescript@5.3.3) + '@typescript-eslint/scope-manager': 7.1.0 + '@typescript-eslint/type-utils': 7.1.0(eslint@8.57.0)(typescript@5.3.3) + '@typescript-eslint/utils': 7.1.0(eslint@8.57.0)(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 7.1.0 debug: 4.3.4 - eslint: 8.56.0 + eslint: 8.57.0 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 @@ -2117,8 +2134,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@7.0.1(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-8GcRRZNzaHxKzBPU3tKtFNing571/GwPBeCvmAUw0yBtfE2XVd0zFKJIMSWkHJcPQi0ekxjIts6L/rrZq5cxGQ==} + /@typescript-eslint/parser@7.1.0(eslint@8.57.0)(typescript@5.3.3): + resolution: {integrity: sha512-V1EknKUubZ1gWFjiOZhDSNToOjs63/9O0puCgGS8aDOgpZY326fzFu15QAUjwaXzRZjf/qdsdBrckYdv9YxB8w==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^8.56.0 @@ -2127,27 +2144,27 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 7.0.1 - '@typescript-eslint/types': 7.0.1 - '@typescript-eslint/typescript-estree': 7.0.1(typescript@5.3.3) - '@typescript-eslint/visitor-keys': 7.0.1 + '@typescript-eslint/scope-manager': 7.1.0 + '@typescript-eslint/types': 7.1.0 + '@typescript-eslint/typescript-estree': 7.1.0(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 7.1.0 debug: 4.3.4 - eslint: 8.56.0 + eslint: 8.57.0 typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager@7.0.1: - resolution: {integrity: sha512-v7/T7As10g3bcWOOPAcbnMDuvctHzCFYCG/8R4bK4iYzdFqsZTbXGln0cZNVcwQcwewsYU2BJLay8j0/4zOk4w==} + /@typescript-eslint/scope-manager@7.1.0: + resolution: {integrity: sha512-6TmN4OJiohHfoOdGZ3huuLhpiUgOGTpgXNUPJgeZOZR3DnIpdSgtt83RS35OYNNXxM4TScVlpVKC9jyQSETR1A==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 7.0.1 - '@typescript-eslint/visitor-keys': 7.0.1 + '@typescript-eslint/types': 7.1.0 + '@typescript-eslint/visitor-keys': 7.1.0 dev: true - /@typescript-eslint/type-utils@7.0.1(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-YtT9UcstTG5Yqy4xtLiClm1ZpM/pWVGFnkAa90UfdkkZsR1eP2mR/1jbHeYp8Ay1l1JHPyGvoUYR6o3On5Nhmw==} + /@typescript-eslint/type-utils@7.1.0(eslint@8.57.0)(typescript@5.3.3): + resolution: {integrity: sha512-UZIhv8G+5b5skkcuhgvxYWHjk7FW7/JP5lPASMEUoliAPwIH/rxoUSQPia2cuOj9AmDZmwUl1usKm85t5VUMew==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^8.56.0 @@ -2156,23 +2173,23 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 7.0.1(typescript@5.3.3) - '@typescript-eslint/utils': 7.0.1(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/typescript-estree': 7.1.0(typescript@5.3.3) + '@typescript-eslint/utils': 7.1.0(eslint@8.57.0)(typescript@5.3.3) debug: 4.3.4 - eslint: 8.56.0 + eslint: 8.57.0 ts-api-utils: 1.2.0(typescript@5.3.3) typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types@7.0.1: - resolution: {integrity: sha512-uJDfmirz4FHib6ENju/7cz9SdMSkeVvJDK3VcMFvf/hAShg8C74FW+06MaQPODHfDJp/z/zHfgawIJRjlu0RLg==} + /@typescript-eslint/types@7.1.0: + resolution: {integrity: sha512-qTWjWieJ1tRJkxgZYXx6WUYtWlBc48YRxgY2JN1aGeVpkhmnopq+SUC8UEVGNXIvWH7XyuTjwALfG6bFEgCkQA==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@7.0.1(typescript@5.3.3): - resolution: {integrity: sha512-SO9wHb6ph0/FN5OJxH4MiPscGah5wjOd0RRpaLvuBv9g8565Fgu0uMySFEPqwPHiQU90yzJ2FjRYKGrAhS1xig==} + /@typescript-eslint/typescript-estree@7.1.0(typescript@5.3.3): + resolution: {integrity: sha512-k7MyrbD6E463CBbSpcOnwa8oXRdHzH1WiVzOipK3L5KSML92ZKgUBrTlehdi7PEIMT8k0bQixHUGXggPAlKnOQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -2180,8 +2197,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 7.0.1 - '@typescript-eslint/visitor-keys': 7.0.1 + '@typescript-eslint/types': 7.1.0 + '@typescript-eslint/visitor-keys': 7.1.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -2193,30 +2210,30 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@7.0.1(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-oe4his30JgPbnv+9Vef1h48jm0S6ft4mNwi9wj7bX10joGn07QRfqIqFHoMiajrtoU88cIhXf8ahwgrcbNLgPA==} + /@typescript-eslint/utils@7.1.0(eslint@8.57.0)(typescript@5.3.3): + resolution: {integrity: sha512-WUFba6PZC5OCGEmbweGpnNJytJiLG7ZvDBJJoUcX4qZYf1mGZ97mO2Mps6O2efxJcJdRNpqweCistDbZMwIVHw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^8.56.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@types/json-schema': 7.0.15 - '@types/semver': 7.5.7 - '@typescript-eslint/scope-manager': 7.0.1 - '@typescript-eslint/types': 7.0.1 - '@typescript-eslint/typescript-estree': 7.0.1(typescript@5.3.3) - eslint: 8.56.0 + '@types/semver': 7.5.8 + '@typescript-eslint/scope-manager': 7.1.0 + '@typescript-eslint/types': 7.1.0 + '@typescript-eslint/typescript-estree': 7.1.0(typescript@5.3.3) + eslint: 8.57.0 semver: 7.6.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys@7.0.1: - resolution: {integrity: sha512-hwAgrOyk++RTXrP4KzCg7zB2U0xt7RUU0ZdMSCsqF3eKUwkdXUMyTb0qdCuji7VIbcpG62kKTU9M1J1c9UpFBw==} + /@typescript-eslint/visitor-keys@7.1.0: + resolution: {integrity: sha512-FhUqNWluiGNzlvnDZiXad4mZRhtghdoKW6e98GoEOYSu5cND+E39rG5KwJMUzeENwm1ztYBRqof8wMLP+wNPIA==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 7.0.1 + '@typescript-eslint/types': 7.1.0 eslint-visitor-keys: 3.4.3 dev: true @@ -2224,38 +2241,38 @@ packages: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} dev: true - /@vitest/expect@1.2.2: - resolution: {integrity: sha512-3jpcdPAD7LwHUUiT2pZTj2U82I2Tcgg2oVPvKxhn6mDI2On6tfvPQTjAI4628GUGDZrCm4Zna9iQHm5cEexOAg==} + /@vitest/expect@1.3.1: + resolution: {integrity: sha512-xofQFwIzfdmLLlHa6ag0dPV8YsnKOCP1KdAeVVh34vSjN2dcUiXYCD9htu/9eM7t8Xln4v03U9HLxLpPlsXdZw==} dependencies: - '@vitest/spy': 1.2.2 - '@vitest/utils': 1.2.2 + '@vitest/spy': 1.3.1 + '@vitest/utils': 1.3.1 chai: 4.4.1 dev: true - /@vitest/runner@1.2.2: - resolution: {integrity: sha512-JctG7QZ4LSDXr5CsUweFgcpEvrcxOV1Gft7uHrvkQ+fsAVylmWQvnaAr/HDp3LAH1fztGMQZugIheTWjaGzYIg==} + /@vitest/runner@1.3.1: + resolution: {integrity: sha512-5FzF9c3jG/z5bgCnjr8j9LNq/9OxV2uEBAITOXfoe3rdZJTdO7jzThth7FXv/6b+kdY65tpRQB7WaKhNZwX+Kg==} dependencies: - '@vitest/utils': 1.2.2 + '@vitest/utils': 1.3.1 p-limit: 5.0.0 pathe: 1.1.2 dev: true - /@vitest/snapshot@1.2.2: - resolution: {integrity: sha512-SmGY4saEw1+bwE1th6S/cZmPxz/Q4JWsl7LvbQIky2tKE35US4gd0Mjzqfr84/4OD0tikGWaWdMja/nWL5NIPA==} + /@vitest/snapshot@1.3.1: + resolution: {integrity: sha512-EF++BZbt6RZmOlE3SuTPu/NfwBF6q4ABS37HHXzs2LUVPBLx2QoY/K0fKpRChSo8eLiuxcbCVfqKgx/dplCDuQ==} dependencies: magic-string: 0.30.7 pathe: 1.1.2 pretty-format: 29.7.0 dev: true - /@vitest/spy@1.2.2: - resolution: {integrity: sha512-k9Gcahssw8d7X3pSLq3e3XEu/0L78mUkCjivUqCQeXJm9clfXR/Td8+AP+VC1O6fKPIDLcHDTAmBOINVuv6+7g==} + /@vitest/spy@1.3.1: + resolution: {integrity: sha512-xAcW+S099ylC9VLU7eZfdT9myV67Nor9w9zhf0mGCYJSO+zM2839tOeROTdikOi/8Qeusffvxb/MyBSOja1Uig==} dependencies: tinyspy: 2.2.1 dev: true - /@vitest/utils@1.2.2: - resolution: {integrity: sha512-WKITBHLsBHlpjnDQahr+XK6RE7MiAsgrIkr0pGhQ9ygoxBfUeG0lUG5iLlzqjmKSlBv3+j5EGsriBzh+C3Tq9g==} + /@vitest/utils@1.3.1: + resolution: {integrity: sha512-d3Waie/299qqRyHTm2DjADeTaNdNSVsnwHPWrs20JMpjh6eiVq7ggggweO8rc4arhf6rRkWuHKwvxGvejUXZZQ==} dependencies: diff-sequences: 29.6.3 estree-walker: 3.0.3 @@ -2612,17 +2629,17 @@ packages: resolution: {integrity: sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg==} engines: {node: '>= 0.4'} - /babel-jest@29.7.0(@babel/core@7.23.9): + /babel-jest@29.7.0(@babel/core@7.24.0): resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.8.0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.0 '@jest/transform': 29.7.0 '@types/babel__core': 7.20.5 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.6.3(@babel/core@7.23.9) + babel-preset-jest: 29.6.3(@babel/core@7.24.0) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 @@ -2634,7 +2651,7 @@ packages: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} dependencies: - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 '@istanbuljs/load-nyc-config': 1.1.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-instrument: 5.2.1 @@ -2647,41 +2664,41 @@ packages: resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/template': 7.23.9 - '@babel/types': 7.23.9 + '@babel/template': 7.24.0 + '@babel/types': 7.24.0 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.20.5 dev: true - /babel-preset-current-node-syntax@1.0.1(@babel/core@7.23.9): + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.24.0): resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.9 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.9) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.9) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.9) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.9) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.9) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.9) - dev: true - - /babel-preset-jest@29.6.3(@babel/core@7.23.9): + '@babel/core': 7.24.0 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.0) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.24.0) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.0) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.0) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.0) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.0) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.0) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.0) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.0) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.0) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.0) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.0) + dev: true + + /babel-preset-jest@29.6.3(@babel/core@7.24.0): resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.0 babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.9) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.0) dev: true /balanced-match@1.0.2: @@ -2805,8 +2822,8 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001587 - electron-to-chromium: 1.4.672 + caniuse-lite: 1.0.30001591 + electron-to-chromium: 1.4.685 node-releases: 2.0.14 update-browserslist-db: 1.0.13(browserslist@4.23.0) dev: true @@ -2897,8 +2914,8 @@ packages: engines: {node: '>=10'} dev: true - /caniuse-lite@1.0.30001587: - resolution: {integrity: sha512-HMFNotUmLXn71BQxg8cijvqxnIAofforZOwGsxyXJ0qugTdspUF4sPSJ2vhgprHCB996tIDzEq1ubumPDV8ULA==} + /caniuse-lite@1.0.30001591: + resolution: {integrity: sha512-PCzRMei/vXjJyL5mJtzNiUCKP59dm8Apqc3PH8gJkMnMXZGox93RbE76jHsmLwmIo6/3nsYIpJtx0O7u5PqFuQ==} dev: true /cardinal@2.1.1: @@ -3270,7 +3287,7 @@ packages: chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.11.19) + jest-config: 29.7.0(@types/node@20.11.21) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -3382,6 +3399,13 @@ packages: type-detect: 4.0.8 dev: true + /deep-equal-in-any-order@2.0.6: + resolution: {integrity: sha512-RfnWHQzph10YrUjvWwhd15Dne8ciSJcZ3U6OD7owPwiVwsdE5IFSoZGg8rlwJD11ES+9H5y8j3fCofviRHOqLQ==} + dependencies: + lodash.mapvalues: 4.6.0 + sort-any: 2.0.0 + dev: true + /deep-extend@0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} @@ -3506,8 +3530,8 @@ packages: /ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - /electron-to-chromium@1.4.672: - resolution: {integrity: sha512-YYCy+goe3UqZqa3MOQCI5Mx/6HdBLzXL/mkbGCEWL3sP3Z1BP9zqAzeD3YEmLZlespYGFtyM8tRp5i2vfaUGCA==} + /electron-to-chromium@1.4.685: + resolution: {integrity: sha512-yDYeobbTEe4TNooEzOQO6xFqg9XnAkVy2Lod1C1B2it8u47JNLYvl9nLDWBamqUakWB8Jc1hhS1uHUNYTNQdfw==} dev: true /emittery@0.13.1: @@ -3734,13 +3758,13 @@ packages: source-map: 0.6.1 dev: true - /eslint-config-prettier@9.1.0(eslint@8.56.0): + /eslint-config-prettier@9.1.0(eslint@8.57.0): resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.56.0 + eslint: 8.57.0 dev: true /eslint-import-resolver-node@0.3.9: @@ -3753,7 +3777,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@7.0.1)(eslint-import-resolver-node@0.3.9)(eslint@8.56.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@7.1.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -3774,15 +3798,15 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 7.0.1(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/parser': 7.1.0(eslint@8.57.0)(typescript@5.3.3) debug: 3.2.7 - eslint: 8.56.0 + eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.0.1)(eslint@8.56.0): + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.1.0)(eslint@8.57.0): resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} engines: {node: '>=4'} peerDependencies: @@ -3792,16 +3816,16 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 7.0.1(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/parser': 7.1.0(eslint@8.57.0)(typescript@5.3.3) array-includes: 3.1.7 array.prototype.findlastindex: 1.2.4 array.prototype.flat: 1.3.2 array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.56.0 + eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.0.1)(eslint-import-resolver-node@0.3.9)(eslint@8.56.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.1.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) hasown: 2.0.0 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -3830,15 +3854,15 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.56.0: - resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==} + /eslint@8.57.0: + resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@eslint-community/regexpp': 4.10.0 '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.56.0 + '@eslint/js': 8.57.0 '@humanwhocodes/config-array': 0.11.14 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 @@ -4261,8 +4285,8 @@ packages: - encoding - supports-color - /firebase-tools@13.3.0: - resolution: {integrity: sha512-WooMk02Wucre63XGHNOopwRp/FFCL/zjq1Jz0itZ6fDeytdTxZabhlcvnX+HMCyccPhuwbs3extIEh/T6SFWtA==} + /firebase-tools@13.4.0: + resolution: {integrity: sha512-yoxET4Xifezr+SopwFgkpMIRGmp11aTTE67tFcfJoTOZDveBbY16dfo6so2xiuqBXQ7DNxsZIQ+d3JEm2Jn40A==} engines: {node: '>=18.0.0 || >=20.0.0'} hasBin: true dependencies: @@ -4282,15 +4306,18 @@ packages: cross-env: 5.2.1 cross-spawn: 7.0.3 csv-parse: 5.5.3 + deep-equal-in-any-order: 2.0.6 exegesis: 4.1.1 exegesis-express: 4.0.0 express: 4.18.2 filesize: 6.4.0 form-data: 4.0.0 fs-extra: 10.1.0 + fuzzy: 0.1.3 glob: 7.2.3 google-auth-library: 7.14.1 inquirer: 8.2.6 + inquirer-autocomplete-prompt: 2.0.1(inquirer@8.2.6) js-yaml: 3.14.1 jsonwebtoken: 9.0.2 leven: 3.1.0 @@ -4496,6 +4523,11 @@ packages: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} dev: true + /fuzzy@0.1.3: + resolution: {integrity: sha512-/gZffu4ykarLrCiP3Ygsa86UAo1E5vEVlvTrpkKywXSbP9Xhln3oSp9QSV57gEq3JFFpGJ4GZ+5zdEp3FcUh4w==} + engines: {node: '>= 0.6.0'} + dev: true + /gaxios@4.3.3: resolution: {integrity: sha512-gSaYYIO1Y3wUtdfHmjDUZ8LWaxJQpiavzbF5Kq53akSzvmVg0RfyOcFDbO1KJ/KCGRFz2qG+lS81F0nkr7cRJA==} engines: {node: '>=10'} @@ -5108,6 +5140,20 @@ packages: engines: {node: '>=10'} dev: true + /inquirer-autocomplete-prompt@2.0.1(inquirer@8.2.6): + resolution: {integrity: sha512-jUHrH0btO7j5r8DTQgANf2CBkTZChoVySD8zF/wp5fZCOLIuUbleXhf4ZY5jNBOc1owA3gdfWtfZuppfYBhcUg==} + engines: {node: '>=12'} + peerDependencies: + inquirer: ^8.0.0 + dependencies: + ansi-escapes: 4.3.2 + figures: 3.2.0 + inquirer: 8.2.6 + picocolors: 1.0.0 + run-async: 2.4.1 + rxjs: 7.8.1 + dev: true + /inquirer@8.2.6: resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==} engines: {node: '>=12.0.0'} @@ -5434,8 +5480,8 @@ packages: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.23.9 - '@babel/parser': 7.23.9 + '@babel/core': 7.24.0 + '@babel/parser': 7.24.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 @@ -5443,12 +5489,12 @@ packages: - supports-color dev: true - /istanbul-lib-instrument@6.0.1: - resolution: {integrity: sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==} + /istanbul-lib-instrument@6.0.2: + resolution: {integrity: sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==} engines: {node: '>=10'} dependencies: - '@babel/core': 7.23.9 - '@babel/parser': 7.23.9 + '@babel/core': 7.24.0 + '@babel/parser': 7.24.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 7.6.0 @@ -5476,8 +5522,8 @@ packages: - supports-color dev: true - /istanbul-reports@3.1.6: - resolution: {integrity: sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==} + /istanbul-reports@3.1.7: + resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} engines: {node: '>=8'} dependencies: html-escaper: 2.0.2 @@ -5512,7 +5558,7 @@ packages: '@jest/expect': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.11.19 + '@types/node': 20.11.21 chalk: 4.1.2 co: 4.6.0 dedent: 1.5.1 @@ -5550,7 +5596,7 @@ packages: create-jest: 29.7.0 exit: 0.1.2 import-local: 3.1.0 - jest-config: 29.7.0(@types/node@20.11.19) + jest-config: 29.7.0(@types/node@20.11.21) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -5561,7 +5607,7 @@ packages: - ts-node dev: true - /jest-config@29.7.0(@types/node@20.11.19): + /jest-config@29.7.0(@types/node@20.11.21): resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -5573,11 +5619,11 @@ packages: ts-node: optional: true dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.0 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.11.19 - babel-jest: 29.7.0(@babel/core@7.23.9) + '@types/node': 20.11.21 + babel-jest: 29.7.0(@babel/core@7.24.0) chalk: 4.1.2 ci-info: 3.9.0 deepmerge: 4.3.1 @@ -5636,7 +5682,7 @@ packages: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.11.19 + '@types/node': 20.11.21 jest-mock: 29.7.0 jest-util: 29.7.0 dev: true @@ -5652,7 +5698,7 @@ packages: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 20.11.19 + '@types/node': 20.11.21 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -5703,7 +5749,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.11.19 + '@types/node': 20.11.21 jest-util: 29.7.0 dev: true @@ -5758,7 +5804,7 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.11.19 + '@types/node': 20.11.21 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -5789,7 +5835,7 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.11.19 + '@types/node': 20.11.21 chalk: 4.1.2 cjs-module-lexer: 1.2.3 collect-v8-coverage: 1.0.2 @@ -5812,15 +5858,15 @@ packages: resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.0 '@babel/generator': 7.23.6 - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.9) - '@babel/types': 7.23.9 + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.24.0) + '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.24.0) + '@babel/types': 7.24.0 '@jest/expect-utils': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.9) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.0) chalk: 4.1.2 expect: 29.7.0 graceful-fs: 4.2.11 @@ -5841,7 +5887,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.11.19 + '@types/node': 20.11.21 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -5866,7 +5912,7 @@ packages: dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.11.19 + '@types/node': 20.11.21 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -5878,7 +5924,7 @@ packages: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 20.11.19 + '@types/node': 20.11.21 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -5923,6 +5969,10 @@ packages: /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + /js-tokens@8.0.3: + resolution: {integrity: sha512-UfJMcSJc+SEXEl9lH/VLHSZbThQyLpw1vLO1Lb+j4RWDvG3N2f7yj3PVQA3cmkTBNldJ9eFnM+xEXxHIXrYiJw==} + dev: true + /js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true @@ -6248,6 +6298,10 @@ packages: /lodash.isstring@4.0.1: resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} + /lodash.mapvalues@4.6.0: + resolution: {integrity: sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ==} + dev: true + /lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true @@ -7896,6 +7950,12 @@ packages: smart-buffer: 4.2.0 dev: true + /sort-any@2.0.0: + resolution: {integrity: sha512-T9JoiDewQEmWcnmPn/s9h/PH9t3d/LSWi0RgVmXSuDYeZXTZOZ1/wrK2PHaptuR1VXe3clLLt0pD6sgVOwjNEA==} + dependencies: + lodash: 4.17.21 + dev: true + /source-map-js@1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} @@ -8110,10 +8170,10 @@ packages: engines: {node: '>=8'} dev: true - /strip-literal@1.3.0: - resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} + /strip-literal@2.0.0: + resolution: {integrity: sha512-f9vHgsCWBq2ugHAkGMiiYY+AYG0D/cbloKKg0nhaaaSNsujdGIpVXCNsrJpCKr5M0f4aI31mr13UjY6GAuXCKA==} dependencies: - acorn: 8.11.3 + js-tokens: 8.0.3 dev: true /strnum@1.0.5: @@ -8619,7 +8679,7 @@ packages: resolution: {integrity: sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==} engines: {node: '>=10.12.0'} dependencies: - '@jridgewell/trace-mapping': 0.3.22 + '@jridgewell/trace-mapping': 0.3.23 '@types/istanbul-lib-coverage': 2.0.6 convert-source-map: 2.0.0 dev: true @@ -8638,8 +8698,8 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - /vite-node@1.2.2: - resolution: {integrity: sha512-1as4rDTgVWJO3n1uHmUYqq7nsFgINQ9u+mRcXpjeOMJUmviqNKjcZB7UfRZrlM7MjYXMKpuWp5oGkjaFLnjawg==} + /vite-node@1.3.1: + resolution: {integrity: sha512-azbRrqRxlWTJEVbzInZCTchx0X69M/XPTCz4H+TLvlTcR/xH/3hkRqhOakT41fMJCMzXTu4UvegkZiEoJAWvng==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true dependencies: @@ -8694,15 +8754,15 @@ packages: fsevents: 2.3.3 dev: true - /vitest@1.2.2: - resolution: {integrity: sha512-d5Ouvrnms3GD9USIK36KG8OZ5bEvKEkITFtnGv56HFaSlbItJuYr7hv2Lkn903+AvRAgSixiamozUVfORUekjw==} + /vitest@1.3.1: + resolution: {integrity: sha512-/1QJqXs8YbCrfv/GPQ05wAZf2eakUPLPa18vkJAKE7RXOKfVHqMZZ1WlTjiwl6Gcn65M5vpNUB6EFLnEdRdEXQ==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': ^1.0.0 - '@vitest/ui': ^1.0.0 + '@vitest/browser': 1.3.1 + '@vitest/ui': 1.3.1 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -8719,13 +8779,12 @@ packages: jsdom: optional: true dependencies: - '@vitest/expect': 1.2.2 - '@vitest/runner': 1.2.2 - '@vitest/snapshot': 1.2.2 - '@vitest/spy': 1.2.2 - '@vitest/utils': 1.2.2 + '@vitest/expect': 1.3.1 + '@vitest/runner': 1.3.1 + '@vitest/snapshot': 1.3.1 + '@vitest/spy': 1.3.1 + '@vitest/utils': 1.3.1 acorn-walk: 8.3.2 - cac: 6.7.14 chai: 4.4.1 debug: 4.3.4 execa: 8.0.1 @@ -8734,11 +8793,11 @@ packages: pathe: 1.1.2 picocolors: 1.0.0 std-env: 3.7.0 - strip-literal: 1.3.0 + strip-literal: 2.0.0 tinybench: 2.6.0 tinypool: 0.8.2 vite: 5.1.1 - vite-node: 1.2.2 + vite-node: 1.3.1 why-is-node-running: 2.2.2 transitivePeerDependencies: - less diff --git a/project.code-workspace b/project.code-workspace index 6247fa3..f33cc9c 100644 --- a/project.code-workspace +++ b/project.code-workspace @@ -11,7 +11,7 @@ } ], "settings": { - "window.title": "My Angular and Firebase app", + "window.title": "FullStacksDev Angular and Firebase base template", "editor.codeActionsOnSave": { "source.organizeImports": "explicit", "source.fixAll": "explicit",