diff --git a/.eslintrc.json b/.eslintrc.json
index c237253b..e90a5bcc 100644
--- a/.eslintrc.json
+++ b/.eslintrc.json
@@ -7,12 +7,19 @@
},
"globals": { "JSX": "readonly", "Chart": "readonly", "NodeJS": "readonly" },
"extends": [
+ "eslint:recommended",
+
"plugin:react/recommended",
+ "plugin:react-hooks/recommended",
+
+ "plugin:@typescript-eslint/recommended",
+ "plugin:@typescript-eslint/recommended-requiring-type-checking",
+
"airbnb",
- "plugin:import/errors",
- "plugin:import/warnings",
+
+ "plugin:import/recommended",
"plugin:import/typescript",
- // "plugin:@typescript-eslint/recommended",
+
"prettier"
],
"parser": "@typescript-eslint/parser",
@@ -21,38 +28,63 @@
"jsx": true
},
"ecmaVersion": 12,
- "sourceType": "module"
+ "sourceType": "module",
+ "project": "./tsconfig.json"
},
- "plugins": ["react", "@typescript-eslint"],
+ "plugins": ["react", "react-hooks", "@typescript-eslint", "import"],
"rules": {
- "react/jsx-filename-extension": [2, { "extensions": [".jsx", ".tsx"] }],
+ "react/jsx-filename-extension": [1, { "extensions": [".jsx", ".tsx"] }],
+
"no-use-before-define": "off",
"@typescript-eslint/no-use-before-define": ["error"],
+
"import/extensions": [
"error",
"ignorePackages",
{ "js": "never", "jsx": "never", "ts": "never", "tsx": "never" }
],
- // "import/no-extraneous-dependencies": ["error", { "devDependencies": true }], **trying to resolve the electron issue
+
"jsx-a11y/label-has-associated-control": "off",
+
// prevent wrong warning with typescript overloads
"no-unused-vars": "off",
"@typescript-eslint/no-unused-vars": ["error"],
- "no-dupe-class-members": "off",
+
+ "no-dupe-class-members": "off",
"@typescript-eslint/no-dupe-class-members": ["error"],
+
"lines-between-class-members": "off",
"@typescript-eslint/lines-between-class-members": [
"error",
+ "always",
{ "exceptAfterSingleLine": true }
],
- "react/jsx-curly-newline": "off",
+
+ // "react/jsx-curly-newline": "off",
+
// turned off because typescript, functional components and default props
// don't seem to be good friends. Decided to manually handle defaults for
// optional props instead
"react/require-default-props": "off",
"react/jsx-props-no-spreading": "off",
+
"camelcase": "off"
+
+ // "import/no-extraneous-dependencies": ["error", { "devDependencies": true }], **trying to resolve the electron issue
+ },
+ // "settings": "import/core-modules: [ electron ]", **trying to resolve the electron issue
+ "settings": {
+ "react": {
+ "version": "detect"
+ },
+ "import/parsers": {
+ "@typescript-eslint/parser": [".ts", ".tsx"]
+ },
+ "import/resolver": {
+ "typescript": {
+ "alwaysTryTypes": true
+ }
+ }
},
- // "settings": "import/core-modules: [ electron ]", **trying to resolve the electron issue
"root": true
}
diff --git a/.prettierrc.json b/.prettierrc.json
index 85b1406c..dc2715bf 100644
--- a/.prettierrc.json
+++ b/.prettierrc.json
@@ -1,5 +1,6 @@
{
"singleQuote": true,
"tabWidth": 2,
- "useTabs": false
+ "useTabs": false,
+ "trailingComma": "all"
}
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 6d7f3b0e..5155c9b1 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,15 +1,13 @@
{
- "liveSassCompile.settings.formats": [
- {
- "format": "expanded",
- "savePath": "/frontend/assets/stylesheets/css",
- "extensionName": ".css"
- }
- ],
- "liveSassCompile.settings.generateMap": false,
- "yaml.schemas": {
- "https://json.schemastore.org/electron-builder": [
- "electron-builder.yml"
- ]
+ "liveSassCompile.settings.formats": [
+ {
+ "format": "expanded",
+ "savePath": "/frontend/assets/stylesheets/css",
+ "extensionName": ".css"
}
-}
\ No newline at end of file
+ ],
+ "liveSassCompile.settings.generateMap": false,
+ "yaml.schemas": {
+ "https://json.schemastore.org/electron-builder": ["electron-builder.yml"]
+ }
+}
diff --git a/DEV_README.md b/DEV_README.md
new file mode 100644
index 00000000..60fcb146
--- /dev/null
+++ b/DEV_README.md
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+`Developer's Read Me`
+
+`** v12.0.0 **`
+
+In this version our team focused on refactoring the broken code base from all previous versions.
+
+ WHAT YOU NEED TO DO FIRST:
+
+Run npm run dev twice if you do not manually run tsc to compile the files first. The ts files have to compile before electron-dev and webpack-dev can start.
+
+ WHAT WE UPDATED:
+
+1. trimmed dependency issues from 54 down to 1. this one cannot be resolved because it is from the 30 viewers
+2. Broke backend into MVVM/MVC model
+3. Made sure types are enforced in typescript
+4. Fixed import and export local files
+5. Fixed Authentication
+
+ WHAT NEEDS TO BE DONE:
+
+1. Isolating Database One of the biggest tasks that we tried but did not finish is isolating the concerns of each database type (DBType). The current application has multiple
+if (database === DBType.postgres) {}
+else if (database === DBType.mysql) {}
+else (database === DBType.sqlite) {}
+
+
+situations and it is not good. instead we will use switch statements to preemptively throw operations into seperate functions to completely silo cases for Postgres, Mysql, and SqLite. This is a task for BOTH THE FRONTEND AND BACKEND and the FRONTEND IS MUCH HARDER . The work for backend is actually done and it is illustrated in the picture below
+
+
+
+The road map is finish connecting the siloed pieces for postgres, then moving on to mysql ***Important*** There is not an entry for this system yet but this file frontend/components/iews/ERTables/ERDisplayWindow.tsx will replace frontend/components/iews/ERTables/ERTabling.tsx when this is ready
+
+2. ERD Logic Update Currently, previous wrote the frontend to send back a big bundle of all the operations done in the frontend ERD Table. This ERD table object is divided by add, drop, and alter. All the add operations will execute first then drop, then alter. This is BAD . We need to redesign frontend to send back "sequental" operations instead of bundling operations by add, drop, alter because it takes care of multiple edge cases and users in the front can do as many operations they want to ensure SAVE works. I illustrated the problem below. The current backend is written out already. We just need to make sure the frontend is send back the appropriate logic
+
+
+
+ **_Important_** This is wrtten at backend/src/ipcHandlers/dbCRUDHandlerERD.ts and will replace backend/src/ipcHandlers/dbCRUDHandler.ts when this is ready
+
+3. Async event emmiters between front/backend
+Currently, the way the feedback modal works is by handling events that are emitted from both the frontend and the backend. Ideally, this should be refactored to be state dependent rather than event dependent, as it controls the display of the modal. This can be tied into the centralized async event emitter added to frontend/components/app.tsx, in conjunction with migration to reducers from state variables. The goal will be to house modal messages in the store tied to the main app reducer. From there, the async handler can send new messages to the state via main app dispatch, and any other front end feedback can do the same.
+The main roadblock in the way of finalizing the transfer of event handlers out of the frontend is the way the dblist (list of databases in the sidebar) gets updated. Many event handlers in the backend send a dblist update event out to update the front end. Ideally, this should be handled by returning the new dblist changes out of the handler and using that resolved value to update state whenever an action would cause a dblist change. Right now, app.tsx has a useEffect running that listens for those dblist updates every frame. This is inefficient as a frontend concern.
+The spinner currently works in a similar way to feedback. Once all async is completely migrated (including dblist update changes), this spinner can simply be tied to the loading property in the main app state.
+There are still some filesystem read/write calls in the front end. This should be refactored to an async call that requests the backend handle the file system read/write for proper separation of concerns.
+
+4.
+5.
+
+ WHAT IS BROKEN:
diff --git a/README.md b/README.md
index 093e450b..003e0cb6 100644
--- a/README.md
+++ b/README.md
@@ -3,7 +3,7 @@
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/oslabs-beta/SeeQR)
-![Release: 11.0.0](https://img.shields.io/badge/Release-11.0.0-red)
+![Release: 12.0.0](https://img.shields.io/badge/Release-12.0.0-red)
![License: MIT](https://img.shields.io/badge/License-MIT-orange.svg)
![Contributions Welcome](https://img.shields.io/badge/Contributions-welcome-blue.svg)
[![Twitter](https://img.shields.io/twitter/url?style=social&url=https%3A%2F%2Ftwitter.com%2Ftheseeqr)](https://twitter.com/theseeqr)
@@ -15,7 +15,7 @@
-### For the latest in-depth docs for v11.0.0, please visit our [docs site](http://www.seeqrapp.com/docs).
+### For the latest in-depth docs for v12.0.0, please visit our [docs site](http://www.seeqrapp.com/docs).
## Table of Contents
@@ -28,7 +28,6 @@
- [Core Team](#core-team)
- [License](#license)
-
## Getting Started
To get started on contributing and editing databases to this project:
@@ -56,7 +55,6 @@ To get started on contributing and editing databases to this project:
- [D3.js](https://github.com/d3/d3)
- [Three-Spritetext](https://github.com/vasturiano/three-spritetext)
-
## Interface & Features
- Overview
@@ -79,22 +77,25 @@ To get started on contributing and editing databases to this project:
- In the 'DATABASES' view, an interactive Entity Relationship Diagram (`ER DIAGRAM`) is displayed for the selected database.
- Users can select `TABLE` to see selected database in tabular form.
+
- Users can select a table from a list of all the tables in the schema of the currently selected database.
+
- Information about the selected table is then displayed.
- The name and size of the selected database are also displayed at the top of the page.
- Users can also generate large amounts of foreign-key compliant dummy data for the selected table in the current database. Currently supported data types are:
+
- INT
- BIGINT
- VARCHAR
- BOOLEAN
- DATE
-
-
-
-
-
-
+
+
+
+
+
+
- NEW 3D Database Visualization
- From the 'DATABASES' view, select the '3D View' tab on the far right of the sidebar to launch the brand new 3D database visualizer.
- Individual table nodes are distinguished by their different colors
@@ -103,25 +104,25 @@ To get started on contributing and editing databases to this project:
- Navigate through the 3D space using left click to rotate, scroll wheel to zoom, and right click to pan.
- Click and drag nodes to visually organize them
- Click on a table or column node to quickly view the data stored within
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
- Create/Edit Database
- - Users can create a new database from scratch by clicking the `Create New Database` button at the bottom of the sidebar.
- - Users can modify the newly created database as well as any existing databases using the `ER Diagram` to create/change/delete tables and columns.
- - The `Export` button will write a .sql file on the user's desktop of the selected database.
+- Users can create a new database from scratch by clicking the `Create New Database` button at the bottom of the sidebar.
+- Users can modify the newly created database as well as any existing databases using the `ER Diagram` to create/change/delete tables and columns.
+- The `Export` button will write a .sql file on the user's desktop of the selected database.
@@ -137,7 +138,7 @@ To get started on contributing and editing databases to this project:
- Please note that only labelled queries will be saved in the current session for future references.
- To execute the query, simply select the 'RUN QUERY' button at the bottom of the panel or press 'Ctrl-Enter' on the keyboard.
- The 11th version now includes the functionality to run multiple queries, allowing users to obtain more reliable testing results.
-
+
@@ -201,7 +202,7 @@ We've released SeeQR because it's a useful tool to help optimize SQL databases.
## Core Team
-[Ching-Yuan Lai (Eric)](https://github.com/paranoidFrappe) | [Jamie Zhang](https://github.com/haemie) | [Julian Macalalag](https://github.com/juzi3) | [Nathan Chong](https://github.com/nathanhchong) | [Junaid Ahmed](https://github.com/junaid-ahmed7) | [Chase Sizemore](https://github.com/ChaseSizemore) | [Oscar Romero](https://github.com/creaturenex) | [Anthony Deng](https://github.com/anthonyadeng) | [Aya Moosa](https://github.com/Hiya-its-Aya) | [Trevor Ferguson](https://github.com/TrevorJFerguson) | [Pauline Nguyen](https://github.com/paulinekpn) | [Utkarsh Uppal](https://github.com/utyvert) | [Fred Jeong](https://github.com/fred-jeong) | [Gabriel Kime](https://github.com/wizardbusiness) | [Chris Fryer](github.com/frynoceros) | [Ian Grepo](https://github.com/RadiantGH) | [Michelle Chang](https://github.com/mkchang168) | [Jake Bradbeer](https://github.com/JBradbeer) | [Bryan Santos](https://github.com/santosb93) | [William Trey Lewis](https://github.com/treyfrog128) | [Brandon Lee](https://github.com/BrandonW-Lee) | [Casey Escovedo](https://github.com/caseyescovedo) | [Casey Walker](https://github.com/cwalker3011) | [Catherine Chiu](https://github.com/catherinechiu) | [Chris Akinrinade](https://github.com/chrisakinrinade) | [Cindy Chau](https://github.com/cindychau) | [Claudio Santos](https://github.com/Claudiohbsantos) | [Eric Han](https://github.com/ericJH92) | [Faraz Akhtar](https://github.com/faraza22) | [Frank Norton](https://github.com/FrankNorton32) | [Harrison Nam](https://github.com/harrynam07) | [James Kolotouros](https://github.com/dkolotouros) | [Jennifer Courtner](https://github.com/jcourtner) | [John Wagner](https://github.com/jwagner988) | [Justin Dury-Agri](https://github.com/justinD-A) | [Justin Hicks](https://github.com/JuiceBawks) | [Katie Klochan](https://github.com/kklochan) | [May Wirapa Boonyasurat](https://github.com/mimiwrp) | [Mercer Stronck](https://github.com/mercerstronck) | [Muhammad Trad](https://github.com/muhammadtrad) | [Richard Guo](https://github.com/richardguoo) | [Richard Lam](https://github.com/rlam108) | [Sam Frakes](https://github.com/frakes413) | [Serena Kuo](https://github.com/serenackuo) | [Timothy Sin](https://github.com/timothysin) | [Vincent Trang](https://github.com/vincentt114)
+[Annabelle Ni](https://github.com/annni11) | [Derek Koh](https://github.com/derekoko) | [Peter Zepf](https://github.com/peterzepf) | [Tony Gao](https://github.com/tgao17) | [Ching-Yuan Lai (Eric)](https://github.com/paranoidFrappe) | [Jamie Zhang](https://github.com/haemie) | [Julian Macalalag](https://github.com/juzi3) | [Nathan Chong](https://github.com/nathanhchong) | [Junaid Ahmed](https://github.com/junaid-ahmed7) | [Chase Sizemore](https://github.com/ChaseSizemore) | [Oscar Romero](https://github.com/creaturenex) | [Anthony Deng](https://github.com/anthonyadeng) | [Aya Moosa](https://github.com/Hiya-its-Aya) | [Trevor Ferguson](https://github.com/TrevorJFerguson) | [Pauline Nguyen](https://github.com/paulinekpn) | [Utkarsh Uppal](https://github.com/utyvert) | [Fred Jeong](https://github.com/fred-jeong) | [Gabriel Kime](https://github.com/wizardbusiness) | [Chris Fryer](github.com/frynoceros) | [Ian Grepo](https://github.com/RadiantGH) | [Michelle Chang](https://github.com/mkchang168) | [Jake Bradbeer](https://github.com/JBradbeer) | [Bryan Santos](https://github.com/santosb93) | [William Trey Lewis](https://github.com/treyfrog128) | [Brandon Lee](https://github.com/BrandonW-Lee) | [Casey Escovedo](https://github.com/caseyescovedo) | [Casey Walker](https://github.com/cwalker3011) | [Catherine Chiu](https://github.com/catherinechiu) | [Chris Akinrinade](https://github.com/chrisakinrinade) | [Cindy Chau](https://github.com/cindychau) | [Claudio Santos](https://github.com/Claudiohbsantos) | [Eric Han](https://github.com/ericJH92) | [Faraz Akhtar](https://github.com/faraza22) | [Frank Norton](https://github.com/FrankNorton32) | [Harrison Nam](https://github.com/harrynam07) | [James Kolotouros](https://github.com/dkolotouros) | [Jennifer Courtner](https://github.com/jcourtner) | [John Wagner](https://github.com/jwagner988) | [Justin Dury-Agri](https://github.com/justinD-A) | [Justin Hicks](https://github.com/JuiceBawks) | [Katie Klochan](https://github.com/kklochan) | [May Wirapa Boonyasurat](https://github.com/mimiwrp) | [Mercer Stronck](https://github.com/mercerstronck) | [Muhammad Trad](https://github.com/muhammadtrad) | [Richard Guo](https://github.com/richardguoo) | [Richard Lam](https://github.com/rlam108) | [Sam Frakes](https://github.com/frakes413) | [Serena Kuo](https://github.com/serenackuo) | [Timothy Sin](https://github.com/timothysin) | [Vincent Trang](https://github.com/vincentt114)
## License
diff --git a/__tests__/backend/src/models/dbCRUDHAndler.spec.ts b/__tests__/backend/src/models/dbCRUDHAndler.spec.ts
new file mode 100644
index 00000000..dfe4484c
--- /dev/null
+++ b/__tests__/backend/src/models/dbCRUDHAndler.spec.ts
@@ -0,0 +1,68 @@
+describe('dbCRUDHandler tests', () => {
+ // setBaseConnections
+ describe('erTableSchemaUpdate tests', () => {
+ test('it should only receive backendObj as parameter', () => {});
+ test('it should send async started back to frontend', () => {});
+ test(
+ 'it should send backendObj to helper function to receive a queryString and a dbType back as query',
+ );
+ test(
+ 'it should use query.queryString and query.dbType to run queryModel.query',
+ );
+ });
+});
+
+describe('ertable-functions tests', () => {
+ describe('erdObjToQuery tests', () => {
+ test('it should only receive backendObj as parameter', () => {});
+ test('it should create an empty array', () => {});
+ test('it should identity the erdDbType from dbState', () => {});
+ test('it should use erdDbType to pick an appropriate query function for backendObj to act on and receive a query bacj', () => {});
+ test('it should return a query string');
+ });
+});
+
+/*
+const backendObj = {
+ database: 'tester2',
+ updates: {
+ addTables: [
+ {
+ is_insertable_into: 'yes',
+ table_name: 'NewTable8',
+ table_schema: 'puclic',
+ table_catalog: 'tester2',
+ columns: []
+ }
+ ],
+
+ dropTables: [{
+ table_name: 'newtable5',
+ table_schema: 'puclic'
+ }
+ ],
+
+ alterTables: [
+ {
+ is_insertable_into: null,
+ table_catalog: 'tester2',
+ table_name: 'newtable7',
+ new_table_name: null,
+ table_schema: 'puclic',
+ addColumns: [Array],
+ dropColumns: [],
+ alterColumns: []
+ },
+ {
+ is_insertable_into: null,
+ table_catalog: 'tester2',
+ table_name: 'newtable7',
+ new_table_name: null,
+ table_schema: 'puclic',
+ addColumns: [Array],
+ dropColumns: [],
+ alterColumns: []
+ }]
+ }
+}
+*/
diff --git a/__tests__/backend/src/utils/erdAlters/pSqlCUD.spec.ts b/__tests__/backend/src/utils/erdAlters/pSqlCUD.spec.ts
new file mode 100644
index 00000000..31e87f21
--- /dev/null
+++ b/__tests__/backend/src/utils/erdAlters/pSqlCUD.spec.ts
@@ -0,0 +1,189 @@
+import {
+ generatePostgresColumnQuery,
+ queryPostgres,
+} from '../../../../../backend/src/utils/erdCUD/pSqlCUD';
+import {
+ PsqlColumnOperations,
+ ErdUpdatesType,
+ PSqlDataType,
+} from '../../../../../shared/types/erTypes';
+
+describe('pSqlCUD', () => {
+ describe('generatePostgresAlterQuery', () => {
+ const tableName = 'test';
+
+ describe('addColumn', () => {
+ it('should return correct string without Type defined', () => {
+ const addWithoutType: PsqlColumnOperations = {
+ columnAction: 'addColumn',
+ columnName: 'hello',
+ };
+ expect(generatePostgresColumnQuery(tableName, addWithoutType)).toEqual(
+ 'ADD COLUMN hello',
+ );
+ });
+
+ it('should return correct string with Type defined', () => {
+ const addWithType: PsqlColumnOperations = {
+ columnAction: 'addColumn',
+ columnName: 'hello2',
+ type: 'CHAR',
+ };
+ expect(generatePostgresColumnQuery(tableName, addWithType)).toEqual(
+ 'ADD COLUMN hello2 TYPE CHAR',
+ );
+ });
+ });
+
+ describe('dropColumn', () => {
+ it('should return drop column string', () => {
+ const drop: PsqlColumnOperations = {
+ columnAction: 'dropColumn',
+ columnName: 'drop',
+ };
+ expect(generatePostgresColumnQuery(tableName, drop)).toEqual(
+ 'DROP COLUMN drop',
+ );
+ });
+ });
+
+ describe('alterColumnType', () => {
+ it('should return string with desired alter type', () => {
+ const alterColumnType: PsqlColumnOperations = {
+ columnAction: 'alterColumnType',
+ columnName: 'alterColumnType',
+ type: 'INTEGER',
+ };
+ expect(generatePostgresColumnQuery(tableName, alterColumnType)).toEqual(
+ 'ALTER COLUMN alterColumnType TYPE INTEGER',
+ );
+ });
+ });
+
+ describe('renameColumn', () => {
+ it('should return string with renamed column', () => {
+ const renameColumn: PsqlColumnOperations = {
+ columnAction: 'renameColumn',
+ columnName: 'before',
+ newColumnName: 'after',
+ };
+ expect(generatePostgresColumnQuery(tableName, renameColumn)).toEqual(
+ 'RENAME COLUMN before TO after',
+ );
+ });
+ });
+
+ describe('togglePrimary', () => {
+ it('should return string for primary set to TRUE', () => {
+ const primaryTrue: PsqlColumnOperations = {
+ columnAction: 'togglePrimary',
+ columnName: 'true',
+ isPrimary: true,
+ };
+ expect(generatePostgresColumnQuery(tableName, primaryTrue)).toEqual(
+ 'ADD PRIMARY KEY (true)',
+ );
+ });
+ it('should return string for primary set to FALSE', () => {
+ const primaryTrue: PsqlColumnOperations = {
+ columnAction: 'togglePrimary',
+ columnName: 'false',
+ isPrimary: false,
+ };
+ expect(generatePostgresColumnQuery(tableName, primaryTrue)).toEqual(
+ 'DROP CONSTRAINT users_pkey',
+ );
+ });
+ });
+
+ describe('toggleForeign', () => {
+ it('should return string for making foreign TRUE', () => {
+ const foreignTrue: PsqlColumnOperations = {
+ columnAction: 'toggleForeign',
+ columnName: 'true',
+ hasForeign: true,
+ foreignTable: 'foreignTable',
+ foreignColumn: 'foreignColumn',
+ foreignConstraint: 'foreignConstraint',
+ };
+ expect(generatePostgresColumnQuery(tableName, foreignTrue)).toEqual(
+ 'ADD CONSTRAINT foreignConstraint FOREIGN KEY (true) REFERENCES foreignTable (foreignColumn)',
+ );
+ });
+ it('should return string for making foreign FALSE', () => {
+ const foreignTrue: PsqlColumnOperations = {
+ columnAction: 'toggleForeign',
+ columnName: 'false',
+ hasForeign: false,
+ foreignConstraint: 'foreignConstraint',
+ };
+ expect(generatePostgresColumnQuery(tableName, foreignTrue)).toEqual(
+ 'DROP CONSTRAINT foreignConstraint',
+ );
+ });
+ });
+
+ describe('toggleUnique', () => {
+ it('should return string for making unique TRUE', () => {
+ const uniqueTrue: PsqlColumnOperations = {
+ columnAction: 'toggleUnique',
+ columnName: 'true',
+ isUnique: true,
+ };
+ expect(generatePostgresColumnQuery(tableName, uniqueTrue)).toEqual(
+ 'ADD UNIQUE (true)',
+ );
+ });
+ it('should return string for making unique FALSE', () => {
+ const uniqueTrue: PsqlColumnOperations = {
+ columnAction: 'toggleUnique',
+ columnName: 'false',
+ isUnique: false,
+ };
+ expect(generatePostgresColumnQuery(tableName, uniqueTrue)).toEqual(
+ 'DROP CONSTRAINT test_false_key',
+ );
+ });
+ });
+ });
+
+ describe('queryPostgres', () => {
+ describe('all case test', () => {
+ it('should return array of strings with add, drop, alter, and column', () => {
+ const updatesArray: ErdUpdatesType = [
+ {
+ action: 'add',
+ tableName: 'table1',
+ tableSchema: 'public',
+ },
+ {
+ action: 'drop',
+ tableName: 'table2',
+ tableSchema: 'public',
+ },
+ {
+ action: 'alter',
+ tableName: 'table3',
+ tableSchema: 'public',
+ newTableName: 'alteredTable3',
+ },
+ {
+ action: 'column',
+ tableName: 'table4',
+ tableSchema: 'public',
+ columnOperations: {
+ columnAction: 'dropColumn',
+ columnName: 'table4column',
+ },
+ },
+ ];
+ expect(queryPostgres(updatesArray)).toStrictEqual([
+ 'CREATE TABLE public.table1;',
+ 'DROP TABLE public.table2;',
+ 'ALTER TABLE public.table3 RENAME TO alteredTable3;',
+ 'ALTER TABLE public.table4 DROP COLUMN table4column;',
+ ]);
+ });
+ });
+ });
+});
diff --git a/__tests__/backend/src/utils/erdTableFunctions.spec.ts b/__tests__/backend/src/utils/erdTableFunctions.spec.ts
new file mode 100644
index 00000000..3a1948da
--- /dev/null
+++ b/__tests__/backend/src/utils/erdTableFunctions.spec.ts
@@ -0,0 +1,36 @@
+import erdUpdatesToQuery from '../../../../backend/src/utils/erdTableFunctions';
+import { ErdUpdatesType } from '../../../../shared/types/erTypes';
+import { DBType } from '../../../../shared/types/dbTypes';
+
+describe('erdTableFunctions', () => {
+ // jest.mock(
+ // '../../../../backend/src/models/stateModel',
+ // () =>
+ // ({
+ // default: {
+ // currentERD: DBType.Postgres,
+ // },
+ // } as typeof import('../../../../backend/src/models/stateModel')),
+ // );
+
+ it('should return a big string from case POSTGRES and RDSPOSTGRES', () => {
+ const updatesArray: ErdUpdatesType = [
+ {
+ action: 'add',
+ tableName: 'table1',
+ tableSchema: 'public',
+ },
+ {
+ action: 'drop',
+ tableName: 'table2',
+ tableSchema: 'public',
+ },
+ ];
+
+ const currentERD: DBType = DBType.Postgres;
+
+ expect(erdUpdatesToQuery(updatesArray, currentERD)).toEqual(
+ 'CREATE TABLE public.table1; DROP TABLE public.table2;',
+ );
+ });
+});
diff --git a/__tests__/backend/ertable-functions.spec.ts b/__tests__/backendTests/readme.txt
similarity index 100%
rename from __tests__/backend/ertable-functions.spec.ts
rename to __tests__/backendTests/readme.txt
diff --git a/__tests__/frontend/appAsync.spec.ts b/__tests__/frontend/appAsync.spec.ts
new file mode 100644
index 00000000..cea3879d
--- /dev/null
+++ b/__tests__/frontend/appAsync.spec.ts
@@ -0,0 +1,4 @@
+/**
+ * Test cases for functions used in central useEffect responsible for issuing
+ * async requests
+ */
diff --git a/__tests__/frontend/lib/appViews.spec.ts b/__tests__/frontend/lib/appViews.spec.ts
new file mode 100644
index 00000000..771bd348
--- /dev/null
+++ b/__tests__/frontend/lib/appViews.spec.ts
@@ -0,0 +1,84 @@
+import React from 'react';
+import { render, fireEvent } from '@testing-library/react';
+import App from '../../../frontend/components/App';
+import {
+ appViewStateReducer,
+ AppViewState,
+} from '../../../frontend/state_management/Reducers/AppViewReducer';
+
+describe('App view state reducer', () => {
+ let initialState: AppViewState;
+
+ beforeEach(() => {
+ initialState = {
+ selectedView: 'dbView',
+ sideBarIsHidden: false,
+ showConfigDialog: false,
+ showCreateDialog: false,
+ PG_isConnected: false,
+ MYSQL_isConnected: false,
+ };
+ });
+
+ describe('Selected view should properly update the current state', () => {
+ it('should update the selectedView to erView', () => {
+ const newState = appViewStateReducer(initialState, {
+ type: 'SELECTED_VIEW',
+ payload: 'compareView',
+ });
+ expect(newState.selectedView).toEqual('compareView');
+ });
+
+ it('should update the selectedView to testView', () => {
+ const newState = appViewStateReducer(initialState, {
+ type: 'SELECTED_VIEW',
+ payload: 'queryView',
+ });
+ expect(newState.selectedView).toEqual('queryView');
+ });
+
+ it('should update the selectedView to view', () => {
+ const newState = appViewStateReducer(initialState, {
+ type: 'SELECTED_VIEW',
+ payload: 'newSchemaView',
+ });
+ expect(newState.selectedView).toEqual('newSchemaView');
+ });
+ });
+
+ it('should toggle sidebar config', () => {
+ const newState = appViewStateReducer(initialState, {
+ type: 'TOGGLE_SIDEBAR',
+ });
+ expect(newState.sideBarIsHidden).toEqual(true);
+ });
+
+ it('should toggle showConfigDialog', () => {
+ const newState = appViewStateReducer(initialState, {
+ type: 'TOGGLE_CONFIG_DIALOG',
+ });
+ expect(newState.showConfigDialog).toEqual(true);
+ });
+ it('should toggle showConfigDialog', () => {
+ const newState = appViewStateReducer(initialState, {
+ type: 'TOGGLE_CREATE_DIALOG',
+ });
+ expect(newState.showCreateDialog).toEqual(true);
+ });
+
+ it('should update the PG connected with the proper passed in boolean', () => {
+ const newState = appViewStateReducer(initialState, {
+ type: 'IS_PG_CONNECTED',
+ payload: true,
+ });
+ expect(newState.PG_isConnected).toEqual(true);
+ });
+
+ it('should update the MYSQL connected with the proper passed in boolean', () => {
+ const newState = appViewStateReducer(initialState, {
+ type: 'IS_MYSQL_CONNECTED',
+ payload: true,
+ });
+ expect(newState.MYSQL_isConnected).toEqual(true);
+ });
+});
diff --git a/__tests__/frontend/lib/erdReducers.spec.ts b/__tests__/frontend/lib/erdReducers.spec.ts
new file mode 100644
index 00000000..743f00f3
--- /dev/null
+++ b/__tests__/frontend/lib/erdReducers.spec.ts
@@ -0,0 +1,25 @@
+// import {
+// erdReducer,
+// ERDState,
+// } from '../../../frontend/state_management/Reducers/ERDReducers';
+
+// import { ERDActions } from '../../../frontend/state_management/Actions/ERDActions';
+
+// const initialState: ERDState[] = [];
+// let actionObject: ERDActions;
+// describe('erdReducer', () => {
+// beforeEach(() => {
+// actionObject = {
+// type: 'ADD_TABLE',
+// payload: { tableName: 'newTableName' },
+// };
+// });
+
+// it('should return the initial state without modifying it at all', () => {
+// expect(erdReducer(initialState, actionObject)).not.toBe(initialState);
+// });
+
+// it('should handle ADD_TABLE', () => {
+// console.log(erdReducer(initialState, actionObject));
+// });
+// });
diff --git a/__tests__/frontend/lib/queries.spec.ts b/__tests__/frontend/lib/queries.spec.ts
index 2469d3ad..f56b7eeb 100644
--- a/__tests__/frontend/lib/queries.spec.ts
+++ b/__tests__/frontend/lib/queries.spec.ts
@@ -1,7 +1,8 @@
-window.require = ((str: string) => str) as any
import * as queries from '../../../frontend/lib/queries';
import type { QueryData } from '../../../frontend/types';
+window.require = ((str: string) => str) as any
+
const first: Partial
= {
label: 'firstQuery',
db: 'firstDb',
@@ -175,7 +176,7 @@ describe('setCompare', () => {
});
it('should set execution time to 0 if given false for isCompared', () => {
- let qs:any = { [`${queries.key(first as QueryData)}`]: first };
+ const qs:any = { [`${queries.key(first as QueryData)}`]: first };
expect(Object.keys(collection).length).toBe(0);
const newCollection = queries.setCompare({}, qs, first as QueryData, true);
expect(Object.keys(newCollection).length).toBe(1);
diff --git a/assets/readmeImages/ERD_before_after.png b/assets/readmeImages/ERD_before_after.png
new file mode 100644
index 00000000..b4e904f9
Binary files /dev/null and b/assets/readmeImages/ERD_before_after.png differ
diff --git a/assets/readmeImages/erdArchitecture.png b/assets/readmeImages/erdArchitecture.png
new file mode 100644
index 00000000..b5fa5b0d
Binary files /dev/null and b/assets/readmeImages/erdArchitecture.png differ
diff --git a/backend/BE_types.ts b/backend/BE_types.ts
index a9b96959..3832a34f 100644
--- a/backend/BE_types.ts
+++ b/backend/BE_types.ts
@@ -1,6 +1,8 @@
/**
* This file contains common types that need to be used across the backend
*/
+import { PoolOptions } from 'mysql2';
+import { PoolConfig } from 'pg';
import { UpdatesObjType } from '../frontend/types';
export interface ColumnObj {
@@ -26,12 +28,12 @@ export interface TableDetails {
}
export interface DBList {
databaseConnected: {
- PG: boolean,
- MySQL: boolean,
- RDSPG: boolean,
- RDSMySQL: boolean,
- SQLite: boolean,
- directPGURI: boolean,
+ PG: boolean;
+ MySQL: boolean;
+ RDSPG: boolean;
+ RDSMySQL: boolean;
+ SQLite: boolean;
+ directPGURI: boolean;
};
databaseList: dbDetails[];
tableList: TableDetails[];
@@ -49,7 +51,7 @@ export enum DBType {
MySQL = 'mysql',
RDSPostgres = 'rds-pg',
RDSMySQL = 'rds-mysql',
- CloudDB = 'cloud-database', //added for cloud dbs
+ CloudDB = 'cloud-database', // added for cloud dbs
SQLite = 'sqlite',
directPGURI = 'directPGURI',
}
@@ -64,12 +66,22 @@ export enum LogType {
}
export interface DocConfigFile {
- mysql: { user: string; password: string; port: number };
- pg: { user: string; password: string; port: number };
- rds_mysql: { user: string; password: string; port: number; host: string };
- rds_pg: { user: string; password: string; port: number; host: string };
- sqlite: { path: '' };
- directPGURI: { uri: '' };
+ mysql_options: { user: string; password: string; port: number } & PoolOptions;
+ pg_options: { user: string; password: string; port: number } & PoolConfig;
+ rds_mysql_options: {
+ user: string;
+ password: string;
+ port: number;
+ host: string;
+ } & PoolOptions;
+ rds_pg_options: {
+ user: string;
+ password: string;
+ port: number;
+ host: string;
+ } & PoolConfig;
+ sqlite_options: { filename: string };
+ directPGURI_options: { connectionString: string } & PoolConfig;
}
type dbsInputted = {
@@ -93,27 +105,19 @@ type configExists = {
type combined = {
dbsInputted: dbsInputted;
configExists: configExists;
-}
+};
+
+export interface MysqlQueryResolve {}
-export interface DBFunctions {
+export interface DBFunctions extends DocConfigFile {
pg_uri: string;
- curPG_DB: string;
- curMSQL_DB: string;
- curRDS_MSQL_DB: any;
- curRDS_PG_DB: {
- user: string;
- password: string;
- host: string;
- };
- curSQLite_DB: { path: string };
- curdirectPGURI_DB: string;
dbsInputted: dbsInputted;
setBaseConnections: () => Promise;
- query: (text: string, params: (string | number)[], dbType: DBType) => void;
+ query: (text: string, params: (string | number)[], dbType: DBType) => any;
connectToDB: (db: string, dbType?: DBType) => Promise;
disconnectToDrop: (dbType: DBType) => Promise;
- getLists: (dbName: string, dbType?: DBType) => Promise;
+ getLists: (dbName?: string, dbType?: DBType) => Promise;
getTableInfo: (tableName: string, dbType: DBType) => Promise;
getDBNames: (dbType: DBType) => Promise;
getColumnObjects: (tableName: string, dbType: DBType) => Promise;
@@ -126,4 +130,4 @@ export interface QueryPayload {
sqlString: string;
selectedDb: string;
runQueryNumber: number;
-}
\ No newline at end of file
+}
diff --git a/backend/channels.ts b/backend/channels.ts
deleted file mode 100644
index db3eb178..00000000
--- a/backend/channels.ts
+++ /dev/null
@@ -1,846 +0,0 @@
-/* eslint-disable no-console */
-/* eslint-disable prefer-destructuring */
-import { ipcMain } from 'electron'; // IPCMain: Communicate asynchronously from the main process to renderer processes
-import path from 'path';
-import fs from 'fs';
-import os from 'os';
-import helperFunctions from './helperFunctions';
-import generateDummyData from './DummyD/dummyDataMain';
-import { ColumnObj, DBList, DummyRecords, DBType, LogType, QueryPayload } from './BE_types';
-import backendObjToQuery from './ertable-functions';
-import logger from './Logging/masterlog';
-
-// import { Integer } from 'type-fest';
-
-const db = require('./models');
-const docConfig = require('./_documentsConfig');
-
-const {
- createDBFunc,
- dropDBFunc,
- explainQuery,
- runSQLFunc,
- runTARFunc,
- runFullCopyFunc,
- runHollowCopyFunc,
- promExecute,
-} = helperFunctions;
-
-// *************************************************** IPC Event Listeners *************************************************** //
-interface Feedback {
- type: string;
- message: string;
-}
-
-/**
- * Handles set-config requests from frontend
- * triggered whenever save is pressed on the config/login page
- * establishes connections to database, logs failed connections, sends contents of config file
- */
-ipcMain.handle('set-config', async (event, configObj) => {
- docConfig.saveConfig(configObj); // saves login info from frontend into config file
-
-
- db.setBaseConnections() // tries to log in using config data
- .then(({ dbsInputted, configExists }) => {
-
- // error handling for trying and failing to log in to databases
- let errorStr = '';
- const dbs = Object.keys(dbsInputted);
- dbs.forEach(e => {
- if (!dbsInputted[e] && configExists[e]) errorStr += ` ${e}`;
- })
- if (errorStr.length) {
- const err = `Unsuccessful login(s) for ${errorStr.toUpperCase()} database(s)`;
- const feedback: Feedback = {
- type: 'error',
- message: err,
- };
- event.sender.send('feedback', feedback);
- }
- logger('Successfully reset base connections', LogType.SUCCESS);
- db.getLists().then((data: DBList) => {
- event.sender.send('db-lists', data); // used to populate sidebar
- });
- })
- .catch((err) => {
- logger(
- `Error trying to set base connections on 'reset-connection': ${err.message}`,
- LogType.ERROR
- );
- const feedback: Feedback = {
- type: 'error',
- message: err,
- };
- event.sender.send('feedback', feedback);
- logger(
- "Sent 'feedback' from 'reset-connection' (Note: This is an ERROR!)",
- LogType.ERROR
- );
- })
- .finally(() => {
- event.sender.send('get-config', docConfig.getFullConfig());
- });
-});
-
-/**
- * Handles get-config request from frontend
- * sends configuration from config file
- */
-ipcMain.handle('get-config', async (event) => { // asdf is configObj used?
- event.sender.send('get-config', docConfig.getFullConfig());
-});
-
-/**
- * Handles return-db-list request from the frontend
- * establishes connection to databases, then gets listObj from getLists, then sends to frontend
- */
-ipcMain.on('return-db-list', (event) => {
- logger(
- "Received 'return-db-list' (Note: No Async being sent here)",
- LogType.RECEIVE
- );
-
- db.setBaseConnections()
- .then(() => {
- db.getLists()
- .then((data: DBList) => {
- event.sender.send('db-lists', data);
- logger("Sent 'db-lists' from 'return-db-list'", LogType.SEND);
- })
- .catch((err) => {
- logger(
- `Error trying to get lists on 'return-db-list': ${err.message}`,
- LogType.ERROR
- );
- const feedback: Feedback = {
- type: 'error',
- message: err,
- };
- event.sender.send('feedback', feedback);
- logger(
- "Sent 'feedback' from 'return-db-list' (Note: This is an ERROR!)",
- LogType.SEND
- );
- });
- })
- .catch((err) => {
- logger(
- `Error trying to set base connections on 'return-db-list': ${err.message}`,
- LogType.ERROR
- );
- const feedback: Feedback = {
- type: 'error',
- message: err,
- };
- event.sender.send('feedback', feedback);
- logger(
- "Sent 'feedback' from 'return-db-list' (Note: This is an ERROR!)",
- LogType.SEND
- );
- });
-});
-
-
-/**
- * Handles select-db request from frontend
- * connect to selected db, then get object containing a list of all databases and a list of tables for the selected database, and sends to frontend
- */
-ipcMain.handle(
- 'select-db',
- async (event, dbName: string, dbType: DBType): Promise => {
- logger("Received 'select-db'", LogType.RECEIVE);
-
- event.sender.send('async-started');
- try {
- await db.connectToDB(dbName, dbType);
-
- // send updated db info
- const dbsAndTables: DBList = await db.getLists(dbName, dbType);
- event.sender.send('db-lists', dbsAndTables);
- logger("Sent 'db-lists' from 'select-db'", LogType.SEND);
- } finally {
- event.sender.send('async-complete');
- }
- }
-);
-
-
-/**
- * Handler for drop-db requests from frontend
- * Drops the passed in DB and returns updated DB List
- */
-ipcMain.handle(
- 'drop-db',
- async (
- event,
- dbName: string,
- currDB: boolean,
- dbType: DBType
- ): Promise => {
- logger("Received 'drop-db'", LogType.RECEIVE);
-
- event.sender.send('async-started');
-
- try {
- // if deleting currently connected db, disconnect from db
- // end pool connection
- await db.disconnectToDrop(dbType);
- // reconnect to database server, but not the db that will be dropped
- await db.connectToDB('', dbType);
-
- // IN CASE OF EMERGENCY USE THIS CODE TO DROP DATABASES
- // WILL THROW UNCAUGHT ERRORS LAST RESORT ONLY!!!
- // await db.connectToDB('', dbType);
- // if(dbType === DBType.Postgres){
- // await db.query(`UPDATE pg_database SET datallowconn = 'false' WHERE datname = '${dbName}'`, null, dbType);
- // await db.query(`
- // SELECT pid, pg_terminate_backend(pid)
- // FROM pg_stat_activity
- // WHERE datname = '${dbName}' AND pid <> pg_backend_pid();
- // `, null, dbType);
- // // await db.closeTheDB(dbName, dbType);
- // }
-
- const dropDBScript = dropDBFunc(dbName, dbType);
- if (dbType !== DBType.SQLite) await db.query(dropDBScript, null, dbType);
-
- // send updated db info
- const dbsAndTables: DBList = await db.getLists(dbName, dbType);
- event.sender.send('db-lists', dbsAndTables);
- logger("Sent 'db-lists' from 'drop-db'", LogType.SEND);
- } finally {
- event.sender.send('async-complete');
- }
- }
-);
-
-interface DuplicatePayload {
- newName: string;
- sourceDb: string;
- withData: boolean;
-}
-
-/**
- * Handle duplicate-db events sent from frontend. Cleans up after itself in
- * the event of failure
- */
-ipcMain.handle(
- 'duplicate-db',
- async (
- event,
- { newName, sourceDb, withData }: DuplicatePayload,
- dbType: DBType
- ) => {
- logger(
- `Received 'duplicate-db'" of dbType: ${dbType} and: `,
- LogType.RECEIVE
- );
-
- event.sender.send('async-started');
-
- const tempFilePath = path.resolve(
- `${docConfig.getConfigFolder()}/`,
- `temp_${newName}.sql`
- );
-
- try {
- // dump database to temp file
- const dumpCmd = withData
- ? runFullCopyFunc(sourceDb, tempFilePath, dbType)
- : runHollowCopyFunc(sourceDb, tempFilePath, dbType);
- try {
- await promExecute(dumpCmd);
- } catch (e) {
- throw new Error(
- `Failed to dump ${sourceDb} to temp file at ${tempFilePath}`
- );
- }
-
- // create new empty database
- try {
- await db.query(createDBFunc(newName, dbType), null, dbType);
- } catch (e) {
- throw new Error(`Failed to create Database`);
- }
-
- // run temp sql file on new database
- try {
- await promExecute(runSQLFunc(newName, tempFilePath, dbType));
- } catch (e: any) {
- // cleanup: drop created db
- logger(`Dropping duplicate db because: ${e.message}`, LogType.WARNING);
- const dropDBScript = dropDBFunc(newName, dbType);
- await db.query(dropDBScript, null, dbType);
-
- throw new Error('Failed to populate newly created database');
- }
-
- // update frontend with new db list
- const dbsAndTableInfo: DBList = await db.getLists('', dbType);
- event.sender.send('db-lists', dbsAndTableInfo);
- logger("Sent 'db-lists' from 'duplicate-db'", LogType.SEND);
- } finally {
- // clean up temp file
- try {
- fs.unlinkSync(tempFilePath);
- } catch (e) {
- event.sender.send('feedback', {
- type: 'error',
- message: `Failed to cleanup temp files. ${tempFilePath} could not be removed.`,
- });
- }
-
- event.sender.send('async-complete');
- }
- }
-);
-
-interface ImportPayload {
- newDbName: string;
- filePath: string;
-}
-
-/**
- * Handle import-db events sent from frontend. Cleans up after itself
- * in the event of failure
- */
-ipcMain.handle(
- 'import-db',
- async (event, { newDbName, filePath }: ImportPayload, dbType: DBType) => {
- logger(`Received 'import-db'" of dbType: ${dbType} and: `, LogType.RECEIVE);
- event.sender.send('async-started');
-
- try {
- // create new empty db
- await db.query(createDBFunc(newDbName, dbType), null, dbType);
-
- const ext = path.extname(filePath).toLowerCase();
- if (ext !== '.sql' && ext !== '.tar')
- throw new Error('Invalid file extension');
-
- const restoreCmd =
- ext === '.sql'
- ? runSQLFunc(newDbName, filePath, dbType)
- : runTARFunc(newDbName, filePath, dbType);
-
- try {
- // populate new db with data from file
- await promExecute(restoreCmd);
- } catch (e: any) {
- // cleanup: drop created db
- logger(`Dropping imported db because: ${e.message}`, LogType.WARNING);
- const dropDBScript = dropDBFunc(newDbName, dbType);
- await db.query(dropDBScript, null, dbType);
-
- throw new Error('Failed to populate database');
- }
-
- // update frontend with new db list
- const dbsAndTableInfo: DBList = await db.getLists('', dbType);
- event.sender.send('db-lists', dbsAndTableInfo);
- logger("Sent 'db-lists' from 'import-db'", LogType.SEND);
- } finally {
- event.sender.send('async-complete');
- }
- }
-);
-
-
-/*
-look at this to check the explain might not support query error
-*/
-/**
- * Handle run-query events passed from the front-end, and send back an updated DB List
- * If error occurs, will rollback to pre-query state
- */
-ipcMain.handle(
- 'run-query',
- async (
- event,
- { targetDb, sqlString, selectedDb, runQueryNumber }: QueryPayload,
- dbType: DBType
- ) => {
- logger(
- "Received 'run-query'",
- LogType.RECEIVE,
- `selectedDb: ${selectedDb} and dbType: ${dbType} and runQueryNumber: ${runQueryNumber}`
- );
- event.sender.send('async-started');
- const arr: any[] = []; // array of sample
- const numberOfSample: number = runQueryNumber;
- let totalSampleTime: number = 0;
- let minimumSampleTime: number = 0;
- let maximumSampleTime: number = 0;
- let averageSampleTime: number = 0;
-
- function parseExplainExplanation(explain) {
- const regex = /actual time=(\d+\.\d+)\.\.(\d+\.\d+) rows=\d+ loops=(\d+)/g;
- const matches: any[] = Array.from(explain.matchAll(regex));
- let result: number = 0;
-
- for (let i = 0; i < matches.length; i += 1) {
- result += (parseFloat(matches[i][2]) - parseFloat(matches[i][1])) * parseFloat(matches[i][3]);
- }
- return result;
- }
-
- try {
- let error: string | undefined;
- // connect to db to run query
-
- if (selectedDb !== targetDb) await db.connectToDB(targetDb, dbType);
-
- // Run Explain
- let explainResults;
- try {
- // console.log('start of try');
- for (let i = 0; i < numberOfSample; i++) {
- // console.log('start of for loopo');
- if (dbType === DBType.Postgres) {
- const results = await db.query(
- explainQuery(sqlString, dbType),
- null,
- dbType
- );
-
- // console.log('query results', results);
- // console.log('explain query results', results[1].rows);
- // console.log('query plan including sample time data', results[1].rows[0]["QUERY PLAN"][0]);
-
- explainResults = results[1].rows;
- const eachSampleTime: any = results[1].rows[0]["QUERY PLAN"][0]['Planning Time'] + results[1].rows[0]["QUERY PLAN"][0]['Execution Time'];
- arr.push(eachSampleTime);
- totalSampleTime += eachSampleTime;
-
- } else if (dbType === DBType.MySQL) {
- const results = await db.query(
- explainQuery(sqlString, dbType),
- null,
- dbType
- );
- const eachSampleTime: any = parseExplainExplanation(results[0][0].EXPLAIN);
- arr.push(eachSampleTime);
- totalSampleTime += eachSampleTime;
-
- // hard coded explainResults just to get it working for now
- explainResults = {
- Plan: {
- 'Node Type': 'Seq Scan',
- 'Parallel Aware': false,
- 'Async Capable': false,
- 'Relation Name': 'newtable1',
- Schema: 'public',
- Alias: 'newtable1',
- 'Startup Cost': 0,
- 'Total Cost': 7,
- 'Plan Rows': 200,
- 'Plan Width': 132,
- 'Actual Startup Time': 0.015,
- 'Actual Total Time': 0.113,
- 'Actual Rows': 200,
- 'Actual Loops': 1,
- Output: ['newcolumn1'],
- 'Shared Hit Blocks': 5,
- 'Shared Read Blocks': 0,
- 'Shared Dirtied Blocks': 0,
- 'Shared Written Blocks': 0,
- 'Local Hit Blocks': 0,
- 'Local Read Blocks': 0,
- 'Local Dirtied Blocks': 0,
- 'Local Written Blocks': 0,
- 'Temp Read Blocks': 0,
- 'Temp Written Blocks': 0
- },
- Planning: {
- 'Shared Hit Blocks': 64,
- 'Shared Read Blocks': 0,
- 'Shared Dirtied Blocks': 0,
- 'Shared Written Blocks': 0,
- 'Local Hit Blocks': 0,
- 'Local Read Blocks': 0,
- 'Local Dirtied Blocks': 0,
- 'Local Written Blocks': 0,
- 'Temp Read Blocks': 0,
- 'Temp Written Blocks': 0
- },
- 'Planning Time': 9999,
- Triggers: [],
- 'Execution Time': 9999
- };
-
- } else if (dbType === DBType.SQLite) {
- const sampleTime = await db.sampler(sqlString);
- arr.push(sampleTime);
- totalSampleTime += sampleTime
-
- // hard coded explainResults just to get it working for now
- explainResults = {
- Plan: {
- 'Node Type': 'Seq Scan',
- 'Parallel Aware': false,
- 'Async Capable': false,
- 'Relation Name': 'newtable1',
- Schema: 'public',
- Alias: 'newtable1',
- 'Startup Cost': 0,
- 'Total Cost': 7,
- 'Plan Rows': 200,
- 'Plan Width': 132,
- 'Actual Startup Time': 0.015,
- 'Actual Total Time': 0.113,
- 'Actual Rows': 200,
- 'Actual Loops': 1,
- Output: ['newcolumn1'],
- 'Shared Hit Blocks': 5,
- 'Shared Read Blocks': 0,
- 'Shared Dirtied Blocks': 0,
- 'Shared Written Blocks': 0,
- 'Local Hit Blocks': 0,
- 'Local Read Blocks': 0,
- 'Local Dirtied Blocks': 0,
- 'Local Written Blocks': 0,
- 'Temp Read Blocks': 0,
- 'Temp Written Blocks': 0
- },
- Planning: {
- 'Shared Hit Blocks': 64,
- 'Shared Read Blocks': 0,
- 'Shared Dirtied Blocks': 0,
- 'Shared Written Blocks': 0,
- 'Local Hit Blocks': 0,
- 'Local Read Blocks': 0,
- 'Local Dirtied Blocks': 0,
- 'Local Written Blocks': 0,
- 'Temp Read Blocks': 0,
- 'Temp Written Blocks': 0
- },
- 'Planning Time': 9999,
- Triggers: [],
- 'Execution Time': 9999
- };
- }
- }
- // get 5 decimal points for sample time
- minimumSampleTime = Math.round(Math.min(...arr) * 10 ** 5) / 10 ** 5;
- maximumSampleTime = Math.round(Math.max(...arr) * 10 ** 5) / 10 ** 5;
- averageSampleTime = Math.round((totalSampleTime / numberOfSample) * 10 ** 5) / 10 ** 5;
- totalSampleTime = Math.round(totalSampleTime * 10 ** 5) / 10 ** 5;
- } catch (e) {
- error = `Failed to get Execution Plan. EXPLAIN might not support this query.`;
- }
-
- // Run Query
- let returnedRows;
- try {
- const results = await db.query(sqlString, null, dbType);
- if (dbType === DBType.MySQL) {
- // console.log('mySQL results', results);
- returnedRows = results[0];
- // console.log('returnedRows in channels for MySQL', returnedRows);
- }
- if (dbType === DBType.Postgres) {
- // console.log('results in channels for Postgres', results);
- returnedRows = results.rows;
- // console.log('returnedRows in channels for Postgres', returnedRows);
- }
- if (dbType === DBType.SQLite) {
- returnedRows = results;
- // console.log('returnedRows in channels for SQLite', returnedRows)
- }
- } catch (e: any) {
- error = e.toString();
- }
-
- return {
- db: targetDb,
- sqlString,
- returnedRows,
- explainResults,
- error,
- numberOfSample,
- totalSampleTime,
- minimumSampleTime,
- maximumSampleTime,
- averageSampleTime,
- };
- } finally {
- // connect back to initialDb
-
- if (selectedDb !== targetDb) await db.connectToDB(selectedDb, dbType);
-
- // send updated db info in case query affected table or database information
- // must be run after we connect back to the originally selected so tables information is accurate
- const dbsAndTables: DBList = await db.getLists('', dbType);
- event.sender.send('db-lists', dbsAndTables);
- logger(
- "Sent 'db-lists' from 'run-query'",
- LogType.SEND,
- `selectedDb: ${selectedDb} -- targetDb: ${targetDb} -- dbType: ${dbType}`
- );
- event.sender.send('async-complete');
- }
- }
-);
-
-interface ExportPayload {
- sourceDb: string;
-}
-
-ipcMain.handle(
- 'export-db',
- async (event, { sourceDb }: ExportPayload, dbType: DBType) => {
- logger("Received 'export-db'", LogType.RECEIVE);
- event.sender.send('async-started');
-
- // store temporary file in user desktop
- const FilePath = path.resolve(os.homedir(), 'desktop', `${sourceDb}.sql`);
-
- let feedback: Feedback = {
- type: '',
- message: '',
- };
-
- try {
- // dump database to new file
- const dumpCmd = runFullCopyFunc(sourceDb, FilePath, dbType);
-
- try {
- await promExecute(dumpCmd);
- feedback = {
- type: 'success',
- message: `${sourceDb} Schema successfully exported to ${FilePath}`,
- };
- event.sender.send('feedback', feedback);
- logger("Sent 'feedback' from 'export-db'", LogType.SEND);
- } catch (e) {
- throw new Error(`Failed to dump ${sourceDb} to a file at ${FilePath}`);
- }
- } finally {
- event.sender.send('async-complete');
- }
- }
-);
-
-interface dummyDataRequestPayload {
- dbName: string;
- tableName: string;
- rows: number;
-}
-
-ipcMain.handle(
- // generate dummy data
- 'generate-dummy-data',
- async (event, data: dummyDataRequestPayload, dbType: DBType) => {
- logger("Received 'generate-dummy-data'", LogType.RECEIVE);
- // send notice to front end that DD generation has been started
- event.sender.send('async-started');
- // console.log('genereatedata ipcMain dbType: ', dbType)
- let feedback: Feedback = {
- type: '',
- message: '',
- };
- try {
- // console.log('data in generate-dummy-data', data); // gets here fine
-
- // Retrieves the Primary Keys and Foreign Keys for all the tables
- const tableInfo: ColumnObj[] = await db.getTableInfo(
- data.tableName,
- dbType
- ); // passed in dbType to second argument
- // console.log('tableInfo in generate-dummy-data', tableInfo); // working
-
- // generate dummy data
- const dummyArray: DummyRecords = await generateDummyData(
- tableInfo,
- data.rows
- );
- // console.log('dummyArray output: ', dummyArray)
- // generate insert query string to insert dummy records
- const columnsStringified = '('
- .concat(dummyArray[0].join(', '))
- .concat(')');
- let insertQuery = `INSERT INTO ${data.tableName} ${columnsStringified} VALUES `;
- for (let i = 1; i < dummyArray.length - 1; i += 1) {
- const recordStringified = '('
- .concat(dummyArray[i].join(', '))
- .concat('), ');
- insertQuery = insertQuery.concat(recordStringified);
- }
- const lastRecordStringified = '('
- .concat(dummyArray[dummyArray.length - 1].join(', '))
- .concat(');');
- insertQuery = insertQuery.concat(lastRecordStringified);
- // insert dummy records into DB
- await db.query('Begin;', null, dbType);
- await db.query(insertQuery, null, dbType);
- await db.query('Commit;', null, dbType);
- feedback = {
- type: 'success',
- message: 'Dummy data successfully generated.',
- };
- } catch (err: any) {
- // rollback transaction if there's an error in insertion and send back feedback to FE
- await db.query('Rollback;', null, dbType);
- feedback = {
- type: 'error',
- message: err,
- };
- } finally {
- // console.log('dbType inside generate-dummy-data', dbType)
- // send updated db info in case query affected table or database information
- const dbsAndTables: DBList = await db.getLists('', dbType); // dummy data clear error is from here
- // console.log('dbsAndTables in generate-dummy-data', dbsAndTables)
- event.sender.send('db-lists', dbsAndTables); // dummy data clear error is from here
-
- // send feedback back to FE
- event.sender.send('feedback', feedback);
-
- // send notice to FE that DD generation has been completed
- event.sender.send('async-complete');
-
- logger(
- "Sent 'db-lists and feedback' from 'generate-dummy-data'",
- LogType.SEND
- );
- }
- }
-);
-
-// handle initialization of a new schema from frontend (newSchemaView)
-interface InitializePayload {
- newDbName: string;
-}
-
-ipcMain.handle(
- 'initialize-db',
- async (event, payload: InitializePayload, dbType: DBType) => {
- logger(
- `Received 'initialize-db' of dbType: ${dbType} and: `,
- LogType.RECEIVE,
- payload
- );
- event.sender.send('async-started');
- const { newDbName } = payload;
-
- try {
- // create new empty db
- await db.query(createDBFunc(newDbName, dbType), null, dbType);
- // connect to initialized db
- await db.connectToDB(newDbName, dbType);
-
- // update DBList in the sidebar to show this new db
- const dbsAndTableInfo: DBList = await db.getLists(newDbName, dbType);
- event.sender.send('db-lists', dbsAndTableInfo);
- ///
- logger("Sent 'db-lists' from 'initialize-db'", LogType.SEND);
- } catch (e) {
- const err = `Unsuccessful DB Creation for ${newDbName} in ${dbType} database`;
- const feedback: Feedback = {
- type: 'error',
- message: err,
- };
- event.sender.send('feedback', feedback);
- // in the case of an error, delete the created db
- // const dropDBScript = dropDBFunc(newDbName, dbType);
- // await db.query(dropDBScript, null, dbType);
- // throw new Error('Failed to initialize new database');
- } finally {
- event.sender.send('async-complete');
- }
- }
-);
-
-// handle updating schemas from the frontend (newSchemaView)
-interface UpdatePayload {
- // targetDb: string;
- sqlString: string;
- selectedDb: string;
-}
-
-// Run query passed from the front-end, and send back an updated DB List
-// DB will rollback if query is unsuccessful
-ipcMain.handle(
- 'update-db',
- async (event, { sqlString, selectedDb }: UpdatePayload, dbType: DBType) => {
- logger("Received 'update-db'", LogType.RECEIVE);
- event.sender.send('async-started');
-
- try {
- // connect to db to run query
- await db.connectToDB(selectedDb, dbType);
-
- // Run Query
- try {
- await db.query(sqlString, null, dbType);
- } catch (e) {
- if (e) throw new Error('Failed to update schema');
- }
- } finally {
- // send updated db info in case query affected table or database information
- // must be run after we connect back to the originally selected so tables information is accurate
- const dbsAndTables: DBList = await db.getLists('', dbType);
- event.sender.send('db-lists', dbsAndTables);
- logger("Sent 'db-lists' from 'update-db'", LogType.SEND);
-
- event.sender.send('async-complete');
- }
- }
-);
-
-// Generate and run query from react-flow ER diagram
-ipcMain.handle(
- 'ertable-schemaupdate',
- async (event, backendObj, dbName: string, dbType: DBType) => {
- logger(
- `Received 'ertable-schemaupdate' with dbType: ${dbType}, dbName: ${dbName}, and backendObj: `,
- LogType.RECEIVE,
- backendObj
- );
- // send notice to front end that schema update has started
- event.sender.send('async-started');
-
- let feedback: Feedback = {
- type: '',
- message: '',
- };
- try {
- // Generates query from backendObj
- const query = backendObjToQuery(backendObj, dbType);
-
- // run sql command
- await db.query('Begin;', null, dbType);
- await db.query(query, null, dbType);
- await db.query('Commit;', null, dbType);
- feedback = {
- type: 'success',
- message: 'Database updated successfully.',
- };
- return 'success';
- } catch (err: any) {
- // rollback transaction if there's an error in update and send back feedback to FE
- await db.query('Rollback;', null, dbType);
-
- feedback = {
- type: 'error',
- message: err,
- };
- } finally {
- // send updated db info
-
- const updatedDb: DBList = await db.getLists(dbName, dbType);
- event.sender.send('db-lists', updatedDb);
-
- // send feedback back to FE
- event.sender.send('feedback', feedback);
-
- // send notice to FE that schema update has been completed
- event.sender.send('async-complete');
-
- logger(
- "Sent 'db-lists and feedback' from 'ertable-schemaupdate'",
- LogType.SEND
- );
- }
- }
-);
diff --git a/backend/main.ts b/backend/main.ts
index a6e2bc9e..1bca986d 100644
--- a/backend/main.ts
+++ b/backend/main.ts
@@ -1,25 +1,27 @@
// eslint-disable-next-line import/no-extraneous-dependencies
-import { BrowserWindow, Menu, app, session } from 'electron'; // added session here
+import * as path from 'path';
+import * as url from 'url';
+import { app, BrowserWindow, Menu } from 'electron'; // added session here
+import fixPath from 'fix-path';
+
+import MainMenu from './mainMenu';
const dev: boolean = process.env.NODE_ENV === 'development';
-const os = require('os');
-const path = require('path');
-const url = require('url');
-const fixPath = require('fix-path');
-const MainMenu = require('./mainMenu');
// requiring channels file to initialize event listeners
-require('./channels');
+// require('./_DEPRECATED_channels');
+require('./src/ipcHandlers/index');
fixPath();
-// Keep a global reference of the window objects, if you don't, the window will be closed automatically when the JavaScript object is garbage collected.
+// Keep a global reference of the window objects, if you don't,
+// the window will be closed automatically when the JavaScript object is garbage collected.
let mainWindow: BrowserWindow | null;
// for react dev tools to work with electron
// download react devtools and save them on desktop in folder named ReactDevTools
// devtools: https://github.com/facebook/react/issues/25843
-// https://github.com/mondaychen/react/raw/017f120369d80a21c0e122106bd7ca1faa48b8ee/packages/react-devtools-extensions/ReactDevTools.zip
+// https://github.com/mondaychen/react/raw/017f120369d80a21c0e122106bd7ca1faa48b8ee/packages/react-devtools-extensions/ReactDevTools.zip
// ******************** Comment out when done ******************** //
// const reactDevToolsPath = path.join(os.homedir(), '/Desktop/ReactDevTools');
// app.whenReady().then(async () => {
@@ -35,8 +37,7 @@ process.on('uncaughtException', (error) => {
console.error('Uncaught Exception:', error);
});
-
-
+// this creates the new browserWindow. Had to delete remoteprocess from webPrefences since it was deprecated. It allowed driect access to remote objects and APIs in this main process, so instead we implement ipcRenderer.invoke. WebPreferences nodeintegration and contextisolation are set respectively to ensure api's can be used throughout the entire program without contextbridging
function createWindow() {
mainWindow = new BrowserWindow({
width: 1800,
@@ -45,7 +46,7 @@ function createWindow() {
minHeight: 720,
title: 'SeeQR',
show: false,
- webPreferences: { nodeIntegration: true, enableRemoteModule: true },
+ webPreferences: { nodeIntegration: true, contextIsolation: false },
icon: path.join(__dirname, '../../assets/logo/seeqr_dock.png'),
});
@@ -87,7 +88,8 @@ app.on('ready', createWindow);
// Quit when all windows are closed for Windows and Linux
app.on('window-all-closed', () => {
- // On macOS it is common for applications to stay active on their menu bar when the use closes the window
+ // On macOS it is common for applications to stay active on their menu bar
+ // when the use closes the window
if (process.platform !== 'darwin') {
app.quit();
} else {
@@ -96,7 +98,8 @@ app.on('window-all-closed', () => {
});
app.on('activate', () => {
- // On macOS it's common to re-create a window in the app when the dock icon is clicked and there are no other windows open.
+ // On macOS it's common to re-create a window in the app when the dock
+ // icon is clicked and there are no other windows open.
if (mainWindow === null) {
createWindow();
}
diff --git a/backend/mainMenu.ts b/backend/mainMenu.ts
index e1f3c3f8..1a4cead8 100644
--- a/backend/mainMenu.ts
+++ b/backend/mainMenu.ts
@@ -6,40 +6,40 @@
* Each object represents a click action the user can take or something cosemetic like a separate line
*/
-
// import shell so a new browser window can open for external links
- const { shell } = require('electron');
+// const { shell } = require('electron');
+import { MenuItem, shell } from 'electron';
// darwin is the process platform for Macs
const isMac = process.platform === 'darwin';
-const arr = [
+const arr: MenuItem[] = [
// App menu
...(isMac
? [
- {
- label: 'Electron',
- submenu: [
- { role: 'about' },
- { type: 'separator' },
- { role: 'services' },
- { type: 'separator' },
- { role: 'hide' },
- { role: 'hideothers' },
- { role: 'unhide' },
- { type: 'separator' },
- { role: 'quit' },
- ],
- },
- ]
+ new MenuItem({
+ label: 'Electron',
+ submenu: [
+ { role: 'about' },
+ { type: 'separator' },
+ { role: 'services' },
+ { type: 'separator' },
+ { role: 'hide' },
+ { role: 'hideOthers' },
+ { role: 'unhide' },
+ { type: 'separator' },
+ { role: 'quit' },
+ ],
+ }),
+ ]
: []),
// File menu
- {
+ new MenuItem({
label: 'File',
submenu: [isMac ? { role: 'close' } : { role: 'quit' }],
- },
+ }),
// Edit menu
- {
+ new MenuItem({
label: 'Edit',
submenu: [
{ role: 'undo' },
@@ -48,53 +48,48 @@ const arr = [
{ role: 'cut' },
{ role: 'copy' },
{ role: 'paste' },
- ...(isMac
- ? [
- { role: 'delete' },
- { role: 'selectAll' },
- { type: 'separator' },
- {
- label: 'Speech',
- submenu: [{ role: 'startspeaking' }, { role: 'stopspeaking' }],
- },
- ]
- : [{ role: 'delete' }, { type: 'separator' }, { role: 'selectAll' }]),
+ { role: 'delete' },
+ { role: 'selectAll' },
+ { type: 'separator' },
+ isMac
+ ? {
+ label: 'Speech',
+ submenu: [{ role: 'startSpeaking' }, { role: 'stopSpeaking' }],
+ }
+ : { label: 'Test' },
],
- },
+ }),
// View menu
- {
+ new MenuItem({
label: 'View',
submenu: [
{ role: 'reload' },
- { role: 'forcereload' },
- { role: 'toggledevtools' },
+ { role: 'forceReload' },
+ { role: 'toggleDevTools' },
{ type: 'separator' },
- { role: 'resetzoom' },
- { role: 'zoomin' },
- { role: 'zoomout' },
+ { role: 'resetZoom' },
+ { role: 'zoomIn' },
+ { role: 'zoomOut' },
{ type: 'separator' },
{ role: 'togglefullscreen' },
],
- },
+ }),
// Window Menu
- {
+ new MenuItem({
label: 'Window',
submenu: [
{ role: 'minimize' },
{ role: 'zoom' },
- ...(isMac
- ? [
- { type: 'separator' },
- { role: 'front' },
- { type: 'separator' },
- { role: 'window' },
- ]
- : [{ role: 'close' }]),
+ isMac ? { type: 'separator' } : { label: 'Test' },
+ isMac ? { role: 'front' } : { label: 'Test' },
+ isMac ? { type: 'separator' } : { label: 'Test' },
+ isMac ? { role: 'window' } : { label: 'Test' },
+ isMac ? { label: 'Test' } : { role: 'close' },
],
- },
+ }),
// help menu
- {
- role: 'Help',
+ new MenuItem({
+ role: 'help',
submenu: [
{
label: 'Electron Documentation',
@@ -109,7 +104,7 @@ const arr = [
},
},
],
- },
+ }),
];
-module.exports = arr;
+export default arr;
diff --git a/backend/models.ts b/backend/models.ts
deleted file mode 100644
index 09573961..00000000
--- a/backend/models.ts
+++ /dev/null
@@ -1,824 +0,0 @@
-import {
- ColumnObj,
- dbDetails,
- TableDetails,
- DBList,
- DBType,
- LogType,
- DBFunctions,
-} from './BE_types';
-import logger from './Logging/masterlog';
-import pools from './poolVariables';
-import connectionFunctions from './databaseConnections';
-
-const fs = require('fs');
-const { performance } = require('perf_hooks');
-const docConfig = require('./_documentsConfig');
-
-// eslint-disable-next-line prefer-const
-
-/**
- * This object contains info about the current database being accessed
- * login info for rds
- * highest level functions for accessing databases
- */
-const DBFunctions: DBFunctions = {
- pg_uri: '',
- curPG_DB: '',
- curMSQL_DB: '',
- curRDS_MSQL_DB: {
- user: '',
- password: '',
- host: '',
- },
- curRDS_PG_DB: {
- user: '',
- password: '',
- host: '',
- },
- curSQLite_DB: { path: '' },
- curdirectPGURI_DB: '',
-
- /**
- * Indicates whether the named database has been logged-in to, default to false
- */
- dbsInputted: {
- pg: false,
- msql: false,
- rds_pg: false,
- rds_msql: false,
- sqlite: false,
- directPGURI: false,
- },
-
- /**
- * Saves login info to variables. Tries to log in to databases using configs
- * @returns object containing login status of all database servers
- */
- async setBaseConnections() {
- const PG_Cred = docConfig.getCredentials(DBType.Postgres);
- const MSQL_Cred = docConfig.getCredentials(DBType.MySQL);
- this.curRDS_PG_DB = docConfig.getCredentials(DBType.RDSPostgres);
- this.curRDS_MSQL_DB = docConfig.getCredentials(DBType.RDSMySQL);
- this.curSQLite_DB = docConfig.getCredentials(DBType.SQLite);
- this.curdirectPGURI_DB = docConfig.getCredentials(DBType.directPGURI);
- const configExists = {
- pg: false,
- msql: false,
- rds_pg: false,
- rds_msql: false,
- sqlite: false,
- directPGURI: false,
- }
- /*
- all the if/else and try/catch in this function are for various forms of error handling. incorrect passwords/removed entries after successful logins
- */
-
- // RDS PG POOL: truthy values means user has inputted info into config -> try to log in
- if (
- this.curRDS_PG_DB.user &&
- this.curRDS_PG_DB.password &&
- this.curRDS_PG_DB.host
- ) {
- try {
- configExists.rds_pg = true;
- await connectionFunctions.RDS_PG_DBConnect(this.curRDS_PG_DB);
- this.dbsInputted.rds_pg = true;
- logger('CONNECTED TO RDS PG DATABASE!', LogType.SUCCESS);
- } catch (error) {
- this.dbsInputted.rds_pg = false;
- logger('FAILED TO CONNECT TO RDS PG DATABASE', LogType.ERROR);
- }
- } else {
- configExists.rds_pg = false;
- this.dbsInputted.rds_pg = false;
- }
-
- // RDS MSQL POOL: truthy values means user has inputted info into config -> try to log in
- if (
- this.curRDS_MSQL_DB.user &&
- this.curRDS_MSQL_DB.password &&
- this.curRDS_MSQL_DB.host
- ) {
- try {
- configExists.rds_msql = true;
- await connectionFunctions.RDS_MSQL_DBConnect(this.curRDS_MSQL_DB);
-
- // test query to make sure were connected. needed for the catch statement to hit incase we arent connected.
- const testQuery = await pools.rds_msql_pool.query('SHOW DATABASES;');
- logger(`CONNECTED TO RDS MYSQL DATABASE!`, LogType.SUCCESS);
- this.dbsInputted.rds_msql = true;
- } catch (error) {
- this.dbsInputted.rds_msql = false;
- logger('FAILED TO CONNECT TO RDS MSQL DATABASE', LogType.ERROR);
- }
- } else {
- configExists.rds_msql = false;
- this.dbsInputted.rds_msql = false;
- }
-
- // LOCAL PG POOL: truthy values means user has inputted info into config -> try to connect
- if (PG_Cred.user && PG_Cred.password) {
- this.pg_uri = `postgres://${PG_Cred.user}:${PG_Cred.password}@localhost:${PG_Cred.port}/`;
- try {
- configExists.pg = true;
- await connectionFunctions.PG_DBConnect(this.pg_uri, this.curPG_DB);
- logger('CONNECTED TO LOCAL PG DATABASE', LogType.SUCCESS);
- this.dbsInputted.pg = true;
- } catch (error) {
- this.dbsInputted.pg = false;
- logger('FAILED TO CONNECT TO LOCAL PG DATABASE', LogType.ERROR);
- }
- } else {
- configExists.pg = false;
- this.dbsInputted.pg = false;
- }
-
- // LOCAL MSQL POOL: truthy values means user has inputted info into config -> try to log in
- if (MSQL_Cred.user && MSQL_Cred.password) {
- try {
- configExists.msql = true;
- await connectionFunctions.MSQL_DBConnect({
- host: `localhost`,
- port: MSQL_Cred.port,
- user: MSQL_Cred.user,
- password: MSQL_Cred.password,
- database: this.curMSQL_DB,
- waitForConnections: true,
- connectionLimit: 10,
- queueLimit: 0,
- multipleStatements: true,
- });
-
- // test query to make sure were connected. needed for the catch statement to hit incase we arent connected.
- const testQuery = await pools.msql_pool.query('SHOW DATABASES;');
- this.dbsInputted.msql = true;
- logger(`CONNECTED TO LOCAL MYSQL DATABASE!`, LogType.SUCCESS);
- } catch (error) {
- this.dbsInputted.msql = false;
- logger('FAILED TO CONNECT TO LOCAL MSQL DATABASE', LogType.ERROR);
- }
- } else {
- configExists.msql = false;
- this.dbsInputted.msql = false;
- }
-
- // RDS PG POOL: truthy values means user has inputted info into config -> try to log in
- if (this.curSQLite_DB.path) {
- try {
- configExists.sqlite = true;
- await connectionFunctions.SQLite_DBConnect(this.curSQLite_DB.path);
- this.dbsInputted.sqlite = true;
- logger('CONNECTED TO SQLITE DATABASE!', LogType.SUCCESS);
- } catch (error) {
- this.dbsInputted.sqlite = false;
- logger('FAILED TO CONNECT TO SQLITE DATABASE', LogType.ERROR);
- }
- } else {
- configExists.sqlite = false;
- this.dbsInputted.sqlite = false;
- }
-
- return { dbsInputted: this.dbsInputted, configExists }
- },
-
-
- query(text, params, dbType) {
- // RUN ANY QUERY - function that will run query on database that is passed in.
- logger(`Attempting to run query: \n ${text} for: \n ${dbType}`);
-
- if (dbType === DBType.RDSPostgres) {
- return pools.rds_pg_pool.query(text, params).catch((err) => {
- logger(err.message, LogType.WARNING);
- });
- }
-
- if (dbType === DBType.RDSMySQL) {
- return pools.rds_msql_pool.query(text, params, dbType);
- }
-
- if (dbType === DBType.Postgres) {
- return pools.pg_pool.query(text, params).catch((err) => {
- logger(err.message, LogType.WARNING);
- });
- }
-
- if (dbType === DBType.MySQL) {
- // pools.msql_pool.query(`USE ${this.curMSQL_DB}`);
- return pools.msql_pool.query(text, params, dbType);
- }
-
- if (dbType === DBType.SQLite) {
- // return pools.sqlite_db.all(text, (err, res) => {
- // if (err) logger(err.message, LogType.WARNING);
- // console.log('res', res);
- // return res;
- // });
- return new Promise((resolve, reject) => {
- pools.sqlite_db.all(text, (err, res) => {
- if (err) {
- logger(err.message, LogType.WARNING);
- reject(err);
- } else {
- resolve(res);
- }
- })
- })
- }
-
- },
-
- sampler(queryString) {
- return new Promise((resolve, reject) => {
- pools.sqlite_db.run('BEGIN', (err) => {
- if (err) {
- console.error(err.message);
- reject(err);
- } else {
- const startTime = performance.now();
- pools.sqlite_db.all(queryString, (err, res) => {
- if (err) {
- console.error(err.message);
- reject(err);
- } else {
- const endTime = performance.now();
- pools.sqlite_db.run('ROLLBACK', (err) => {
- if (err) {
- console.error(err.message);
- reject(err);
- } else {
- const elapsedTime = endTime - startTime;
- // console.log(`Elapsed time: ${elapsedTime} milliseconds`);
- resolve(elapsedTime);
- }
- });
- }
- });
- }
- });
- });
- },
-
-
- // asdf check this.curRDS_MSQL_DB typing sometime
- /**
- * Only connect to one database at a time
- * @param db Name of database to connect to
- * @param dbType Type of database to connect to
- *
- */
- async connectToDB(db, dbType) {
- // change current Db
- if (dbType === DBType.Postgres) {
- this.curPG_DB = db;
- await connectionFunctions.PG_DBConnect(this.pg_uri, db);
- } else if (dbType === DBType.MySQL) {
- this.curMSQL_DB = db;
- await connectionFunctions.MSQL_DBQuery(db);
- } else if (dbType === DBType.RDSMySQL) {
- this.curRDS_MSQL_DB = db;
- await connectionFunctions.RDS_MSQL_DBQuery(db);
- } else if (dbType === DBType.RDSPostgres) {
- await connectionFunctions.RDS_PG_DBConnect(this.curRDS_PG_DB);
- } else if (dbType === DBType.SQLite) {
- await connectionFunctions.SQLite_DBConnect(this.curSQLite_DB.path);
- }
- },
-
- /**
- * Function to disconnect the passed in database type, in order to drop database
- * @param dbType type of database to disconnect
- */
- async disconnectToDrop(dbType) {
- if (dbType === DBType.Postgres) {
- // ending pool
- await connectionFunctions.PG_DBDisconnect();
- }
- if (dbType === DBType.SQLite) {
- try {
- // disconnect from and delete sqlite .db file
- pools.sqlite_db.close();
- fs.unlinkSync(this.curSQLite_DB.path);
- this.curSQLite_DB.path = '';
- } catch (e) {
- logger('FAILED TO DELETE SQLITE DB FILE', LogType.ERROR);
-
- }
- }
- },
-
- /**
- * When called with no arguments, returns listObj with this.databaseList populated with data from all logged-in databases.
- * When called with a dbName and dbType, additionally populates this.tableList with the tables under the named database
- * @param dbName defaults to ''
- * @param dbType optional argument
- * @returns promise that resolves to a listObj, containing database connection statuses, list of all logged in databases, and optional list of all tables under the named database
- */
- async getLists(dbName = '', dbType) {
- /*
- junaid
- this list object is what will be returned at the end of the function. function will get lists for all four databases depending on which is logged in
- */
- const listObj: DBList = {
- databaseConnected: {
- PG: false,
- MySQL: false,
- RDSPG: false,
- RDSMySQL: false,
- SQLite: false,
- directPGURI: false,
- },
- databaseList: [], // accumulates lists for each logged-in database
- tableList: [],
- };
- if (this.dbsInputted.pg) {
- try {
- const pgDBList = await this.getDBNames(DBType.Postgres);
- // console.log('pgDBList', pgDBList)
- listObj.databaseConnected.PG = true;
- listObj.databaseList = [...listObj.databaseList, ...pgDBList];
- } catch (error) {
- logger('COULDNT GET NAMES FROM LOCAL PG', LogType.ERROR);
- }
- }
-
- if (this.dbsInputted.msql) {
- try {
- const msqlDBList = await this.getDBNames(DBType.MySQL);
- listObj.databaseConnected.MySQL = true;
- listObj.databaseList = [...listObj.databaseList, ...msqlDBList];
- } catch (error) {
- logger('COULDNT GET NAMES FROM LOCAL MSQL', LogType.ERROR);
- }
- }
-
- if (this.dbsInputted.rds_msql) {
- try {
- const RDSmsqlDBList = await this.getDBNames(DBType.RDSMySQL);
- listObj.databaseConnected.RDSMySQL = true;
- listObj.databaseList = [...listObj.databaseList, ...RDSmsqlDBList];
- } catch (error) {
- logger('COULDNT GET NAMES FROM RDS MSQL', LogType.ERROR);
- }
- }
-
- if (this.dbsInputted.rds_pg) {
- try {
- const RDSpgDBList = await this.getDBNames(DBType.RDSPostgres);
- listObj.databaseConnected.RDSPG = true;
- listObj.databaseList = [...listObj.databaseList, ...RDSpgDBList];
- } catch (error) {
- logger('COULDNT GET NAMES FROM RDS PG', LogType.ERROR);
- }
- }
-
- if (this.dbsInputted.sqlite) {
- try {
- const sqliteDBList = await this.getDBNames(DBType.SQLite);
- // console.log('sqliteDBList', sqliteDBList)
- listObj.databaseConnected.SQLite = true;
- listObj.databaseList = [...listObj.databaseList, ...sqliteDBList];
- } catch (error) {
- logger('COULDNT GET NAMES FROM SQLite DB', LogType.ERROR);
- }
- }
-
- if (dbType) {
- try {
- const listData = await this.getDBLists(dbType, dbName);
- logger(
- `RESOLVING DB DETAILS: Fetched DB names along with Table List for DBType: ${dbType} and DB: ${dbName}`,
- LogType.SUCCESS
- );
- listObj.tableList = listData;
- } catch (error) {
- logger(
- `COULNT GET DATABASE LIST FOR ${dbType} ${dbName} DATABASE`,
- LogType.ERROR
- );
- }
- }
- // console.log(listObj);
- return listObj;
- },
-
- /**
- *
- * get column objects for the given tableName
- * @param tableName name of table to get the columns of
- * @param dbType type of database of the table
- * @returns
- */
- getTableInfo(tableName, dbType) {
- // Returns an array of columnObj given a tableName
- return this.getColumnObjects(tableName, dbType);
- },
-
- /**
- * Generate a dbList for the inputted database type
- * @param dbType server to get database names off of
- * @returns promise that resovles to a dbList (array of objects containing db_name, db_size, db_type)
- */
- getDBNames(dbType) {
- return new Promise((resolve, reject) => {
- let query;
- if (dbType === DBType.Postgres || dbType === DBType.RDSPostgres) {
- let pool; // changes which pool is being queried based on dbType
-
- if (dbType === DBType.Postgres) pool = pools.pg_pool;
- if (dbType === DBType.RDSPostgres) pool = pools.rds_pg_pool;
- const dbList: dbDetails[] = [];
- /*
- junaid
- only run queries if pool is made
- */
- if (pool) {
- query = `SELECT dbs.datname AS db_name,
- pg_size_pretty(pg_database_size(dbs.datname)) AS db_size
- FROM pg_database dbs
- ORDER BY db_name`;
- pool
- .query(query)
- .then((databases) => {
- for (let i = 0; i < databases.rows.length; i += 1) {
- const data = databases.rows[i];
- const { db_name } = data;
-
- if (
- db_name !== 'postgres' &&
- db_name !== 'template0' &&
- db_name !== 'template1'
- ) {
- data.db_type = dbType;
- dbList.push(data);
- }
- }
-
- logger("PG 'getDBNames' resolved.", LogType.SUCCESS);
- // resolve with array of db names
- resolve(dbList);
- })
- .catch((err) => {
- reject(err);
- });
- } else {
- resolve(dbList);
- }
- } else if (dbType === DBType.MySQL || dbType === DBType.RDSMySQL) {
- let pool; // changes which pool is being queried based on dbType
- if (dbType === DBType.MySQL) pool = pools.msql_pool;
- if (dbType === DBType.RDSMySQL) pool = pools.rds_msql_pool;
- const dbList: dbDetails[] = [];
- /*
- only run queries if pool is made
- */
- if (pool) {
- query = `
- SELECT
- S.SCHEMA_NAME db_name,
- ROUND(SUM(data_length + index_length) / 1024, 1) db_size
- FROM
- INFORMATION_SCHEMA.SCHEMATA S
- LEFT OUTER JOIN
- INFORMATION_SCHEMA.TABLES T ON S.SCHEMA_NAME = T.TABLE_SCHEMA
- WHERE
- S.SCHEMA_NAME NOT IN ('information_schema' , 'mysql', 'performance_schema', 'sys')
- GROUP BY S.SCHEMA_NAME
- ORDER BY db_name ASC;`;
-
- pool
- .query(query)
- .then((databases) => {
- for (let i = 0; i < databases[0].length; i += 1) {
- const data = databases[0][i];
- data.db_type = dbType;
- data.db_size = data.db_size ? `${data.db_size}KB` : '0KB';
- dbList.push(data);
- }
-
- logger("MySQL 'getDBNames' resolved.", LogType.SUCCESS);
- // resolve with array of db names
- resolve(dbList);
- })
- .catch((err) => {
- reject(err);
- });
- } else {
- resolve(dbList);
- }
- } else if (dbType === DBType.SQLite) {
- const dbList: dbDetails[] = [];
- const { path } = this.curSQLite_DB;
- const filename = path.slice(path.lastIndexOf('\\') + 1, path.lastIndexOf('.db'));
- const stats = fs.statSync(path)
- const fileSizeInKB = stats.size / 1024;
- // Convert the file size to megabytes (optional)
- const data = { db_name: filename, db_size: `${fileSizeInKB}KB`, db_type: DBType.SQLite }
- dbList.push(data);
- resolve(dbList);
- }
- });
- },
-
- /**
- * Generates a list of column objects for the inputted table name
- * @param tableName name of table to get column properties of
- * @param dbType type of database the table is in
- * @returns promise that resolves to array of columnObjects (column_name, data_type, character_maximum_length, is_nullable, constraint_name, constraint_type, foreign_table, foreign_column)
- */
- getColumnObjects(tableName, dbType) {
- let queryString;
- const value = [tableName];
- if (dbType === DBType.Postgres || dbType === DBType.RDSPostgres) {
- // added to check for RDS
- let pool; // changes which pool is being queried based on dbType
- if (dbType === DBType.Postgres) pool = pools.pg_pool;
- if (dbType === DBType.RDSPostgres) pool = pools.rds_pg_pool;
- // query string to get constraints and table references as well
- queryString = `SELECT DISTINCT cols.column_name,
- cols.data_type,
- cols.character_maximum_length,
- cols.is_nullable,
- kcu.constraint_name,
- cons.constraint_type,
- rel_kcu.table_name AS foreign_table,
- rel_kcu.column_name AS foreign_column
- FROM information_schema.columns cols
- LEFT JOIN information_schema.key_column_usage kcu
- ON cols.column_name = kcu.column_name
- AND cols.table_name = kcu.table_name
- LEFT JOIN information_schema.table_constraints cons
- ON kcu.constraint_name = cons.constraint_name
- LEFT JOIN information_schema.referential_constraints rco
- ON rco.constraint_name = cons.constraint_name
- LEFT JOIN information_schema.key_column_usage rel_kcu
- ON rco.unique_constraint_name = rel_kcu.constraint_name
- WHERE cols.table_name = $1`;
-
- // kcu = key column usage = describes which key columns have constraints
- // tc = table constraints = shows if constraint is primary key or foreign key
- // information_schema.table_constraints show the whole table constraints
-
- return new Promise((resolve, reject) => {
- pool
- .query(queryString, value)
- .then((result) => {
- const columnInfoArray: ColumnObj[] = [];
- for (let i = 0; i < result.rows.length; i++) {
- columnInfoArray.push(result.rows[i]);
- }
- resolve(columnInfoArray);
- })
- .catch((err) => {
- reject(err);
- });
- });
- }
- if (dbType === DBType.MySQL || dbType === DBType.RDSMySQL) {
- // added to check for RDS
-
- let pool; // changes which pool is being queried based on dbType
- if (dbType === DBType.MySQL) pool = pools.msql_pool;
- if (dbType === DBType.RDSMySQL) pool = pools.rds_msql_pool;
- queryString = `SELECT DISTINCT
- cols.column_name AS column_name,
- cols.data_type AS data_type,
- cols.character_maximum_length AS character_maximum_length,
- cols.is_nullable AS is_nullable,
- kcu.constraint_name AS constraint_name,
- cons.constraint_type AS constraint_type,
- rel_kcu.table_name AS foreign_table,
- rel_kcu.column_name AS foreign_column
- FROM information_schema.columns cols
- LEFT JOIN information_schema.key_column_usage kcu
- ON cols.column_name = kcu.column_name
- AND cols.table_name = kcu.table_name
- LEFT JOIN information_schema.table_constraints cons
- ON kcu.constraint_name = cons.constraint_name
- LEFT JOIN information_schema.referential_constraints rco
- ON rco.constraint_name = cons.constraint_name
- LEFT JOIN information_schema.key_column_usage rel_kcu
- ON rco.unique_constraint_name = rel_kcu.constraint_name
- WHERE cols.table_name = ?;`;
-
- return new Promise((resolve, reject) => {
- pool
- .query(queryString, value)
- .then((result) => {
- const columnInfoArray: ColumnObj[] = [];
- for (let i = 0; i < result[0].length; i += 1) {
- columnInfoArray.push(result[0][i]);
- }
- resolve(columnInfoArray);
- })
- .catch((err) => {
- reject(err);
- });
- });
- }
-
- if (dbType === DBType.SQLite) {
- const sqliteDB = pools.sqlite_db;
- queryString = `SELECT
- m.name AS table_name,
- p.name AS column_name,
- p.type AS data_type,
- p.[notnull] AS not_null,
- p.pk AS pk,
- fkl.[table] AS foreign_table,
- fkl.[to] AS foreign_column
- FROM sqlite_master m
- LEFT JOIN pragma_table_info(m.name) p
- LEFT JOIN pragma_foreign_key_list(m.name) fkl
- ON p.name = fkl.[from]
- WHERE m.type = 'table' AND p.type != '' AND m.name = ?`;
-
- return new Promise((resolve, reject) => {
- sqliteDB
- .all(queryString, value, (err, rows) => {
- if (err) {
- reject(err);
- }
- const columnInfoArray: ColumnObj[] = [];
- for (let i = 0; i < rows.length; i++) {
- const { column_name, data_type, not_null, pk, foreign_table, foreign_column } = rows[i];
- const newColumnObj: ColumnObj = {
- column_name,
- data_type,
- character_maximum_length: data_type.includes(`(`) ? parseInt(data_type.slice(1 + data_type.indexOf(`(`), data_type.indexOf(`)`)), 10) : null,
- is_nullable: not_null === 1 ? 'NO' : 'YES',
- constraint_type: pk === 1 ? 'PRIMARY KEY' : foreign_table ? 'FOREIGN KEY' : null,
- foreign_table,
- foreign_column,
- }
- columnInfoArray.push(newColumnObj);
- }
- resolve(columnInfoArray);
- })
- })
- }
-
- logger('Trying to use unknown DB Type: ', LogType.ERROR, dbType);
- // eslint-disable-next-line no-throw-literal
- throw 'Unknown db type';
- },
-
- /**
- * Uses dbType and dbName to find the tables under the specified database
- * @param dbType type of target database
- * @param dbName name of target database
- * @returns tableList (array of table detail objects containing table_catalog, table_schema, table_name, is_insertable_into, columns?)
- */
- getDBLists(dbType, dbName) {
- return new Promise((resolve, reject) => {
- let query;
- const tableList: TableDetails[] = [];
- const promiseArray: Promise[] = [];
-
- if (dbType === DBType.Postgres || dbType === DBType.RDSPostgres) {
- let pool;
- if (dbType === DBType.Postgres) pool = pools.pg_pool;
- if (dbType === DBType.RDSPostgres) pool = pools.rds_pg_pool;
-
- // querying PG metadata
- query = `SELECT
- table_catalog,
- table_schema,
- table_name,
- is_insertable_into
- FROM information_schema.tables
- WHERE table_schema = 'public' or table_schema = 'base'
- ORDER BY table_name;`;
- pool
- .query(query)
- .then((tables) => {
- for (let i = 0; i < tables.rows.length; i++) {
- tableList.push(tables.rows[i]);
- promiseArray.push(
- this.getColumnObjects(tables.rows[i].table_name, dbType)
- );
- }
-
- Promise.all(promiseArray)
- .then((columnInfo) => {
- for (let i = 0; i < columnInfo.length; i++) {
- tableList[i].columns = columnInfo[i];
- }
- logger("PG 'getDBLists' resolved.", LogType.SUCCESS);
- resolve(tableList);
- })
- .catch((err) => {
- reject(err);
- });
- })
- .catch((err) => {
- reject(err);
- });
- } else if (dbType === DBType.MySQL || dbType === DBType.RDSMySQL) {
- // Notice that TABLE_CATALOG is set to table_schema
- // And that TABLE_SCHEMA is set to table_catalog
- // This is because PG and MySQL have these flipped (For whatever reason)
-
- let pool;
- if (dbType === DBType.MySQL) pool = pools.msql_pool;
- if (dbType === DBType.RDSMySQL) pool = pools.rds_msql_pool;
-
- let query2 = `SELECT
- table_catalog,
- table_schema,
- table_name,
- is_insertable_into
- FROM information_schema.tables
- WHERE table_schema = 'public' or table_schema = 'base'
- ORDER BY table_name;`;
-
- // query = `
- // SELECT
- // TABLE_CATALOG as table_schema,
- // TABLE_SCHEMA as table_catalog,
- // TABLE_NAME as table_name
- // FROM information_schema.tables
- // WHERE TABLE_SCHEMA NOT IN('information_schema', 'performance_schema', 'mysql')
- // AND TABLE_SCHEMA = '${dbName}'
- // ORDER BY table_name;`;
-
- query = `
- SELECT
- TABLE_CATALOG as table_schema,
- TABLE_SCHEMA as table_catalog,
- TABLE_NAME as table_name
- FROM information_schema.tables
- WHERE TABLE_SCHEMA NOT IN('information_schema', 'performance_schema', 'mysql', 'sys')
- AND TABLE_SCHEMA = '${dbName}'
- ORDER BY table_name;`;
-
- pool
- // .query(query2)
- .query(query)
- .then((tables) => {
- for (let i = 0; i < tables[0].length; i++) {
- tableList.push(tables[0][i]);
-
- // Sys returns way too much stuff idk
- if (tableList[i].table_schema !== 'sys') {
- promiseArray.push(
- this.getColumnObjects(tableList[i].table_name, dbType)
- );
- }
- }
- Promise.all(promiseArray)
- .then((columnInfo) => {
- for (let i = 0; i < columnInfo.length; i++) {
- tableList[i].columns = columnInfo[i];
- }
- logger("MySQL 'getDBLists' resolved.", LogType.SUCCESS);
- resolve(tableList);
- })
- .catch((err) => {
- reject(err);
- });
- })
- .catch((err) => {
- reject(err);
- });
- } else if (dbType === DBType.SQLite) {
- const sqliteDB = pools.sqlite_db;
-
- // querying SQLite metadata
- query = `SELECT
- m.name AS table_name
- FROM sqlite_master m
- WHERE m.type = 'table' AND m.name != 'sqlite_stat1' AND m.name != 'sqlite_sequence'`;
- sqliteDB
- .all(query, (err, rows) => {
- if (err) console.error(err.message)
- for (let i = 0; i < rows.length; i += 1) {
- const newTableDetails: TableDetails = {
- table_catalog: this.curSQLite_DB.path.slice(this.curSQLite_DB.path.lastIndexOf('\\') + 1),
- table_schema: 'asdf',
- table_name: rows[i].table_name,
- is_insertable_into: 'asdf',
- }
- tableList.push(newTableDetails);
- promiseArray.push(
- this.getColumnObjects(rows[i].table_name, dbType)
- );
- }
- Promise.all(promiseArray)
- .then((columnInfo) => {
- for (let i = 0; i < columnInfo.length; i += 1) {
- tableList[i].columns = columnInfo[i];
- }
- logger("SQLite 'getDBLists' resolved.", LogType.SUCCESS);
- resolve(tableList);
- })
- .catch((error) => {
- reject(error);
- });
- })
- }
- });
- },
-};
-
-module.exports = DBFunctions;
diff --git a/backend/poolVariables.ts b/backend/poolVariables.ts
deleted file mode 100644
index 33639b8e..00000000
--- a/backend/poolVariables.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
-junaid
-this file is just to set the initial variables for all the pools, so that we can shorten the models file down by extracting functions to other pages. this page allows us to use these variables throughout the backend and have them retain thier value. just remember we need to access them and manipulate them using dot notation, so they get passed by reference to this same variable. if we save them to another variable they will get passed by value but the reference is different so it wont match up throughout different files.
-*/
-
-let pg_pool;
-let msql_pool;
-let rds_pg_pool;
-let rds_msql_pool;
-let sqlite_db;
-let directPGURI_pool;
-
-export default {
- pg_pool,
- msql_pool,
- rds_pg_pool,
- rds_msql_pool,
- sqlite_db,
- directPGURI_pool,
-};
diff --git a/backend/databaseConnections.ts b/backend/src/db/databaseConnections.ts
similarity index 69%
rename from backend/databaseConnections.ts
rename to backend/src/db/databaseConnections.ts
index 9b51f679..fbcfe457 100644
--- a/backend/databaseConnections.ts
+++ b/backend/src/db/databaseConnections.ts
@@ -1,21 +1,19 @@
+import mysql from 'mysql2/promise';
+import { Pool, PoolConfig } from 'pg';
+import sqlite3 from 'sqlite3';
+import { LogType } from '../../../shared/types/dbTypes';
+import logger from '../utils/logging/masterlog';
import pools from './poolVariables';
-import logger from './Logging/masterlog';
-import { LogType } from './BE_types';
-
-const { Pool } = require('pg');
-const mysql = require('mysql2/promise');
-const sqlite3 = require('sqlite3').verbose();
-
export default {
/**
* For a local Postgres database.
- * Uses passed in arguments to create a URI to create a pool, save it, and begin a connection.
+ * Uses passed in arguments to create a URI to create a pool, save it, and begin a connection.
* @param pg_uri URI created in models.ts using login info
* @param db Name of target database that the login has access to. Initially empty string
*/
async PG_DBConnect(pg_uri: string, db: string) {
- const newURI = `${pg_uri}${db}`;
+ const newURI = `${pg_uri}/${db}`;
const newPool = new Pool({ connectionString: newURI });
pools.pg_pool = newPool;
// await pools.pg_pool.connect(); this is unnecessary for making queries, and causes pg error when trying to drop db
@@ -23,7 +21,7 @@ export default {
},
async PG_DBDisconnect(): Promise {
- await pools.pg_pool.end();
+ if (pools.pg_pool) await pools.pg_pool.end();
},
/**
@@ -43,17 +41,23 @@ export default {
multipleStatements: true,
}
*/
- async MSQL_DBConnect(MYSQL_CREDS: any) {
+ async MSQL_DBConnect(MYSQL_CREDS: mysql.PoolOptions) {
if (pools.msql_pool) await pools.msql_pool.end();
- pools.msql_pool = await mysql.createPool({ ...MYSQL_CREDS });
+ pools.msql_pool = mysql.createPool({ ...MYSQL_CREDS });
},
/**
* Checks that the MySQL database connection/pool is valid by running short query.
* @param db Name of target MySQL database
*/
- MSQL_DBQuery(db: string) {
- pools.msql_pool
+ MSQL_DBQuery(db: string): Promise {
+ if (pools.msql_pool === undefined) {
+ logger(`No active MSQL pool for DB: ${db}`, LogType.ERROR);
+ return new Promise((res, rej) => {
+ rej(Error('No active MSQL Pool in attempted query'));
+ });
+ }
+ return pools.msql_pool
.query(`USE ${db};`)
.then(() => {
logger(`Connected to MSQL DB: ${db}`, LogType.SUCCESS);
@@ -67,7 +71,7 @@ export default {
* Create pool and connect to an RDS Postgres database using login info.
* @param RDS_PG_INFO from config file
*/
- async RDS_PG_DBConnect(RDS_PG_INFO) {
+ async RDS_PG_DBConnect(RDS_PG_INFO: PoolConfig) {
pools.rds_pg_pool = new Pool({ ...RDS_PG_INFO });
await pools.rds_pg_pool.connect();
},
@@ -77,7 +81,7 @@ export default {
* Create/save new pool using login info.
* @param RDS_MSQL_INFO from config file
*/
- async RDS_MSQL_DBConnect(RDS_MSQL_INFO) {
+ async RDS_MSQL_DBConnect(RDS_MSQL_INFO: mysql.PoolOptions) {
if (pools.rds_msql_pool) await pools.rds_msql_pool.end();
pools.rds_msql_pool = mysql.createPool({ ...RDS_MSQL_INFO });
},
@@ -86,8 +90,14 @@ export default {
* Checks that the MySQL database connection/pool is valid by running short query.
* @param db name of target RDS MySQL database
*/
- RDS_MSQL_DBQuery(db: string) {
- pools.rds_msql_pool
+ RDS_MSQL_DBQuery(db: string): Promise {
+ if (pools.rds_msql_pool === undefined) {
+ logger(`No active RDS MSQL pool for DB: ${db}`, LogType.ERROR);
+ return new Promise((res, rej) => {
+ rej(Error(`No active RDS MSQL pool for DB: ${db}`));
+ });
+ }
+ return pools.rds_msql_pool
.query(`USE ${db};`)
.then(() => {
logger(`Connected to MSQL DB: ${db}`, LogType.SUCCESS);
@@ -97,14 +107,12 @@ export default {
});
},
- async SQLite_DBConnect(path: string): Promise {
+ SQLite_DBConnect(path: string): void {
const newDB = new sqlite3.Database(
path,
sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE,
- (err) => {
- if (err) return console.error(err.message);
- }
+ (err) => (err ? console.error(err.message) : null),
);
pools.sqlite_db = newDB;
- }
+ },
};
diff --git a/backend/src/db/poolVariables.ts b/backend/src/db/poolVariables.ts
new file mode 100644
index 00000000..ff6c0981
--- /dev/null
+++ b/backend/src/db/poolVariables.ts
@@ -0,0 +1,29 @@
+/*
+junaid
+this file is just to set the initial variables for all the pools, so that we
+can shorten the models file down by extracting functions to other pages.
+this page allows us to use these variables throughout the backend and have
+them retain thier value. just remember we need to access them and manipulate
+them using dot notation, so they get passed by reference to this same variable.
+if we save them to another variable they will get passed by value but the
+reference is different so it wont match up throughout different files.
+*/
+import { Pool as PGPool } from 'pg';
+import { Pool as MSQLPool } from 'mysql2/promise';
+import { Database } from 'sqlite3';
+
+let pg_pool: PGPool | undefined;
+let msql_pool: MSQLPool | undefined;
+let rds_pg_pool: PGPool | undefined;
+let rds_msql_pool: MSQLPool | undefined;
+let sqlite_db: Database | undefined;
+let directPGURI_pool: PGPool | undefined;
+
+export default {
+ pg_pool,
+ msql_pool,
+ rds_pg_pool,
+ rds_msql_pool,
+ sqlite_db,
+ directPGURI_pool,
+};
diff --git a/backend/src/ipcHandlers/handlers/authHandler.ts b/backend/src/ipcHandlers/handlers/authHandler.ts
new file mode 100644
index 00000000..540dbb25
--- /dev/null
+++ b/backend/src/ipcHandlers/handlers/authHandler.ts
@@ -0,0 +1,85 @@
+// Types
+import { DBList, LogType } from '../../../BE_types';
+import { Feedback } from '../../../../shared/types/utilTypes';
+
+// Helpers
+import logger from '../../utils/logging/masterlog';
+
+// Models used
+import docConfig from '../../models/configModel';
+import connectionModel from '../../models/connectionModel';
+import databaseModel from '../../models/databaseModel';
+
+// TESTING GROUND:
+// import db from '../../../models';
+
+/**
+ * EVENT: 'set-config'
+ *
+ * DEFINITION: triggered when frontend 'saves' login information
+ *
+ * Process involes the following steps:
+ * 1. saves login info to config
+ * 2. run setBaseConnections from connectionModel.ts to make a new config
+ * 3. uses get-config to get this latest config and sends it back to frontend
+ */
+
+export function setConfig(event, configObj) {
+ // at some point change this name docConfig as well
+ docConfig.saveConfig(configObj); // saves login info from frontend into config file
+
+ connectionModel
+ .setBaseConnections() // tries to log in using config data
+ .then(({ dbsInputted, configExists }) => {
+ // error handling for trying and failing to log in to databases
+ let errorStr = '';
+ const dbs = Object.keys(dbsInputted);
+ dbs.forEach((e) => {
+ if (!dbsInputted[e] && configExists[e]) errorStr += ` ${e}`;
+ });
+ if (errorStr.length) {
+ const err = `Unsuccessful login(s) for ${errorStr.toUpperCase()} database(s)`;
+ const feedback: Feedback = {
+ type: 'error',
+ message: err,
+ };
+ event.sender.send('feedback', feedback);
+ }
+ logger('Successfully reset base connections', LogType.SUCCESS);
+ return databaseModel.getLists().then((data: DBList) => {
+ event.sender.send('db-lists', data); // used to populate sidebar
+ });
+ })
+ .catch((err) => {
+ logger(
+ `Error trying to set base connections on 'reset-connection': ${err.message}`,
+ LogType.ERROR,
+ );
+ const feedback: Feedback = {
+ type: 'error',
+ message: err,
+ };
+ event.sender.send('feedback', feedback);
+ logger(
+ "Sent 'feedback' from 'reset-connection' (Note: This is an ERROR!)",
+ LogType.ERROR,
+ );
+ })
+ .finally(() => {
+ event.sender.send('get-config', docConfig.getFullConfig());
+ });
+}
+
+/**
+ * EVENT: 'get-config'
+ *
+ * DEFINITION: get;s the current config (used during log in, or for new logins with set-config)
+ *
+ * Process involes the following steps:
+ * 1. send back to event from configModel.ts docConfig.getFullConfig()
+ */
+
+export function getConfig() {
+ // asdf is configObj used?
+ return docConfig.getFullConfig();
+}
diff --git a/backend/src/ipcHandlers/handlers/dbCRUDHandler.ts b/backend/src/ipcHandlers/handlers/dbCRUDHandler.ts
new file mode 100644
index 00000000..318299dd
--- /dev/null
+++ b/backend/src/ipcHandlers/handlers/dbCRUDHandler.ts
@@ -0,0 +1,204 @@
+// Types
+import { app } from 'electron';
+import { BackendObjType, DBList, DBType, LogType } from '../../../BE_types';
+import { Feedback } from '../../../../shared/types/utilTypes';
+
+// Helpers
+import logger from '../../utils/logging/masterlog';
+import backendObjToQuery from '../../utils/ertable-functions';
+import helperFunctions from '../../utils/helperFunctions';
+
+// Models used
+import connectionModel from '../../models/connectionModel';
+import databaseModel from '../../models/databaseModel';
+import queryModel from '../../models/queryModel';
+// import db from '../../../models';
+
+const { createDBFunc } = helperFunctions;
+
+// Local Types
+
+interface InitializePayload {
+ // handle initialization of a new schema from frontend (newSchemaView)
+ newDbName: string;
+ dbType: DBType;
+}
+
+interface UpdatePayload {
+ // handle updating schemas from the frontend (newSchemaView)
+ // targetDb: string;
+ sqlString: string;
+ selectedDb: string;
+}
+
+/**
+ * EVENT: 'initialize-db'
+ *
+ * DEFINITION: creates a new database on the side
+ *
+ * Process involes the following steps:
+ * 1. create a new database with queryModel.query
+ * 2. connect to this new db with connectionModel.connectToDB
+ * 3. update sidebar with databaseModel.getLists
+ * 4. send a feedback back to frontend
+ */
+
+export async function intializeDb(event, payload: InitializePayload) {
+ const { newDbName, dbType } = payload;
+ logger(
+ `Received 'initialize-db' of dbType: ${dbType} and: `,
+ LogType.RECEIVE,
+ payload,
+ );
+ event.sender.send('async-started');
+
+ try {
+ // create new empty db
+ await queryModel.query(createDBFunc(newDbName, dbType), [], dbType);
+ // connect to initialized db
+ await connectionModel.connectToDB(newDbName, dbType);
+
+ // update DBList in the sidebar to show this new db
+ const dbsAndTableInfo: DBList = await databaseModel.getLists(
+ newDbName,
+ dbType,
+ );
+ event.sender.send('db-lists', dbsAndTableInfo);
+ ///
+ logger("Sent 'db-lists' from 'initialize-db'", LogType.SEND);
+ } catch (e) {
+ const err = `Unsuccessful DB Creation for ${newDbName} in ${dbType} database`;
+ const feedback: Feedback = {
+ type: 'error',
+ message: err,
+ };
+ event.sender.send('feedback', feedback);
+ // in the case of an error, delete the created db
+ // const dropDBScript = dropDBFunc(newDbName, dbType);
+ // await db.query(dropDBScript, null, dbType);
+ // throw new Error('Failed to initialize new database');
+ } finally {
+ event.sender.send('async-complete');
+ }
+}
+
+/**
+ * EVENT: 'update-db' (i would rename to db-schemaupdate)
+ *
+ * DEFINITION: SIDEBAR: updates selected database table's schema and send back updated list. db will rollback if query is unsuccessful
+ *
+ * Process involes the following steps:
+ * 1. connect to the database to query (!)
+ * 2. run queryModel.query on the sqlstring
+ * 3. get tables and return to frontend
+ *
+ * ISSUES:
+ * 1. shouldnt the current database be active? why do we need to connect it again? seems like this is an eeror checker step
+ */
+
+export async function updateDb(
+ event,
+ { sqlString, selectedDb }: UpdatePayload,
+ dbType: DBType,
+) {
+ logger("Received 'update-db'", LogType.RECEIVE);
+ event.sender.send('async-started');
+
+ try {
+ // connect to db to run query
+ await connectionModel.connectToDB(selectedDb, dbType);
+
+ // Run Query
+ try {
+ await queryModel.query(sqlString, [], dbType);
+ } catch (e) {
+ if (e) throw new Error('Failed to update schema');
+ }
+ } finally {
+ // send updated db info in case query affected table or database information
+ // must be run after we connect back to the originally selected so tables information is accurate
+ const dbsAndTables: DBList = await databaseModel.getLists('', dbType);
+ event.sender.send('db-lists', dbsAndTables);
+ logger("Sent 'db-lists' from 'update-db'", LogType.SEND);
+
+ event.sender.send('async-complete');
+ }
+}
+
+/**
+ * EVENT: 'ertable-schemaupdate'
+ *
+ * DEFINITION: ERD: Generate and run query from react-flow ER diagram
+ *
+ * Process involes the following steps:
+ * 1. query from object passed back with helper backendObjToQuery
+ * 2. run queryModel.query on the sqlstring
+ * 3. rollback if fail
+ * 4. get tables and return to frontend
+ *
+ * SUGGESTION: honestly, i would make a copy of a file if we are working on it in the ERD view. this way we can just iterate over this copy and replace the original one instead of the current UI of saving twice
+ *
+ * QUESTION: what is the event sent back when we hit SAVE in the ER diagram?
+ */
+
+export async function erTableSchemaUpdate(
+ event,
+ backendObj: BackendObjType,
+ dbName: string,
+ dbType: DBType,
+) {
+ logger(
+ `backendObj: ${dbType}, \n
+ dbName: ${dbName}, \n`,
+ LogType.RECEIVE,
+ backendObj,
+ );
+
+ // send notice to front end that schema update has started
+ event.sender.send('async-started');
+ let feedback: Feedback = {
+ type: '',
+ message: '',
+ };
+ try {
+ // Generates query from backendObj
+ const query = backendObjToQuery(backendObj, dbType);
+ // run sql command
+ await queryModel.query('Begin;', [], dbType);
+ await queryModel.query(query, [], dbType);
+ await queryModel.query('Commit;', [], dbType);
+ feedback = {
+ type: 'success',
+ message: 'Database updated successfully.',
+ };
+ return 'success';
+ } catch (err: any) {
+ // rollback transaction if there's an error in update and send back feedback to FE
+ await queryModel.query('Rollback;', [], dbType);
+
+ feedback = {
+ type: 'error',
+ message: err,
+ };
+ } finally {
+ // send updated db info
+
+ const updatedDb: DBList = await databaseModel.getLists(dbName, dbType);
+ event.sender.send('db-lists', updatedDb);
+
+ // send feedback back to FE
+ event.sender.send('feedback', feedback);
+
+ // send notice to FE that schema update has been completed
+ event.sender.send('async-complete');
+
+ logger(
+ "Sent 'db-lists and feedback' from 'ertable-schemaupdate'",
+ LogType.SEND,
+ );
+ }
+}
+
+export function getPath(event, pathType) {
+ return app.getPath(pathType);
+}
diff --git a/backend/src/ipcHandlers/handlers/dbCRUDHandlerERD.ts b/backend/src/ipcHandlers/handlers/dbCRUDHandlerERD.ts
new file mode 100644
index 00000000..d36a354b
--- /dev/null
+++ b/backend/src/ipcHandlers/handlers/dbCRUDHandlerERD.ts
@@ -0,0 +1,86 @@
+// Types
+import { app } from 'electron';
+import { DBList, LogType } from '../../../BE_types';
+import { Feedback } from '../../../../shared/types/utilTypes';
+import { ErdUpdatesType } from '../../../../shared/types/erTypes';
+import dbState from '../../models/stateModel';
+// Helpers
+import logger from '../../utils/logging/masterlog';
+import erdUpdatesToQuery from '../../utils/erdTableFunctions';
+// Models used
+import databaseModel from '../../models/databaseModel';
+import queryModel from '../../models/queryModel';
+// import db from '../../../models';
+
+/**
+ * EVENT: 'ertable-schemaupdate'
+ *
+ * DEFINITION: ERD: Generate and run query from react-flow ER diagram
+ *
+ * Process involes the following steps:
+ * 1. query from object passed back with helper updatesArray
+ * 2. run queryModel.query on the sqlstring
+ * 3. rollback if fail
+ * 4. get tables and return to frontend
+ *
+ *
+ */
+
+export async function erTableSchemaUpdate(event, updatesArray: ErdUpdatesType) {
+ // send notice to front end that schema update has started
+ event.sender.send('async-started');
+ let feedback: Feedback = {
+ type: '',
+ message: '',
+ };
+
+ // get currentDBState
+ const { currentERD, currentDb } = dbState;
+
+ try {
+ // Generates query srting from updatesArray
+ const queryString = erdUpdatesToQuery(updatesArray, currentERD);
+
+ // Query Transaction
+ await queryModel.query('Begin;', [], currentERD); // transaction wrapper
+ await queryModel.query(queryString, [], currentERD);
+ await queryModel.query('Commit;', [], currentERD); // transaction wrapper
+
+ feedback = {
+ type: 'success',
+ message: 'Database updated successfully.',
+ };
+ return 'success';
+ } catch (err: any) {
+ // rollback transaction if there's an error in update and send back feedback to FE
+ await queryModel.query('Rollback;', [], currentERD);
+
+ feedback = {
+ type: 'error',
+ message: err,
+ };
+ } finally {
+ // send updated db info
+
+ const updatedDb: DBList = await databaseModel.getLists(
+ currentDb,
+ currentERD,
+ );
+ event.sender.send('db-lists', updatedDb);
+
+ // send feedback back to FE
+ event.sender.send('feedback', feedback);
+
+ // send notice to FE that schema update has been completed
+ event.sender.send('async-complete');
+
+ logger(
+ "Sent 'db-lists and feedback' from 'ertable-schemaupdate'",
+ LogType.SEND,
+ );
+ }
+}
+
+export function getPath(event, pathType) {
+ return app.getPath(pathType);
+}
diff --git a/backend/src/ipcHandlers/handlers/dbOpsHandler.ts b/backend/src/ipcHandlers/handlers/dbOpsHandler.ts
new file mode 100644
index 00000000..26e7d810
--- /dev/null
+++ b/backend/src/ipcHandlers/handlers/dbOpsHandler.ts
@@ -0,0 +1,358 @@
+import fs from 'fs';
+import path from 'path';
+
+// Types
+import { DBList, LogType } from '../../../BE_types';
+import { Feedback } from '../../../../shared/types/utilTypes';
+import { DBType } from '../../../../shared/types/dbTypes';
+
+// Helpers
+import logger from '../../utils/logging/masterlog';
+import docConfig from '../../models/configModel';
+import helperFunctions from '../../utils/helperFunctions';
+
+// Models
+import connectionModel from '../../models/connectionModel';
+import databaseModel from '../../models/databaseModel';
+import queryModel from '../../models/queryModel';
+import dbState from '../../models/stateModel';
+
+const {
+ createDBFunc,
+ dropDBFunc,
+ runSQLFunc,
+ // runTARFunc,
+ runFullCopyFunc,
+ runHollowCopyFunc,
+ promExecute,
+} = helperFunctions;
+
+// Local Types
+interface DuplicatePayload {
+ newName: string;
+ sourceDb: string;
+ withData: boolean;
+}
+
+interface ImportPayload {
+ newDbName: string;
+ filePath: string;
+ dbType: DBType;
+}
+
+interface ExportPayload extends ImportPayload {
+ db: string;
+}
+
+interface ExportPayload {
+ sourceDb: string;
+}
+
+/**
+ * EVENT: 'return-db-list'
+ *
+ * DEFINITION: returns a db-list from frontend. for Sidebar
+ *
+ * Process involes the following steps:
+ * 1. connectionModel.setBaseConections
+ * 2. get listObj from databaseModel.getLists
+ */
+
+export async function returnDbList(event) {
+ logger(
+ "Received 'return-db-list' (Note: No Async being sent here)",
+ LogType.RECEIVE,
+ );
+ try {
+ await connectionModel.setBaseConnections();
+ const data = await databaseModel.getLists();
+ logger("Sent 'db-lists' from 'return-db-list'", LogType.SEND);
+ return data;
+ } catch (err: any) {
+ logger(
+ `Error trying to set base connections on 'return-db-list': ${err.message}`,
+ LogType.ERROR,
+ );
+ const feedback: Feedback = {
+ type: 'error',
+ message: err,
+ };
+ event.sender.send('feedback', feedback);
+ logger(
+ "Sent 'feedback' from 'return-db-list' (Note: This is an ERROR!)",
+ LogType.SEND,
+ );
+ }
+}
+
+/**
+ * EVENT: 'select-db'
+ *
+ * DEFINITION: connect to selected db on the sidebar, then get object containing a list of all databases abd tables for the selected database, and sends to frontend.
+ *
+ * Process involes the following steps:
+ * 1. connectionModel.connectToDB
+ * 2. databaseModel.getLists
+ * 3. returns getLists object back
+ */
+
+export async function selectDb(
+ event,
+ dbName: string,
+ dbType: DBType,
+): Promise {
+ logger("Received 'select-db'", LogType.RECEIVE);
+
+ event.sender.send('async-started');
+ try {
+ if (dbName === '') {
+ dbName = 'postgres';
+ }
+
+ await connectionModel.connectToDB(dbName, dbType);
+
+ // assign currentERD to dbType (string) of selected ERD
+ dbState.currentERD = dbType;
+ // assign dbType to dbType (string) of selected ERD
+ dbState.currentDb = dbName;
+
+ // send updated db info
+ const dbsAndTables: DBList = await databaseModel.getLists(dbName, dbType);
+ event.sender.send('db-lists', dbsAndTables);
+ logger("Sent 'db-lists' from 'select-db'", LogType.SEND);
+ } finally {
+ event.sender.send('async-complete');
+ }
+}
+
+/**
+ * EVENT: 'drop-db'
+ *
+ * DEFINITION: Handler for drop-db requests from frontend
+ *
+ * Process involes the following steps:
+ * 1. discoonect from all pools first with connectionModel.disconnectToDrop (is there no way to just disconnect from selected db?)
+ * 2. reconnect immediately with everything but desired db of deletion with connectionModel.connectToDB
+ * 3. use helper function dropDBFunc (a series of sql commands for each sql EXCEPT sqlite)
+ * 4. databaseModel.getLists
+ * 5. returns getLists object back
+ */
+
+export async function dropDb(
+ event,
+ dbName: string,
+ currDB: boolean,
+ dbType: DBType,
+): Promise {
+ logger("Received 'drop-db'", LogType.RECEIVE);
+
+ event.sender.send('async-started');
+
+ try {
+ // if deleting currently connected db, disconnect from db
+ // end pool connection
+ await connectionModel.disconnectToDrop(dbType);
+ // reconnect to database server, but not the db that will be dropped
+ if (dbType === DBType.Postgres) {
+ await connectionModel.connectToDB('postgres', dbType);
+ } else {
+ await connectionModel.connectToDB('', dbType);
+ }
+
+ // await connectionModel.disconnectToDrop(dbType);
+ // reconnect to database server, but not the db that will be dropped
+
+ // await connectionModel.connectToDB('', dbType);
+
+ // IN CASE OF EMERGENCY USE THIS CODE TO DROP DATABASES
+ // WILL THROW UNCAUGHT ERRORS LAST RESORT ONLY!!!
+ // await db.connectToDB('', dbType);
+ // if(dbType === DBType.Postgres){
+ // await queryModel.query(`UPDATE pg_database SET datallowconn = 'false' WHERE datname = '${dbName}'`, null, dbType);
+ // await queryModel.query(`
+ // SELECT pid, pg_terminate_backend(pid)
+ // FROM pg_stat_activity
+ // WHERE datname = '${dbName}' AND pid <> pg_backend_pid();
+ // `, null, dbType);
+ // // await db.closeTheDB(dbName, dbType);
+ // }
+
+ // const dropDBScript = dropDBFunc(dbName, dbType);
+ if (dbType !== DBType.SQLite)
+ await queryModel.query(dropDBFunc(dbName, dbType), [], dbType);
+
+ // send updated db info
+ const dbsAndTables: DBList = await databaseModel.getLists(dbName, dbType);
+ event.sender.send('db-lists', dbsAndTables);
+ logger("Sent 'db-lists' from 'drop-db'", LogType.SEND);
+ } finally {
+ event.sender.send('async-complete');
+ }
+}
+
+/**
+ * EVENT: 'duplicate-db'
+ *
+ * DEFINITION: Handle duplicate-db events sent from frontend. Cleans up itself in event of failsure
+ *
+ * Process involes the following steps:
+ * 1. create a temporary file path
+ * 2. dump database (create a backup) to temporary file
+ * 3. create new empty database with helper
+ * 4. Run temporary file sql commands on the new empty database
+ * 5. databaseModel.getLists
+ * 6. returns getLists object back
+ * 7. will cleanup the temp file after these operations
+ */
+
+export async function duplicateDb(
+ event,
+ { newName, sourceDb, withData }: DuplicatePayload,
+ dbType: DBType,
+) {
+ logger(
+ `Received 'duplicate-db'" of dbType: ${dbType} and: `,
+ LogType.RECEIVE,
+ );
+
+ event.sender.send('async-started');
+
+ const tempFilePath = path.resolve(
+ `${docConfig.getConfigFolder()}/`,
+ `temp_${newName}.sql`,
+ );
+
+ try {
+ // dump database to temp file
+ const dumpCmd = withData
+ ? runFullCopyFunc(sourceDb, tempFilePath, dbType)
+ : runHollowCopyFunc(sourceDb, tempFilePath, dbType);
+ try {
+ await promExecute(dumpCmd);
+ } catch (e) {
+ throw new Error(
+ `Failed to dump ${sourceDb} to temp file at ${tempFilePath}`,
+ );
+ }
+
+ // create new empty database
+ try {
+ await queryModel.query(createDBFunc(newName, dbType), [], dbType);
+ } catch (e) {
+ throw new Error('Failed to create Database');
+ }
+
+ // run temp sql file on new database
+ try {
+ await promExecute(runSQLFunc(newName, tempFilePath, dbType));
+ } catch (e: any) {
+ // cleanup: drop created db
+ logger(`Dropping duplicate db because: ${e.message}`, LogType.WARNING);
+ const dropDBScript = dropDBFunc(newName, dbType);
+ await queryModel.query(dropDBScript, [], dbType);
+
+ throw new Error('Failed to populate newly created database');
+ }
+
+ // update frontend with new db list
+ const dbsAndTableInfo: DBList = await databaseModel.getLists('', dbType);
+ event.sender.send('db-lists', dbsAndTableInfo);
+ logger("Sent 'db-lists' from 'duplicate-db'", LogType.SEND);
+ } finally {
+ // clean up temp file
+ try {
+ fs.unlinkSync(tempFilePath);
+ } catch (e) {
+ event.sender.send('feedback', {
+ type: 'error',
+ message: `Failed to cleanup temp files. ${tempFilePath} could not be removed.`,
+ });
+ }
+
+ event.sender.send('async-complete');
+ }
+}
+
+/**
+ * EVENT: 'import-db'
+ *
+ * DEFINITION: Handle import-db events sent from frontend and cleans up after itself
+ *
+ * Process involes the following steps:
+ * 1. create new empty database with helper
+ * 2. populate db with new data
+ * 3. databaseModel.getLists
+ * 4. returns getLists object back
+ */
+
+export async function importDb(
+ event,
+ { newDbName, filePath, dbType }: ImportPayload,
+) {
+ logger(`Received 'import-db'" of dbType: ${dbType} and: `, LogType.RECEIVE);
+ event.sender.send('async-started');
+
+ try {
+ // create new empty database
+ try {
+ await queryModel.query(createDBFunc(newDbName, dbType), [], dbType);
+ } catch (e) {
+ throw new Error('Failed to create Database');
+ }
+
+ // run temp sql file on new database
+ try {
+ await promExecute(runSQLFunc(newDbName, filePath, dbType));
+ } catch (e: any) {
+ // cleanup: drop created db
+ logger(`Dropping duplicate db because: ${e.message}`, LogType.WARNING);
+ const dropDBScript = dropDBFunc(newDbName, dbType);
+ await queryModel.query(dropDBScript, [], dbType);
+
+ throw new Error('Failed to populate newly created database');
+ }
+
+ // update frontend with new db list
+ const dbsAndTableInfo: DBList = await databaseModel.getLists('', dbType);
+ event.sender.send('db-lists', dbsAndTableInfo);
+ logger("Sent 'db-lists' from 'duplicate-db'", LogType.SEND);
+ } finally {
+ event.sender.send('async-complete');
+ }
+}
+
+/**
+ * EVENT: 'export-db'
+ *
+ * DEFINITION: exports a selected database to desktop
+ *
+ * Process involes the following steps:
+ * 1. creates a temporary file on desktop
+ * 2. create a function to dump to new file with helper function (poorly designed)
+ * 3. use promExecute to execute function created above. this promExecute will run command shell to export the files. basically there is an internal timer in here for 5 seconds and if things do not copy after 5 seconds it terminates.
+ * 4. send back a feedback to frontend based on pormExecute.
+ */
+
+export async function exportDb(event, payload: ExportPayload, dbType: DBType) {
+ logger("Received 'export-db'", LogType.RECEIVE);
+ event.sender.send('async-started');
+
+ const { db, filePath } = payload;
+
+ const feedback: Feedback = {
+ type: '',
+ message: '',
+ };
+
+ try {
+ // dump database to file
+ const dumpCmd = runFullCopyFunc(db, filePath, dbType);
+ try {
+ await promExecute(dumpCmd);
+ } catch (e) {
+ throw new Error(`Failed to dump ${db} to temp file at ${filePath}`);
+ }
+ } finally {
+ event.sender.send('async-complete');
+ }
+}
diff --git a/backend/src/ipcHandlers/handlers/miscHandler.ts b/backend/src/ipcHandlers/handlers/miscHandler.ts
new file mode 100644
index 00000000..500f696e
--- /dev/null
+++ b/backend/src/ipcHandlers/handlers/miscHandler.ts
@@ -0,0 +1,158 @@
+import { BrowserWindow, dialog } from 'electron';
+
+// Types
+import {
+ ColumnObj,
+ DBList,
+ DBType,
+ DummyRecords,
+ LogType,
+} from '../../../BE_types';
+import { Feedback } from '../../../../shared/types/utilTypes';
+
+// Helpers
+import generateDummyData from '../../utils/dummyData/dummyDataMain';
+import logger from '../../utils/logging/masterlog';
+
+// Models used
+import databaseModel from '../../models/databaseModel';
+import queryModel from '../../models/queryModel';
+// import db from '../../../models';
+
+/**
+ * EVENT: 'generate-dummy-data'
+ *
+ * DEFINITION: makes dummy data with Faker
+ *
+ * Process involes the following steps:
+ * 1. get primary and foreign keys for desired database with databaseModel.getTableInfo and put them in an array of objs
+ * 2. generate dummy data based on array of objs with generateDummyData helper
+ * 3. insert this data into the database it was generated for (poorly designed)
+ * 3.1 run queryModel.query
+ * 4 update with databaseModel.getLists since list is now updated (this is for every query doe, which is repetitive since not all queries affect the original databse )
+ * 8. returns getLists object back
+ *
+ * ISSUES:
+ * step 3 should not be written in our controllers. perhaps need better UI
+ */
+
+interface dummyDataRequestPayload {
+ dbName: string;
+ tableName: string;
+ rows: number;
+ dbType: DBType;
+}
+
+export async function dummyData(event, data: dummyDataRequestPayload) {
+ logger("Received 'generate-dummy-data'", LogType.RECEIVE);
+ // send notice to front end that DD generation has been started
+ event.sender.send('async-started');
+ let feedback: Feedback = {
+ type: '',
+ message: '',
+ };
+ try {
+ // Retrieves the Primary Keys and Foreign Keys for all the tables
+ const tableInfo: ColumnObj[] = await databaseModel.getTableInfo(
+ data.tableName,
+ data.dbType,
+ ); // passed in dbType to second argument
+
+ // generate dummy data
+ const dummyArray: DummyRecords = await generateDummyData(
+ tableInfo,
+ data.rows,
+ );
+ // generate insert query string to insert dummy records
+ const columnsStringified = '('.concat(dummyArray[0].join(', ')).concat(')');
+ let insertQuery = `INSERT INTO ${data.tableName} ${columnsStringified} VALUES `;
+ for (let i = 1; i < dummyArray.length - 1; i += 1) {
+ const recordStringified = '('
+ .concat(dummyArray[i].join(', '))
+ .concat('), ');
+ insertQuery = insertQuery.concat(recordStringified);
+ }
+ const lastRecordStringified = '('
+ .concat(dummyArray[dummyArray.length - 1].join(', '))
+ .concat(');');
+ insertQuery = insertQuery.concat(lastRecordStringified);
+ // insert dummy records into DB
+ await queryModel.query('Begin;', [], data.dbType);
+ await queryModel.query(insertQuery, [], data.dbType);
+ await queryModel.query('Commit;', [], data.dbType);
+ feedback = {
+ type: 'success',
+ message: 'Dummy data successfully generated.',
+ };
+ } catch (err: any) {
+ // rollback transaction if there's an error in insertion and send back feedback to FE
+ await queryModel.query('Rollback;', [], data.dbType);
+ feedback = {
+ type: 'error',
+ message: err,
+ };
+ } finally {
+ // send updated db info in case query affected table or database information
+ const dbsAndTables: DBList = await databaseModel.getLists('', data.dbType); // dummy data clear error is from here
+ event.sender.send('db-lists', dbsAndTables); // dummy data clear error is from here
+
+ // send feedback back to FE
+ event.sender.send('feedback', feedback);
+
+ // send notice to FE that DD generation has been completed
+ event.sender.send('async-complete');
+
+ logger(
+ "Sent 'db-lists and feedback' from 'generate-dummy-data'",
+ LogType.SEND,
+ );
+ }
+}
+
+/**
+ * EVENT: 'showOpenDialog'
+ *
+ * DEFINITION: I blieve this is the window for choosing files to upload .Currently linked to ConfigView.tsx.
+ *
+ * Process involes the following steps:
+ * 1. select a browerwindow
+ * 2. open it with dialog.showOpenDialog
+ *
+ * PROBLEM:
+ * "fix the type of any of the focused window. I cheated it."
+ */
+
+export async function showOpenDialog(event, options) {
+ const focusedWindow: any = BrowserWindow.fromWebContents(event.sender);
+ const result = await dialog.showOpenDialog(focusedWindow, options);
+ return result.filePaths[0];
+}
+
+/**
+ * EVENT: 'showSaveDialog'
+ *
+ * DEFINITION: I blieve this is the window for saving files to desktop. (?)
+ *
+ * Process involes the following steps:
+ * 1. select a browerwindow
+ * 2. open it with dialog.showOpenDialog
+ */
+
+export async function showSaveDialog(event, options) {
+ const focusedWindow: any = BrowserWindow.fromWebContents(event.sender);
+ const result = await dialog.showSaveDialog(focusedWindow, options);
+ return result.filePath;
+}
+
+/**
+ * EVENT: 'feedback'
+ *
+ * DEFINITION: For sending error messages. kind of tester
+ *
+ * Process involes the following steps:
+ * 1. sends feedback to frontend
+ */
+
+export function feedback(event, options: { feedback: Feedback }) {
+ event.sender.send('feedback', options);
+}
diff --git a/backend/src/ipcHandlers/handlers/queryHandler.ts b/backend/src/ipcHandlers/handlers/queryHandler.ts
new file mode 100644
index 00000000..7a7d33b2
--- /dev/null
+++ b/backend/src/ipcHandlers/handlers/queryHandler.ts
@@ -0,0 +1,270 @@
+import fs from 'fs';
+
+// Types
+import { DBList, DBType, LogType, QueryPayload } from '../../../BE_types';
+
+// Helpers
+import logger from '../../utils/logging/masterlog';
+import helperFunctions from '../../utils/helperFunctions';
+
+// Models used
+import connectionModel from '../../models/connectionModel';
+import queryModel from '../../models/queryModel';
+import databaseModel from '../../models/databaseModel';
+// import db from '../../../models';
+
+const { explainQuery } = helperFunctions;
+
+/**
+ * EVENT: 'run-query'
+ *
+ * DEFINITION: QUERY MODE (CRUD): Handle run-query events passed from the front-end, and send back an updated DB List for the query view. also show statistics
+ *
+ * Process involes the following steps:
+ * 1. instantiates information like total sampletime, min, max, avg.
+ * 2. creates a parseExplainExplanation for transcribing query results back to english
+ * 3. connect to desired DB if query is not on current DB
+ * 4. attempts to extract EXPLAIN on each db. explain is an execution plan
+ * 5. run Query with queryModel.query() and return a big object of all the desired results
+ * 6. will connect back to inital database if query was on a different table
+ * 7. databaseModel.getLists since list is now updated (this is for every query doe, which is repetitive since not all queries affect the original databse )
+ * 8. returns getLists object back
+ *
+ * ISSUES:
+ * 1. currently there are functionalities in this handler. lets break them away.
+ * 2. personally not a fan of global queries. why aren't queries local? and if you do want global queries, you should not be able to go back to your current db view (aka silo the query page to a different entity)
+ * CRUD is not distringuished
+ */
+
+export async function runQuery(
+ event,
+ { targetDb, sqlString, selectedDb, runQueryNumber }: QueryPayload,
+ dbType: DBType,
+) {
+ logger(
+ "Received 'run-query'",
+ LogType.RECEIVE,
+ `selectedDb: ${selectedDb} and dbType: ${dbType} and runQueryNumber: ${runQueryNumber}`,
+ );
+ event.sender.send('async-started');
+ const arr: any[] = []; // array of sample
+ const numberOfSample: number = runQueryNumber;
+ let totalSampleTime: number = 0;
+ let minimumSampleTime: number = 0;
+ let maximumSampleTime: number = 0;
+ let averageSampleTime: number = 0;
+
+ function parseExplainExplanation(explain: string) {
+ const regex = /actual time=(\d+\.\d+)\.\.(\d+\.\d+) rows=\d+ loops=(\d+)/g;
+ const matches: string[][] = Array.from(explain.matchAll(regex));
+ let result: number = 0;
+ for (let i = 0; i < matches.length; i += 1) {
+ result +=
+ (parseFloat(matches[i][2]) - parseFloat(matches[i][1])) *
+ parseFloat(matches[i][3]);
+ }
+ return result;
+ }
+
+ try {
+ let error: string | undefined;
+ // connect to db to run query
+
+ if (selectedDb !== targetDb)
+ await connectionModel.connectToDB(targetDb, dbType);
+
+ // Run Explain
+ let explainResults;
+ try {
+ for (let i = 0; i < numberOfSample; i++) {
+ if (dbType === DBType.Postgres) {
+ const results = await queryModel.query(
+ explainQuery(sqlString, dbType),
+ [],
+ dbType,
+ );
+
+ explainResults = results[1].rows;
+ const eachSampleTime: any =
+ results[1].rows[0]['QUERY PLAN'][0]['Planning Time'] +
+ results[1].rows[0]['QUERY PLAN'][0]['Execution Time'];
+ arr.push(eachSampleTime);
+ totalSampleTime += eachSampleTime;
+ } else if (dbType === DBType.MySQL) {
+ const results = await queryModel.query(
+ explainQuery(sqlString, dbType),
+ [],
+ dbType,
+ );
+ const eachSampleTime: any = parseExplainExplanation(
+ results[0][0].EXPLAIN,
+ );
+ arr.push(eachSampleTime);
+ totalSampleTime += eachSampleTime;
+
+ // hard coded explainResults just to get it working for now
+ explainResults = {
+ Plan: {
+ 'Node Type': 'Seq Scan',
+ 'Parallel Aware': false,
+ 'Async Capable': false,
+ 'Relation Name': 'newtable1',
+ Schema: 'public',
+ Alias: 'newtable1',
+ 'Startup Cost': 0,
+ 'Total Cost': 7,
+ 'Plan Rows': 200,
+ 'Plan Width': 132,
+ 'Actual Startup Time': 0.015,
+ 'Actual Total Time': 0.113,
+ 'Actual Rows': 200,
+ 'Actual Loops': 1,
+ Output: ['newcolumn1'],
+ 'Shared Hit Blocks': 5,
+ 'Shared Read Blocks': 0,
+ 'Shared Dirtied Blocks': 0,
+ 'Shared Written Blocks': 0,
+ 'Local Hit Blocks': 0,
+ 'Local Read Blocks': 0,
+ 'Local Dirtied Blocks': 0,
+ 'Local Written Blocks': 0,
+ 'Temp Read Blocks': 0,
+ 'Temp Written Blocks': 0,
+ },
+ Planning: {
+ 'Shared Hit Blocks': 64,
+ 'Shared Read Blocks': 0,
+ 'Shared Dirtied Blocks': 0,
+ 'Shared Written Blocks': 0,
+ 'Local Hit Blocks': 0,
+ 'Local Read Blocks': 0,
+ 'Local Dirtied Blocks': 0,
+ 'Local Written Blocks': 0,
+ 'Temp Read Blocks': 0,
+ 'Temp Written Blocks': 0,
+ },
+ 'Planning Time': 9999,
+ Triggers: [],
+ 'Execution Time': 9999,
+ };
+ } else if (dbType === DBType.SQLite) {
+ const sampleTime = await queryModel.sampler(sqlString);
+ arr.push(sampleTime);
+ totalSampleTime += sampleTime;
+
+ // hard coded explainResults just to get it working for now
+ explainResults = {
+ Plan: {
+ 'Node Type': 'Seq Scan',
+ 'Parallel Aware': false,
+ 'Async Capable': false,
+ 'Relation Name': 'newtable1',
+ Schema: 'public',
+ Alias: 'newtable1',
+ 'Startup Cost': 0,
+ 'Total Cost': 7,
+ 'Plan Rows': 200,
+ 'Plan Width': 132,
+ 'Actual Startup Time': 0.015,
+ 'Actual Total Time': 0.113,
+ 'Actual Rows': 200,
+ 'Actual Loops': 1,
+ Output: ['newcolumn1'],
+ 'Shared Hit Blocks': 5,
+ 'Shared Read Blocks': 0,
+ 'Shared Dirtied Blocks': 0,
+ 'Shared Written Blocks': 0,
+ 'Local Hit Blocks': 0,
+ 'Local Read Blocks': 0,
+ 'Local Dirtied Blocks': 0,
+ 'Local Written Blocks': 0,
+ 'Temp Read Blocks': 0,
+ 'Temp Written Blocks': 0,
+ },
+ Planning: {
+ 'Shared Hit Blocks': 64,
+ 'Shared Read Blocks': 0,
+ 'Shared Dirtied Blocks': 0,
+ 'Shared Written Blocks': 0,
+ 'Local Hit Blocks': 0,
+ 'Local Read Blocks': 0,
+ 'Local Dirtied Blocks': 0,
+ 'Local Written Blocks': 0,
+ 'Temp Read Blocks': 0,
+ 'Temp Written Blocks': 0,
+ },
+ 'Planning Time': 9999,
+ Triggers: [],
+ 'Execution Time': 9999,
+ };
+ }
+ }
+ // get 5 decimal points for sample time
+ minimumSampleTime = Math.round(Math.min(...arr) * 10 ** 5) / 10 ** 5;
+ maximumSampleTime = Math.round(Math.max(...arr) * 10 ** 5) / 10 ** 5;
+ averageSampleTime =
+ Math.round((totalSampleTime / numberOfSample) * 10 ** 5) / 10 ** 5;
+ totalSampleTime = Math.round(totalSampleTime * 10 ** 5) / 10 ** 5;
+ } catch (e) {
+ error =
+ 'Failed to get Execution Plan. EXPLAIN might not support this query.';
+ }
+
+ // Run Query
+ let returnedRows;
+ try {
+ const results = await queryModel.query(sqlString, [], dbType);
+ if (dbType === DBType.MySQL) {
+ returnedRows = results[0];
+ }
+ if (dbType === DBType.Postgres) {
+ returnedRows = results?.rows;
+ }
+ if (dbType === DBType.SQLite) {
+ returnedRows = results;
+ }
+ } catch (e: any) {
+ error = e.toString();
+ }
+
+ return {
+ db: targetDb,
+ sqlString,
+ returnedRows,
+ explainResults,
+ error,
+ numberOfSample,
+ totalSampleTime,
+ minimumSampleTime,
+ maximumSampleTime,
+ averageSampleTime,
+ };
+ } finally {
+ // connect back to initialDb
+
+ if (selectedDb !== targetDb)
+ await connectionModel.connectToDB(selectedDb, dbType);
+
+ // send updated db info in case query affected table or database information
+ // must be run after we connect back to the originally selected so tables information is accurate
+ const dbsAndTables: DBList = await databaseModel.getLists('', dbType);
+ event.sender.send('db-lists', dbsAndTables);
+ logger(
+ "Sent 'db-lists' from 'run-query'",
+ LogType.SEND,
+ `selectedDb: ${selectedDb} -- targetDb: ${targetDb} -- dbType: ${dbType}`,
+ );
+ event.sender.send('async-complete');
+ }
+}
+
+// Reads the query JSON file and send it to the front end
+export function readQuery(event, filepath) {
+ try {
+ const data = fs.readFileSync(filepath, 'utf8');
+
+ return data;
+ } catch (err) {
+ console.log('this is error in read-query', err);
+ }
+}
diff --git a/backend/src/ipcHandlers/index.ts b/backend/src/ipcHandlers/index.ts
new file mode 100644
index 00000000..203ff0be
--- /dev/null
+++ b/backend/src/ipcHandlers/index.ts
@@ -0,0 +1,54 @@
+import { ipcMain } from 'electron';
+
+// // imports all other handlers to this index for main to require/import
+
+import { setConfig, getConfig } from './handlers/authHandler';
+import {
+ intializeDb,
+ updateDb,
+ erTableSchemaUpdate,
+ getPath,
+} from './handlers/dbCRUDHandler';
+import {
+ returnDbList,
+ selectDb,
+ dropDb,
+ duplicateDb,
+ importDb,
+ exportDb,
+} from './handlers/dbOpsHandler';
+import { runQuery, readQuery } from './handlers/queryHandler';
+import {
+ dummyData,
+ showOpenDialog,
+ showSaveDialog,
+ feedback,
+} from './handlers/miscHandler';
+
+// auth
+ipcMain.handle('set-config', setConfig);
+ipcMain.handle('get-config', getConfig);
+
+// db Operations
+ipcMain.handle('return-db-list', returnDbList);
+ipcMain.handle('select-db', selectDb);
+ipcMain.handle('drop-db', dropDb);
+ipcMain.handle('duplicate-db', duplicateDb);
+ipcMain.handle('import-db', importDb);
+ipcMain.handle('export-db', exportDb);
+ipcMain.handle('get-path', getPath);
+
+// db CRUD functionalities
+ipcMain.handle('initialize-db', intializeDb);
+ipcMain.handle('update-db', updateDb);
+ipcMain.handle('ertable-schemaupdate', erTableSchemaUpdate);
+
+// query
+ipcMain.handle('run-query', runQuery);
+ipcMain.handle('read-query', readQuery);
+
+// misc (other events bundled together)
+ipcMain.handle('generate-dummy-data', dummyData);
+ipcMain.handle('showOpenDialog', showOpenDialog);
+ipcMain.handle('showSaveDialog', showSaveDialog);
+ipcMain.handle('feedback', feedback);
diff --git a/backend/src/ipcHandlers/readme.txt b/backend/src/ipcHandlers/readme.txt
new file mode 100644
index 00000000..12b271b6
--- /dev/null
+++ b/backend/src/ipcHandlers/readme.txt
@@ -0,0 +1,10 @@
+Format for new events:
+
+/**
+ * EVENT:
+ *
+ * DEFINITION:
+ *
+ * Process involes the following steps:
+ */
+
diff --git a/backend/_documentsConfig.ts b/backend/src/models/configModel.ts
similarity index 52%
rename from backend/_documentsConfig.ts
rename to backend/src/models/configModel.ts
index a9faae7a..3a4b37ff 100644
--- a/backend/_documentsConfig.ts
+++ b/backend/src/models/configModel.ts
@@ -1,22 +1,34 @@
-/* eslint-disable no-throw-literal */
-/* eslint-disable no-shadow */
-/* eslint-disable object-shorthand */
// import path from 'path';
import fs from 'fs';
import os from 'os';
-import { DBType, DocConfigFile, LogType } from './BE_types';
-import logger from './Logging/masterlog';
+import { DBType, LogType } from '../../../shared/types/dbTypes';
+import logger from '../utils/logging/masterlog';
+import { DocConfigFile } from '../../BE_types';
+
+// HELPER FUNCTIONS
const home = `${os.homedir()}/Documents/SeeQR`;
-const configFile = `config.json`;
+const configFile = 'config.json';
const configPath = `${home}/${configFile}`;
-const defaultFile: DocConfigFile = {
- mysql: { user: '', password: '', port: 3306 },
- pg: { user: '', password: '', port: 5432 },
- rds_mysql: { user: '', password: '', port: 3306, host: '' },
- rds_pg: { user: '', password: '', port: 5432, host: '' },
- sqlite: { path: '' },
- directPGURI: { uri: '' }
+
+// ideally, we want to keep this config in a seperate file as well
+export const defaultFile: DocConfigFile = {
+ mysql_options: { user: '', password: '', port: 3306 },
+ pg_options: { user: '', password: '', port: 5432 },
+ rds_mysql_options: {
+ user: '',
+ password: '',
+ port: 3306,
+ host: '',
+ },
+ rds_pg_options: {
+ user: '',
+ password: '',
+ port: 5432,
+ host: '',
+ },
+ sqlite_options: { filename: '' },
+ directPGURI_options: { connectionString: '' },
};
/**
@@ -25,18 +37,19 @@ const defaultFile: DocConfigFile = {
*/
function writeConfigDefault(): DocConfigFile {
logger('Could not find config file. Creating default', LogType.WARNING);
- fs.writeFileSync(configPath, JSON.stringify(defaultFile));
+ fs.writeFileSync(configPath, JSON.stringify(defaultFile, null, 2));
return defaultFile;
-};
+}
/**
* Check if config.json object has the correct database properties (mysql, pg, etc.), tries to replace only the properties that are missing and return either the original or new object. Doesn't care about additional properties in the object besides those in const defaultFile.
* @param currConfig current configuration
* @returns configuration with only valid key value properties
*/
-const checkConfigFile = function (currConfig: DocConfigFile): DocConfigFile {
+const checkConfigFile = (currConfig: DocConfigFile): DocConfigFile => {
const invalidKeys: string[] = [];
try {
+ // pushes extra data from configFile to invalidKeys array
Object.keys(defaultFile).forEach((key) => {
if (!Object.prototype.hasOwnProperty.call(currConfig, key)) {
invalidKeys.push(key);
@@ -51,8 +64,8 @@ const checkConfigFile = function (currConfig: DocConfigFile): DocConfigFile {
} catch (err) {
console.log(err);
logger(
- `Error caught checking config file. Resetting config to default.`,
- LogType.WARNING
+ 'Error caught checking config file. Resetting config to default.',
+ LogType.WARNING,
);
return writeConfigDefault();
}
@@ -69,51 +82,51 @@ const checkConfigFile = function (currConfig: DocConfigFile): DocConfigFile {
/**
* Reads config file data and sends it into checkConfigFile, then returns the result
- * If an error occurs during read, the config file will be set back to default
+ * If an error occurs during read, the config file will be set back to default
* @returns config file contents (login info for each database type)
*/
function readConfigFile(): DocConfigFile {
try {
const config = JSON.parse(
- fs.readFileSync(configPath, 'utf-8')
+ fs.readFileSync(configPath, 'utf-8'),
) as DocConfigFile;
return checkConfigFile(config);
- } catch (err: any) {
+ } catch (err) {
console.log(err);
logger(
- `Error caught checking config file. Resetting config to default.`,
- LogType.WARNING
+ 'Error caught checking config file. Resetting config to default.',
+ LogType.WARNING,
);
return writeConfigDefault();
}
-};
+}
-interface DocConfig {
- getConfigFolder: () => string;
- getCredentials: (dbType: DBType) => {
- user?: string;
- password?: string;
- host?: string;
- port?: number | string;
- uri?: string;
- path?: string;
- };
- getFullConfig: () => Object;
- saveConfig: (config: Object) => void;
+interface GetCredentialsReturnType {
+ [DBType.MySQL]: DocConfigFile['mysql_options'];
+ [DBType.RDSMySQL]: DocConfigFile['rds_mysql_options'];
+ [DBType.Postgres]: DocConfigFile['pg_options'];
+ [DBType.RDSPostgres]: DocConfigFile['rds_pg_options'];
+ [DBType.directPGURI]: DocConfigFile['directPGURI_options'];
+ [DBType.CloudDB]: undefined;
+ [DBType.SQLite]: DocConfigFile['sqlite_options'];
}
-const docConfig: DocConfig = {
+// ------------------------------
+// MAIN FUNCTIONALITY
+//
+
+const docConfig = {
/**
* Checks if config file directory exists. If not, creates one
* @returns config file directory
*/
- getConfigFolder: function getConfigFolder() {
+ getConfigFolder(): string {
if (fs.existsSync(home)) {
logger(`Found documents directory: ${home}`, LogType.SUCCESS);
} else {
logger(
`Could not find documents directory. Creating at: ${home}`,
- LogType.WARNING
+ LogType.WARNING,
);
fs.mkdirSync(home);
}
@@ -125,61 +138,50 @@ const docConfig: DocConfig = {
* @param dbType: desired database type for login info
* @returns login info for the desired database type
*/
- getCredentials: function getCredentials(dbType: DBType) {
- this.getConfigFolder(); // ensure directory exists
- let configFile: DocConfigFile;
- try {
- configFile = readConfigFile(); // all login info now in configFile
- } catch (err: any) {
- logger(err.message, LogType.WARNING);
- return { user: '', password: '', port: 1 };
- }
-
- if (dbType === DBType.Postgres) {
- return { ...configFile.pg };
- }
- if (dbType === DBType.MySQL) {
- return { ...configFile.mysql };
- }
- if (dbType === DBType.RDSMySQL) {
- return { ...configFile.rds_mysql };
- }
- if (dbType === DBType.RDSPostgres) {
- return { ...configFile.rds_pg };
- }
- // asdf check sqlite and directpguri and format for return in case of error
- if (dbType === DBType.SQLite) {
- return { ...configFile.sqlite };
- }
- // if (dbType === DBType.directPGURI) {
- // return { ...configFile.directPGURI };
- // }
+ getCredentials(dbType: K): GetCredentialsReturnType[K] {
+ this.getConfigFolder(); // ensure directory exists
+ const config = readConfigFile(); // all login info now in configFile
- logger('Could not get credentials of DBType: ', LogType.ERROR, dbType);
- return { user: '', password: '', port: 1 };
+ return {
+ [DBType.MySQL]: { ...config.mysql_options },
+ [DBType.RDSMySQL]: { ...config.rds_mysql_options },
+ [DBType.Postgres]: { ...config.pg_options },
+ [DBType.RDSPostgres]: { ...config.rds_pg_options },
+ [DBType.directPGURI]: { connectionString: '' },
+ [DBType.CloudDB]: undefined,
+ [DBType.SQLite]: { ...config.sqlite_options },
+ }[dbType];
},
/**
* Reads config file contents and returns it all.
* @returns all login info from config file
*/
- getFullConfig: function getFullConfig() {
+ getFullConfig() {
this.getConfigFolder();
- let configFile: DocConfigFile;
+ let config: DocConfigFile;
try {
- configFile = readConfigFile();
- return configFile;
- } catch (err: any) {
- logger(err.message, LogType.WARNING);
- return 'Failed to retrieve data.';
+ config = readConfigFile();
+ return config;
+ } catch (err) {
+ logger(
+ typeof err === 'object' &&
+ err !== null &&
+ 'message' in err &&
+ typeof err.message === 'string'
+ ? err.message
+ : `Error occurred in getFullConfig : ${err}`,
+ LogType.WARNING,
+ );
+ return undefined;
}
},
/**
* Takes config data object sent from frontend, stringifies it and saves in config file
- * @param config
+ * @param config
*/
- saveConfig: function saveConfig(config: Object) {
+ saveConfig(config: DocConfigFile) {
try {
fs.writeFileSync(configPath, JSON.stringify(config));
logger('Saved new config: ', LogType.NORMAL, config);
@@ -189,4 +191,4 @@ const docConfig: DocConfig = {
},
};
-module.exports = docConfig;
+export default docConfig;
diff --git a/backend/src/models/connectionModel.ts b/backend/src/models/connectionModel.ts
new file mode 100644
index 00000000..bacbbb39
--- /dev/null
+++ b/backend/src/models/connectionModel.ts
@@ -0,0 +1,200 @@
+import fs from 'fs';
+import docConfig from './configModel';
+import { LogType } from '../../BE_types';
+import { DBType, connectionModelType } from '../../../shared/types/dbTypes';
+import connectionFunctions from '../db/databaseConnections';
+import logger from '../utils/logging/masterlog';
+import pools from '../db/poolVariables';
+
+import dbState from './stateModel';
+
+/*
+README: "connectionModel" deals with business logic of connetion actions. This file dealswith logining and connections to different kinds of databases.
+FUNCTIONS: setBaseConnections, connectToDB, disconnectToDrop
+*/
+
+// Functions
+const connectionModel: connectionModelType = {
+ setBaseConnections: async () => {
+ dbState.mysql_options = docConfig.getCredentials(DBType.MySQL);
+ dbState.pg_options = docConfig.getCredentials(DBType.Postgres);
+ dbState.rds_pg_options = docConfig.getCredentials(DBType.RDSPostgres);
+ dbState.rds_mysql_options = docConfig.getCredentials(DBType.RDSMySQL);
+ dbState.sqlite_options = docConfig.getCredentials(DBType.SQLite);
+ dbState.directPGURI_options = docConfig.getCredentials(DBType.directPGURI);
+
+ const configExists = {
+ pg: false,
+ msql: false,
+ rds_pg: false,
+ rds_msql: false,
+ sqlite: false,
+ directPGURI: false,
+ };
+ /*
+ all the if/else and try/catch in this function are for various forms of error handling.
+ incorrect passwords/removed entries after successful logins
+ */
+
+ // RDS PG POOL: truthy values means user has inputted info into config -> try to log in
+ if (
+ dbState.rds_pg_options.user &&
+ dbState.rds_pg_options.password &&
+ dbState.rds_pg_options.host
+ ) {
+ try {
+ configExists.rds_pg = true;
+ await connectionFunctions.RDS_PG_DBConnect(dbState.rds_pg_options);
+ dbState.dbsInputted.rds_pg = true;
+ logger('CONNECTED TO RDS PG DATABASE!', LogType.SUCCESS);
+ } catch (error) {
+ dbState.dbsInputted.rds_pg = false;
+ logger('FAILED TO CONNECT TO RDS PG DATABASE', LogType.ERROR);
+ }
+ } else {
+ configExists.rds_pg = false;
+ dbState.dbsInputted.rds_pg = false;
+ }
+
+ // RDS MSQL POOL: truthy values means user has inputted info into config -> try to log in
+ if (
+ dbState.rds_mysql_options.user &&
+ dbState.rds_mysql_options.password &&
+ dbState.rds_mysql_options.host
+ ) {
+ try {
+ configExists.rds_msql = true;
+ await connectionFunctions.RDS_MSQL_DBConnect(dbState.rds_mysql_options);
+
+ // test query to make sure were connected. needed for the
+ // catch statement to hit incase we arent connected.
+ if (pools.rds_msql_pool === undefined)
+ throw new Error('No RDS msql pool connected');
+ await pools.rds_msql_pool.query('SHOW DATABASES;');
+ logger('CONNECTED TO RDS MYSQL DATABASE!', LogType.SUCCESS);
+ dbState.dbsInputted.rds_msql = true;
+ } catch (error) {
+ dbState.dbsInputted.rds_msql = false;
+ logger('FAILED TO CONNECT TO RDS MSQL DATABASE', LogType.ERROR);
+ }
+ } else {
+ configExists.rds_msql = false;
+ dbState.dbsInputted.rds_msql = false;
+ }
+
+ // LOCAL PG POOL: truthy values means user has inputted info into config -> try to connect
+ if (dbState.pg_options.user && dbState.pg_options.password) {
+ dbState.pg_options.connectionString = `postgres://${dbState.pg_options.user}:${dbState.pg_options.password}@localhost:${dbState.pg_options.port}`;
+ dbState.pg_options.database = 'postgres';
+ try {
+ configExists.pg = true;
+ await connectionFunctions.PG_DBConnect(
+ dbState.pg_options.connectionString,
+ dbState.pg_options.database,
+ );
+ logger('CONNECTED TO LOCAL PG DATABASE', LogType.SUCCESS);
+ dbState.dbsInputted.pg = true;
+ } catch (error) {
+ dbState.dbsInputted.pg = false;
+ logger('FAILED TO CONNECT TO LOCAL PG DATABASE', LogType.ERROR);
+ }
+ } else {
+ configExists.pg = false;
+ dbState.dbsInputted.pg = false;
+ }
+
+ // LOCAL MSQL POOL: truthy values means user has inputted info into config -> try to log in
+ if (dbState.mysql_options.user && dbState.mysql_options.password) {
+ try {
+ configExists.msql = true;
+ dbState.mysql_options = {
+ ...dbState.mysql_options,
+ host: 'localhost',
+ waitForConnections: true,
+ connectionLimit: 10,
+ queueLimit: 0,
+ multipleStatements: true,
+ };
+ await connectionFunctions.MSQL_DBConnect(dbState.mysql_options);
+
+ // test query to make sure were connected. needed for the catch statement to hit incase we arent connected.
+ if (pools.msql_pool === undefined)
+ throw new Error('No active msql pool');
+ await pools.msql_pool.query('SHOW DATABASES;');
+ dbState.dbsInputted.msql = true;
+ logger('CONNECTED TO LOCAL MYSQL DATABASE!', LogType.SUCCESS);
+ } catch (error) {
+ dbState.dbsInputted.msql = false;
+ logger('FAILED TO CONNECT TO LOCAL MSQL DATABASE', LogType.ERROR);
+ }
+ } else {
+ configExists.msql = false;
+ dbState.dbsInputted.msql = false;
+ }
+
+ // RDS PG POOL: truthy values means user has inputted info into config -> try to log in
+ if (dbState.sqlite_options.filename) {
+ try {
+ configExists.sqlite = true;
+ connectionFunctions.SQLite_DBConnect(dbState.sqlite_options.filename);
+ dbState.dbsInputted.sqlite = true;
+ logger('CONNECTED TO SQLITE DATABASE!', LogType.SUCCESS);
+ } catch (error) {
+ dbState.dbsInputted.sqlite = false;
+ logger('FAILED TO CONNECT TO SQLITE DATABASE', LogType.ERROR);
+ }
+ } else {
+ configExists.sqlite = false;
+ dbState.dbsInputted.sqlite = false;
+ }
+
+ return { dbsInputted: dbState.dbsInputted, configExists };
+ },
+
+ // connectToDB : chooses what kind of database this is based on received dbType.
+ connectToDB: async (db, dbType) => {
+ // change current Db
+
+ if (dbType === DBType.Postgres) {
+ dbState.pg_options.database = db;
+
+ if (dbState.pg_options.connectionString) {
+ await connectionFunctions.PG_DBConnect(
+ dbState.pg_options.connectionString,
+ db,
+ );
+ } else {
+ // handle case where connection string is undefined}
+ }
+ } else if (dbType === DBType.MySQL) {
+ dbState.mysql_options.database = db;
+ await connectionFunctions.MSQL_DBQuery(db);
+ } else if (dbType === DBType.RDSMySQL) {
+ dbState.rds_mysql_options.database = db;
+ await connectionFunctions.RDS_MSQL_DBQuery(db);
+ } else if (dbType === DBType.RDSPostgres) {
+ await connectionFunctions.RDS_PG_DBConnect(dbState.rds_pg_options);
+ } else if (dbType === DBType.SQLite) {
+ connectionFunctions.SQLite_DBConnect(dbState.sqlite_options.filename);
+ }
+ },
+
+ disconnectToDrop: async (dbType) => {
+ if (dbType === DBType.Postgres) {
+ // ending pool
+ await connectionFunctions.PG_DBDisconnect();
+ }
+ if (dbType === DBType.SQLite) {
+ try {
+ // disconnect from and delete sqlite .db file
+ pools.sqlite_db?.close();
+ fs.unlinkSync(dbState.sqlite_options.filename);
+ dbState.sqlite_options.filename = '';
+ } catch (e) {
+ logger('FAILED TO DELETE SQLITE DB FILE', LogType.ERROR);
+ }
+ }
+ },
+};
+
+export default connectionModel;
diff --git a/backend/src/models/databaseModel.ts b/backend/src/models/databaseModel.ts
new file mode 100644
index 00000000..d224ce4b
--- /dev/null
+++ b/backend/src/models/databaseModel.ts
@@ -0,0 +1,608 @@
+import fs from 'fs';
+import { Pool } from 'pg';
+import { Pool as MSQLPool } from 'mysql2/promise';
+import { RowDataPacket } from 'mysql2';
+import {
+ ColumnObj,
+ dbDetails,
+ DBList,
+ DBType,
+ LogType,
+ TableDetails,
+ databaseModelType,
+} from '../../../shared/types/dbTypes';
+import logger from '../utils/logging/masterlog';
+import pools from '../db/poolVariables';
+
+import dbState from './stateModel';
+
+/*
+README: "databaseModel" deals with business logic of connetion actions. This file dealswith logining and connections to different kinds of databases.
+FUNCTIONS: getLists, getTableInfo, getDBNames, getColumnObjects, getDBLists
+*/
+
+// Functions
+const databaseModel: databaseModelType = {
+ // getLists: this list object is what will be returned at the end of the function. function will get lists for all four databases depending on which is logged in
+
+ getLists: async (dbName = '', dbType) => {
+ const listObj: DBList = {
+ databaseConnected: {
+ PG: false,
+ MySQL: false,
+ RDSPG: false,
+ RDSMySQL: false,
+ SQLite: false,
+ directPGURI: false,
+ },
+ databaseList: [], // accumulates lists for each logged-in database
+ tableList: [],
+ };
+ if (dbState.dbsInputted.pg) {
+ try {
+ const pgDBList = await databaseModel.getDBNames(DBType.Postgres);
+ listObj.databaseConnected.PG = true;
+ listObj.databaseList = [...listObj.databaseList, ...pgDBList];
+ } catch (error) {
+ logger('COULDNT GET NAMES FROM LOCAL PG', LogType.ERROR);
+ }
+ }
+
+ if (dbState.dbsInputted.msql) {
+ try {
+ const msqlDBList = await databaseModel.getDBNames(DBType.MySQL);
+ listObj.databaseConnected.MySQL = true;
+ listObj.databaseList = [...listObj.databaseList, ...msqlDBList];
+ } catch (error) {
+ logger('COULDNT GET NAMES FROM LOCAL MSQL', LogType.ERROR);
+ }
+ }
+
+ if (dbState.dbsInputted.rds_msql) {
+ try {
+ const RDSmsqlDBList = await databaseModel.getDBNames(DBType.RDSMySQL);
+ listObj.databaseConnected.RDSMySQL = true;
+ listObj.databaseList = [...listObj.databaseList, ...RDSmsqlDBList];
+ } catch (error) {
+ logger('COULDNT GET NAMES FROM RDS MSQL', LogType.ERROR);
+ }
+ }
+
+ if (dbState.dbsInputted.rds_pg) {
+ try {
+ const RDSpgDBList = await databaseModel.getDBNames(DBType.RDSPostgres);
+ listObj.databaseConnected.RDSPG = true;
+ listObj.databaseList = [...listObj.databaseList, ...RDSpgDBList];
+ } catch (error) {
+ logger('COULDNT GET NAMES FROM RDS PG', LogType.ERROR);
+ }
+ }
+
+ if (dbState.dbsInputted.sqlite) {
+ try {
+ const sqliteDBList = await databaseModel.getDBNames(DBType.SQLite);
+ listObj.databaseConnected.SQLite = true;
+ listObj.databaseList = [...listObj.databaseList, ...sqliteDBList];
+ } catch (error) {
+ logger('COULDNT GET NAMES FROM SQLite DB', LogType.ERROR);
+ }
+ }
+
+ if (dbType) {
+ try {
+ const listData = await databaseModel.getDBLists(dbType, dbName);
+ logger(
+ `RESOLVING DB DETAILS: Fetched DB names along with Table List for DBType: ${dbType} and DB: ${dbName}`,
+ LogType.SUCCESS,
+ );
+ listObj.tableList = listData;
+ } catch (error) {
+ logger(
+ `COULNT GET DATABASE LIST FOR ${dbType} ${dbName} DATABASE`,
+ LogType.ERROR,
+ );
+ }
+ }
+ return listObj;
+ },
+
+ // NEED TO LOOK INTO getTableInfo
+
+ getTableInfo: (tableName, dbType) =>
+ databaseModel.getColumnObjects(tableName, dbType),
+
+ // NEED TO LOOK INTO getDBNames
+
+ getDBNames: (dbType) =>
+ new Promise((resolve, reject) => {
+ let query: string;
+ if (dbType === DBType.Postgres || dbType === DBType.RDSPostgres) {
+ let pool: Pool | undefined; // changes which pool is being queried based on dbType
+
+ if (dbType === DBType.Postgres) pool = pools.pg_pool;
+ if (dbType === DBType.RDSPostgres) pool = pools.rds_pg_pool;
+ if (pool === undefined) {
+ reject(Error('No pool for Postgres DB'));
+ return;
+ }
+ const dbList: dbDetails[] = [];
+ /*
+ junaid
+ only run queries if pool is made
+ */
+ if (pool) {
+ query = `SELECT dbs.datname AS db_name,
+ pg_size_pretty(pg_database_size(dbs.datname)) AS db_size
+ FROM pg_database dbs
+ ORDER BY db_name`;
+ pool
+ .query<{ db_name: string; db_size: string }>(query)
+ .then((databases) => {
+ for (let i = 0; i < databases.rows.length; i += 1) {
+ const data = databases.rows[i];
+ const { db_name } = data;
+
+ if (
+ db_name !== 'postgres' &&
+ db_name !== 'template0' &&
+ db_name !== 'template1'
+ ) {
+ dbList.push({ ...data, db_type: dbType });
+ }
+ }
+
+ logger("PG 'getDBNames' resolved.", LogType.SUCCESS);
+ // resolve with array of db names
+ resolve(dbList);
+ })
+ .catch((err) => {
+ reject(err);
+ });
+ } else {
+ resolve(dbList);
+ }
+ } else if (dbType === DBType.MySQL || dbType === DBType.RDSMySQL) {
+ let pool: MSQLPool | undefined; // changes which pool is being queried based on dbType
+ if (dbType === DBType.MySQL) pool = pools.msql_pool;
+ if (dbType === DBType.RDSMySQL) pool = pools.rds_msql_pool;
+ if (pool === undefined) {
+ reject(Error('No pool for MySQL DB'));
+ return;
+ }
+
+ const dbList: dbDetails[] = [];
+ /*
+ only run queries if pool is made
+ */
+ if (pool) {
+ query = `
+ SELECT
+ S.SCHEMA_NAME db_name,
+ ROUND(SUM(data_length + index_length) / 1024, 1) db_size
+ FROM
+ INFORMATION_SCHEMA.SCHEMATA S
+ LEFT OUTER JOIN
+ INFORMATION_SCHEMA.TABLES T ON S.SCHEMA_NAME = T.TABLE_SCHEMA
+ WHERE
+ S.SCHEMA_NAME NOT IN ('information_schema' , 'mysql', 'performance_schema', 'sys')
+ GROUP BY S.SCHEMA_NAME
+ ORDER BY db_name ASC;`;
+
+ pool
+ .query(query)
+ .then((databases) => {
+ for (let i = 0; i < databases[0].length; i += 1) {
+ const data = databases[0][i];
+ const filterData: dbDetails = {
+ db_type: dbType,
+ db_size: data.db_size ? `${data.db_size}KB` : '0KB',
+ db_name:
+ typeof data.db_name === 'string' ? data.db_name : 'ERROR',
+ };
+ data.db_type = dbType;
+ data.db_size = data.db_size ? `${data.db_size}KB` : '0KB';
+ data.db_name ??= 'ERROR';
+ dbList.push(filterData);
+ }
+
+ logger("MySQL 'getDBNames' resolved.", LogType.SUCCESS);
+ // resolve with array of db names
+ resolve(dbList);
+ })
+ .catch((err) => {
+ reject(err);
+ });
+ } else {
+ resolve(dbList);
+ }
+ } else if (dbType === DBType.SQLite) {
+ const dbList: dbDetails[] = [];
+ let { filename } = dbState.sqlite_options;
+ filename = filename.slice(
+ filename.lastIndexOf('\\') + 1,
+ filename.lastIndexOf('.db'),
+ );
+ const stats = fs.statSync(filename);
+ const fileSizeInKB = stats.size / 1024;
+ // Convert the file size to megabytes (optional)
+ const data = {
+ db_name: filename,
+ db_size: `${fileSizeInKB}KB`,
+ db_type: DBType.SQLite,
+ };
+ dbList.push(data);
+ resolve(dbList);
+ }
+ }),
+
+ // THIS FUNCTION IS FKED
+
+ getColumnObjects: (tableName, dbType) => {
+ let queryString: string;
+ const value = [tableName];
+ if (dbType === DBType.Postgres || dbType === DBType.RDSPostgres) {
+ // added to check for RDS
+ let pool: Pool | undefined; // changes which pool is being queried based on dbType
+ if (dbType === DBType.Postgres) pool = pools.pg_pool;
+ if (dbType === DBType.RDSPostgres) pool = pools.rds_pg_pool;
+ if (pool === undefined) {
+ throw Error('No pool for psql DB');
+ }
+ // query string to get constraints and table references as well
+ queryString = `SELECT DISTINCT cols.column_name,
+ cols.data_type,
+ cols.character_maximum_length,
+ cols.is_nullable,
+ kcu.constraint_name,
+ cons.constraint_type,
+ rel_kcu.table_name AS foreign_table,
+ rel_kcu.column_name AS foreign_column
+ FROM information_schema.columns cols
+ LEFT JOIN information_schema.key_column_usage kcu
+ ON cols.column_name = kcu.column_name
+ AND cols.table_name = kcu.table_name
+ LEFT JOIN information_schema.table_constraints cons
+ ON kcu.constraint_name = cons.constraint_name
+ LEFT JOIN information_schema.referential_constraints rco
+ ON rco.constraint_name = cons.constraint_name
+ LEFT JOIN information_schema.key_column_usage rel_kcu
+ ON rco.unique_constraint_name = rel_kcu.constraint_name
+ WHERE cols.table_name = $1`;
+
+ // kcu = key column usage = describes which key columns have constraints
+ // tc = table constraints = shows if constraint is primary key or foreign key
+ // information_schema.table_constraints show the whole table constraints
+
+ return new Promise((resolve, reject) => {
+ pool
+ ?.query(queryString, value)
+ .then((result) => {
+ const columnInfoArray: ColumnObj[] = [];
+ for (let i = 0; i < result.rows.length; i += 1) {
+ columnInfoArray.push(result.rows[i]);
+ }
+ resolve(columnInfoArray);
+ })
+ .catch((err) => {
+ reject(err);
+ });
+ });
+ }
+ if (dbType === DBType.MySQL || dbType === DBType.RDSMySQL) {
+ // added to check for RDS
+
+ let pool: MSQLPool | undefined; // changes which pool is being queried based on dbType
+ if (dbType === DBType.MySQL) pool = pools.msql_pool;
+ if (dbType === DBType.RDSMySQL) pool = pools.rds_msql_pool;
+ if (pool === undefined) {
+ throw Error('No pool for mysql db');
+ }
+ queryString = `SELECT DISTINCT
+ cols.column_name AS column_name,
+ cols.data_type AS data_type,
+ cols.character_maximum_length AS character_maximum_length,
+ cols.is_nullable AS is_nullable,
+ kcu.constraint_name AS constraint_name,
+ cons.constraint_type AS constraint_type,
+ rel_kcu.table_name AS foreign_table,
+ rel_kcu.column_name AS foreign_column
+ FROM information_schema.columns cols
+ LEFT JOIN information_schema.key_column_usage kcu
+ ON cols.column_name = kcu.column_name
+ AND cols.table_name = kcu.table_name
+ LEFT JOIN information_schema.table_constraints cons
+ ON kcu.constraint_name = cons.constraint_name
+ LEFT JOIN information_schema.referential_constraints rco
+ ON rco.constraint_name = cons.constraint_name
+ LEFT JOIN information_schema.key_column_usage rel_kcu
+ ON rco.unique_constraint_name = rel_kcu.constraint_name
+ WHERE cols.table_name = ?;`;
+
+ return new Promise((resolve, reject) => {
+ pool
+ ?.query(queryString, value)
+ .then((result) => {
+ const columnInfoArray: ColumnObj[] = [];
+ for (let i = 0; i < result[0].length; i += 1) {
+ const data = result[0][i];
+ const colObjFromData: ColumnObj = {
+ column_name:
+ typeof data.column_data === 'string' ? data.column_data : '',
+ data_type:
+ typeof data.data_type === 'string' ? data.data_type : '',
+ character_maximum_length:
+ typeof data.character_maximum_length === 'number'
+ ? data.character_maximum_length
+ : null,
+ is_nullable:
+ typeof data.is_nullable === 'string' ? data.is_nullable : '',
+ constraint_type:
+ typeof data.constraint_type === 'string'
+ ? data.constraint_type
+ : null,
+ foreign_table:
+ typeof data.foreign_table === 'string'
+ ? data.foreign_table
+ : null,
+ foreign_column:
+ typeof data.foreign_column === 'string'
+ ? data.foreign_column
+ : null,
+ };
+ columnInfoArray.push(colObjFromData);
+ }
+ resolve(columnInfoArray);
+ })
+ .catch((err) => {
+ reject(err);
+ });
+ });
+ }
+
+ if (dbType === DBType.SQLite) {
+ const sqliteDB = pools.sqlite_db;
+ queryString = `SELECT
+ m.name AS table_name,
+ p.name AS column_name,
+ p.type AS data_type,
+ p.[notnull] AS not_null,
+ p.pk AS pk,
+ fkl.[table] AS foreign_table,
+ fkl.[to] AS foreign_column
+ FROM sqlite_master m
+ LEFT JOIN pragma_table_info(m.name) p
+ LEFT JOIN pragma_foreign_key_list(m.name) fkl
+ ON p.name = fkl.[from]
+ WHERE m.type = 'table' AND p.type != '' AND m.name = ?`;
+
+ return new Promise((resolve, reject) => {
+ sqliteDB?.all<{
+ column_name: string;
+ data_type: string;
+ not_null: 0 | 1;
+ pk: 0 | 1;
+ foreign_table: string;
+ foreign_column: string;
+ }>(queryString, value, (err, rows) => {
+ if (err) {
+ reject(err);
+ }
+ const columnInfoArray: ColumnObj[] = [];
+ for (let i = 0; i < rows.length; i++) {
+ const {
+ column_name,
+ data_type,
+ not_null,
+ pk,
+ foreign_table,
+ foreign_column,
+ } = rows[i];
+ const newColumnObj: ColumnObj = {
+ column_name,
+ data_type,
+ character_maximum_length: data_type.includes('(')
+ ? parseInt(
+ data_type.slice(
+ 1 + data_type.indexOf('('),
+ data_type.indexOf(')'),
+ ),
+ 10,
+ )
+ : null,
+ is_nullable: not_null === 1 ? 'NO' : 'YES',
+ constraint_type:
+ pk === 1 ? 'PRIMARY KEY' : foreign_table ? 'FOREIGN KEY' : null,
+ foreign_table,
+ foreign_column,
+ };
+ columnInfoArray.push(newColumnObj);
+ }
+ resolve(columnInfoArray);
+ });
+ });
+ }
+
+ logger('Trying to use unknown DB Type: ', LogType.ERROR, dbType);
+ // eslint-disable-next-line no-throw-literal
+ throw 'Unknown db type';
+ },
+
+ getDBLists: (dbType, dbName) =>
+ new Promise((resolve, reject) => {
+ let query: string;
+ const tableList: TableDetails[] = [];
+ const promiseArray: Promise[] = [];
+
+ if (dbType === DBType.Postgres || dbType === DBType.RDSPostgres) {
+ let pool: Pool | undefined;
+ if (dbType === DBType.Postgres) pool = pools.pg_pool;
+ if (dbType === DBType.RDSPostgres) pool = pools.rds_pg_pool;
+
+ // querying PG metadata
+ query = `SELECT
+ table_catalog,
+ table_schema,
+ table_name,
+ is_insertable_into
+ FROM information_schema.tables
+ WHERE table_schema = 'public' or table_schema = 'base'
+ ORDER BY table_name;`;
+ pool
+ ?.query(query)
+ .then((tables) => {
+ for (let i = 0; i < tables.rows.length; i++) {
+ tableList.push(tables.rows[i]);
+ promiseArray.push(
+ databaseModel.getColumnObjects(
+ tables.rows[i].table_name,
+ dbType,
+ ),
+ );
+ }
+
+ Promise.all(promiseArray)
+ .then((columnInfo) => {
+ for (let i = 0; i < columnInfo.length; i++) {
+ tableList[i].columns = columnInfo[i];
+ }
+ logger("PG 'getDBLists' resolved.", LogType.SUCCESS);
+ resolve(tableList);
+ })
+ .catch((err) => {
+ reject(err);
+ });
+ })
+ .catch((err) => {
+ reject(err);
+ });
+ } else if (dbType === DBType.MySQL || dbType === DBType.RDSMySQL) {
+ // Notice that TABLE_CATALOG is set to table_schema
+ // And that TABLE_SCHEMA is set to table_catalog
+ // This is because PG and MySQL have these flipped (For whatever reason)
+
+ let pool: MSQLPool | undefined;
+ if (dbType === DBType.MySQL) pool = pools.msql_pool;
+ else pool = pools.rds_msql_pool;
+ if (pool === undefined) {
+ throw Error('No pool for msql DB');
+ }
+
+ // const query2 = `SELECT
+ // table_catalog,
+ // table_schema,
+ // table_name,
+ // is_insertable_into
+ // FROM information_schema.tables
+ // WHERE table_schema = 'public' or table_schema = 'base'
+ // ORDER BY table_name;`;
+
+ // query = `
+ // SELECT
+ // TABLE_CATALOG as table_schema,
+ // TABLE_SCHEMA as table_catalog,
+ // TABLE_NAME as table_name
+ // FROM information_schema.tables
+ // WHERE TABLE_SCHEMA NOT IN('information_schema', 'performance_schema', 'mysql')
+ // AND TABLE_SCHEMA = '${dbName}'
+ // ORDER BY table_name;`;
+
+ query = `
+ SELECT
+ TABLE_CATALOG as table_schema,
+ TABLE_SCHEMA as table_catalog,
+ TABLE_NAME as table_name
+ FROM information_schema.tables
+ WHERE TABLE_SCHEMA NOT IN('information_schema', 'performance_schema', 'mysql', 'sys')
+ AND TABLE_SCHEMA = '${dbName}'
+ ORDER BY table_name;`;
+
+ pool
+ // .query(query2)
+ .query(query)
+ .then((tables) => {
+ for (let i = 0; i < tables[0].length; i++) {
+ const data = tables[0][i];
+ const tableDetailsFromData: TableDetails = {
+ table_catalog:
+ typeof data.table_catalog === 'string'
+ ? data.table_catalog
+ : '',
+ table_schema:
+ typeof data.table_schema === 'string'
+ ? data.table_schema
+ : '',
+ table_name:
+ typeof data.table_name === 'string' ? data.table_name : '',
+ is_insertable_into:
+ typeof data.is_insertable_into === 'string'
+ ? data.is_insertable_into
+ : '',
+ };
+ tableList.push(tableDetailsFromData);
+
+ // Sys returns way too much stuff idk
+ if (tableList[i].table_schema !== 'sys') {
+ promiseArray.push(
+ databaseModel.getColumnObjects(
+ tableList[i].table_name,
+ dbType,
+ ),
+ );
+ }
+ }
+ Promise.all(promiseArray)
+ .then((columnInfo) => {
+ for (let i = 0; i < columnInfo.length; i++) {
+ tableList[i].columns = columnInfo[i];
+ }
+ logger("MySQL 'getDBLists' resolved.", LogType.SUCCESS);
+ resolve(tableList);
+ })
+ .catch((err) => {
+ reject(err);
+ });
+ })
+ .catch((err) => {
+ reject(err);
+ });
+ } else if (dbType === DBType.SQLite) {
+ const sqliteDB = pools.sqlite_db;
+
+ // querying SQLite metadata
+ query = `SELECT
+ m.name AS table_name
+ FROM sqlite_master m
+ WHERE m.type = 'table' AND m.name != 'sqlite_stat1' AND m.name != 'sqlite_sequence'`;
+ sqliteDB?.all<{ table_name: string }>(query, (err, rows) => {
+ if (err) console.error(err.message);
+ for (let i = 0; i < rows.length; i += 1) {
+ const newTableDetails: TableDetails = {
+ table_catalog: dbState.sqlite_options.filename.slice(
+ dbState.sqlite_options.filename.lastIndexOf('\\') + 1,
+ ),
+ table_schema: 'asdf',
+ table_name: rows[i].table_name,
+ is_insertable_into: 'asdf',
+ };
+ tableList.push(newTableDetails);
+ promiseArray.push(
+ databaseModel.getColumnObjects(rows[i].table_name, dbType),
+ );
+ }
+ Promise.all(promiseArray)
+ .then((columnInfo) => {
+ for (let i = 0; i < columnInfo.length; i += 1) {
+ tableList[i].columns = columnInfo[i];
+ }
+ logger("SQLite 'getDBLists' resolved.", LogType.SUCCESS);
+ resolve(tableList);
+ })
+ .catch((error) => {
+ reject(error);
+ });
+ });
+ }
+ }),
+};
+
+export default databaseModel;
diff --git a/backend/src/models/queryModel.ts b/backend/src/models/queryModel.ts
new file mode 100644
index 00000000..9c75c9a3
--- /dev/null
+++ b/backend/src/models/queryModel.ts
@@ -0,0 +1,90 @@
+import { performance } from 'perf_hooks';
+
+import { DBType, LogType, queryModelType } from '../../../shared/types/dbTypes';
+
+import logger from '../utils/logging/masterlog';
+import pools from '../db/poolVariables';
+
+/*
+README: "queryModel" deals with business logic of any incoming queries from the query sidebar*?. Implement furthur query functionalities here NOT ERDtable
+FUNCTIONS: query, sampler
+*/
+
+// Functions
+const queryModel: queryModelType = {
+ /**
+ * 'query':
+ * runs sql command depending on the database
+ */
+ query: (text, params, dbType): Promise | undefined => {
+ logger(`Attempting to run query: \n ${text} for: \n ${dbType}`);
+
+ if (dbType === DBType.RDSPostgres) {
+ return pools.rds_pg_pool?.query(text, params).catch((err) => {
+ logger(err.message, LogType.WARNING);
+ });
+ }
+
+ if (dbType === DBType.RDSMySQL) {
+ return pools.rds_msql_pool?.query(text, params);
+ }
+
+ if (dbType === DBType.Postgres) {
+ return pools.pg_pool?.query(text, params).catch((err) => {
+ logger(err.message, LogType.WARNING);
+ });
+ }
+
+ if (dbType === DBType.MySQL) {
+ // pools.msql_pool.query(`USE ${this.curMSQL_DB}`);
+ return pools.msql_pool?.query(text, params);
+ }
+
+ if (dbType === DBType.SQLite) {
+ return new Promise((resolve, reject) => {
+ pools.sqlite_db?.all(text, (err, res) => {
+ if (err) {
+ logger(err.message, LogType.WARNING);
+ reject(err);
+ } else {
+ resolve(res);
+ }
+ });
+ });
+ }
+ return new Promise((resolve, reject) => {
+ reject(Error('Invalid DB Type'));
+ });
+ },
+
+ sampler: (queryString) =>
+ new Promise((resolve, reject) => {
+ pools.sqlite_db?.run('BEGIN', (err) => {
+ if (err) {
+ console.error(err.message);
+ reject(err);
+ } else {
+ const startTime = performance.now();
+ pools.sqlite_db?.all(queryString, (err1) => {
+ if (err1) {
+ console.error(err1.message);
+ reject(err1);
+ } else {
+ const endTime = performance.now();
+ pools.sqlite_db?.run('ROLLBACK', (err2) => {
+ if (err2) {
+ console.error(err2.message);
+ reject(err2);
+ } else {
+ const elapsedTime = endTime - startTime;
+ resolve(elapsedTime);
+ }
+ });
+ }
+ });
+ }
+ });
+ }),
+};
+
+export default queryModel;
diff --git a/backend/src/models/readme.txt b/backend/src/models/readme.txt
new file mode 100644
index 00000000..32b51da5
--- /dev/null
+++ b/backend/src/models/readme.txt
@@ -0,0 +1,16 @@
+Models write to databases and perform business logics. I want to point out "dbStateModel" is the special model here, becuse it encompasses the state of the backend, of which saves which users are currently logged in and which database is the "active one" for ERDtable.
+
+configModel:
+
+"connectionModel" deals with business logic of connetion actions. This file dealswith logining and connections to different kinds of databases.
+
+FUNCTIONS: setBaseConnections, connectToDB, disconnectToDrop
+
+"databaseModel" deals with business logic of connetion actions. This file dealswith logining and connections to different kinds of databases.
+
+FUNCTIONS: getLists, getTableInfo, getDBNames, getColumnObjects, getDBLists
+dbStateModel:
+
+"queryModel" deals with business logic of any incoming queries from the query sidebar*?. Implement furthur query functionalities here NOT ERDtable
+
+FUNCTIONS: query, sampler
\ No newline at end of file
diff --git a/backend/src/models/stateModel.ts b/backend/src/models/stateModel.ts
new file mode 100644
index 00000000..3de503de
--- /dev/null
+++ b/backend/src/models/stateModel.ts
@@ -0,0 +1,36 @@
+import { dbsInputted, DBType } from '../../../shared/types/dbTypes';
+import { DocConfigFile } from '../../BE_types';
+import { defaultFile } from './configModel';
+
+type DBState = DocConfigFile & {
+ dbsInputted: dbsInputted;
+ currentERD: DBType;
+ currentDb: string;
+};
+
+const dbState: DBState = {
+ // NEEDS UPDATE TO PETERS NEW SYNTAX
+ pg_options: defaultFile.pg_options,
+ mysql_options: defaultFile.mysql_options,
+ rds_mysql_options: defaultFile.rds_mysql_options,
+ rds_pg_options: defaultFile.rds_pg_options,
+ sqlite_options: defaultFile.sqlite_options,
+ directPGURI_options: defaultFile.directPGURI_options,
+
+ dbsInputted: {
+ pg: false,
+ msql: false,
+ rds_pg: false,
+ rds_msql: false,
+ sqlite: false,
+ directPGURI: false,
+ },
+
+ // current ERD Db type
+ currentERD: DBType.Postgres,
+
+ // current Database
+ currentDb: '',
+};
+
+export default dbState;
diff --git a/backend/DummyD/dummyDataMain.ts b/backend/src/utils/dummyData/dummyDataMain.ts
similarity index 53%
rename from backend/DummyD/dummyDataMain.ts
rename to backend/src/utils/dummyData/dummyDataMain.ts
index 1de6a28c..a7085e70 100644
--- a/backend/DummyD/dummyDataMain.ts
+++ b/backend/src/utils/dummyData/dummyDataMain.ts
@@ -1,8 +1,7 @@
-import faker from 'faker';
-import { ColumnObj, DummyRecords, LogType } from '../BE_types';
-import logger from '../Logging/masterlog';
-
-const db = require('../models');
+import { faker } from '@faker-js/faker';
+import { ColumnObj, DummyRecords, LogType } from '../../../BE_types';
+import logger from '../logging/masterlog';
+import queryModel from '../../models/queryModel';
/* THIS FILE CONTAINS THE ALGORITHMS THAT GENERATE DUMMY DATA */
/* */
@@ -13,50 +12,53 @@ const db = require('../models');
/* subsequently concatenated into the INSERT query generated */
/* in channels.ts to generate the dummy records for the table */
-
// *************************************************** Helper Functions *************************************************** //
// helper function to generate random numbers that will ultimately represent a random date
+
const getRandomInt = (min: number, max: number) => {
const minInt = Math.ceil(min);
const maxInt = Math.floor(max);
// The maximum is exclusive and the minimum is inclusive
- return Math.floor(Math.random() * (maxInt - minInt) + minInt);
+ return Math.floor(Math.random() * (maxInt - minInt) + minInt);
};
-
// helper function to generate random data based on a given column's data type
const generateDataByType = (columnObj: ColumnObj): string | number => {
let length;
- // faker.js method to generate data by type
- // console.log('columnObj_datatype: ', columnObj.data_type)
-
+ // updated the new faker package so updated to follow proper documentation.
switch (columnObj.data_type) {
case 'smallint':
- return faker.random.number({ min: -32768, max: 32767 });
+ return faker.number.int({ min: -32768, max: 32767 });
case 'integer':
- return faker.random.number({ min: -2147483648, max: 2147483647 });
+ return faker.number.int({ min: -2147483648, max: 2147483647 });
case 'bigint':
- return faker.random.number({
+ return faker.number.int({
min: -9223372036854775808,
max: 9223372036854775807,
});
case 'character varying':
// defaulting length to 3 because faker.lorem defaults to a length of 3 if no length is specified
- length = columnObj.character_maximum_length && columnObj.character_maximum_length > 3
- ? Math.floor(Math.random() * columnObj.character_maximum_length)
- : 3;
- return '\''.concat(faker.random.alphaNumeric(length)).concat('\'');
+ length =
+ columnObj.character_maximum_length &&
+ columnObj.character_maximum_length > 3
+ ? Math.floor(Math.random() * columnObj.character_maximum_length)
+ : 3;
+ // TODO: need to properly deal with the deprecated faker.random.alphaNumeric(length) method
+ return "'".concat(faker.random.alphaNumeric(length)).concat("'");
case 'varchar':
// defaulting length to 3 because faker.lorem defaults to a length of 3 if no length is specified
-
- length = columnObj.character_maximum_length && columnObj.character_maximum_length > 3
- ? Math.floor(Math.random() * columnObj.character_maximum_length)
- : 3;
- return '\''.concat(faker.random.alphaNumeric(length)).concat('\'');
+
+ length =
+ columnObj.character_maximum_length &&
+ columnObj.character_maximum_length > 3
+ ? Math.floor(Math.random() * columnObj.character_maximum_length)
+ : 3;
+ // TODO: need to properly deal with the deprecated faker.random.alphaNumeric(length) method
+ return "'".concat(faker.random.alphaNumeric(length)).concat("'");
case 'int':
- return faker.random.number({ min: -2147483648, max: 2147483647 });
+ return faker.number.int({ min: -2147483648, max: 2147483647 });
case 'date': {
// generating a random date between 1500 and 2020
const year = getRandomInt(1500, 2020).toString();
@@ -65,10 +67,10 @@ const generateDataByType = (columnObj: ColumnObj): string | number => {
let day = getRandomInt(1, 29).toString();
if (day.length === 1) day = `0${day}`;
const result = `${year}/${month}/${day}`;
- return '\''.concat(result).concat('\'');
+ return "'".concat(result).concat("'");
}
case 'boolean': {
- return '\''.concat(faker.random.boolean()).concat('\'');
+ return "'".concat(faker.datatype.boolean().toString()).concat("'");
}
default:
throw new Error('unhandled data type');
@@ -77,12 +79,18 @@ const generateDataByType = (columnObj: ColumnObj): string | number => {
// *************************************************** Main Function to Generate Dummy Data *************************************************** //
-type GenerateDummyData = (tableInfo: ColumnObj[], numRows: number) => Promise;
+type GenerateDummyData = (
+ tableInfo: ColumnObj[],
+ numRows: number,
+) => Promise;
-const generateDummyData: GenerateDummyData = async (tableInfo: ColumnObj[], numRows: number) => {
+const generateDummyData: GenerateDummyData = async (
+ tableInfo: ColumnObj[],
+ numRows: number,
+) => {
// assuming primary key is serial, get all the column names except for the column with the primary key
const columnNames: Array = [];
- for(let i = 0; i < tableInfo.length; i++) {
+ for (let i = 0; i < tableInfo.length; i++) {
columnNames.push(tableInfo[i].column_name);
}
@@ -94,31 +102,40 @@ const generateDummyData: GenerateDummyData = async (tableInfo: ColumnObj[], numR
// at each row, check the columns of the table and generate dummy data accordingly
for (let j = 0; j < tableInfo.length; j += 1) {
// if column has no foreign key constraint, then generate dummy data based on data type
- if (tableInfo[j].constraint_type !== 'FOREIGN KEY'){
+ if (tableInfo[j].constraint_type !== 'FOREIGN KEY') {
// && tableInfo[j].constraint_type !== 'PRIMARY KEY'
- row.push(generateDataByType(tableInfo[j]))
+ row.push(generateDataByType(tableInfo[j]));
}
-
- // if there is a foreign key constraint, grab random key from foreign table
- else if (tableInfo[j].constraint_type === 'FOREIGN KEY') {
- const foreignColumn = tableInfo[j].foreign_column;
- const foreignTable = tableInfo[j].foreign_table;
- const getForeignKeyQuery = `
+ // if there is a foreign key constraint, grab random key from foreign table
+ else if (tableInfo[j].constraint_type === 'FOREIGN KEY') {
+ const foreignColumn = tableInfo[j].foreign_column;
+ const foreignTable = tableInfo[j].foreign_table;
+ const getForeignKeyQuery = `
SELECT ${foreignColumn}
FROM ${foreignTable} TABLESAMPLE BERNOULLI(100)
LIMIT 1
`;
- const foreignKey = await db.query(getForeignKeyQuery);
- const chosenPrimaryValue = foreignKey.rows[0][Object.keys(foreignKey.rows[0])[0]]
- if (foreignKey.rows.length) {
- if (typeof chosenPrimaryValue === 'string') row.push(`'${chosenPrimaryValue}'`);
- else row.push(chosenPrimaryValue);
- }
- else{
- logger('There was an error while retrieving a valid foreign key while generating dummy data.', LogType.ERROR);
- throw new Error('There was an error while retrieving a valid foreign key.');
- }
+
+ // const foreignKey = await queryModel.query(getForeignKeyQuery);
+ // ISSUE CO-76: SINCE DB IS UPDATED, WE NEED TO ADJUST THIS LOGIC FOR GETTING FOREIGN KEY
+ const foreignKey = { rows: 'nothing here' };
+ // CO-76: temp values to prevent file from breaking. get rid of this after you fix queryModel.query(getForeignKeyQuery)
+ const chosenPrimaryValue =
+ foreignKey.rows[0][Object.keys(foreignKey.rows[0])[0]];
+ if (foreignKey.rows.length) {
+ if (typeof chosenPrimaryValue === 'string')
+ row.push(`'${chosenPrimaryValue}'`);
+ else row.push(chosenPrimaryValue);
+ } else {
+ logger(
+ 'There was an error while retrieving a valid foreign key while generating dummy data.',
+ LogType.ERROR,
+ );
+ throw new Error(
+ 'There was an error while retrieving a valid foreign key.',
+ );
+ }
}
}
dummyRecords.push(row);
diff --git a/backend/DummyD/primaryAndForeignKeyQueries.ts b/backend/src/utils/dummyData/primaryAndForeignKeyQueries.ts
similarity index 98%
rename from backend/DummyD/primaryAndForeignKeyQueries.ts
rename to backend/src/utils/dummyData/primaryAndForeignKeyQueries.ts
index ac025fc7..e9c84739 100644
--- a/backend/DummyD/primaryAndForeignKeyQueries.ts
+++ b/backend/src/utils/dummyData/primaryAndForeignKeyQueries.ts
@@ -1,3 +1,5 @@
+// where is this file used?
+
const foreignAndPrimaryKeys = {
/**
* The information schema itself is a schema named information_schema. This schema automatically exists in all
diff --git a/backend/src/utils/erdCUD/SqLiteCUD.ts b/backend/src/utils/erdCUD/SqLiteCUD.ts
new file mode 100644
index 00000000..7cf9ef2b
--- /dev/null
+++ b/backend/src/utils/erdCUD/SqLiteCUD.ts
@@ -0,0 +1,128 @@
+import {
+ ErdUpdatesType,
+ OperationType,
+ PsqlColumnOperations,
+} from '../../../../shared/types/erTypes';
+
+/**
+ * POSTGRESQL COLUMN HELPER
+ * @param columnOperations
+ * @returns string
+ */
+
+export function generateSqLiteColumnQuery(
+ tableName: string,
+ columnOperations: PsqlColumnOperations,
+): string {
+ const { columnAction, columnName } = columnOperations;
+
+ let effect: string = columnName;
+ let action: string;
+
+ switch (columnAction) {
+ case 'addColumn': {
+ action = 'ADD';
+ if (columnOperations.type !== undefined) {
+ // if there is a type
+ effect += ` TYPE ${columnOperations.type}`;
+ }
+ break;
+ }
+
+ case 'dropColumn':
+ action = 'DROP';
+ break;
+
+ // alters
+ case 'alterColumnType':
+ action = 'ALTER';
+ effect += ` TYPE ${columnOperations.type}`;
+ break;
+
+ case 'renameColumn':
+ action = 'RENAME';
+ effect += ` TO ${columnOperations.newColumnName}`;
+ break;
+
+ // contraints
+ case 'togglePrimary': {
+ if (!columnOperations.isPrimary) {
+ // usually default to user_pkey. need further investigation
+ return `DROP CONSTRAINT users_pkey`;
+ }
+ return `ADD PRIMARY KEY (${effect})`;
+ }
+
+ case 'toggleForeign': {
+ const { hasForeign, foreignConstraint } = columnOperations;
+ if (!hasForeign) {
+ return `DROP CONSTRAINT ${foreignConstraint}`;
+ }
+ return `ADD CONSTRAINT ${foreignConstraint} FOREIGN KEY (${columnName}) REFERENCES ${columnOperations.foreignTable} (${columnOperations.foreignColumn})`;
+ }
+
+ // we are assuminmg postgress will generate a new unique key for us if it is not taken here. risky.
+ case 'toggleUnique': {
+ const { isUnique } = columnOperations;
+ if (!isUnique) {
+ return `DROP CONSTRAINT ${tableName}_${columnName}_key`;
+ }
+ return `ADD UNIQUE (${columnName})`;
+ }
+
+ default:
+ throw new Error(`Invalid tableAction: ${columnAction as string}`);
+ }
+
+ return `${action} COLUMN ${effect}`;
+}
+
+/**
+ * POSTGRESQL OPERATIONS
+ * @param updatesArray
+ * @returns Array of strings
+ */
+
+export function querySqLite(updatesArray: ErdUpdatesType): string[] {
+ const psqlArray: string[] = [];
+ updatesArray.forEach((operation: OperationType) => {
+ const { action, tableName, tableSchema } = operation;
+ switch (action) {
+ // this is adding tables for psql
+ case 'add':
+ psqlArray.push(`CREATE TABLE ${tableSchema}.${tableName};`);
+ break;
+
+ // this is dropping tables for psql
+ case 'drop':
+ psqlArray.push(`DROP TABLE ${tableSchema}.${tableName};`);
+ break;
+
+ // this is altering table name for psql
+ case 'alter': {
+ const { newTableName } = operation;
+ psqlArray.push(
+ `ALTER TABLE ${tableSchema}.${tableName} RENAME TO ${newTableName};`,
+ );
+ break;
+ }
+
+ // this is altering columns name for psql
+ case 'column': {
+ const { columnOperations } = operation;
+ const alterQuery: string = generateSqLiteColumnQuery(
+ tableName,
+ columnOperations as PsqlColumnOperations,
+ );
+ psqlArray.push(
+ `ALTER TABLE ${tableSchema}.${tableName} ${alterQuery};`,
+ );
+ break;
+ }
+
+ default:
+ throw new Error(`Invalid action: ${action as string}`);
+ }
+ });
+ return psqlArray;
+}
diff --git a/backend/src/utils/erdCUD/mySqlCUD.ts b/backend/src/utils/erdCUD/mySqlCUD.ts
new file mode 100644
index 00000000..6538fb10
--- /dev/null
+++ b/backend/src/utils/erdCUD/mySqlCUD.ts
@@ -0,0 +1,128 @@
+import {
+ ErdUpdatesType,
+ OperationType,
+ PsqlColumnOperations,
+} from '../../../../shared/types/erTypes';
+
+/**
+ * POSTGRESQL COLUMN HELPER
+ * @param columnOperations
+ * @returns string
+ */
+
+export function generateMySqlColumnQuery(
+ tableName: string,
+ columnOperations: PsqlColumnOperations,
+): string {
+ const { columnAction, columnName } = columnOperations;
+
+ let effect: string = columnName;
+ let action: string;
+
+ switch (columnAction) {
+ case 'addColumn': {
+ action = 'ADD';
+ if (columnOperations.type !== undefined) {
+ // if there is a type
+ effect += ` TYPE ${columnOperations.type}`;
+ }
+ break;
+ }
+
+ case 'dropColumn':
+ action = 'DROP';
+ break;
+
+ // alters
+ case 'alterColumnType':
+ action = 'ALTER';
+ effect += ` TYPE ${columnOperations.type}`;
+ break;
+
+ case 'renameColumn':
+ action = 'RENAME';
+ effect += ` TO ${columnOperations.newColumnName}`;
+ break;
+
+ // contraints
+ case 'togglePrimary': {
+ if (!columnOperations.isPrimary) {
+ // usually default to user_pkey. need further investigation
+ return `DROP CONSTRAINT users_pkey`;
+ }
+ return `ADD PRIMARY KEY (${effect})`;
+ }
+
+ case 'toggleForeign': {
+ const { hasForeign, foreignConstraint } = columnOperations;
+ if (!hasForeign) {
+ return `DROP CONSTRAINT ${foreignConstraint}`;
+ }
+ return `ADD CONSTRAINT ${foreignConstraint} FOREIGN KEY (${columnName}) REFERENCES ${columnOperations.foreignTable} (${columnOperations.foreignColumn})`;
+ }
+
+ // we are assuminmg postgress will generate a new unique key for us if it is not taken here. risky.
+ case 'toggleUnique': {
+ const { isUnique } = columnOperations;
+ if (!isUnique) {
+ return `DROP CONSTRAINT ${tableName}_${columnName}_key`;
+ }
+ return `ADD UNIQUE (${columnName})`;
+ }
+
+ default:
+ throw new Error(`Invalid tableAction: ${columnAction as string}`);
+ }
+
+ return `${action} COLUMN ${effect}`;
+}
+
+/**
+ * POSTGRESQL OPERATIONS
+ * @param updatesArray
+ * @returns Array of strings
+ */
+
+export function queryMySql(updatesArray: ErdUpdatesType): string[] {
+ const psqlArray: string[] = [];
+ updatesArray.forEach((operation: OperationType) => {
+ const { action, tableName, tableSchema } = operation;
+ switch (action) {
+ // this is adding tables for psql
+ case 'add':
+ psqlArray.push(`CREATE TABLE ${tableSchema}.${tableName};`);
+ break;
+
+ // this is dropping tables for psql
+ case 'drop':
+ psqlArray.push(`DROP TABLE ${tableSchema}.${tableName};`);
+ break;
+
+ // this is altering table name for psql
+ case 'alter': {
+ const { newTableName } = operation;
+ psqlArray.push(
+ `ALTER TABLE ${tableSchema}.${tableName} RENAME TO ${newTableName};`,
+ );
+ break;
+ }
+
+ // this is altering columns name for psql
+ case 'column': {
+ const { columnOperations } = operation;
+ const alterQuery: string = generateMySqlColumnQuery(
+ tableName,
+ columnOperations as PsqlColumnOperations,
+ );
+ psqlArray.push(
+ `ALTER TABLE ${tableSchema}.${tableName} ${alterQuery};`,
+ );
+ break;
+ }
+
+ default:
+ throw new Error(`Invalid action: ${action as string}`);
+ }
+ });
+ return psqlArray;
+}
diff --git a/backend/src/utils/erdCUD/pSqlCUD.ts b/backend/src/utils/erdCUD/pSqlCUD.ts
new file mode 100644
index 00000000..0b99f203
--- /dev/null
+++ b/backend/src/utils/erdCUD/pSqlCUD.ts
@@ -0,0 +1,128 @@
+import {
+ ErdUpdatesType,
+ OperationType,
+ PsqlColumnOperations,
+} from '../../../../shared/types/erTypes';
+
+/**
+ * POSTGRESQL COLUMN HELPER
+ * @param columnOperations
+ * @returns string
+ */
+
+export function generatePostgresColumnQuery(
+ tableName: string,
+ columnOperations: PsqlColumnOperations,
+): string {
+ const { columnAction, columnName } = columnOperations;
+
+ let effect: string = columnName;
+ let action: string;
+
+ switch (columnAction) {
+ case 'addColumn': {
+ action = 'ADD';
+ if (columnOperations.type !== undefined) {
+ // if there is a type
+ effect += ` TYPE ${columnOperations.type}`;
+ }
+ break;
+ }
+
+ case 'dropColumn':
+ action = 'DROP';
+ break;
+
+ // alters
+ case 'alterColumnType':
+ action = 'ALTER';
+ effect += ` TYPE ${columnOperations.type}`;
+ break;
+
+ case 'renameColumn':
+ action = 'RENAME';
+ effect += ` TO ${columnOperations.newColumnName}`;
+ break;
+
+ // contraints
+ case 'togglePrimary': {
+ if (!columnOperations.isPrimary) {
+ // usually default to user_pkey. need further investigation
+ return `DROP CONSTRAINT users_pkey`;
+ }
+ return `ADD PRIMARY KEY (${effect})`;
+ }
+
+ case 'toggleForeign': {
+ const { hasForeign, foreignConstraint } = columnOperations;
+ if (!hasForeign) {
+ return `DROP CONSTRAINT ${foreignConstraint}`;
+ }
+ return `ADD CONSTRAINT ${foreignConstraint} FOREIGN KEY (${columnName}) REFERENCES ${columnOperations.foreignTable} (${columnOperations.foreignColumn})`;
+ }
+
+ // we are assuminmg postgress will generate a new unique key for us if it is not taken here. risky.
+ case 'toggleUnique': {
+ const { isUnique } = columnOperations;
+ if (!isUnique) {
+ return `DROP CONSTRAINT ${tableName}_${columnName}_key`;
+ }
+ return `ADD UNIQUE (${columnName})`;
+ }
+
+ default:
+ throw new Error(`Invalid tableAction: ${columnAction as string}`);
+ }
+
+ return `${action} COLUMN ${effect}`;
+}
+
+/**
+ * POSTGRESQL OPERATIONS
+ * @param updatesArray
+ * @returns Array of strings
+ */
+
+export function queryPostgres(updatesArray: ErdUpdatesType): string[] {
+ const psqlArray: string[] = [];
+ updatesArray.forEach((operation: OperationType) => {
+ const { action, tableName, tableSchema } = operation;
+ switch (action) {
+ // this is adding tables for psql
+ case 'add':
+ psqlArray.push(`CREATE TABLE ${tableSchema}.${tableName};`);
+ break;
+
+ // this is dropping tables for psql
+ case 'drop':
+ psqlArray.push(`DROP TABLE ${tableSchema}.${tableName};`);
+ break;
+
+ // this is altering table name for psql
+ case 'alter': {
+ const { newTableName } = operation;
+ psqlArray.push(
+ `ALTER TABLE ${tableSchema}.${tableName} RENAME TO ${newTableName};`,
+ );
+ break;
+ }
+
+ // this is altering columns name for psql
+ case 'column': {
+ const { columnOperations } = operation;
+ const alterQuery: string = generatePostgresColumnQuery(
+ tableName,
+ columnOperations as PsqlColumnOperations,
+ );
+ psqlArray.push(
+ `ALTER TABLE ${tableSchema}.${tableName} ${alterQuery};`,
+ );
+ break;
+ }
+
+ default:
+ throw new Error(`Invalid action: ${action as string}`);
+ }
+ });
+ return psqlArray;
+}
diff --git a/backend/src/utils/erdTableFunctions.ts b/backend/src/utils/erdTableFunctions.ts
new file mode 100644
index 00000000..439408be
--- /dev/null
+++ b/backend/src/utils/erdTableFunctions.ts
@@ -0,0 +1,44 @@
+import { ErdUpdatesType } from '../../../shared/types/erTypes';
+import { queryPostgres } from './erdCUD/pSqlCUD';
+import { queryMySql } from './erdCUD/mySqlCUD';
+import { querySqLite } from './erdCUD/SqLiteCUD';
+import { DBType } from '../../../shared/types/dbTypes';
+
+function erdUpdatesToQuery(
+ updatesArray: ErdUpdatesType,
+ currentERD: DBType,
+): string {
+ let returnArray: string[] = [];
+
+ // check current dbType of active ERD table and pick a query method
+ // const currentERD = 'pg'; // replace this later with dbState below
+
+ switch (currentERD) {
+ case DBType.Postgres:
+ case DBType.RDSPostgres:
+ returnArray = queryPostgres(updatesArray);
+ break;
+
+ // TODO: queryMySql has not been written.
+ case DBType.MySQL:
+ case DBType.RDSMySQL:
+ returnArray = queryMySql(updatesArray);
+ break;
+
+ // TODO: querySqLite has not been written. it is just a copy of queryPostgres
+ case DBType.SQLite:
+ returnArray = querySqLite(updatesArray);
+ break;
+
+ default:
+ returnArray = [];
+ console.error(`Unknown DBType: ${currentERD}`); // errors for switch question is where does this go to?
+ break;
+ }
+
+ // return array will need to join with space between each query
+
+ return returnArray.join(' ');
+}
+
+export default erdUpdatesToQuery;
diff --git a/backend/ertable-functions.ts b/backend/src/utils/ertable-functions.ts
similarity index 91%
rename from backend/ertable-functions.ts
rename to backend/src/utils/ertable-functions.ts
index 2ddafcd5..1bc2d1b3 100644
--- a/backend/ertable-functions.ts
+++ b/backend/src/utils/ertable-functions.ts
@@ -4,12 +4,12 @@ import {
AlterTablesObjType,
AlterColumnsObjType,
AddConstraintObjType,
-} from '../frontend/types';
+} from '../../../frontend/types';
-import { BackendObjType, DBType } from './BE_types';
+import { BackendObjType, DBType } from '../../../shared/types/dbTypes';
/**
- *
+ *
* @param backendObj object containing info as to what changes are to be made to the database
* @param dbType type of database
* @returns Query string containing all changes to be made to the database
@@ -20,19 +20,21 @@ function backendObjToQuery(backendObj: BackendObjType, dbType: DBType): string {
// Add table to database
/**
- * Function adding commands for adding queries to the output depending on tables that need to be added
+ * Function adding commands for adding queries to the output depending on tables that need to be added
* @param addTableArray holds array of properties of tables to be added to database
* @param alterTablesArray holds table of properties of tables to be altered, and alterations to be made
*/
- function addTable(addTableArray: AddTablesObjType[], alterTablesArray: AlterTablesObjType[]): void {
+ function addTable(
+ addTableArray: AddTablesObjType[],
+ alterTablesArray: AlterTablesObjType[],
+ ): void {
for (let i = 0; i < addTableArray.length; i += 1) {
-
const currTable: AddTablesObjType = addTableArray[i];
const currAlterTable: AlterTablesObjType = alterTablesArray[i];
if (dbType === DBType.Postgres || dbType === DBType.RDSPostgres) {
outputArray.push(
- `CREATE TABLE ${currTable.table_schema}.${currTable.table_name}(); `
+ `CREATE TABLE ${currTable.table_schema}.${currTable.table_name}(); `,
);
}
if (dbType === DBType.MySQL || dbType === DBType.RDSMySQL) {
@@ -42,29 +44,13 @@ function backendObjToQuery(backendObj: BackendObjType, dbType: DBType): string {
(${currAlterTable.addColumns[0].column_name}
${currAlterTable.addColumns[0].data_type}
(${currAlterTable.addColumns[0].character_maximum_length}))
- ;`
+ ;`,
);
}
if (dbType === DBType.SQLite) {
- console.log('TEST')
- // for (let j = 0; j < alterTablesArray.length; j += 1) {
- // console.log(alterTablesArray[j])
- // if (addTableArray[i].table_name === alterTablesArray[j].table_name) {
- // if (alterTablesArray[j].alterColumns.length) {
- // for (let k = 0; k < alterTablesArray[j].alterColumns.length; k += 1) {
- // if (alterTablesArray[j].alterColumns[k].column_name === 'NewColumn1') {
- // firstAddingMySQLColumnName = alterTablesArray[j].alterColumns[k].new_column_name;
- // outputArray.push(
- // `CREATE TABLE ${currTable.table_name}(${alterTablesArray[j].alterColumns[k].new_column_name} ${alterTablesArray[j].alterColumns[k].data_type}(${alterTablesArray[j].alterColumns[k].character_maximum_length}));`
- // );
- // };
- // }
- // }
- // }
- // }
outputArray.push(
- `CREATE TABLE ${currTable.table_name}(id INTEGER PRIMARY KEY AUTOINCREMENT); `
+ `CREATE TABLE ${currTable.table_name}(id INTEGER PRIMARY KEY AUTOINCREMENT); `,
);
}
}
@@ -74,17 +60,16 @@ function backendObjToQuery(backendObj: BackendObjType, dbType: DBType): string {
function dropTable(dropTableArray: DropTablesObjType[]): void {
for (let i = 0; i < dropTableArray.length; i += 1) {
const currTable: DropTablesObjType = dropTableArray[i];
- if (dbType === DBType.Postgres || dbType === DBType.RDSPostgres)
+ if (dbType === DBType.Postgres || dbType === DBType.RDSPostgres) {
outputArray.push(
- `DROP TABLE ${currTable.table_schema}.${currTable.table_name}; `
+ `DROP TABLE ${currTable.table_schema}.${currTable.table_name}; `,
);
+ }
if (dbType === DBType.MySQL || dbType === DBType.RDSMySQL)
outputArray.push(`DROP TABLE ${currTable.table_name}; `);
if (dbType === DBType.SQLite) {
- outputArray.push(
- `DROP TABLE ${currTable.table_name}; `
- );
+ outputArray.push(`DROP TABLE ${currTable.table_name}; `);
}
}
}
@@ -103,14 +88,16 @@ function backendObjToQuery(backendObj: BackendObjType, dbType: DBType): string {
if (currTable.addColumns[i].character_maximum_length != null) {
lengthOfData = `(${currTable.addColumns[i].character_maximum_length})`;
}
- if (firstAddingMySQLColumnName === null || firstAddingMySQLColumnName !== `${currTable.addColumns[i].column_name}`) {
+ if (
+ firstAddingMySQLColumnName === null ||
+ firstAddingMySQLColumnName !==
+ `${currTable.addColumns[i].column_name}`
+ ) {
addColumnString += `ALTER TABLE ${currTable.table_name} ADD COLUMN ${currTable.addColumns[i].column_name} ${currTable.addColumns[i].data_type} ${lengthOfData}; `;
-
}
}
if (dbType === DBType.SQLite)
addColumnString += `ALTER TABLE ${currTable.table_name} ADD COLUMN ${currTable.addColumns[i].column_name} ${currTable.addColumns[i].data_type}(${currTable.addColumns[i].character_maximum_length}); `;
-
}
}
return addColumnString;
@@ -136,7 +123,7 @@ function backendObjToQuery(backendObj: BackendObjType, dbType: DBType): string {
// Add a primary key constraint to column
function addPrimaryKey(
currConstraint: AddConstraintObjType,
- currColumn: AlterColumnsObjType
+ currColumn: AlterColumnsObjType,
): void {
let defaultRowValue: number | string;
if (currColumn.current_data_type === 'character varying')
@@ -151,7 +138,7 @@ function backendObjToQuery(backendObj: BackendObjType, dbType: DBType): string {
// Add a foreign key constraint to column
function addForeignKey(
currConstraint: AddConstraintObjType,
- currColumn: AlterColumnsObjType
+ currColumn: AlterColumnsObjType,
): void {
if (dbType === DBType.Postgres || dbType === DBType.RDSPostgres)
alterTableConstraintString += `ALTER TABLE ${currTable.table_schema}.${currTable.table_name} ADD CONSTRAINT ${currConstraint.constraint_name} FOREIGN KEY ("${currColumn.column_name}") REFERENCES ${currConstraint.foreign_table}(${currConstraint.foreign_column}); `;
@@ -161,7 +148,7 @@ function backendObjToQuery(backendObj: BackendObjType, dbType: DBType): string {
// Add a unique constraint to column
function addUnique(
currConstraint: AddConstraintObjType,
- currColumn: AlterColumnsObjType
+ currColumn: AlterColumnsObjType,
): void {
if (dbType === DBType.Postgres || dbType === DBType.RDSPostgres)
alterTableConstraintString += `ALTER TABLE ${currTable.table_schema}.${currTable.table_name} ADD CONSTRAINT ${currConstraint.constraint_name} UNIQUE (${currColumn.column_name}); `;
@@ -256,10 +243,10 @@ function backendObjToQuery(backendObj: BackendObjType, dbType: DBType): string {
const currTable: AlterTablesObjType = alterTableArray[i];
outputArray.push(
`${addColumn(currTable)}${dropColumn(currTable)}${alterType(
- currTable
+ currTable,
)}${alterTableConstraint(currTable)}${alterNotNullConstraint(
- currTable
- )}${alterMaxCharacterLength(currTable)}`
+ currTable,
+ )}${alterMaxCharacterLength(currTable)}`,
);
}
}
@@ -308,8 +295,8 @@ function backendObjToQuery(backendObj: BackendObjType, dbType: DBType): string {
currAlterColumn.rename_constraint[0] === 'p'
? 'pk'
: 'f'
- ? 'fk'
- : 'unique',
+ ? 'fk'
+ : 'unique',
column_name: currAlterColumn.new_column_name
? currAlterColumn.new_column_name
: currAlterColumn.column_name,
@@ -379,5 +366,4 @@ function backendObjToQuery(backendObj: BackendObjType, dbType: DBType): string {
return outputArray.join('');
}
-
export default backendObjToQuery;
diff --git a/backend/helperFunctions.ts b/backend/src/utils/helperFunctions.ts
similarity index 67%
rename from backend/helperFunctions.ts
rename to backend/src/utils/helperFunctions.ts
index 8bf6cdc3..740b101d 100644
--- a/backend/helperFunctions.ts
+++ b/backend/src/utils/helperFunctions.ts
@@ -1,8 +1,7 @@
/* eslint-disable object-shorthand */
-import { DBType } from './BE_types';
-
-const { exec } = require('child_process'); // Child_Process: Importing Node.js' child_process API
-const docConfig = require('./_documentsConfig');
+import { exec } from 'child_process'; // Child_Process: Importing Node.js' child_process API
+import { DBType } from '../../../shared/types/dbTypes';
+import docConfig from '../models/configModel';
// ************************************** CLI COMMANDS & SQL Queries TO CREATE, DELETE, COPY DB SCHEMA, etc. ************************************** //
// Generate SQL queries & CLI commands to be executed in pg and child process respectively
@@ -63,7 +62,7 @@ const helperFunctions: HelperFunctions = {
const PG = `BEGIN; EXPLAIN (FORMAT JSON, ANALYZE, VERBOSE, BUFFERS) ${sqlString}; ROLLBACK`;
// const MYSQL = `BEGIN; EXPLAIN ANALYZE ${sqlString}`;
const MYSQL = `EXPLAIN ANALYZE ${sqlString}`;
- const SQLite = `EXPLAIN QUERY PLAN ${sqlString}`
+ const SQLite = `EXPLAIN QUERY PLAN ${sqlString}`;
if (dbType === DBType.Postgres || dbType === DBType.RDSPostgres) return PG;
if (dbType === DBType.MySQL || dbType === DBType.RDSMySQL) return MYSQL;
@@ -74,8 +73,8 @@ const helperFunctions: HelperFunctions = {
// import SQL file into new DB created
runSQLFunc: function runSQLFunc(dbName, file, dbType: DBType) {
const SQL_data = docConfig.getFullConfig();
- const PG = `psql -U ${SQL_data.pg.user} -d "${dbName}" -f "${file}" -p ${SQL_data.pg.port}`;
- const MYSQL = `export MYSQL_PWD='${SQL_data.mysql.password}'; mysql -u${SQL_data.mysql.user} --port=${SQL_data.mysql.port} ${dbName} < ${file}`;
+ const PG = `PGPASSWORD=${SQL_data?.pg_options.password} psql -U ${SQL_data?.pg_options.user} -d "${dbName}" -f "${file}" -p ${SQL_data?.pg_options.port}`;
+ const MYSQL = `export MYSQL_PWD='${SQL_data?.mysql_options.password}'; mysql -u${SQL_data?.mysql_options.user} --port=${SQL_data?.mysql_options.port} ${dbName} < ${file}`;
if (dbType === DBType.Postgres || dbType === DBType.RDSPostgres) return PG;
if (dbType === DBType.MySQL || dbType === DBType.RDSMySQL) return MYSQL;
return 'invalid dbtype';
@@ -84,8 +83,8 @@ const helperFunctions: HelperFunctions = {
// import TAR file into new DB created
runTARFunc: function runTARFunc(dbName, file, dbType: DBType) {
const SQL_data = docConfig.getFullConfig();
- const PG = `pg_restore -U ${SQL_data.pg.user} -p ${SQL_data.pg.port} -d "${dbName}" "${file}" `;
- const MYSQL = `export MYSQL_PWD='${SQL_data.mysql.password}'; mysqldump -u ${SQL_data.mysql.user} --port=${SQL_data.mysql.port} ${dbName} > ${file}`;
+ const PG = `PGPASSWORD=${SQL_data?.pg_options.password} pg_restore -U ${SQL_data?.pg_options.user} -p ${SQL_data?.pg_options.port} -d "${dbName}" "${file}" `;
+ const MYSQL = `export MYSQL_PWD='${SQL_data?.mysql_options.password}'; mysqldump -u ${SQL_data?.mysql_options.user} --port=${SQL_data?.mysql_options.port} ${dbName} > ${file}`;
if (dbType === DBType.Postgres || dbType === DBType.RDSPostgres) return PG;
if (dbType === DBType.MySQL || dbType === DBType.RDSMySQL) return MYSQL;
return 'invalid dbtype';
@@ -95,11 +94,11 @@ const helperFunctions: HelperFunctions = {
runFullCopyFunc: function runFullCopyFunc(
dbCopyName,
newFile,
- dbType: DBType
+ dbType: DBType,
) {
const SQL_data = docConfig.getFullConfig();
- const PG = `pg_dump -U ${SQL_data.pg.user} -p ${SQL_data.pg.port} -Fp -d ${dbCopyName} > "${newFile}"`;
- const MYSQL = `export MYSQL_PWD='${SQL_data.mysql.password}'; mysqldump -h localhost -u ${SQL_data.mysql.user} ${dbCopyName} > ${newFile}`;
+ const PG = `PGPASSWORD=${SQL_data?.pg_options.password} pg_dump -s -U ${SQL_data?.pg_options.user} -p ${SQL_data?.pg_options.port} -Fp -d ${dbCopyName} > "${newFile}"`;
+ const MYSQL = `export MYSQL_PWD='${SQL_data?.mysql_options.password}'; mysqldump -h localhost -u ${SQL_data?.mysql_options.user} ${dbCopyName} > ${newFile}`;
if (dbType === DBType.Postgres || dbType === DBType.RDSPostgres) return PG;
if (dbType === DBType.MySQL || dbType === DBType.RDSMySQL) return MYSQL;
return 'invalid dbtype';
@@ -109,11 +108,11 @@ const helperFunctions: HelperFunctions = {
runHollowCopyFunc: function runHollowCopyFunc(
dbCopyName,
file,
- dbType: DBType
+ dbType: DBType,
) {
const SQL_data = docConfig.getFullConfig();
- const PG = `pg_dump -s -U ${SQL_data.pg.user} -p ${SQL_data.pg.port} -F p -d "${dbCopyName}" > "${file}"`;
- const MYSQL = `export MYSQL_PWD='${SQL_data.mysql.password}'; mysqldump -h localhost -u ${SQL_data.mysql.user} --port=${SQL_data.mysql.port} ${dbCopyName} > ${file}`;
+ const PG = ` PGPASSWORD=${SQL_data?.pg_options.password} pg_dump -s -U ${SQL_data?.pg_options.user} -p ${SQL_data?.pg_options.port} -F p -d "${dbCopyName}" > "${file}"`;
+ const MYSQL = `export MYSQL_PWD='${SQL_data?.mysql_options.password}'; mysqldump -h localhost -u ${SQL_data?.mysql_options.user} --port=${SQL_data?.mysql_options.port} ${dbCopyName} > ${file}`;
if (dbType === DBType.Postgres || dbType === DBType.RDSPostgres) return PG;
if (dbType === DBType.MySQL || dbType === DBType.RDSMySQL) return MYSQL;
return 'invalid dbtype';
@@ -122,16 +121,21 @@ const helperFunctions: HelperFunctions = {
// promisified execute to execute commands in the child process
promExecute: (cmd: string) =>
new Promise((resolve, reject) => {
- exec(cmd, {
- timeout: 5000,
- env: { PGPASSWORD: docConfig.getFullConfig().pg.password },
- }, (error, stdout, stderr) => {
- if (error) {
- return reject(error);
- }
- if (stderr) return reject(new Error(stderr));
- return resolve({ stdout, stderr });
- });
+ exec(
+ cmd,
+ {
+ timeout: 5000,
+ // env: { PGPASSWORD: docConfig.getFullConfig().pg.password },
+ },
+ (error, stdout, stderr) => {
+ if (error) {
+ console.log('ERROR in helperfunctions - promExecute', error);
+ return reject(error);
+ }
+ if (stderr) return reject(new Error(stderr));
+ return resolve({ stdout, stderr });
+ },
+ );
}),
};
diff --git a/backend/Logging/masterlog.ts b/backend/src/utils/logging/masterlog.ts
similarity index 91%
rename from backend/Logging/masterlog.ts
rename to backend/src/utils/logging/masterlog.ts
index c399029a..b0865fb1 100644
--- a/backend/Logging/masterlog.ts
+++ b/backend/src/utils/logging/masterlog.ts
@@ -1,6 +1,7 @@
/* eslint-disable func-names */
/* eslint-disable @typescript-eslint/no-unused-vars */
-import { LogType } from '../BE_types';
+// import { LogType } from '@mytypes/dbTypes';
+import { LogType } from '../../../../shared/types/dbTypes';
// file to print color coded logs in the console
@@ -14,7 +15,7 @@ const logger = function (
message: string,
logType: LogType = LogType.NORMAL,
opt1?,
- opt2?
+ opt2?,
) {
// Code for the log color
let colorCode = 0;
@@ -62,7 +63,7 @@ const logger = function (
console.log(
`\u001b[1;${colorCode}m ${`[${logType}] ${message + moreText}`}` +
- `\u001b[1;0m`
+ '\u001b[1;0m',
);
saveLogMessage(`[${logType}] ${message}`);
};
diff --git a/frontend/components/App.tsx b/frontend/components/App.tsx
index 511ecf85..77127a6e 100644
--- a/frontend/components/App.tsx
+++ b/frontend/components/App.tsx
@@ -1,49 +1,79 @@
-import React, { useState, useEffect } from 'react';
-import '../lib/style.css'
-import styled from 'styled-components';
-import { ThemeProvider, Theme, StyledEngineProvider } from '@mui/material/';
+import { EventEmitter } from 'events';
+import { StyledEngineProvider, Theme, ThemeProvider } from '@mui/material/';
import CssBaseline from '@mui/material/CssBaseline';
-import { IpcRendererEvent, ipcRenderer } from 'electron';
-import {
- MuiTheme,
- bgColor,
- sidebarWidth,
- defaultMargin,
- sidebarShowButtonSize,
-} from '../style-variables';
+import React, { useEffect, useMemo, useReducer, useRef, useState } from 'react';
+import styled from 'styled-components';
+
+import { ipcRenderer, IpcRendererEvent } from 'electron';
import GlobalStyle from '../GlobalStyle';
+
+import { DBType } from '../../backend/BE_types';
+import { createQuery } from '../lib/queries';
+import '../lib/style.css';
import {
AppState,
CreateNewQuery,
- QueryData,
- isDbLists,
DatabaseInfo,
- TableInfo,
DbLists,
+ isDbLists,
+ QueryData,
+ TableInfo,
} from '../types';
-import { DBType } from '../../backend/BE_types';
-import { createQuery } from '../lib/queries';
+
+import {
+ bgColor,
+ defaultMargin,
+ MuiTheme,
+ sidebarShowButtonSize,
+ sidebarWidth,
+} from '../style-variables';
+
import Sidebar from './sidebar/Sidebar';
-import QueryView from './views/QueryView/QueryView';
-import DbView from './views/DbView/DbView';
+
import CompareView from './views/CompareView/CompareView';
-import QuickStartView from './views/QuickStartView';
+import DbView from './views/DbView/DbView';
import NewSchemaView from './views/NewSchemaView/NewSchemaView';
+import QueryView from './views/QueryView/QueryView';
+import QuickStartView from './views/QuickStartView';
+import ThreeDView from './views/ThreeDView/ThreeDView';
+
import FeedbackModal from './modal/FeedbackModal';
import Spinner from './modal/Spinner';
-import { once } from '../lib/utils';
-import CreateDBDialog from './Dialog/CreateDBDialog';
+
import ConfigView from './Dialog/ConfigView';
-import ThreeDView from './views/ThreeDView/ThreeDView';
+import CreateDBDialog from './Dialog/CreateDBDialog';
+import MenuContext from '../state_management/Contexts/MenuContext';
+import menuReducer, {
+ initialMenuState,
+ submitAsyncToBackend,
+} from '../state_management/Reducers/MenuReducers';
+import invoke from '../lib/electronHelper';
+
+import {
+ appViewStateReducer,
+ AppViewState,
+} from '../state_management/Reducers/AppViewReducer';
+import {
+ AppViewContextState,
+ AppViewContextDispatch,
+} from '../state_management/Contexts/AppViewContext';
+
+// Query Context and Reducer Imports
+import {
+ QueryContextState,
+ QueryContextDispatch,
+} from '../state_management/Contexts/QueryContext';
+import {
+ queryReducer,
+ QueryState,
+} from '../state_management/Reducers/QueryReducers';
declare module '@mui/material/styles/' {
// eslint-disable-next-line @typescript-eslint/no-empty-interface
- interface DefaultTheme extends Theme { }
+ interface DefaultTheme extends Theme {}
}
-const EventEmitter = require('events');
-
const emitter = new EventEmitter();
emitter.setMaxListeners(20);
@@ -58,26 +88,60 @@ const Main = styled.main<{ $fullwidth: boolean }>`
grid-area: ${({ $fullwidth }) => ($fullwidth ? '1 / 1 / -1 / -1' : 'main')};
background: ${bgColor};
height: calc(100vh - (2 * ${defaultMargin}));
- max-width: ${({ $fullwidth }) => ($fullwidth ? '' : `calc(90vw - ${sidebarWidth} )`)};
+ max-width: ${({ $fullwidth }) =>
+ $fullwidth ? '' : `calc(90vw - ${sidebarWidth} )`};
padding: ${defaultMargin} ${sidebarShowButtonSize};
margin: 0;
`;
-// emitting with no payload requests backend to send back a db-lists event with list of dbs
-const requestDbListOnce = once(() => ipcRenderer.send('return-db-list'));
+function App() {
+ /**
+ * Reducers
+ * useMemo prevents rerenders when state does not change. necessary because of useContext
+ */
+ const [menuState, menuDispatch] = useReducer(menuReducer, initialMenuState);
+ const menuProvider = useMemo(
+ () => ({ state: menuState, dispatch: menuDispatch }),
+ [menuState],
+ );
+
+ // initializing the initial viewState object
+ // this is the app views that will be passed through a provider to any children components wrapped in it. Right now, only sidebar is wrapped in it.
+ const initialAppViewState: AppViewState = {
+ selectedView: 'dbView',
+ sideBarIsHidden: false,
+ showConfigDialog: false,
+ showCreateDialog: false,
+ PG_isConnected: false,
+ MYSQL_isConnected: false,
+ };
-const App = () => {
- const [queries, setQueries] = useState({});
- const [comparedQueries, setComparedQueries] = useState(
- {}
+ const initialQueryState: QueryState = {
+ queries: {},
+ comparedQueries: {},
+ workingQuery: undefined,
+ newFilePath: '',
+ };
+
+ // creating the reducer to reduce all state changes to a single state object
+ // This reducer manages all the state calls for the app views
+ const [appViewState, appViewDispatch] = useReducer(
+ appViewStateReducer,
+ initialAppViewState,
+ );
+ // this reducer manages query states
+ const [queryState, queryDispatch] = useReducer(
+ queryReducer,
+ initialQueryState,
);
- const [workingQuery, setWorkingQuery] = useState();
- const [selectedView, setSelectedView] =
- useState('dbView');
+
+ // tablesReducer stuff here
+
+ // ---
+ // In the future, we'd love to see all of these state varaiables to be condensed to their own reducer.
const [selectedDb, setSelectedDb] = useState('');
- const [sidebarIsHidden, setSidebarHidden] = useState(false);
- const [newFilePath, setFilePath] = useState('');
+
const [ERView, setERView] = useState(true);
const [DBInfo, setDBInfo] = useState();
@@ -86,26 +150,18 @@ const App = () => {
const [dbTables, setTables] = useState([]);
const [selectedTable, setSelectedTable] = useState();
- const [PG_isConnected, setPGStatus] = useState(false);
- const [MYSQL_isConnected, setMYSQLStatus] = useState(false);
- const [showCreateDialog, setCreateDialog] = useState(false);
- const [showConfigDialog, setConfigDialog] = useState(false);
-
+ // reverted to db-list event listener
+ // TODO: refactor event handlers in back end to return db list rather than emit event
useEffect(() => {
// Listen to backend for updates to list of available databases
const dbListFromBackend = (evt: IpcRendererEvent, dbLists: DbLists) => {
if (isDbLists(dbLists)) {
setDBInfo(dbLists.databaseList);
setTables(dbLists.tableList);
- setPGStatus(dbLists.databaseConnected.PG);
- setMYSQLStatus(dbLists.databaseConnected.MySQL);
-
setSelectedTable(selectedTable || dbTables[0]);
}
};
- ipcRenderer.on('db-lists', dbListFromBackend); // dummy data error here?
- requestDbListOnce();
-
+ ipcRenderer.on('db-lists', dbListFromBackend);
// return cleanup function
return () => {
ipcRenderer.removeListener('db-lists', dbListFromBackend);
@@ -113,22 +169,59 @@ const App = () => {
});
/**
- * Hook to create new Query from data
+ * New central source of async calls
*/
- const createNewQuery: CreateNewQuery = (query: QueryData) => {
- // Only save query to saved queries if it contains all minimum information
- if (query.label && query.db && query.sqlString && query.group) {
- const newQueries = createQuery(queries, query);
- setQueries(newQueries);
+ const asyncCount = useRef(0);
+ useEffect(() => {
+ const { issued, resolved, asyncList } = menuState.loading;
+ // Check that we are here because a new async was issued
+ if (issued - resolved > asyncCount.current) {
+ /**
+ * FLOW: new async request
+ * - async call submitted by component
+ * - menuReducer adds request to tracked ongoing asyncs
+ * - this useEffect triggers; something in the state contains necessary info to launch invoke
+ *
+ * NOTE: moved this logic to MenuReducers to keep logic localized and utilize
+ * dependency injection for testing purposes
+ */
+ submitAsyncToBackend(issued, asyncList, invoke, menuDispatch);
}
- // we must set working query to newly created query otherwise query view won't update
- setWorkingQuery(query);
- };
+ // keep track of ongoing asyncs in this useRef, even when arriving here as an async resolves
+ asyncCount.current = issued - resolved;
+ }, [menuState.loading]);
+
+ // populate initial dblist
+ useEffect(() => {
+ const dbListFromBackend = (dbLists: DbLists) => {
+ setDBInfo(dbLists.databaseList);
+ setTables(dbLists.tableList);
+ appViewDispatch({
+ type: 'IS_PG_CONNECTED',
+ payload: dbLists.databaseConnected.PG,
+ });
+
+ appViewDispatch({
+ type: 'IS_MYSQL_CONNECTED',
+ payload: dbLists.databaseConnected.MySQL,
+ });
+
+ // setSelectedTable(selectedTable || dbTables[0]);
+ };
+ menuDispatch({
+ type: 'ASYNC_TRIGGER',
+ loading: 'LOADING',
+ options: {
+ event: 'return-db-list',
+ callback: dbListFromBackend,
+ },
+ });
+ }, []);
// determine which view should be visible depending on selected view and
// prerequisites for each view
- let shownView: AppState['selectedView'];
- switch (selectedView) {
+ let shownView;
+ switch (appViewState.selectedView) {
case 'compareView':
shownView = 'compareView';
break;
@@ -140,7 +233,7 @@ const App = () => {
shownView = 'dbView';
break;
case 'queryView':
- if (!queries.selected && !selectedDb) {
+ if (!queryState.queries?.selected && !selectedDb) {
shownView = 'quickStartView';
break;
}
@@ -161,99 +254,92 @@ const App = () => {
// Styled Components must be injected last in order to override Material UI style: https://material-ui.com/guides/interoperability/#controlling-priority-3
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- setConfigDialog(false)}
- />
- setCreateDialog(false)}
- />
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ appViewDispatch({ type: 'TOGGLE_CONFIG_DIALOG' })
+ }
+ />
+
+ appViewDispatch({ type: 'TOGGLE_CREATE_DIALOG' })
+ }
+ />
+
+
+
+
+
+
);
-};
+}
export default App;
diff --git a/frontend/components/Dialog/ConfigView.tsx b/frontend/components/Dialog/ConfigView.tsx
index c77da409..9ef97ea4 100644
--- a/frontend/components/Dialog/ConfigView.tsx
+++ b/frontend/components/Dialog/ConfigView.tsx
@@ -1,5 +1,5 @@
-import React, { useState, useEffect } from 'react';
-import { IpcRendererEvent, ipcRenderer, remote } from 'electron';
+import React, { useState, useEffect, useContext } from 'react';
+import { ipcRenderer } from 'electron';
import {
Box,
Tab,
@@ -16,6 +16,8 @@ import {
StyledTextField,
} from '../../style-variables';
import '../../lib/style.css';
+import { DocConfigFile } from '../../../backend/BE_types';
+import MenuContext from '../../state_management/Contexts/MenuContext';
/*
junaid
@@ -43,13 +45,14 @@ function TabPanel(props: TabPanelProps) {
{...other}
>
{value === index && (
-
{children}
@@ -65,7 +68,10 @@ function a11yProps(index: number) {
};
}
-const BasicTabs = ({ onClose }: BasicTabsProps) => {
+function BasicTabs({ onClose }: BasicTabsProps) {
+ // context for async calls
+ const { dispatch: menuDispatch } = useContext(MenuContext);
+
// useState hooks for database connection information
const [mysql, setmysql] = useState({});
const [pg, setpg] = useState({});
@@ -91,24 +97,24 @@ const BasicTabs = ({ onClose }: BasicTabsProps) => {
sqlite: [], // added sqlite
});
- // function to store user-selected file path in state
- const designateFile = function (path, setPath) {
- const { dialog } = remote;
- const WIN = remote.getCurrentWindow();
-
+ const designateFile = (setPath) => {
const options = {
- title: "Select SQLite File",
+ title: 'Select SQLite File',
defaultPath: '',
- buttonLabel: "Select File", filters: [
- { name: 'db', extensions: ['db'] }
- ]
- }
-
- dialog.showOpenDialog(WIN, options)
- .then((res: any) => {
- setPath({ path: res.filePaths[0] })
- });
- }
+ buttonLabel: 'Select File',
+ filters: [{ name: 'db', extensions: ['db'] }],
+ };
+ const setPathCallback = (val) => setPath({ path: val });
+ menuDispatch({
+ type: 'ASYNC_TRIGGER',
+ loading: 'LOADING',
+ options: {
+ event: 'showOpenDialog',
+ payload: options,
+ callback: setPathCallback,
+ },
+ });
+ };
// Function to make StyledTextFields and store them in inputFieldsToRender state
function inputFieldMaker(dbTypeFromState, setDbTypeFromState, dbString) {
@@ -116,10 +122,14 @@ const BasicTabs = ({ onClose }: BasicTabsProps) => {
const arrayToRender: JSX.Element[] = [];
if (dbString === 'sqlite') {
arrayToRender.push(
- designateFile(dbTypeFromState, setDbTypeFromState)}>
+ designateFile(setDbTypeFromState)}
+ >
Set db file location
-
- )
+ ,
+ );
} else {
// Get key value pairs from passed in database connection info from state
Object.entries(dbTypeFromState).forEach((entry) => {
@@ -152,7 +162,6 @@ const BasicTabs = ({ onClose }: BasicTabsProps) => {
}
// Push StyledTextField to temporary render array for current key in database connection object from state
-
arrayToRender.push(
{
}}
// Spread special password props if they exist
{...styledTextFieldProps}
- />
+ />,
);
-
});
}
// Update state for our current database type passing in our temporary array of StyledTextField components
@@ -187,21 +195,24 @@ const BasicTabs = ({ onClose }: BasicTabsProps) => {
useEffect(() => {
// Listen to backend for updates to list of available databases
- const configFromBackend = (evt: IpcRendererEvent, config) => {
+ const configFromBackend = (config: DocConfigFile) => {
// Set state based on parsed config.json object received from backend
- setmysql({ ...config.mysql });
- setpg({ ...config.pg });
- setrds_mysql({ ...config.rds_mysql });
- setrds_pg({ ...config.rds_pg });
- setSqlite({ ...config.sqlite }); // added sqlite
+ setmysql({ ...config.mysql_options });
+ setpg({ ...config.pg_options });
+ setrds_mysql({ ...config.rds_mysql_options });
+ setrds_pg({ ...config.rds_pg_options });
+ setSqlite({ ...config.sqlite_options }); // added sqlite
};
- ipcRenderer.on('get-config', configFromBackend);
- ipcRenderer.invoke('get-config');
- // return cleanup function
- return () => {
- ipcRenderer.removeListener('get-config', configFromBackend);
- };
- }, []);
+
+ menuDispatch({
+ type: 'ASYNC_TRIGGER',
+ loading: 'LOADING',
+ options: {
+ event: 'get-config',
+ callback: configFromBackend,
+ },
+ });
+ }, [menuDispatch]);
// Invoke functions to generate input StyledTextFields components -- passing in state, setstate hook, and database name string.
// have it subscribed to changes in db connection info or show password button. Separate hooks to not rerender all fields each time
@@ -227,28 +238,52 @@ const BasicTabs = ({ onClose }: BasicTabsProps) => {
const handleSubmit = () => {
// Pass database connection values from state to backend
- ipcRenderer
- .invoke('set-config', {
- mysql: { ...mysql },
- pg: { ...pg },
- rds_mysql: { ...rds_mysql },
- rds_pg: { ...rds_pg },
- sqlite: { ...sqlite }, // added sqlite
- })
- .then(() => {
- handleClose();
- })
- .catch((err) => {
- sendFeedback({
- type: 'error',
- message: err ?? 'Failed to save config.',
- });
- });
+ // OLD CODE
+ // ipcRenderer
+ // .invoke('set-config', {
+ // mysql_options: { ...mysql },
+ // pg_options: { ...pg },
+ // rds_mysql_options: { ...rds_mysql },
+ // rds_pg_options: { ...rds_pg },
+ // sqlite_options: { ...sqlite }, // added sqlite
+ // })
+ // .then(() => {
+ // handleClose();
+ // })
+ // .catch((err) => {
+ // sendFeedback({
+ // type: 'error',
+ // message: err ?? 'Failed to save config.',
+ // });
+ // });
+
+ menuDispatch({
+ type: 'ASYNC_TRIGGER',
+ loading: 'LOADING',
+ options: {
+ event: 'set-config',
+ payload: {
+ mysql_options: { ...mysql },
+ pg_options: { ...pg },
+ rds_mysql_options: { ...rds_mysql },
+ rds_pg_options: { ...rds_pg },
+ sqlite_options: { ...sqlite },
+ },
+ callback: handleClose,
+ },
+ });
};
+
// Function to handle onChange -- when tab panels change
const handleChange = (event: React.SyntheticEvent, newValue: number) => {
// On panel change reset all passwords to hidden
- setShowpass({ mysql: false, pg: false, rds_mysql: false, rds_pg: false, sqlite: false });
+ setShowpass({
+ mysql: false,
+ pg: false,
+ rds_mysql: false,
+ rds_pg: false,
+ sqlite: false,
+ });
// Change which tab panel is hidden/shown
setValue(newValue);
};
@@ -264,11 +299,17 @@ const BasicTabs = ({ onClose }: BasicTabsProps) => {
value={value}
onChange={handleChange}
aria-label="wrapped label basic tabs"
- className='db-login-tabs'
+ className="db-login-tabs"
>
- {dbNames.map((db, idx) =>
-
- )}
+ {dbNames.map((db, idx) => (
+
+ ))}
@@ -288,22 +329,30 @@ const BasicTabs = ({ onClose }: BasicTabsProps) => {
-
+
Cancel
-
+
Save
);
-};
+}
interface ConfigViewProps {
show: boolean;
onClose: () => void;
}
-const ConfigView = ({ show, onClose }: ConfigViewProps) => {
+function ConfigView({ show, onClose }: ConfigViewProps) {
const handleClose = () => {
onClose();
};
@@ -322,6 +371,6 @@ const ConfigView = ({ show, onClose }: ConfigViewProps) => {
);
-};
+}
export default ConfigView;
diff --git a/frontend/components/Dialog/CreateDBDialog.tsx b/frontend/components/Dialog/CreateDBDialog.tsx
index d127c3e0..16a4a243 100644
--- a/frontend/components/Dialog/CreateDBDialog.tsx
+++ b/frontend/components/Dialog/CreateDBDialog.tsx
@@ -1,9 +1,5 @@
-import React, { useState } from 'react';
-import {
- DialogTitle,
- Dialog,
- Tooltip
-} from '@mui/material/';
+import React, { useContext, useState } from 'react';
+import { DialogTitle, Dialog, Tooltip } from '@mui/material/';
import { ipcRenderer } from 'electron';
import { DatabaseInfo } from '../../types';
import { DBType } from '../../../backend/BE_types';
@@ -18,15 +14,17 @@ import {
StyledNativeDropdown,
StyledNativeOption,
} from '../../style-variables';
+import MenuContext from '../../state_management/Contexts/MenuContext';
interface CreateDBDialogProps {
- show: boolean,
+ show: boolean;
DBInfo: DatabaseInfo[] | undefined;
onClose: () => void;
-};
+}
-const CreateDBDialog = ({ show, DBInfo, onClose }: CreateDBDialogProps) => {
+function CreateDBDialog({ show, DBInfo, onClose }: CreateDBDialogProps) {
if (!show) return <>>;
+ const { dispatch: menuDispatch } = useContext(MenuContext);
const [newDbName, setNewDbName] = useState('');
const [isError, setIsError] = useState(false);
@@ -72,28 +70,34 @@ const CreateDBDialog = ({ show, DBInfo, onClose }: CreateDBDialogProps) => {
setNewDbName(dbSafeName);
};
- const handleSubmit = () => {
+ const handleSubmit = (handleClose) => {
// it needs to be as any because otherwise typescript thinks it doesn't have a 'value' param idk why
const dbt: DBType = (document.getElementById('dbTypeDropdown') as any)
.value;
- ipcRenderer
- .invoke(
- 'initialize-db',
- {
- newDbName,
- },
- dbt
- )
- .then(() => {
- handleClose();
- })
- .catch((err) => {
- sendFeedback({
- type: 'error',
- message: err ?? 'Failed to initialize db',
- });
- });
+ // ipcRenderer
+ // .invoke('initialize-db', {
+ // newDbName,
+ // dbType: dbt,
+ // })
+ // .then(() => {
+ // handleClose();
+ // })
+ // .catch((err) => {
+ // sendFeedback({
+ // type: 'error',
+ // message: err ?? 'Failed to initialize db',
+ // });
+ // });
+ menuDispatch({
+ type: 'ASYNC_TRIGGER',
+ loading: 'LOADING',
+ options: {
+ event: 'initialize-db',
+ payload: { newDbName, dbType: dbt },
+ callback: handleClose,
+ },
+ });
};
return (
@@ -140,9 +144,7 @@ const CreateDBDialog = ({ show, DBInfo, onClose }: CreateDBDialogProps) => {
Postgres
-
- MySQL
-
+ MySQL
RDS Postgres
@@ -167,7 +169,9 @@ const CreateDBDialog = ({ show, DBInfo, onClose }: CreateDBDialogProps) => {
{ } : handleSubmit}
+ onClick={
+ isEmpty || isError ? () => {} : () => handleSubmit(handleClose)
+ }
>
Confirm
@@ -175,6 +179,6 @@ const CreateDBDialog = ({ show, DBInfo, onClose }: CreateDBDialogProps) => {
);
-};
+}
export default CreateDBDialog;
diff --git a/frontend/components/modal/AddNewDbModalCorrect.tsx b/frontend/components/modal/AddNewDbModalCorrect.tsx
index 15ac3541..6c9282cf 100644
--- a/frontend/components/modal/AddNewDbModalCorrect.tsx
+++ b/frontend/components/modal/AddNewDbModalCorrect.tsx
@@ -1,8 +1,7 @@
-import React, { useState } from 'react';
+import path from 'path';
+import React, { useContext, useState } from 'react';
import { Dialog, DialogTitle, Tooltip } from '@mui/material/';
import CloudUploadIcon from '@mui/icons-material/CloudUpload';
-import { ipcRenderer, remote } from 'electron';
-import { sendFeedback } from '../../lib/utils';
import {
ButtonContainer,
TextFieldContainer,
@@ -14,13 +13,7 @@ import {
StyledNativeOption,
} from '../../style-variables';
import { DBType } from '../../../backend/BE_types';
-
-const { dialog } = remote;
-
-interface ImportPayload {
- newDbName: string;
- filePath: string;
-}
+import MenuContext from '../../state_management/Contexts/MenuContext';
type AddNewDbModalProps = {
open: boolean;
@@ -29,12 +22,14 @@ type AddNewDbModalProps = {
curDBType: DBType | undefined;
};
-const AddNewDbModal = ({
+function AddNewDbModal({
open,
onClose,
dbNames,
curDBType,
-}: AddNewDbModalProps) => {
+}: AddNewDbModalProps) {
+ const { dispatch: menuDispatch } = useContext(MenuContext);
+
const [newDbName, setNewDbName] = useState('');
const [isError, setIsError] = useState(false);
const [isEmpty, setIsEmpty] = useState(true);
@@ -79,45 +74,43 @@ const AddNewDbModal = ({
};
// Opens modal to select file and sends the selected file to backend
- const handleFileClick = () => {
- const dbt: DBType = (document.getElementById('dbTypeDropdown') as any).value;
- // console.log('curDBType in addnewdbmodalcorrect', curDBType)
- // console.log('newdbName in addnewdbmodalcorrect', newDbName)
- // console.log('dbt in addnewdbmodalcorrect', dbt)
- dialog
- .showOpenDialog({
- properties: ['openFile'],
- filters: [{ name: 'Custom File Type', extensions: ['sql', 'tar'] }],
- message: 'Please upload .sql or .tar database file',
- })
- .then((result) => {
- if (result.canceled) return;
-
- if (!result.filePaths.length) {
- sendFeedback({
- type: 'warning',
- message: 'No file was selected',
- });
- return;
- }
-
- const payload: ImportPayload = {
- newDbName,
- filePath: result.filePaths[0],
- };
-
-
- ipcRenderer.invoke('import-db', payload, dbt).catch(() =>
- sendFeedback({
- type: 'error',
- message: 'Failed to import database',
- })
- );
- })
- .catch((err: object) => {
- // console.log(err);
- })
- .finally(handleClose);
+ const handleDBimport = (dbName: string, closeModal: () => void) => {
+ // TODO: fix the any type.
+ const dbt: DBType = (document.getElementById('dbTypeDropdown') as any)
+ .value;
+ const options = {
+ title: 'Import DB',
+ defaultPath: path.join(__dirname, '../assets/'),
+ buttonLabel: 'Import',
+ filters: [
+ {
+ name: 'Custom File Type',
+ extensions: ['sql', 'tar'],
+ },
+ ],
+ };
+ // this runs after opendialog resolves, use as callback
+ const importdb = (filePath: string) => {
+ menuDispatch({
+ type: 'ASYNC_TRIGGER',
+ loading: 'LOADING',
+ options: {
+ event: 'import-db',
+ payload: { newDbName: dbName, filePath, dbType: dbt }, // see importDb for type reqs
+ callback: closeModal,
+ },
+ });
+ };
+ // initial async call
+ menuDispatch({
+ type: 'ASYNC_TRIGGER',
+ loading: 'LOADING',
+ options: {
+ event: 'showOpenDialog',
+ payload: options,
+ callback: importdb,
+ },
+ });
};
return (
@@ -150,14 +143,20 @@ const AddNewDbModal = ({
-
+
Database Type
- Postgres
+
+ Postgres
+
MySQL
@@ -173,7 +172,11 @@ const AddNewDbModal = ({
variant="contained"
color="primary"
startIcon={ }
- onClick={isEmpty || isError ? () => {} : handleFileClick}
+ onClick={
+ isEmpty || isError
+ ? () => {}
+ : () => handleDBimport(newDbName, handleClose)
+ }
>
Import
@@ -181,6 +184,6 @@ const AddNewDbModal = ({
);
-};
+}
export default AddNewDbModal;
diff --git a/frontend/components/modal/DummyDataModal.tsx b/frontend/components/modal/DummyDataModal.tsx
index 5bd06e6c..25ee0e41 100644
--- a/frontend/components/modal/DummyDataModal.tsx
+++ b/frontend/components/modal/DummyDataModal.tsx
@@ -1,4 +1,4 @@
-import React, { useState } from 'react';
+import React, { useContext, useState } from 'react';
import { Dialog } from '@mui/material/';
import { ipcRenderer } from 'electron';
import {
@@ -10,11 +10,13 @@ import {
} from '../../style-variables';
import { sendFeedback } from '../../lib/utils';
import { DBType } from '../../../backend/BE_types';
+import MenuContext from '../../state_management/Contexts/MenuContext';
interface DummyPayload {
dbName: string;
tableName: string;
rows: number;
+ dbType: DBType;
}
type DummyDataModalProps = {
@@ -25,20 +27,19 @@ type DummyDataModalProps = {
curDBType: DBType | undefined;
};
-const DummyDataModal = ({
+function DummyDataModal({
open,
onClose,
dbName,
tableName,
- curDBType
-}: DummyDataModalProps) => {
+ curDBType,
+}: DummyDataModalProps) {
+ const { dispatch: menuDispatch } = useContext(MenuContext);
+
const [rowNum, setRowNum] = useState(0);
const [isError, setIsError] = useState(false);
const [isEmpty, setIsEmpty] = useState(true);
- // console.log('curDBType:', curDBType);
-
-
const handleClose = () => {
setIsError(false);
setIsEmpty(true);
@@ -82,34 +83,39 @@ const DummyDataModal = ({
};
// Event handler to send rows to backend
- const handleClick = () => {
+ const handleClick = (
+ close: () => void,
+ db: string,
+ table: string,
+ rows: number,
+ dbType: DBType,
+ ) => {
// Check if dbName is given and not undefined
- if (!dbName || !tableName)
+ if (!dbName || !tableName) {
+ // TODO feedback
return sendFeedback({
type: 'error',
message: 'Failed to generate dummy data',
});
+ }
const payload: DummyPayload = {
- dbName,
- tableName,
- rows: rowNum,
+ dbName: db,
+ tableName: table,
+ rows,
+ dbType,
};
-
- ipcRenderer
- .invoke('generate-dummy-data', payload, curDBType)
- .catch(() =>
- sendFeedback({
- type: 'error',
- message: 'Failed to generate dummy data',
- })
- )
- .catch((err: object) => {
- // console.log(err);
- })
- .finally(handleClose);
+ menuDispatch({
+ type: 'ASYNC_TRIGGER',
+ loading: 'LOADING',
+ options: {
+ event: 'generate-dummy-data',
+ payload,
+ callback: close,
+ },
+ });
};
-
+
return (
{} : handleClick}
+ onClick={
+ isError || isEmpty
+ ? () => {}
+ : () =>
+ // the ORs are here bc typescript doesn't know about the isError isEmpty checks
+ handleClick(
+ handleClose,
+ dbName || '',
+ tableName || '',
+ rowNum,
+ curDBType || DBType.Postgres,
+ )
+ }
>
Generate
@@ -156,6 +174,6 @@ const DummyDataModal = ({
);
-};
+}
export default DummyDataModal;
diff --git a/frontend/components/modal/DuplicateDbModal.tsx b/frontend/components/modal/DuplicateDbModal.tsx
index c0021f84..dde0a2ec 100644
--- a/frontend/components/modal/DuplicateDbModal.tsx
+++ b/frontend/components/modal/DuplicateDbModal.tsx
@@ -19,13 +19,11 @@ import {
} from '../../style-variables';
import { DBType } from '../../../backend/BE_types';
-
declare module '@mui/material/styles/' {
// eslint-disable-next-line @typescript-eslint/no-empty-interface
interface DefaultTheme extends Theme {}
}
-
const { ipcRenderer } = window.require('electron');
interface DuplicatePayload {
@@ -57,16 +55,16 @@ const handleDBName = (dbCopyName, dbNames) => {
return dbName;
};
-const DuplicateDbModal = ({
+function DuplicateDbModal({
open,
onClose,
dbCopyName,
dbNames,
- curDBType
-}: copyDbModalProps) => {
+ curDBType,
+}: copyDbModalProps) {
const [checked, setChecked] = useState(true);
const [newSchemaName, setNewSchemaName] = useState(
- handleDBName(dbCopyName, dbNames)
+ handleDBName(dbCopyName, dbNames),
);
const [isError, setIsError] = useState(false);
const [isEmpty, setIsEmpty] = useState(false);
@@ -102,8 +100,7 @@ const DuplicateDbModal = ({
dbSafeName = dbSafeName.replace(/[^\w-]/gi, '');
if (dbNames?.includes(dbSafeName)) {
setIsError(true);
- }
- else {
+ } else {
setIsError(false);
}
// dbSafeName = dbSafeName.replace(/[^A-Z0-9]/gi, '');
@@ -202,6 +199,6 @@ const DuplicateDbModal = ({
);
-};
+}
export default DuplicateDbModal;
diff --git a/frontend/components/modal/FeedbackModal.tsx b/frontend/components/modal/FeedbackModal.tsx
index a4c899b5..fd72c3cc 100644
--- a/frontend/components/modal/FeedbackModal.tsx
+++ b/frontend/components/modal/FeedbackModal.tsx
@@ -1,7 +1,7 @@
-import React, { useState, useEffect } from 'react';
-import { IpcRendererEvent, ipcRenderer } from 'electron';
import { Snackbar } from '@mui/material';
import MuiAlert, { AlertProps } from '@mui/material/Alert';
+import { ipcRenderer, IpcRendererEvent } from 'electron';
+import React, { useEffect, useState } from 'react';
import { readingTime } from '../../lib/utils';
import type { Feedback, FeedbackSeverity } from '../../types';
@@ -10,14 +10,19 @@ function Alert(props: AlertProps) {
return ;
}
-const FeedbackModal = () => {
+function FeedbackModal() {
const [isOpen, setOpen] = useState(false);
const [message, setMessage] = useState('');
const [severity, setSeverity] = useState('info');
useEffect(() => {
const receiveFeedback = (evt: IpcRendererEvent, feedback: Feedback) => {
- const validTypes: FeedbackSeverity[] = ['success','error', 'info', 'warning'];
+ const validTypes: FeedbackSeverity[] = [
+ 'success',
+ 'error',
+ 'info',
+ 'warning',
+ ];
// Ignore 'success' feedback.
if (validTypes.includes(feedback.type)) {
setSeverity(feedback.type);
@@ -39,7 +44,7 @@ const FeedbackModal = () => {
onClose={handleClose}
autoHideDuration={readingTime(message)}
anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}
- // disable hiding on clickAway
+ // disable hiding on clickAway
ClickAwayListenerProps={{ onClickAway: () => {} }}
>
@@ -49,6 +54,6 @@ const FeedbackModal = () => {
);
-};
+}
export default FeedbackModal;
diff --git a/frontend/components/modal/Spinner.tsx b/frontend/components/modal/Spinner.tsx
index b5572f2a..cedd4edd 100644
--- a/frontend/components/modal/Spinner.tsx
+++ b/frontend/components/modal/Spinner.tsx
@@ -1,24 +1,25 @@
-import React, { useState, useEffect } from 'react';
+import React, { useEffect, useState } from 'react';
import { LinearProgress } from '@mui/material';
-import styled from 'styled-components';
import { ipcRenderer } from 'electron';
+import styled, { ExecutionContext } from 'styled-components';
-const StyledLinearProg = styled(LinearProgress)`
+interface Props {
+ $show: boolean;
+}
+
+const StyledLinearProg = styled(LinearProgress)`
/* Material Ui Drawer component used by sidebar has z-index: 1200 */
z-index: 1300;
height: 5px;
- visibility: ${({ $show }: { $show: boolean }) =>
- $show ? 'visible' : 'hidden'};
+ visibility: ${(props?) => (props.$show ? 'visible' : 'hidden')};
`;
-
let delayTimer: NodeJS.Timeout;
const delay = 500;
-const Spinner = () => {
+function Spinner() {
const [show, setShow] = useState(false);
-
useEffect(() => {
const showProgress = () => {
// show spinner after delay ms
@@ -44,6 +45,6 @@ const Spinner = () => {
});
return ;
-};
+}
export default Spinner;
diff --git a/frontend/components/sidebar/BottomButtons.tsx b/frontend/components/sidebar/BottomButtons.tsx
index 0f6aaba3..1ba34d61 100644
--- a/frontend/components/sidebar/BottomButtons.tsx
+++ b/frontend/components/sidebar/BottomButtons.tsx
@@ -2,6 +2,10 @@ import React from 'react';
import { ButtonGroup, Button } from '@mui/material/';
import styled from 'styled-components';
import { selectedColor, textColor, defaultMargin } from '../../style-variables';
+import {
+ useAppViewContext,
+ useAppViewDispatch,
+} from '../../state_management/Contexts/AppViewContext';
const ViewBtnGroup = styled(ButtonGroup)`
margin: ${defaultMargin} 5px;
@@ -14,32 +18,31 @@ interface ViewButtonProps {
$isSelected: boolean;
}
-const ViewButton = styled(Button)`
- background: ${({ $isSelected }: ViewButtonProps) =>
+const ViewButton = styled(Button)`
+ background: ${({ $isSelected }: { $isSelected?: boolean }) =>
$isSelected ? textColor : selectedColor};
`;
-type BottomButtonProps = {
- showCreateDialog: boolean;
- setCreateDialog: (show: boolean) => void;
-};
-
/**
* Selector for view on sidebar. Updates App state with selected view
*/
-const BottomButtons = ({
- showCreateDialog,
- setCreateDialog,
-}: BottomButtonProps) => (
-
- {
- setCreateDialog(true);
- }}
- $isSelected={showCreateDialog}
- >
- Create New Database
-
-
-);
+function BottomButtons() {
+ const appViewStateContext = useAppViewContext();
+ const appViewDispatchContext = useAppViewDispatch();
+ return (
+
+ {
+ if (!appViewStateContext?.showCreateDialog)
+ appViewDispatchContext!({
+ type: 'TOGGLE_CREATE_DIALOG',
+ });
+ }}
+ $isSelected={appViewStateContext!.showCreateDialog}
+ >
+ Create New Database
+
+
+ );
+}
export default BottomButtons;
diff --git a/frontend/components/sidebar/DbEntry.tsx b/frontend/components/sidebar/DbEntry.tsx
index 1362b03a..b57c5e15 100644
--- a/frontend/components/sidebar/DbEntry.tsx
+++ b/frontend/components/sidebar/DbEntry.tsx
@@ -12,10 +12,12 @@ import {
} from '@mui/material';
import DeleteIcon from '@mui/icons-material/Delete';
import FileCopyIcon from '@mui/icons-material/FileCopy';
+import FileDownloadIcon from '@mui/icons-material/FileDownload';
import { SidebarListItem, StyledListItemText } from '../../style-variables';
import { sendFeedback } from '../../lib/utils';
import { DBType } from '../../../backend/BE_types';
+import { getAppDataPath } from '../../lib/queries';
const { ipcRenderer } = window.require('electron');
@@ -27,13 +29,7 @@ interface DbEntryProps {
dbType: DBType;
}
-const DbEntry = ({
- db,
- isSelected,
- select,
- duplicate,
- dbType,
-}: DbEntryProps) => {
+function DbEntry({ db, isSelected, select, duplicate, dbType }: DbEntryProps) {
const [isDeleteDialogOpen, setIsDeleteDialogOpen] = useState(false);
const handleDelete = () => {
@@ -44,10 +40,32 @@ const DbEntry = ({
setIsDeleteDialogOpen(false);
})
.catch(() =>
- sendFeedback({ type: 'error', message: `Failed to delete ${db}` })
+ sendFeedback({ type: 'error', message: `Failed to delete ${db}` }),
);
};
+ const handleExportDB = async () => {
+ const options = {
+ title: 'Choose File Path',
+ defaultPath: `${getAppDataPath('sql')}`,
+ buttonLabel: 'Save',
+ filters: [{ name: 'SQL', extensions: ['sql'] }],
+ };
+
+ try {
+ const filePath = await ipcRenderer.invoke('showSaveDialog', options);
+
+ const payload = {
+ db,
+ filePath,
+ };
+
+ await ipcRenderer.invoke('export-db', payload, dbType);
+ } catch (error) {
+ console.log(error);
+ }
+ };
+
return (
+
+
+
+
+
+
- setIsDeleteDialogOpen(true)} size="large">
+ setIsDeleteDialogOpen(true)}
+ size="large"
+ >
@@ -71,17 +99,19 @@ const DbEntry = ({
aria-labelledby="alert-dialog-title"
aria-describedby="alert-dialog-description"
>
- Confirm deletion
+
+ Confirm deletion
+
- Are you sure you want to delete the database
- {' '}
- {db}
- ?
+ Are you sure you want to delete the database {db}?
- setIsDeleteDialogOpen(false)} color="primary">
+ setIsDeleteDialogOpen(false)}
+ color="primary"
+ >
Cancel
@@ -92,6 +122,6 @@ const DbEntry = ({
);
-};
+}
export default DbEntry;
diff --git a/frontend/components/sidebar/DbList.tsx b/frontend/components/sidebar/DbList.tsx
index 2543e47e..1226e478 100644
--- a/frontend/components/sidebar/DbList.tsx
+++ b/frontend/components/sidebar/DbList.tsx
@@ -5,15 +5,16 @@ import { IconButton, Tooltip, Menu, MenuItem } from '@mui/material';
import UploadFileIcon from '@mui/icons-material/UploadFile';
import FilterListIcon from '@mui/icons-material/FilterList';
import AddNewDbModal from '../modal/AddNewDbModalCorrect';
-import {
- AppState,
- DatabaseInfo,
-} from '../../types';
+import { AppState, DatabaseInfo } from '../../types';
import { DBType } from '../../../backend/BE_types';
import { sendFeedback } from '../../lib/utils';
import DuplicateDbModal from '../modal/DuplicateDbModal';
import DbEntry from './DbEntry';
import { SidebarList, greyDarkest } from '../../style-variables';
+import {
+ useAppViewContext,
+ useAppViewDispatch,
+} from '../../state_management/Contexts/AppViewContext';
const StyledSidebarList = styled(SidebarList)`
background-color: ${greyDarkest};
@@ -26,7 +27,7 @@ const StyledSidebarList = styled(SidebarList)`
}
::-webkit-scrollbar-track {
border-radius: 5px;
- background: rgba(255, 255, 255, .1);
+ background: rgba(255, 255, 255, 0.1);
}
::-webkit-scrollbar-thumb {
background: white;
@@ -34,31 +35,25 @@ const StyledSidebarList = styled(SidebarList)`
}
`;
-type DbListProps = Pick<
- AppState,
- 'selectedDb' | 'setSelectedDb' | 'setSelectedView'
-> & {
+type DbListProps = Pick & {
show: boolean;
curDBType: DBType | undefined;
setDBType: (dbType: DBType | undefined) => void;
DBInfo: DatabaseInfo[] | undefined;
- selectedView: AppState['selectedView'];
};
-const DbList = ({
+function DbList({
selectedDb,
setSelectedDb,
- setSelectedView,
show,
curDBType,
setDBType,
DBInfo,
- selectedView,
-}: DbListProps) => {
+}: DbListProps) {
const [openAdd, setOpenAdd] = useState(false);
const [openDupe, setOpenDupe] = useState(false);
const [dbToDupe, setDbToDupe] = useState('');
-
+
// filter button
const [anchorEl, setAnchorEl] = useState(null);
const [filterBy, setFilterBy] = useState('All');
@@ -67,6 +62,9 @@ const DbList = ({
// I think this returns undefined if DBInfo is falsy idk lol
const dbNames = DBInfo?.map((dbi) => dbi.db_name);
+ const appViewStateContext = useAppViewContext();
+ const appViewDispatchContext = useAppViewDispatch();
+
const handleClickOpenAdd = () => {
setOpenAdd(true);
};
@@ -85,7 +83,17 @@ const DbList = ({
};
const selectHandler = (dbName: string, cdbt: DBType | undefined) => {
- setSelectedView(selectedView === 'threeDView' ? 'threeDView' : 'dbView');
+ if (appViewStateContext?.selectedView === 'threeDView') {
+ appViewDispatchContext!({
+ type: 'SELECTED_VIEW',
+ payload: 'threeDView',
+ });
+ } else {
+ appViewDispatchContext!({
+ type: 'SELECTED_VIEW',
+ payload: 'dbView',
+ });
+ }
if (dbName === selectedDb) return;
ipcRenderer
.invoke('select-db', dbName, cdbt)
@@ -97,21 +105,28 @@ const DbList = ({
sendFeedback({
type: 'error',
message: `Failed to connect to ${dbName}`,
- })
+ }),
);
};
const handleClickFilter = (e: React.MouseEvent) => {
setAnchorEl(e.currentTarget);
- }
-
+ };
+
const handleCloseFilter = (e) => {
setAnchorEl(null);
setFilterBy(e.currentTarget.innerText || filterBy);
- }
-
+ };
+
// filter options
- const dbNamesArr = ['All', 'MySql', 'Postgres', 'RDS Mysql', 'RDS Postgres', 'SQLite'];
+ const dbNamesArr = [
+ 'All',
+ 'MySql',
+ 'Postgres',
+ 'RDS Mysql',
+ 'RDS Postgres',
+ 'SQLite',
+ ];
const dbNamesObj = {
All: 'all',
@@ -120,31 +135,36 @@ const DbList = ({
'RDS Mysql': 'rds-mysql',
'RDS Postgres': 'rds-pg',
SQLite: 'sqlite',
- }
+ };
if (!show) return null;
return (
<>
-
+
-
+
@@ -164,7 +184,7 @@ const DbList = ({
duplicate={() => handleClickOpenDupe(dbi.db_name)}
dbType={dbi.db_type}
/>
- )
+ );
}
})}
{openDupe ? (
@@ -175,7 +195,7 @@ const DbList = ({
dbNames={dbNames}
curDBType={curDBType}
/>
- ) : null}
+ ) : null}
>
-);
-};
+ );
+}
export default DbList;
diff --git a/frontend/components/sidebar/QueryEntry.tsx b/frontend/components/sidebar/QueryEntry.tsx
index c3cf65f5..b7f6d0ab 100644
--- a/frontend/components/sidebar/QueryEntry.tsx
+++ b/frontend/components/sidebar/QueryEntry.tsx
@@ -1,14 +1,14 @@
import React from 'react';
-import styled from 'styled-components';
+import CloseIcon from '@mui/icons-material/Close';
+import SaveIcon from '@mui/icons-material/Save';
import {
+ Checkbox,
IconButton,
ListItemSecondaryAction,
- Checkbox,
Tooltip,
} from '@mui/material';
-import CloseIcon from '@mui/icons-material/Close';
-import SaveIcon from '@mui/icons-material/Save';
+import styled from 'styled-components';
import {
SidebarListItem,
StyledListItemText,
@@ -35,7 +35,7 @@ interface QueryEntryProps {
saveThisQuery: () => void;
}
-const QueryEntry = ({
+function QueryEntry({
query,
select,
isSelected,
@@ -43,27 +43,27 @@ const QueryEntry = ({
isCompared,
deleteThisQuery,
saveThisQuery,
-}: QueryEntryProps) => (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-);
-
-
+}: QueryEntryProps) {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
export default QueryEntry;
diff --git a/frontend/components/sidebar/QueryList.tsx b/frontend/components/sidebar/QueryList.tsx
index 7054011d..221736f1 100644
--- a/frontend/components/sidebar/QueryList.tsx
+++ b/frontend/components/sidebar/QueryList.tsx
@@ -1,21 +1,40 @@
-import React from 'react';
-import { IconButton, Tooltip } from '@mui/material';
+import path from 'path';
import AddIcon from '@mui/icons-material/Add';
+import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
+import DriveFileMoveIcon from '@mui/icons-material/DriveFileMove';
import UploadFileIcon from '@mui/icons-material/UploadFile';
-import FileCopyIcon from '@mui/icons-material/FileCopy';
-import fs from 'fs';
-import path from 'path';
-import electron from 'electron';
-import styled from 'styled-components';
+import { IconButton, Tooltip } from '@mui/material';
import Accordion from '@mui/material/Accordion';
-import AccordionSummary from '@mui/material/AccordionSummary';
import AccordionDetails from '@mui/material/AccordionDetails';
+import AccordionSummary from '@mui/material/AccordionSummary';
import Typography from '@mui/material/Typography';
-import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
+import React, { useContext } from 'react';
+import styled from 'styled-components';
+import { ipcRenderer } from 'electron';
+import {
+ deleteQuery,
+ getAppDataPath,
+ key as queryKey,
+ saveQuery,
+ setCompare,
+ createNewQuery,
+} from '../../lib/queries';
+import {
+ greenPrimary,
+ greyDark,
+ greyDarkest,
+ SidebarList,
+ StyledListItemText,
+ textColor,
+} from '../../style-variables';
import { AppState, QueryData } from '../../types';
-import { deleteQuery, setCompare, saveQuery, getAppDataPath, key as queryKey } from '../../lib/queries';
import QueryEntry from './QueryEntry';
-import { greyDarkest, greyDark, greenPrimary, SidebarList, StyledListItemText, textColor } from '../../style-variables';
+
+import {
+ useQueryContext,
+ useQueryDispatch,
+} from '../../state_management/Contexts/QueryContext';
+import MenuContext from '../../state_management/Contexts/MenuContext';
const QueryText = styled(StyledListItemText)`
& .MuiListItemText-secondary {
@@ -23,176 +42,191 @@ const QueryText = styled(StyledListItemText)`
}
`;
-type QueryListProps = Pick<
- AppState,
- | 'queries'
- | 'setQueries'
- | 'comparedQueries'
- | 'setComparedQueries'
- | 'workingQuery'
- | 'setWorkingQuery'
- | 'setFilePath'
- | 'newFilePath'
-> & {
+const StyledSidebarList = styled(SidebarList)`
+ background-color: ${greyDarkest};
+`;
+
+type QueryListProps = {
createQuery: () => void;
show: boolean;
};
-const StyledSidebarList = styled(SidebarList)`
-background-color: ${greyDarkest};
-`;
+function QueryList({ createQuery, show }: QueryListProps) {
+ const { dispatch: menuDispatch } = useContext(MenuContext);
+
+ // using query state context and dispatch functions
+ const queryStateContext = useQueryContext();
+ const queryDispatchContext = useQueryDispatch();
-const QueryList = ({
- queries,
- createQuery,
- setQueries,
- comparedQueries,
- setComparedQueries,
- workingQuery,
- setWorkingQuery,
- setFilePath,
- newFilePath,
- show,
-}: QueryListProps) => {
const deleteQueryHandler = (query: QueryData) => () => {
- setQueries(deleteQuery(queries, query));
- setComparedQueries(deleteQuery(comparedQueries, query));
+ if (!queryStateContext) return;
+ const tempQueries = deleteQuery(queryStateContext.queries, query);
+
+ queryDispatchContext!({
+ type: 'UPDATE_QUERIES',
+ payload: tempQueries,
+ });
+
+ const tempComparedQueries = deleteQuery(
+ queryStateContext.comparedQueries,
+ query,
+ );
+
+ queryDispatchContext!({
+ type: 'UPDATE_COMPARED_QUERIES',
+ payload: tempComparedQueries,
+ });
};
-
- const setComparisonHandler = (query: QueryData) => (
- evt: React.ChangeEvent
- ) => {
- setComparedQueries(setCompare(comparedQueries, queries, query, evt.target.checked));
- // setComparedQueries(setCompare(comparedQueries, query));
+
+ const setComparisonHandler =
+ (query: QueryData) => (evt: React.ChangeEvent) => {
+ if (!queryStateContext) return;
+ const tempQueries = setCompare(
+ queryStateContext.comparedQueries,
+ queryStateContext.queries,
+ query,
+ evt.target.checked,
+ );
+
+ queryDispatchContext!({
+ type: 'UPDATE_COMPARED_QUERIES',
+ payload: tempQueries,
+ });
};
-
- const saveQueryHandler = (query: QueryData, newFilePath: string) => () => {
- saveQuery(query, newFilePath);
- }
- const loadQueryHandler = async function () {
+ const saveQueryHandler = (query: QueryData, filePath: string) => () => {
+ saveQuery(query, filePath);
+ };
- const globalAny: any = global;
- // If the platform is not macOS
- if (process.platform !== 'darwin') {
- // Resolves to a Promise
- electron.remote.dialog.showOpenDialog({
- title: 'Select the File to be uploaded',
+ const loadQueryHandler = async () => {
+ const options = {
+ title: 'Upload Query',
defaultPath: path.join(__dirname, '../assets/'),
buttonLabel: 'Upload',
- // Restricting the user to only Text Files.
filters: [
{
name: 'Text Files',
- extensions: ['json', 'docx', 'txt']
- },],
- // Specifying the File Selector Property
- properties: ['openFile']
- }).then((file: any) => {
- // Stating whether dialog operation was
- // cancelled or not.
- if (!file.canceled) {
- // Updating the GLOBAL filepath variable
- // to user-selected file.
- globalAny.filepath = file.filePaths[0].toString();
- const data = JSON.parse(fs.readFileSync(globalAny.filepath).toString());
- setQueries(data);
+ extensions: ['json', 'docx', 'txt'],
+ },
+ ],
+ };
+ // const setFilepathCallback = (val) => setFilePath(val);
+ // menuDispatch({
+ // type: 'ASYNC_TRIGGER',
+ // loading: 'LOADING',
+ // options: {
+ // event: 'showOpenDialog',
+ // payload: options,
+ // callback: setFilepathCallback,
+ // },
+ // });
+
+ try {
+ // grab the file path of where the query is saved
+ const newFilePath = await ipcRenderer.invoke('showOpenDialog', options);
+ // grab the file data from the back end
+ const data = await ipcRenderer.invoke('read-query', newFilePath);
+ const newData = JSON.parse(data);
+ const query: unknown = Object.values(newData);
+
+ // create a new query
+ if (query) {
+ if (!queryStateContext) return;
+ const newQueries = createNewQuery(query[0], queryStateContext.queries);
+
+ queryDispatchContext!({
+ type: 'UPDATE_QUERIES',
+ payload: newQueries,
+ });
+
+ queryDispatchContext!({
+ type: 'UPDATE_WORKING_QUERIES',
+ payload: query[0],
+ });
}
- return undefined;
- }).catch((err: object | undefined) => {
- // console.log(err);
- return undefined;
- });
- }
- else {
- // If the platform is 'darwin' (macOS)
- electron.remote.dialog.showOpenDialog({
- title: 'Select the File to be uploaded',
- defaultPath: path.join(__dirname, '../assets/'),
- buttonLabel: 'Upload',
- filters: [
- {
- name: 'Text Files',
- extensions: ['json', 'docx', 'txt']
- },],
- // Specifying the File Selector and Directory
- // Selector Property In macOS
- properties: ['openFile', 'openDirectory']
- }).then((file: any) => {
- if (!file.canceled) {
- globalAny.filepath = file.filePaths[0].toString();
- const data = JSON.parse(fs.readFileSync(globalAny.filepath).toString());
- setQueries(data);
- }
- return undefined;
- }).catch((err: object) => {
- // console.log(err);
- return undefined;
- });
+ } catch (error) {
+ console.log(error);
}
-
- }
+ };
if (!show) return null;
-
- const values: Array = Object.values(queries);
- const accordians:object = {};
+ if (!queryStateContext) return null;
+ const values: Array = Object.values(queryStateContext.queries);
+ const accordians: object = {};
// Algorithm to create the entrys to be bundled into accoridans
- const compQ: any = { ...comparedQueries }
- if(values.length > 0) {
+ const compQ: any = { ...queryStateContext?.comparedQueries };
+ if (values.length > 0) {
for (let i = 0; i < values.length; i++) {
let compared = false;
if (compQ[queryKey(values[i])]) {
if (compQ[queryKey(values[i])].hasOwnProperty('executionPlan')) {
- if (compQ[queryKey(values[i])].executionPlan['Execution Time'] !== 0) {
+ if (
+ compQ[queryKey(values[i])].executionPlan['Execution Time'] !== 0
+ ) {
compared = true;
}
}
- };
-
+ }
+
const entry: JSX.Element = (
setWorkingQuery(values[i])}
+ select={() =>
+ queryDispatchContext!({
+ type: 'UPDATE_WORKING_QUERIES',
+ payload: values[i],
+ })
+ }
isSelected={
- !!workingQuery && queryKey(values[i]) === queryKey(workingQuery)
+ !!queryStateContext?.workingQuery &&
+ queryKey(values[i]) === queryKey(queryStateContext?.workingQuery)
}
deleteThisQuery={deleteQueryHandler(values[i])}
isCompared={compared}
setComparison={setComparisonHandler(values[i])}
- saveThisQuery={saveQueryHandler(values[i], newFilePath)}
+ saveThisQuery={saveQueryHandler(
+ values[i],
+ queryStateContext.newFilePath,
+ )}
/>
);
-
- if(!accordians[values[i].group]) {
+
+ if (!accordians[values[i].group]) {
accordians[values[i].group] = [entry];
} else {
accordians[values[i].group].push([entry]);
- };
- };
- };
+ }
+ }
+ }
// function to store user-selected file path in state
- const designateFile = function() {
- const { dialog } = electron.remote;
- const WIN = electron.remote.getCurrentWindow();
-
+
+ const designateFile = () => {
+ // REVIEW: not sure if supposed to move this to it's own ipcMain
const options = {
- title: "Choose File Path",
+ title: 'Choose File Path',
defaultPath: `${getAppDataPath()}`,
- buttonLabel: "Select Path",filters: [
- { name: 'JSON', extensions: ['json'] }
- ]
- }
-
- dialog.showSaveDialog(WIN, options)
- .then((res:any) => {
- setFilePath(res.filePath)
+ buttonLabel: 'Select Path',
+ filters: [{ name: 'JSON', extensions: ['json'] }],
+ };
+ const setFilePathCallback = (val) =>
+ queryDispatchContext!({
+ type: 'UPDATE_FILEPATH',
+ payload: val,
});
- }
+ menuDispatch({
+ type: 'ASYNC_TRIGGER',
+ loading: 'LOADING',
+ options: {
+ event: 'showSaveDialog',
+ payload: options,
+ callback: setFilePathCallback,
+ },
+ });
+ };
return (
<>
@@ -204,44 +238,50 @@ const QueryList = ({
-
+ loadQueryHandler()} size="large">
-
-
+ designateFile()} size="large">
+
-
-
{Object.values(accordians).map((arrGroup: any) => (
- }
- aria-controls="panel1a-content"
+ backgroundColor: `${greenPrimary}`,
+ color: 'black',
+ }}
+ expandIcon={ }
+ aria-controls="panel1a-content"
id="panel1a-header"
>
-
+
-
+
{arrGroup}
- ))}
+ ))}
>
-)};
+ );
+}
export default QueryList;
diff --git a/frontend/components/sidebar/Sidebar.tsx b/frontend/components/sidebar/Sidebar.tsx
index 9e3f1df2..f113635a 100644
--- a/frontend/components/sidebar/Sidebar.tsx
+++ b/frontend/components/sidebar/Sidebar.tsx
@@ -1,21 +1,31 @@
-import React from 'react';
-import { Drawer, IconButton, Tooltip } from '@mui/material/';
-import ArrowForwardIosIcon from '@mui/icons-material/ArrowForwardIos';
+// Mui imports
import ArrowBackIosIcon from '@mui/icons-material/ArrowBackIos';
+import ArrowForwardIosIcon from '@mui/icons-material/ArrowForwardIos';
+import { Drawer, IconButton, Tooltip } from '@mui/material/';
+
+import React from 'react';
import styled from 'styled-components';
-import { AppState } from '../../types';
-import TopButtons from './TopButtons';
-import QueryList from './QueryList';
-import DbList from './DbList';
-import ViewSelector from './ViewSelector';
import logo from '../../../assets/logo/seeqr_dock.png';
+
+// Types
+import { AppState, DatabaseInfo } from '../../types';
+import { DBType } from '../../../backend/BE_types';
+
import BottomButtons from './BottomButtons';
+import DbList from './DbList';
+import QueryList from './QueryList';
+import TopButtons from './TopButtons';
+import ViewSelector from './ViewSelector';
import {
greyDarkest,
- sidebarWidth,
sidebarShowButtonSize,
+ sidebarWidth,
} from '../../style-variables';
+import {
+ useAppViewContext,
+ useAppViewDispatch,
+} from '../../state_management/Contexts/AppViewContext';
const StyledDrawer = styled(Drawer)`
& .MuiDrawer-paper {
@@ -34,11 +44,11 @@ const Logo = styled.img`
bottom: 100px;
left: calc(${sidebarWidth} / 2);
transform: translateX(-50%);
- opacity: 0.5;
+ opacity: 0.8;
z-index: -1;
- filter: grayscale(100%);
- width: 100px;
- height: 100px;
+
+ width: 60px;
+ height: 60px;
`;
const ShowSidebarBtn = styled(IconButton)`
@@ -49,24 +59,24 @@ const ShowSidebarBtn = styled(IconButton)`
z-index: 200;
background: #57a777;
border-radius: 0 15px 15px 0;
- transition: all .3s ease;
+ transition: all 0.3s ease;
&:hover {
background: #57a777;
- opacity: .6;
+ opacity: 0.6;
color: white;
}
- `;
-
- const HideSidebarBtn = styled(IconButton)`
+`;
+
+const HideSidebarBtn = styled(IconButton)`
width: 40px;
height: ${sidebarShowButtonSize};
z-index: 200;
background: #57a777;
border-radius: 15px 0 0 15px;
- transition: all .3s ease;
+ transition: all 0.3s ease;
&:hover {
background: #57a777;
- opacity: .6;
+ opacity: 0.6;
color: white;
}
`;
@@ -74,7 +84,7 @@ const ShowSidebarBtn = styled(IconButton)`
const HideSidebarBtnContainer = styled.div`
position: absolute;
display: flex;
- width: 25px;
+ width: 15px;
height: 100vh;
background: transparent;
flex-direction: column;
@@ -83,86 +93,85 @@ const HideSidebarBtnContainer = styled.div`
align-self: flex-end;
`;
-const Sidebar = ({
- setQueries,
- comparedQueries,
- setComparedQueries,
- selectedView,
- setSelectedView,
+interface SideBarProps {
+ selectedDb: AppState['selectedDb'];
+ setSelectedDb: AppState['setSelectedDb'];
+ setERView: AppState['setERView'];
+ curDBType: DBType | undefined;
+ setDBType: (dbType: DBType | undefined) => void;
+ DBInfo: DatabaseInfo[] | undefined;
+ queryDispatch: ({ type, payload }) => void;
+}
+function Sidebar({
selectedDb,
setSelectedDb,
- queries,
- workingQuery,
- setWorkingQuery,
- setSidebarHidden,
- sidebarIsHidden,
- setFilePath,
- newFilePath,
setERView,
curDBType,
setDBType,
DBInfo,
- showCreateDialog,
- setCreateDialog,
- setConfigDialog,
-}: AppState) => {
- const toggleOpen = () => setSidebarHidden(!sidebarIsHidden);
+ queryDispatch,
+}: SideBarProps) {
+ // allowing the use of context and dispatch from the parent provider.
+ const appViewStateContext = useAppViewContext();
+ const appViewDispatchContext = useAppViewDispatch();
+ const toggleOpen = () => appViewDispatchContext!({ type: 'TOGGLE_SIDEBAR' });
/**
* Show empty query view for user to create new query.
* Deselects all queries and goes to queryView
*/
const showEmptyQuery = () => {
- setSelectedView('queryView');
- setWorkingQuery(undefined);
+ appViewDispatchContext!({ type: 'SELECTED_VIEW', payload: 'queryView' });
+
+ queryDispatch({
+ type: 'UPDATE_WORKING_QUERIES',
+ payload: undefined,
+ });
+ // setWorkingQuery(undefined);
};
return (
<>
+ {/* this componenet just shows tooltip when you hover your mouse over the sidebar open and close button. */}
-
+
+ {/* shows if the default menu is open or closed. */}
+
-
-
+
+
+ {/* this is just the list of all the connected dbs */}
+ {/* this is the view for all your queries that were saved whenever you ran a query */}
-
+
@@ -174,6 +183,6 @@ const Sidebar = ({
>
);
-};
+}
export default Sidebar;
diff --git a/frontend/components/sidebar/TopButtons.tsx b/frontend/components/sidebar/TopButtons.tsx
index dc9e8657..587bbad2 100644
--- a/frontend/components/sidebar/TopButtons.tsx
+++ b/frontend/components/sidebar/TopButtons.tsx
@@ -1,12 +1,16 @@
import React from 'react';
import { IconButton, Tooltip } from '@mui/material';
import styled from 'styled-components';
-import { Equalizer, Settings, Coronavirus } from '@mui/icons-material';
-import HomeIcon from '@mui/icons-material/Home'
-import { AppState } from '../../types';
+import { Equalizer, Settings, ThreeDRotation } from '@mui/icons-material';
+import HomeIcon from '@mui/icons-material/Home';
import { textColor, hoverColor, selectedColor } from '../../style-variables';
+import {
+ useAppViewContext,
+ useAppViewDispatch,
+} from '../../state_management/Contexts/AppViewContext';
+
const Container = styled.div`
display: flex;
justify-content: space-between;
@@ -21,37 +25,56 @@ interface StyledCompareButtonProps {
$isSelected: boolean;
}
-const StyledCompareIcon = styled(Equalizer) `
+const StyledCompareIcon = styled(Equalizer)`
color: ${({ $isSelected }) => ($isSelected ? selectedColor : textColor)};
&:hover {
color: ${hoverColor};
}
`;
-type TopButtonsProps = Pick & {
- setConfigDialog: (show: boolean) => void;
-};
+function TopButtons() {
+ // using the context from use context hook, all the app view state is from this.
+ const appViewStateContext = useAppViewContext();
+ const appViewDispatchContext = useAppViewDispatch();
-const TopButtons = ({
- selectedView,
- setSelectedView,
- setConfigDialog,
-}: TopButtonsProps) => {
+ // this function toggles the compare view
const toggleCompareView = () => {
- if (selectedView === 'compareView') return setSelectedView('queryView');
- return setSelectedView('compareView');
+ if (appViewStateContext?.selectedView === 'compareView') {
+ return appViewDispatchContext!({
+ type: 'SELECTED_VIEW',
+ payload: 'queryView',
+ });
+ }
+ return appViewDispatchContext!({
+ type: 'SELECTED_VIEW',
+ payload: 'compareView',
+ });
};
+ // Any of the tool tips are just for whenver you hover over the button, a tooltip will appear.
return (
- setConfigDialog(true)}>
+
+ appViewDispatchContext!({
+ type: 'TOGGLE_CONFIG_DIALOG',
+ })
+ }
+ >
- setSelectedView('quickStartView')}>
+
+ appViewDispatchContext!({
+ type: 'SELECTED_VIEW',
+ payload: 'quickStartView',
+ })
+ }
+ >
@@ -60,18 +83,25 @@ const TopButtons = ({
- setSelectedView('threeDView')}>
-
+
+ appViewDispatchContext!({
+ type: 'SELECTED_VIEW',
+ payload: 'threeDView',
+ })
+ }
+ >
+
);
-};
+}
export default TopButtons;
diff --git a/frontend/components/sidebar/ViewSelector.tsx b/frontend/components/sidebar/ViewSelector.tsx
index 78c4fe80..78c17191 100644
--- a/frontend/components/sidebar/ViewSelector.tsx
+++ b/frontend/components/sidebar/ViewSelector.tsx
@@ -3,6 +3,10 @@ import { ButtonGroup, Button } from '@mui/material/';
import styled from 'styled-components';
import { AppState } from '../../types';
import { selectedColor, textColor, defaultMargin } from '../../style-variables';
+import {
+ useAppViewContext,
+ useAppViewDispatch,
+} from '../../state_management/Contexts/AppViewContext';
const ViewBtnGroup = styled(ButtonGroup)`
margin: ${defaultMargin} 5px;
@@ -12,8 +16,8 @@ interface ViewButtonProps {
$isSelected: boolean;
}
-const ViewButton = styled(Button)`
- background: ${({ $isSelected }: ViewButtonProps) =>
+const ViewButton = styled(Button)`
+ background: ${({ $isSelected }: { $isSelected: boolean }) =>
$isSelected ? selectedColor : textColor};
&:hover {
background: ${({ $isSelected }: ViewButtonProps) =>
@@ -21,40 +25,48 @@ const ViewButton = styled(Button)`
}
`;
-type ViewSelectorProps = Pick<
- AppState,
- 'selectedView' | 'setSelectedView' | 'setERView'
->;
+type ViewSelectorProps = Pick;
/**
* Selector for view on sidebar. Updates App state with selected view
*/
-const ViewSelector = ({
- selectedView,
- setSelectedView,
- setERView,
-}: ViewSelectorProps) => (
-
- setSelectedView('queryView')}
- $isSelected={
- selectedView === 'queryView' || selectedView === 'compareView'
- }
- >
- Queries
-
- {
- setSelectedView('dbView');
- if (setERView) setERView(true);
- }}
- $isSelected={
- selectedView === 'dbView' || selectedView === 'quickStartView'
- }
- >
- Databases
-
-
-);
+function ViewSelector({ setERView }: ViewSelectorProps) {
+ // using the dispatch and state from the providers to avoid any prop drilling.
+ const appViewStateContext = useAppViewContext();
+ const appViewDispatchContext = useAppViewDispatch();
+ return (
+
+
+ appViewDispatchContext!({
+ type: 'SELECTED_VIEW',
+ payload: 'queryView',
+ })
+ }
+ $isSelected={
+ appViewStateContext?.selectedView === 'queryView' ||
+ appViewStateContext?.selectedView === 'compareView'
+ }
+ >
+ Queries
+
+ {
+ appViewDispatchContext!({
+ type: 'SELECTED_VIEW',
+ payload: 'dbView',
+ });
+ if (setERView) setERView(true);
+ }}
+ $isSelected={
+ appViewStateContext?.selectedView === 'dbView' ||
+ appViewStateContext?.selectedView === 'quickStartView'
+ }
+ >
+ Databases
+
+
+ );
+}
export default ViewSelector;
diff --git a/frontend/components/views/CompareView/CompareChart.tsx b/frontend/components/views/CompareView/CompareChart.tsx
index e31c4152..6e93dcd2 100644
--- a/frontend/components/views/CompareView/CompareChart.tsx
+++ b/frontend/components/views/CompareView/CompareChart.tsx
@@ -1,24 +1,40 @@
import React from 'react';
-import { Bar, defaults, ChartData } from 'react-chartjs-2';
-import styled from 'styled-components'
-import { AppState } from '../../../types';
+import { Bar } from 'react-chartjs-2';
+import {
+ Chart as ChartJs,
+ Colors,
+ BarController,
+ CategoryScale,
+ LinearScale,
+ BarElement,
+ Legend,
+} from 'chart.js';
+import styled from 'styled-components';
import { getTotalTime } from '../../../lib/queries';
-import { compareChartColors, textColor } from '../../../style-variables';
+import { compareChartColors } from '../../../style-variables';
+import { AppState } from '../../../types';
const ChartContainer = styled.div`
height: 400px;
width: 100%;
-`
+`;
+ChartJs.register(
+ Colors,
+ BarController,
+ CategoryScale,
+ LinearScale,
+ BarElement,
+ Legend,
+);
-defaults.global.defaultFontColor = textColor
+// defaults.set('color', textColor);
/**
* Builds Chart.js data from queries. Uses isCompared flag on each query to
* determine which queries to include in comparison
*/
-const getChartData = (
- queries: AppState['queries']
-): ChartData => {
+
+const getChartData = (queries: AppState['queries']): any => {
/**
* Gets next color from defined pallete.
*/
@@ -32,26 +48,30 @@ const getChartData = (
};
})();
-
-
const comparedQueries = Object.values(queries);
// unique query labels
- const uniqueLabels = [...new Set(comparedQueries.map((query) => `label:${query.label} db:${query.db} group:${query.group}`))];
+ const uniqueLabels = [
+ ...new Set(
+ comparedQueries.map(
+ (query) => `label:${query.label} db:${query.db} group:${query.group}`,
+ ),
+ ),
+ ];
const labels = [...new Set(comparedQueries.map((query) => query.group))];
// unique dbs in comparison
const comparedDbs = [...new Set(comparedQueries.map((query) => query.db))];
// Algorithm for grouping speeds by group
- const groups:object = {};
- for (let i = 0; i < uniqueLabels.length; i++) {
+ const groups: object = {};
+ for (let i = 0; i < uniqueLabels.length; i += 1) {
if (groups[queries[uniqueLabels[i]].db]) {
groups[queries[uniqueLabels[i]].db].push(uniqueLabels[i]);
} else {
groups[queries[uniqueLabels[i]].db] = [uniqueLabels[i]];
- };
- };
+ }
+ }
// array of objects representing each database that is being displayed
const datasets = comparedDbs.map((db) => {
const color = getColor();
@@ -72,34 +92,33 @@ interface CompareChartProps {
queries: AppState['queries'];
}
-const CompareChart = ({ queries }: CompareChartProps) => (
-
-
-
-);
+function CompareChart({ queries }: CompareChartProps) {
+ return (
+
+
+
+ );
+}
export default CompareChart;
-
diff --git a/frontend/components/views/CompareView/CompareTable.tsx b/frontend/components/views/CompareView/CompareTable.tsx
index 209d8fe6..9f3787b8 100644
--- a/frontend/components/views/CompareView/CompareTable.tsx
+++ b/frontend/components/views/CompareView/CompareTable.tsx
@@ -1,4 +1,4 @@
-import React from 'react';
+import SpeedIcon from '@mui/icons-material/Speed';
import {
Table,
TableBody,
@@ -7,15 +7,15 @@ import {
TableRow,
Tooltip,
} from '@mui/material';
-import SpeedIcon from '@mui/icons-material/Speed';
+import React from 'react';
import styled from 'styled-components';
-import { AppState, QueryData } from '../../../types';
+import { getPrettyTime, getTotalTime } from '../../../lib/queries';
import {
DarkPaperFull,
defaultMargin,
greenPrimary,
} from '../../../style-variables';
-import { getPrettyTime, getTotalTime } from '../../../lib/queries';
+import { AppState, QueryData } from '../../../types';
const TableBg = styled(DarkPaperFull)`
margin-top: ${defaultMargin};
@@ -27,14 +27,16 @@ const StyledCell = styled(TableCell)<{
$isMarker: boolean;
}>`
color: ${({ $isFastest }) => ($isFastest ? greenPrimary : 'inherit')};
- ${({ $isMarker }) => $isMarker ? ` padding:0;` : ''}
+ ${({ $isMarker }) => ($isMarker ? ' padding:0;' : '')}
`;
-const FastestMarker = () => (
-
-
-
-);
+function FastestMarker() {
+ return (
+
+
+
+ );
+}
type AnalysedQuery = QueryData & {
relativeSpeed: number;
@@ -45,7 +47,7 @@ type Alignment = 'left' | 'right' | 'center';
type InfoColumn = [
string,
Alignment,
- (q: AnalysedQuery) => string | number | undefined | JSX.Element
+ (q: AnalysedQuery) => string | number | undefined | JSX.Element,
];
// Array of columns names and transformers that receive query and return printable value
@@ -65,16 +67,18 @@ const tableInfo: InfoColumn[] = [
];
// Callback function for getFastestPerGroup
-function fastestCallback (acc, q) {
- if (getTotalTime(q) === 0) {return acc}
+function fastestCallback(acc, q) {
+ if (getTotalTime(q) === 0) {
+ return acc;
+ }
return {
...acc,
- [q.group]: Math.min(acc[q.group] ?? Infinity, getTotalTime(q))
+ [q.group]: Math.min(acc[q.group] ?? Infinity, getTotalTime(q)),
};
-};
+}
const getFastestPerGroup = (queries: QueryData[]) =>
- queries.reduce>( fastestCallback, {} );
+ queries.reduce>(fastestCallback, {});
const analyze = (queries: QueryData[]): AnalysedQuery[] => {
// fastest query in each group
@@ -90,14 +94,14 @@ interface CompareTableProps {
queries: AppState['queries'];
}
-const CompareTable = ({ queries }: CompareTableProps) => {
+function CompareTable({ queries }: CompareTableProps) {
const comparedQueries = analyze(Object.values(queries));
comparedQueries.sort(
(a, b) =>
// sort by group alphabetically
a.group.localeCompare(b.group) ||
// if same group, sort by speed ascending
- a.relativeSpeed - b.relativeSpeed
+ a.relativeSpeed - b.relativeSpeed,
);
return (
@@ -131,6 +135,6 @@ const CompareTable = ({ queries }: CompareTableProps) => {
);
-};
+}
export default CompareTable;
diff --git a/frontend/components/views/CompareView/CompareView.tsx b/frontend/components/views/CompareView/CompareView.tsx
index 8dc96469..33c0e143 100644
--- a/frontend/components/views/CompareView/CompareView.tsx
+++ b/frontend/components/views/CompareView/CompareView.tsx
@@ -9,7 +9,8 @@ interface CompareViewProps {
show: boolean;
}
-const CompareView = ({ queries, show }: CompareViewProps) => {
+// compare view literally shows the compared view of the statistics of the queries.
+function CompareView({ queries, show }: CompareViewProps) {
if (!show) return null;
return (
@@ -17,6 +18,6 @@ const CompareView = ({ queries, show }: CompareViewProps) => {
);
-};
+}
export default CompareView;
diff --git a/frontend/components/views/DbView/DatabaseDetails.tsx b/frontend/components/views/DbView/DatabaseDetails.tsx
index 0470e125..708b5675 100644
--- a/frontend/components/views/DbView/DatabaseDetails.tsx
+++ b/frontend/components/views/DbView/DatabaseDetails.tsx
@@ -13,7 +13,7 @@ const Container = styled.a`
justify-content: space-between;
`;
-const DatabaseDetails = ({ db }: DatabaseDetailsProps) => {
+function DatabaseDetails({ db }: DatabaseDetailsProps) {
if (!db) return null;
return (
@@ -24,6 +24,6 @@ const DatabaseDetails = ({ db }: DatabaseDetailsProps) => {
);
-};
+}
-export default DatabaseDetails;
\ No newline at end of file
+export default DatabaseDetails;
diff --git a/frontend/components/views/DbView/DbView.tsx b/frontend/components/views/DbView/DbView.tsx
index c61d4dc2..95077ead 100644
--- a/frontend/components/views/DbView/DbView.tsx
+++ b/frontend/components/views/DbView/DbView.tsx
@@ -11,7 +11,7 @@ import { sidebarShowButtonSize } from '../../../style-variables';
interface DbViewProps {
selectedDb: AppState['selectedDb'];
show: boolean;
- setERView: (boolean) => void;
+ setERView: (boolean: boolean) => void;
ERView: boolean;
curDBType: DBType | undefined;
DBInfo: DatabaseInfo[] | undefined;
@@ -26,8 +26,17 @@ const StyledDummyButton = styled(Button)`
right: ${sidebarShowButtonSize};
`;
-const DbView = ({ selectedDb, show, setERView, ERView, curDBType, DBInfo, dbTables, selectedTable, setSelectedTable}: DbViewProps) => {
-
+function DbView({
+ selectedDb,
+ show,
+ setERView,
+ ERView,
+ curDBType,
+ DBInfo,
+ dbTables,
+ selectedTable,
+ setSelectedTable,
+}: DbViewProps) {
const [open, setOpen] = useState(false);
const handleClickOpen = () => {
@@ -38,6 +47,7 @@ const DbView = ({ selectedDb, show, setERView, ERView, curDBType, DBInfo, dbTabl
setOpen(false);
};
+ // if the program can't find the database, it will return null. else it will return the selected db.
const db = DBInfo?.find((dbi) => dbi.db_name === selectedDb);
if (!show) return null;
@@ -55,7 +65,7 @@ const DbView = ({ selectedDb, show, setERView, ERView, curDBType, DBInfo, dbTabl
/>
- {(selectedTable && !ERView) ? (
+ {selectedTable && !ERView ? (
>
);
-};
+}
export default DbView;
diff --git a/frontend/components/views/DbView/TableDetails.tsx b/frontend/components/views/DbView/TableDetails.tsx
index 9a668999..44281b14 100644
--- a/frontend/components/views/DbView/TableDetails.tsx
+++ b/frontend/components/views/DbView/TableDetails.tsx
@@ -27,8 +27,8 @@ interface TableDetailsProps {
table: TableInfo | undefined;
}
-const TableDetails = ({ table }: TableDetailsProps) => (
- <>
+function TableDetails({ table }: TableDetailsProps) {
+ return <>
{`${table?.table_name}`}
@@ -64,6 +64,6 @@ const TableDetails = ({ table }: TableDetailsProps) => (
>
-);
+}
export default TableDetails;
diff --git a/frontend/components/views/DbView/TablesTabBar.tsx b/frontend/components/views/DbView/TablesTabBar.tsx
index cde83b3c..6d4d32e1 100644
--- a/frontend/components/views/DbView/TablesTabBar.tsx
+++ b/frontend/components/views/DbView/TablesTabBar.tsx
@@ -11,9 +11,9 @@ import ERTables from '../ERTables/ERTabling';
interface TabPanelProps {
children?: React.ReactNode;
- index: any;
- value: any;
- curDBType: DBType | undefined;
+ index: number;
+ value: number;
+ /* curDBType: DBType | undefined; */
}
const StyledToggleButtonGroup = styled(ToggleButtonGroup)`
background-color: ${greenPrimary};
@@ -26,18 +26,20 @@ const StyledTabs = styled(Tabs)`
border-radius: 5px;
`;
-const TabPanel = ({ children, value, index, curDBType }: TabPanelProps) => (
-
- {value === index && children}
-
-);
+function TabPanel({ children, value, index /* curDBType */ }: TabPanelProps) {
+ return (
+
+ {value === index && children}
+
+ );
+}
-const a11yProps = (index: any) => ({
+const a11yProps = (index: number) => ({
id: `scrollable-auto-tab-${index}`,
'aria-controls': `scrollable-auto-tabpanel-${index}`,
});
@@ -47,29 +49,32 @@ interface TablesTabBarProps {
selectTable: (table: TableInfo) => void;
selectedTable: TableInfo | undefined;
selectedDb: AppState['selectedDb'];
- setERView?: (boolean) => void;
+ setERView?: (boolean: boolean) => void;
+ curDBType: DBType | undefined;
+}
+
+interface HandleChangeFunc {
+ (event: React.ChangeEvent, newValue: number): void;
+}
+
+interface ErViewProps {
+ active: boolean;
+ tables: TableInfo[];
+ selectedDb: AppState['selectedDb'];
curDBType: DBType | undefined;
+ tableIndex: number;
+ handleChange: HandleChangeFunc;
}
-const TablesTabs = ({
+function ErView({
+ active,
tables,
- selectTable,
- selectedTable,
selectedDb,
- setERView,
curDBType,
-}: TablesTabBarProps) => {
- const handleChange = (event: React.ChangeEvent<{}>, newValue: number) => {
- selectTable(tables[newValue]);
- };
-
- const tableIndex = tables.findIndex(
- ({ table_name }) => table_name === selectedTable?.table_name
- );
-
- const [active, setActive] = useState(true);
-
- const ErView = () => (
+ tableIndex,
+ handleChange,
+}: ErViewProps) {
+ return (
{active ? (
- {tables.map(({ table_name: name }, index) => (
+ {tables.map(({ table_name: name }, index: number) => (
))}
;
@@ -99,7 +104,7 @@ const TablesTabs = ({
value={tableIndex}
index={index}
key={tableMap.table_name}
- curDBType={curDBType}
+ /* curDBType={curDBType} */
>
@@ -108,8 +113,27 @@ const TablesTabs = ({
)}
);
+}
+
+function TablesTabs({
+ tables,
+ selectTable,
+ selectedTable,
+ selectedDb,
+ setERView,
+ curDBType,
+}: TablesTabBarProps) {
+ const handleChange: HandleChangeFunc = (event, newValue) => {
+ selectTable(tables[newValue]);
+ };
+
+ const tableIndex = tables.findIndex(
+ ({ table_name }) => table_name === selectedTable?.table_name,
+ );
- const handleView = (e, newActive) => {
+ const [active, setActive] = useState(true);
+
+ const handleView = (e, newActive: boolean | null) => {
// force at least one selected view
if (newActive !== null) {
// set the new view to the currect view
@@ -131,16 +155,29 @@ const TablesTabs = ({
onChange={handleView}
aria-label="active-view"
>
-
+
ER diagram
-
+
Table
- {ErView()}
+
);
-};
+}
export default TablesTabs;
diff --git a/frontend/components/views/DbView/sample-updateschema.js b/frontend/components/views/DbView/sample-updateschema.js
index f84bdace..3711a770 100644
--- a/frontend/components/views/DbView/sample-updateschema.js
+++ b/frontend/components/views/DbView/sample-updateschema.js
@@ -1,137 +1,136 @@
-const updateSchema =
-{
- database: "starwars",
+const updateSchema = {
+ database: 'starwars',
updates: {
addTables: [
{
- is_insertable_into: "YES",
- table_catalog: "starwars",
- table_name: "people",
- table_schema: "public"
+ is_insertable_into: 'YES',
+ table_catalog: 'starwars',
+ table_name: 'people',
+ table_schema: 'public',
},
{
- is_insertable_into: "YES",
- table_catalog: "starwars",
- table_name: "people_in_films",
- table_schema: "public"
+ is_insertable_into: 'YES',
+ table_catalog: 'starwars',
+ table_name: 'people_in_films',
+ table_schema: 'public',
},
{
- is_insertable_into: "YES",
- table_catalog: "starwars",
- table_name: "testdrop",
- table_schema: "public"
+ is_insertable_into: 'YES',
+ table_catalog: 'starwars',
+ table_name: 'testdrop',
+ table_schema: 'public',
},
],
dropTables: [
{
- table_name: "testdrop",
- table_schema: "public"
- }
+ table_name: 'testdrop',
+ table_schema: 'public',
+ },
],
- alterTables: [
+ alterTables: [
{
- is_insertable_into: "YES",
- table_catalog: "starwars",
- table_name: "people",
- new_table_name: "people_new",
- table_schema: "public",
+ is_insertable_into: 'YES',
+ table_catalog: 'starwars',
+ table_name: 'people',
+ new_table_name: 'people_new',
+ table_schema: 'public',
addColumns: [
{
- column_name: "mass",
- data_type: "SERIAL"
+ column_name: 'mass',
+ data_type: 'SERIAL',
},
],
dropColumns: [
],
- alterColumns: [
+ alterColumns: [
{
character_maximum_length: 20,
- column_name: "mass",
- new_column_name: "mass_new",
+ column_name: 'mass',
+ new_column_name: 'mass_new',
add_constraint: [
{
- constraint_type: "PRIMARY KEY",
- constraint_name: "pk2",
+ constraint_type: 'PRIMARY KEY',
+ constraint_name: 'pk2',
foreign_table: null,
foreign_column: null,
},
],
data_type: null,
- is_nullable: "NO",
- drop_constraint: []
+ is_nullable: 'NO',
+ drop_constraint: [],
},
],
},
{
- is_insertable_into: "YES",
- table_catalog: "starwars",
- table_name: "people_in_films",
- new_table_name: "people_in_starwars",
- table_schema: "public",
+ is_insertable_into: 'YES',
+ table_catalog: 'starwars',
+ table_name: 'people_in_films',
+ new_table_name: 'people_in_starwars',
+ table_schema: 'public',
addColumns: [
{
- column_name: "id",
- data_type: "SERIAL"
+ column_name: 'id',
+ data_type: 'SERIAL',
},
{
- column_name: "person_name",
- data_type: "INTEGER"
+ column_name: 'person_name',
+ data_type: 'INTEGER',
},
{
- column_name: "name1",
- data_type: "VARCHAR"
+ column_name: 'name1',
+ data_type: 'VARCHAR',
},
],
dropColumns: [
{
- column_name: "name1"
+ column_name: 'name1',
},
],
- alterColumns: [
+ alterColumns: [
{
character_maximum_length: 20,
- column_name: "id",
- new_column_name: "id_new",
+ column_name: 'id',
+ new_column_name: 'id_new',
add_constraint: [
{
- constraint_type: "PRIMARY KEY",
- constraint_name: "pk",
+ constraint_type: 'PRIMARY KEY',
+ constraint_name: 'pk',
foreign_table: null,
foreign_column: null,
},
{
- constraint_type: "UNIQUE",
- constraint_name: "unique_1",
+ constraint_type: 'UNIQUE',
+ constraint_name: 'unique_1',
foreign_table: null,
foreign_column: null,
},
],
data_type: null,
- is_nullable: "NO",
- drop_constraint: []
+ is_nullable: 'NO',
+ drop_constraint: [],
},
{
character_maximum_length: 20,
- column_name: "person_name",
- constraint_name: "mass_fk0",
- new_column_name: "person_new_name",
+ column_name: 'person_name',
+ constraint_name: 'mass_fk0',
+ new_column_name: 'person_new_name',
add_constraint: [
{
- constraint_type: "FOREIGN KEY",
- constraint_name: "fk000",
- foreign_table: "people",
- foreign_column: "mass",
- unique: null,
+ constraint_type: 'FOREIGN KEY',
+ constraint_name: 'fk000',
+ foreign_table: 'people',
+ foreign_column: 'mass',
+ unique: null,
},
],
data_type: null,
- is_nullable: "YES",
- drop_constraint: []
+ is_nullable: 'YES',
+ drop_constraint: [],
},
],
},
],
- }
-}
+ },
+};
-export default updateSchema;
\ No newline at end of file
+export default updateSchema;
diff --git a/frontend/components/views/ERTables/ERDisplayWindow.tsx b/frontend/components/views/ERTables/ERDisplayWindow.tsx
new file mode 100644
index 00000000..9517235f
--- /dev/null
+++ b/frontend/components/views/ERTables/ERDisplayWindow.tsx
@@ -0,0 +1,335 @@
+import fs from 'fs';
+import { Button } from '@mui/material';
+import { ipcRenderer } from 'electron';
+import React, {
+ useCallback,
+ useEffect,
+ useRef,
+ useState,
+ useReducer,
+} from 'react';
+import ReactFlow, {
+ applyEdgeChanges,
+ applyNodeChanges,
+ Background,
+ Controls,
+ Edge,
+ MiniMap,
+ Node,
+} from 'reactflow';
+import 'reactflow/dist/style.css';
+import styled from 'styled-components';
+import { DBType } from '../../../../backend/BE_types';
+import stateToReactFlow from '../../../lib/convertStateToReactFlow';
+import {
+ AddTablesObjType,
+ AppState,
+ SchemaStateObjType,
+ TableHeaderNodeType,
+ TableInfo,
+ UpdatesObjType,
+} from '../../../types';
+import nodeTypes from './NodeTypes';
+import { ErdUpdatesType } from '../../../../shared/types/erTypes';
+import {
+ mainErdReducer,
+ initialErdState,
+} from '../../../state_management/Reducers/ERDReducers';
+import * as PostgresActions from '../../../state_management/Actions/ERDPsqlActions';
+import * as MySqlActions from '../../../state_management/Actions/ERDMySqlActions';
+import * as SqLiteActions from '../../../state_management/Actions/ERDSqLiteActions';
+
+import * as colors from '../../../style-variables';
+
+/**
+ * FRONTEND COSMETIC STUFF
+ */
+
+// defines the styling for the ERDiagram window
+const rfStyle: object = {
+ height: '65vh',
+ border: `2px solid ${colors.greenPrimary}`,
+ borderRadius: '0.3rem',
+};
+
+// defines the styling for the minimap
+const mmStyle: object = {
+ backgroundColor: colors.bgColor,
+ border: `2px solid ${colors.greenPrimary}`,
+ borderRadius: '0.3rem',
+ height: 150,
+ overflow: 'hidden',
+};
+
+// defines the styling for the minimap nodes
+const nodeColor = (node: Node): string => {
+ switch (node.type) {
+ case 'tableHeader':
+ return colors.greyLightest;
+ case 'tableField':
+ return 'white';
+ default:
+ return 'red';
+ }
+};
+
+type ERTablingProps = {
+ tables: TableInfo[];
+ selectedDb: AppState['selectedDb'];
+ curDBType: DBType | undefined;
+};
+
+const StyledViewButton = styled(Button)`
+ margin: 1rem;
+ margin-left: 0rem;
+ font-size: 0.78em;
+ padding: 0.45em;
+`;
+
+/**
+ * ACTION MAP
+ * This is dynamic since we imported as * we have access to all functions!
+ */
+
+const actionMap = {
+ [DBType.Postgres]: PostgresActions,
+ [DBType.MySQL]: MySqlActions,
+ [DBType.SQLite]: SqLiteActions,
+};
+
+/**
+ * MAIN FUNCTION
+ * */
+function ERTabling({ tables, selectedDb, curDBType }: ERTablingProps) {
+ const [schemaState, setSchemaState] = useState
({
+ database: 'initial',
+ tableList: [],
+ });
+ const [nodes, setNodes] = useState([]);
+ const [edges, setEdges] = useState([]);
+
+ /**
+ * USEREDUCER
+ * */
+ const [erdState, erdDispatch] = useReducer(mainErdReducer, initialErdState);
+
+ // state for custom controls toggle
+ // when tables (which is the database that is selected changes, update SchemaState)
+ useEffect(() => {
+ setSchemaState({ database: selectedDb, tableList: tables });
+ }, [tables, selectedDb]);
+
+ // define an object using the useRef hook to maintain its value throughout all rerenders
+ // this object will hold the data that needs to get sent to the backend to update the
+ // SQL database. Each node will have access to this backendObj
+ const updates: UpdatesObjType = {
+ addTables: [],
+ dropTables: [],
+ alterTables: [],
+ };
+ const backendObj = useRef({
+ database: schemaState.database,
+ updates,
+ });
+
+ // NEW updates array
+ const erdUpdatesArray: ErdUpdatesType = [];
+
+ //define useReducer for all actions that can trigger from table
+
+ // whenever the selectedDb changes, reassign the backendObj to contain this selectedDb
+ useEffect(() => {
+ backendObj.current.database = selectedDb;
+ console.log('backendObj: ', backendObj);
+
+ // backendColumnObj.current.database = selectedDb;
+ }, [selectedDb]);
+
+ // whenever the node changes, this callback gets invoked
+ const onNodesChange = useCallback(
+ (changes) => setNodes((nds) => applyNodeChanges(changes, nds)),
+ [setNodes],
+ );
+ // whenever the edges changes, this callback gets invoked
+ const onEdgesChange = useCallback(
+ (changes) => setEdges((eds) => applyEdgeChanges(changes, eds)),
+ [setEdges],
+ );
+
+ // This function handles the add table button on the ER Diagram view
+ const handleAddTable = (): void => {
+ const schemaStateString = JSON.stringify(schemaState);
+ const schemaStateCopy = JSON.parse(schemaStateString);
+ // create an addTablesType object with AddTablesObjType
+ const addTableObj: AddTablesObjType = {
+ is_insertable_into: 'yes',
+ table_name: `NewTable${schemaStateCopy.tableList.length + 1}`,
+ table_schema: 'public',
+ table_catalog: `${schemaStateCopy.database}`,
+ columns: [],
+ };
+ // update the backendObj
+ backendObj.current.updates.addTables.push(addTableObj);
+ // push a new object with blank properties
+ schemaStateCopy.tableList.push(addTableObj);
+ // set the state
+ setSchemaState(schemaStateCopy);
+ };
+
+ const handleSaveLayout = async (): Promise => {
+ // get the array of header nodes
+ const headerNodes = nodes.filter(
+ (node) => node.type === 'tableHeader',
+ ) as TableHeaderNodeType[];
+ // create object for the current database
+
+ type TablePosObjType = {
+ table_name: string;
+ table_position: {
+ x: number;
+ y: number;
+ };
+ };
+
+ type DatabaseLayoutObjType = {
+ db_name: string;
+ db_tables: TablePosObjType[];
+ };
+
+ const currDatabaseLayout: DatabaseLayoutObjType = {
+ db_name: backendObj.current.database,
+ db_tables: [],
+ };
+
+ // populate the db_tables property for the database
+ headerNodes.forEach((node) => {
+ const tablePosObj: TablePosObjType = {
+ table_name: node.tableName,
+ table_position: { x: node.position.x, y: node.position.y },
+ };
+ currDatabaseLayout.db_tables.push(tablePosObj);
+ });
+
+ const location: string = await ipcRenderer.invoke('get-path', 'temp');
+ const filePath = location.concat('/UserTableLayouts.json');
+
+ fs.readFile(filePath, 'utf-8', (err, data) => {
+ // check if error exists (no file found)
+ if (err) {
+ fs.writeFile(
+ filePath,
+ JSON.stringify([currDatabaseLayout], null, 2),
+ (error) => {
+ if (error) console.log(error);
+ },
+ );
+ // check if file exists
+ } else {
+ const dbLayouts = JSON.parse(data) as DatabaseLayoutObjType[];
+ let dbExists = false;
+ // if db has saved layout settings overwrite them
+ dbLayouts.forEach((db, i) => {
+ if (db.db_name === currDatabaseLayout.db_name) {
+ dbLayouts[i] = currDatabaseLayout;
+ dbExists = true;
+ }
+ });
+ // if db has no saved layout settings add to file
+ if (!dbExists) dbLayouts.push(currDatabaseLayout);
+
+ // write changes to the file
+ fs.writeFile(filePath, JSON.stringify(dbLayouts, null, 2), (error) => {
+ if (error) console.log(error);
+ });
+ }
+ });
+ };
+ function handleClickSave(): void {
+ // This function sends a message to the back end with
+ // the data in backendObj.current
+ handleSaveLayout();
+ ipcRenderer
+ .invoke('ertable-schemaupdate', backendObj.current, selectedDb, curDBType)
+ .then(async () => {
+ // resets the backendObj
+ console.log('inside the handleClick save', backendObj.current);
+ backendObj.current = {
+ database: schemaState.database,
+ updates,
+ };
+ })
+ .catch((err: object) => {
+ console.log(err);
+ });
+ }
+
+ // This useEffect fires when schemaState changes and will convert the state to a form react flow requires
+ useEffect(() => {
+ // send the schema state to the convert method to convert the schema to the form react flow requires
+ const initialState = stateToReactFlow.convert(schemaState);
+ // create a deep copy of the state, to ensure the state is not directly modified
+ const schemaStateString = JSON.stringify(schemaState);
+ const schemaStateCopy = JSON.parse(schemaStateString);
+ // create a nodesArray with the initialState data
+ const nodesArray = initialState.nodes.map((currentNode) => {
+ // add the schemaStateCopy and setSchemaState to the nodes data so that each node
+ // has reference to the current state and can modify the state to cause rerenders
+ const { data } = currentNode;
+ return {
+ ...currentNode,
+ data: {
+ ...data,
+ schemaStateCopy,
+ setSchemaState,
+ backendObj,
+ handleClickSave,
+ },
+ };
+ });
+ setNodes(nodesArray);
+ setEdges(initialState.edges);
+ }, [schemaState]);
+
+ return (
+
+
+ {' '}
+ Add New Table{' '}
+
+
+ {' '}
+ Save{' '}
+
+
+
+
+
+
+
+ );
+}
+
+export default ERTabling;
diff --git a/frontend/components/views/ERTables/ERTabling.tsx b/frontend/components/views/ERTables/ERTabling.tsx
index b792aaa8..e98f37bc 100644
--- a/frontend/components/views/ERTables/ERTabling.tsx
+++ b/frontend/components/views/ERTables/ERTabling.tsx
@@ -1,28 +1,29 @@
import fs from 'fs';
-import { ipcRenderer, remote } from 'electron';
-import React, { useCallback, useEffect, useState, useRef } from 'react';
+import { Button } from '@mui/material';
+import { ipcRenderer } from 'electron';
+import React, { useCallback, useEffect, useRef, useState } from 'react';
import ReactFlow, {
- Controls,
applyEdgeChanges,
applyNodeChanges,
Background,
- Node,
+ Controls,
Edge,
MiniMap,
+ Node,
} from 'reactflow';
-import 'reactflow/dist/style.css'
-import { Button } from '@mui/material';
+import 'reactflow/dist/style.css';
import styled from 'styled-components';
+import { DBType } from '../../../../backend/BE_types';
import stateToReactFlow from '../../../lib/convertStateToReactFlow';
-import nodeTypes from './NodeTypes';
import {
- UpdatesObjType,
AddTablesObjType,
- TableHeaderNodeType,
AppState,
SchemaStateObjType,
+ TableHeaderNodeType,
+ TableInfo,
+ UpdatesObjType,
} from '../../../types';
-import { DBType } from '../../../../backend/BE_types';
+import nodeTypes from './NodeTypes';
import * as colors from '../../../style-variables';
@@ -43,7 +44,7 @@ const mmStyle: object = {
};
// defines the styling for the minimap nodes
-const nodeColor = (node): string => {
+const nodeColor = (node: Node): string => {
switch (node.type) {
case 'tableHeader':
return colors.greyLightest;
@@ -54,9 +55,8 @@ const nodeColor = (node): string => {
}
};
-
type ERTablingProps = {
- tables;
+ tables: TableInfo[];
selectedDb: AppState['selectedDb'];
curDBType: DBType | undefined;
};
@@ -68,6 +68,7 @@ const StyledViewButton = styled(Button)`
padding: 0.45em;
`;
+// the ERTabling componenet is what deals with the ER Diagram view and it's positioning. All of this gets converted to react flow, as for the backendObj, this is what gets sent to the backend to run all the queries.
function ERTabling({ tables, selectedDb, curDBType }: ERTablingProps) {
const [schemaState, setSchemaState] = useState({
database: 'initial',
@@ -75,11 +76,13 @@ function ERTabling({ tables, selectedDb, curDBType }: ERTablingProps) {
});
const [nodes, setNodes] = useState([]);
const [edges, setEdges] = useState([]);
+
// state for custom controls toggle
// when tables (which is the database that is selected changes, update SchemaState)
useEffect(() => {
setSchemaState({ database: selectedDb, tableList: tables });
}, [tables, selectedDb]);
+
// define an object using the useRef hook to maintain its value throughout all rerenders
// this object will hold the data that needs to get sent to the backend to update the
// SQL database. Each node will have access to this backendObj
@@ -92,29 +95,21 @@ function ERTabling({ tables, selectedDb, curDBType }: ERTablingProps) {
database: schemaState.database,
updates,
});
- useEffect(() => {
- backendObj.current.database = selectedDb;
- }, [selectedDb]);
- const backendColumnObj = useRef({
- database: schemaState.database,
- updates,
- });
// whenever the selectedDb changes, reassign the backendObj to contain this selectedDb
useEffect(() => {
backendObj.current.database = selectedDb;
- backendColumnObj.current.database = selectedDb;
}, [selectedDb]);
// whenever the node changes, this callback gets invoked
const onNodesChange = useCallback(
(changes) => setNodes((nds) => applyNodeChanges(changes, nds)),
- [setNodes]
+ [setNodes],
);
// whenever the edges changes, this callback gets invoked
const onEdgesChange = useCallback(
(changes) => setEdges((eds) => applyEdgeChanges(changes, eds)),
- [setEdges]
+ [setEdges],
);
// This function handles the add table button on the ER Diagram view
@@ -125,7 +120,7 @@ function ERTabling({ tables, selectedDb, curDBType }: ERTablingProps) {
const addTableObj: AddTablesObjType = {
is_insertable_into: 'yes',
table_name: `NewTable${schemaStateCopy.tableList.length + 1}`,
- table_schema: `public`,
+ table_schema: 'public',
table_catalog: `${schemaStateCopy.database}`,
columns: [],
};
@@ -133,16 +128,18 @@ function ERTabling({ tables, selectedDb, curDBType }: ERTablingProps) {
backendObj.current.updates.addTables.push(addTableObj);
// push a new object with blank properties
schemaStateCopy.tableList.push(addTableObj);
- // set the state
+ // set the state, which worries about the table positions.
setSchemaState(schemaStateCopy);
};
- const handleSaveLayout = (): void => {
+ // This function is supposed to handle the layout saving of the positions of the tables.
+ const handleSaveLayout = async (): Promise => {
// get the array of header nodes
const headerNodes = nodes.filter(
- (node) => node.type === 'tableHeader'
+ (node) => node.type === 'tableHeader',
) as TableHeaderNodeType[];
// create object for the current database
+
type TablePosObjType = {
table_name: string;
table_position: {
@@ -170,20 +167,20 @@ function ERTabling({ tables, selectedDb, curDBType }: ERTablingProps) {
currDatabaseLayout.db_tables.push(tablePosObj);
});
- const location: string = remote.app
- .getPath('temp')
- .concat('/UserTableLayouts.json');
- fs.readFile(location, 'utf-8', (err, data) => {
+ // what this is doing is it's creating a json file in your temp folder and saving the layout of the tables in there. so positioning is all saved locally.
+ const location: string = await ipcRenderer.invoke('get-path', 'temp');
+ const filePath = location.concat('/UserTableLayouts.json');
+
+ fs.readFile(filePath, 'utf-8', (err, data) => {
// check if error exists (no file found)
if (err) {
fs.writeFile(
- location,
+ filePath,
JSON.stringify([currDatabaseLayout], null, 2),
(error) => {
if (error) console.log(error);
- }
+ },
);
-
// check if file exists
} else {
const dbLayouts = JSON.parse(data) as DatabaseLayoutObjType[];
@@ -199,12 +196,14 @@ function ERTabling({ tables, selectedDb, curDBType }: ERTablingProps) {
if (!dbExists) dbLayouts.push(currDatabaseLayout);
// write changes to the file
- fs.writeFile(location, JSON.stringify(dbLayouts, null, 2), (error) => {
+ fs.writeFile(filePath, JSON.stringify(dbLayouts, null, 2), (error) => {
if (error) console.log(error);
});
}
});
};
+
+ // When you click the save button, you save the layout of the tables and you send a very large object to the backend containing all of the changes.
function handleClickSave(): void {
// This function sends a message to the back end with
// the data in backendObj.current
@@ -251,20 +250,18 @@ function ERTabling({ tables, selectedDb, curDBType }: ERTablingProps) {
}, [schemaState]);
return (
-
+
{' '}
- Add New Table
- {' '}
+ Add New Table{' '}
{' '}
- Save
- {' '}
+ Save{' '}
isTablePosObjType(el))
+ );
+}
+
+export function isDatabaseLayoutObjTypeArr(
+ object: unknown,
+): object is DatabaseLayoutObjType[] {
+ return (
+ Array.isArray(object) && object.every((el) => isDatabaseLayoutObjType(el))
+ );
+}
+
export default nodeTypes;
diff --git a/frontend/components/views/ERTables/TableFieldCheckBox.tsx b/frontend/components/views/ERTables/TableFieldCheckBox.tsx
index 9a61b122..e447471a 100644
--- a/frontend/components/views/ERTables/TableFieldCheckBox.tsx
+++ b/frontend/components/views/ERTables/TableFieldCheckBox.tsx
@@ -7,33 +7,34 @@ type TableFieldCheckBoxProps = {
onChange? : ((any) => void)[] | ((any) => void);
}
-const TableFieldCheckBox = ({label, idName, isChecked, onChange}: TableFieldCheckBoxProps) => {
+function TableFieldCheckBox({
+ label, idName, isChecked, onChange,
+}: TableFieldCheckBoxProps) {
const onChangeHandler = (e) => {
// confirm that onChange is given
if (!onChange) return;
// if an array of callbacks is given, apply consecutively
if (Array.isArray(onChange)) {
- onChange.forEach(func => func(e.target.checked))
+ onChange.forEach((func) => func(e.target.checked));
} else {
// if only one callback is given, apply solely
- onChange(e.target.checked)
+ onChange(e.target.checked);
}
- }
+ };
- return (
-
+ return (
+
- )
+ );
}
-
-export default TableFieldCheckBox;
\ No newline at end of file
+export default TableFieldCheckBox;
diff --git a/frontend/components/views/ERTables/TableFieldDropDown.tsx b/frontend/components/views/ERTables/TableFieldDropDown.tsx
index 78c159d1..a45ce6bc 100644
--- a/frontend/components/views/ERTables/TableFieldDropDown.tsx
+++ b/frontend/components/views/ERTables/TableFieldDropDown.tsx
@@ -16,7 +16,7 @@ type TableFieldDropDownProps = {
setFkOptions?: (fkOptions: string[]) => void;
};
-const TableFieldDropDown = ({
+function TableFieldDropDown({
label,
idName,
options,
@@ -24,8 +24,7 @@ const TableFieldDropDown = ({
isDisabled,
otherTables,
setFkOptions,
-}: TableFieldDropDownProps) => {
-
+}: TableFieldDropDownProps) {
const optionsArray = options.map((option, i) => (
el.table_name === e.target.value
+ (el) => el.table_name === e.target.value,
);
if (newTableFkOptions) {
@@ -65,6 +64,6 @@ const TableFieldDropDown = ({
);
-};
+}
export default TableFieldDropDown;
diff --git a/frontend/components/views/ERTables/TableFieldDropDownOption.tsx b/frontend/components/views/ERTables/TableFieldDropDownOption.tsx
index 785ee9d8..83577782 100644
--- a/frontend/components/views/ERTables/TableFieldDropDownOption.tsx
+++ b/frontend/components/views/ERTables/TableFieldDropDownOption.tsx
@@ -4,18 +4,18 @@ type TableFieldDropDownOptionProps = {
idName: string;
option: string;
}
-
-const TableFieldDropDownOption = (props: TableFieldDropDownOptionProps) => {
+
+function TableFieldDropDownOption(props: TableFieldDropDownOptionProps) {
const { idName, option } = props;
return (
-
{option}
);
}
-
-export default TableFieldDropDownOption;
\ No newline at end of file
+
+export default TableFieldDropDownOption;
diff --git a/frontend/components/views/ERTables/TableFieldInput.tsx b/frontend/components/views/ERTables/TableFieldInput.tsx
index e8bf8921..581e86fd 100644
--- a/frontend/components/views/ERTables/TableFieldInput.tsx
+++ b/frontend/components/views/ERTables/TableFieldInput.tsx
@@ -5,15 +5,15 @@ type TableFieldInputProps = {
label: string;
idName: string;
};
-const TableFieldInput = ({
+function TableFieldInput({
defaultValue,
label,
idName,
-}: TableFieldInputProps) => (
-
+}: TableFieldInputProps) {
+ return
{`${label}:`}
- );
+}
export default TableFieldInput;
diff --git a/frontend/components/views/ERTables/TableFieldNode.tsx b/frontend/components/views/ERTables/TableFieldNode.tsx
index cb98a8c3..b1af073f 100644
--- a/frontend/components/views/ERTables/TableFieldNode.tsx
+++ b/frontend/components/views/ERTables/TableFieldNode.tsx
@@ -130,7 +130,7 @@ function TableField({ data }: TableFieldProps) {
rename_constraint: null,
table_schema: null,
table_name: null,
- constraint_type: null
+ constraint_type: null,
};
for (let i = 0; i < schemaStateCopy.tableList.length; i += 1) {
@@ -157,14 +157,12 @@ function TableField({ data }: TableFieldProps) {
// handle column_name change
const columnNameInput = document.getElementById(
- `type-input-column_name-${tableColumn}`
+ `type-input-column_name-${tableColumn}`,
) as HTMLSelectElement;
if (column_name !== columnNameInput.value) {
alterColumnsObj.new_column_name = columnNameInput.value;
- schemaStateCopy.tableList[i].columns[j].column_name =
- columnNameInput.value;
- schemaStateCopy.tableList[i].columns[j].new_column_name =
- columnNameInput.value;
+ schemaStateCopy.tableList[i].columns[j].column_name = columnNameInput.value;
+ schemaStateCopy.tableList[i].columns[j].new_column_name = columnNameInput.value;
if (constraint_type === 'PRIMARY KEY') alterColumnsObj.rename_constraint = `pk_${alterTablesObj.table_name}${column_name}`;
if (constraint_type === 'FOREIGN KEY') alterColumnsObj.rename_constraint = `fk_${alterTablesObj.table_name}${column_name}`;
if (constraint_type === 'UNIQUE') alterColumnsObj.rename_constraint = `unique_${alterTablesObj.table_name}${column_name}`;
@@ -172,46 +170,44 @@ function TableField({ data }: TableFieldProps) {
// handle isNullable change
const isNullable = document.getElementById(
- `allow-null-chkbox-${tableColumn}`
+ `allow-null-chkbox-${tableColumn}`,
) as HTMLInputElement;
const isNullableString: 'YES' | 'NO' = isNullable.checked ? 'YES' : 'NO';
- schemaStateCopy.tableList[i].columns[j].is_nullable = isNullableString;
- alterColumnsObj.is_nullable =
- isNull !== isNullableString ? isNullableString : null;
+ schemaStateCopy.tableList[i].columns[j].is_nullable = isNullableString;
+ alterColumnsObj.is_nullable = isNull !== isNullableString ? isNullableString : null;
// handle max_character_length change
const columnMaxCharacterLengthInput = document.getElementById(
- `type-input-char_max_size-${tableColumn}`
+ `type-input-char_max_size-${tableColumn}`,
) as HTMLSelectElement;
if (columnMaxCharacterLengthInput.value) {
if (
- character_maximum_length !==
- parseInt(columnMaxCharacterLengthInput.value, 10)
+ character_maximum_length
+ !== parseInt(columnMaxCharacterLengthInput.value, 10)
) {
alterColumnsObj.character_maximum_length = parseInt(
columnMaxCharacterLengthInput.value,
- 10
+ 10,
);
schemaStateCopy.tableList[i].columns[
j
].character_maximum_length = parseInt(
columnMaxCharacterLengthInput.value,
- 10
+ 10,
);
}
}
// handle data_type change
const dataTypeInput = document.getElementById(
- `type-dd-${tableColumn}`
+ `type-dd-${tableColumn}`,
) as HTMLSelectElement;
if (
- (data_type === 'character varying' ? 'varchar' : data_type) !==
- dataTypeInput.value
+ (data_type === 'character varying' ? 'varchar' : data_type)
+ !== dataTypeInput.value
) {
alterColumnsObj.data_type = dataTypeInput.value;
- schemaStateCopy.tableList[i].columns[j].data_type =
- dataTypeInput.value;
+ schemaStateCopy.tableList[i].columns[j].data_type = dataTypeInput.value;
}
// handle add/Drop Constraint type
@@ -225,23 +221,23 @@ function TableField({ data }: TableFieldProps) {
/* handle primary key */
// get the primary key checkmark value
const pkCheckBox = document.getElementById(
- `primary-key-chkbox-${tableColumn}`
+ `primary-key-chkbox-${tableColumn}`,
) as HTMLInputElement;
// if constraint type is PK in state but checkbox is unchecked, drop the constraint
if (
- constraint_type === 'PRIMARY KEY' &&
- pkCheckBox.checked === false
+ constraint_type === 'PRIMARY KEY'
+ && pkCheckBox.checked === false
) {
// modify state to remove constraint
schemaStateCopy.tableList[i].columns[j].constraint_type = null;
// add the PK constraint name to the drop constraint array
alterColumnsObj.drop_constraint.push(
- `PK_${data.tableName + column_name}`
+ `PK_${data.tableName + column_name}`,
);
} // if constraint type is not in state but checkbox is checked, add the constraint
else if (
- constraint_type !== 'PRIMARY KEY' &&
- pkCheckBox.checked === true
+ constraint_type !== 'PRIMARY KEY'
+ && pkCheckBox.checked === true
) {
// modify state to remove constraint
schemaStateCopy.tableList[i].columns[j].constraint_type = 'PRIMARY KEY';
@@ -249,7 +245,7 @@ function TableField({ data }: TableFieldProps) {
const addConstraintObjCopy: AddConstraintObjType = { ...addConstraintObj };
// name the constraint PK_
addConstraintObjCopy.constraint_name = `pk_${data.tableName + column_name
- }`;
+ }`;
// assign the constraint_type to 'PRIMARY KEY'
addConstraintObjCopy.constraint_type = 'PRIMARY KEY';
// add the constraint obj to the alter columns obj
@@ -258,40 +254,40 @@ function TableField({ data }: TableFieldProps) {
// handle foreign key
const fkCheckBox = document.getElementById(
- `foreign-key-chkbox-${tableColumn}`
+ `foreign-key-chkbox-${tableColumn}`,
) as HTMLInputElement;
// if constraint type is FK in state but checkbox is unchecked, drop the constraint
if (
- constraint_type === 'FOREIGN KEY' &&
- fkCheckBox.checked === false
+ constraint_type === 'FOREIGN KEY'
+ && fkCheckBox.checked === false
) {
// modify state to remove constraint
- schemaStateCopy.tableList[i].columns[j].constraint_type = null;
+ schemaStateCopy.tableList[i].columns[j].constraint_type = null;
// add the fk constraint name to the drop constraint array
alterColumnsObj.drop_constraint.push(
- `FK_${data.tableName + column_name}`
+ `FK_${data.tableName + column_name}`,
);
} else if (
- constraint_type !== 'FOREIGN KEY' &&
- fkCheckBox.checked === true
+ constraint_type !== 'FOREIGN KEY'
+ && fkCheckBox.checked === true
) {
// modify state to add constraint
schemaStateCopy.tableList[i].columns[j].constraint_type = 'FOREIGN KEY';
const addConstraintObjCopy = { ...addConstraintObj };
// name the constraint FK_
addConstraintObjCopy.constraint_name = `fk_${data.tableName + column_name
- }`;
+ }`;
// assign the constraint type to 'FOREIGN KEY'
addConstraintObjCopy.constraint_type = 'FOREIGN KEY';
// get the value of the drop down for foreign table
const foreignTableDD = document.getElementById(
- `foreign-key-table-dd-${tableColumn}`
+ `foreign-key-table-dd-${tableColumn}`,
) as HTMLSelectElement;
// assign the constraintobjcopy to foreign table value
addConstraintObjCopy.foreign_table = foreignTableDD.value;
// get the value of the drop down for foreign column
const foreignColumnDD = document.getElementById(
- `foreign-key-field-dd-${tableColumn}`
+ `foreign-key-field-dd-${tableColumn}`,
) as HTMLSelectElement;
// assign the constraintobjcopy to foreign column value
addConstraintObjCopy.foreign_column = foreignColumnDD.value;
@@ -306,17 +302,16 @@ function TableField({ data }: TableFieldProps) {
schemaStateCopy.tableList[i].columns[j].constraint_type = null;
// add the unique constraint name to the drop constraint array
alterColumnsObj.drop_constraint.push(
- `unique_${data.tableName + column_name}`
+ `unique_${data.tableName + column_name}`,
);
- }
- else if (constraint_type !== 'UNIQUE' && uniqueCheckBox.checked === true) {
+ } else if (constraint_type !== 'UNIQUE' && uniqueCheckBox.checked === true) {
// modify state to add constraint
schemaStateCopy.tableList[i].columns[j].constraint_type = 'UNIQUE';
// create a copy in case multiple constraints are added
const addConstraintObjCopy: AddConstraintObjType = { ...addConstraintObj };
// name the constraint PK_
addConstraintObjCopy.constraint_name = `unique_${data.tableName + column_name
- }`;
+ }`;
// assign the constraint_type to 'UNIQUE'
addConstraintObjCopy.constraint_type = 'UNIQUE';
// add the constraint obj to the alter columns obj add_constraint array
@@ -378,7 +373,7 @@ function TableField({ data }: TableFieldProps) {
const allowNullID: string = `allow-null-chkbox-${tableColumn}`;
const allowNullCheckBox = document.getElementById(
- allowNullID
+ allowNullID,
) as HTMLSelectElement;
allowNullCheckBox.disabled = isFkChecked || isPkChecked;
};
diff --git a/frontend/components/views/ERTables/TableHeaderNode.tsx b/frontend/components/views/ERTables/TableHeaderNode.tsx
index fb9a34d4..df64bd28 100644
--- a/frontend/components/views/ERTables/TableHeaderNode.tsx
+++ b/frontend/components/views/ERTables/TableHeaderNode.tsx
@@ -22,7 +22,7 @@ function TableHeader({ data }: TableHeaderProps) {
const { table_name, schemaStateCopy, setSchemaState, backendObj } = data;
// find table we are editing in schemaStateCopy to use throughout all of our TableHeader functions
const currentTable = schemaStateCopy.tableList.find(
- (table) => table.table_name === table_name
+ (table) => table.table_name === table_name,
);
// This function handles the add column button on the table
const handleAddColumn = (): void => {
@@ -75,7 +75,7 @@ function TableHeader({ data }: TableHeaderProps) {
backendObj.current.updates.dropTables.push(dropTablesObj);
// update frontend
schemaStateCopy.tableList = schemaStateCopy.tableList.filter(
- (table) => table.table_name !== table_name
+ (table) => table.table_name !== table_name,
);
// set the state with the modified copy
setSchemaState(schemaStateCopy);
@@ -84,14 +84,15 @@ function TableHeader({ data }: TableHeaderProps) {
const warnUser = (): void => {
sendFeedback({
type: 'error',
- message: `WARNING: Changing table name will only rename constraints in fk_tableNameColumnName format. Use at your own discretion.`,
+ message:
+ 'WARNING: Changing table name will only rename constraints in fk_tableNameColumnName format. Use at your own discretion.',
});
};
// This function updates the table name when the user hits enter on the submit form
const handleChangeTableName = (e): void => {
if (e.key === 'Enter') {
const tableInputField = document.getElementById(
- `table-name-form-${data.table_name}`
+ `table-name-form-${data.table_name}`,
) as HTMLInputElement;
// update backend
@@ -161,7 +162,13 @@ function TableHeader({ data }: TableHeaderProps) {
/>
- Add Column
+
+ Add Column
+
diff --git a/frontend/components/views/NewSchemaView/NewSchemaView.tsx b/frontend/components/views/NewSchemaView/NewSchemaView.tsx
index 0039b949..23f3d18d 100644
--- a/frontend/components/views/NewSchemaView/NewSchemaView.tsx
+++ b/frontend/components/views/NewSchemaView/NewSchemaView.tsx
@@ -3,11 +3,7 @@ import React, { useState } from 'react';
import { Button, Typography } from '@mui/material/';
import Box from '@mui/material/Box';
import styled from 'styled-components';
-import {
- QueryData,
- AppState,
- TableInfo,
-} from '../../../types';
+import { QueryData, AppState, TableInfo } from '../../../types';
import { DBType } from '../../../../backend/BE_types';
import { defaultMargin } from '../../../style-variables';
@@ -19,6 +15,11 @@ import SchemaName from './SchemaName';
import TablesTabs from '../DbView/TablesTabBar';
import SchemaSqlInput from './SchemaSqlInput';
+import {
+ useQueryContext,
+ useQueryDispatch,
+} from '../../../state_management/Contexts/QueryContext';
+
// top row container
const TopRow = styled(Box)`
display: flex;
@@ -68,8 +69,6 @@ const NewSchemaViewContainer = styled.div`
// props interface
interface NewSchemaViewProps {
- query?: AppState['workingQuery'];
- setQuery: AppState['setWorkingQuery'];
setSelectedDb: AppState['setSelectedDb'];
selectedDb: AppState['selectedDb'];
show: boolean;
@@ -79,9 +78,7 @@ interface NewSchemaViewProps {
setSelectedTable: (tableInfo: TableInfo | undefined) => void;
}
-const NewSchemaView = ({
- query,
- setQuery,
+function NewSchemaView({
setSelectedDb,
selectedDb,
show,
@@ -89,7 +86,10 @@ const NewSchemaView = ({
dbTables,
selectedTable,
setSelectedTable,
-}: NewSchemaViewProps) => {
+}: NewSchemaViewProps) {
+ // using query state context and dispatch functions
+ const queryStateContext = useQueryContext();
+ const queryDispatchContext = useQueryDispatch();
const [currentSql, setCurrentSql] = useState('');
@@ -107,11 +107,15 @@ const NewSchemaView = ({
averageSampleTime: 0,
};
- const localQuery = { ...defaultQuery, ...query };
+ const localQuery = { ...defaultQuery, ...queryStateContext!.workingQuery };
// handles naming of schema
const onNameChange = (newName: string) => {
- setQuery({ ...localQuery, db: newName });
+ queryDispatchContext!({
+ type: 'UPDATE_WORKING_QUERIES',
+ payload: { ...localQuery, db: newName },
+ });
+
setSelectedDb(newName);
};
@@ -119,7 +123,10 @@ const NewSchemaView = ({
const onSqlChange = (newSql: string) => {
// because App's workingQuery changes ref
setCurrentSql(newSql);
- setQuery({ ...localQuery, sqlString: newSql });
+ queryDispatchContext!({
+ type: 'UPDATE_WORKING_QUERIES',
+ payload: { ...localQuery, sqlString: newSql },
+ });
};
// handle intializing new schema
@@ -130,7 +137,7 @@ const NewSchemaView = ({
{
newDbName: localQuery.db,
},
- TEMP_DBTYPE
+ TEMP_DBTYPE,
)
.catch((err) => {
sendFeedback({
@@ -148,7 +155,7 @@ const NewSchemaView = ({
{
sourceDb: selectedDb,
},
- curDBType
+ curDBType,
)
.catch((err) => {
sendFeedback({
@@ -169,7 +176,7 @@ const NewSchemaView = ({
sqlString: localQuery.sqlString,
selectedDb,
},
- curDBType
+ curDBType,
)
.then(() => {
setCurrentSql('');
@@ -216,5 +223,5 @@ const NewSchemaView = ({
/>
);
-};
+}
export default NewSchemaView;
diff --git a/frontend/components/views/NewSchemaView/SchemaName.tsx b/frontend/components/views/NewSchemaView/SchemaName.tsx
index 20829350..c4134338 100644
--- a/frontend/components/views/NewSchemaView/SchemaName.tsx
+++ b/frontend/components/views/NewSchemaView/SchemaName.tsx
@@ -7,15 +7,14 @@ interface SchemaNameProps {
onChange: (newName: string) => void;
}
-const SchemaName = ({ name, onChange }: SchemaNameProps) => (
-
-
+function SchemaName({ name, onChange }: SchemaNameProps) {
+ return
onChange(evt.target.value)}
/>
-);
+}
export default SchemaName;
diff --git a/frontend/components/views/NewSchemaView/SchemaSqlInput.tsx b/frontend/components/views/NewSchemaView/SchemaSqlInput.tsx
index 0d78fada..ef3fb2b7 100644
--- a/frontend/components/views/NewSchemaView/SchemaSqlInput.tsx
+++ b/frontend/components/views/NewSchemaView/SchemaSqlInput.tsx
@@ -3,12 +3,11 @@ import React from 'react';
import FormatPaintIcon from '@mui/icons-material/FormatPaint';
import { ButtonGroup, Button, Tooltip } from '@mui/material';
import styled from 'styled-components';
-import { format } from 'sql-formatter';
+import { formatDialect, postgresql } from 'sql-formatter';
import CodeMirror from '@uiw/react-codemirror';
import { dracula } from '@uiw/codemirror-theme-dracula';
-
const Container = styled.div`
position: relative;
`;
@@ -30,43 +29,44 @@ const Toolbar = styled.div`
}
`;
-
-
interface SchemaSqlInputProps {
- sql: string;
- onChange: (newSql: string) => void;
- runQuery: () => void;
- }
-
- const SchemaSqlInput = ({ sql, onChange, runQuery }: SchemaSqlInputProps) => {
- const formatQuery = () => {
- const formatted = format(sql, { language: 'postgresql', uppercase: true });
- onChange(formatted);
- };
+ sql: string;
+ onChange: (newSql: string) => void;
+ runQuery: () => void;
+}
- return (
-
-
-
-
-
-
-
-
-
-
-
-
- );
+function SchemaSqlInput({ sql, onChange, runQuery }: SchemaSqlInputProps) {
+ const formatQuery = () => {
+ const formatted = formatDialect(sql, {
+ dialect: postgresql,
+ keywordCase: 'upper',
+ });
+
+ onChange(formatted);
};
-
- export default SchemaSqlInput;
-
\ No newline at end of file
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
+
+export default SchemaSqlInput;
diff --git a/frontend/components/views/QueryView/ExecutionPlan/FlowControls.tsx b/frontend/components/views/QueryView/ExecutionPlan/FlowControls.tsx
index d9d75794..ee295012 100644
--- a/frontend/components/views/QueryView/ExecutionPlan/FlowControls.tsx
+++ b/frontend/components/views/QueryView/ExecutionPlan/FlowControls.tsx
@@ -29,12 +29,12 @@ interface FlowControlsProps {
setThresholds: (newThresholds: Thresholds) => void;
}
-const FlowControls = ({
+function FlowControls({
toggleFullscreen,
fullscreen,
thresholds,
setThresholds,
-}: FlowControlsProps) => {
+}: FlowControlsProps) {
const [showThresholdsDialog, setShowThresholdsDialog] = useState(false);
const { fitView, zoomIn, zoomOut } = useReactFlow();
const tooltipDelay = 1000;
@@ -78,6 +78,6 @@ const FlowControls = ({
/>
>
);
-};
+}
export default FlowControls;
diff --git a/frontend/components/views/QueryView/ExecutionPlan/FlowNodeComponent.tsx b/frontend/components/views/QueryView/ExecutionPlan/FlowNodeComponent.tsx
index a65aa8ab..ebcdb797 100644
--- a/frontend/components/views/QueryView/ExecutionPlan/FlowNodeComponent.tsx
+++ b/frontend/components/views/QueryView/ExecutionPlan/FlowNodeComponent.tsx
@@ -10,10 +10,10 @@ type FlowNodeProps = NodeProps<{
thresholds: Thresholds;
}>;
-const FlowNodeComponent = ({
+function FlowNodeComponent({
data: { plan, totals, thresholds },
-}: FlowNodeProps) => (
-
+}: FlowNodeProps) {
+ return
-);
+}
-export default FlowNodeComponent;
\ No newline at end of file
+export default FlowNodeComponent;
diff --git a/frontend/components/views/QueryView/ExecutionPlan/PlanCard.tsx b/frontend/components/views/QueryView/ExecutionPlan/PlanCard.tsx
index 3c24ba19..b8c6cfae 100644
--- a/frontend/components/views/QueryView/ExecutionPlan/PlanCard.tsx
+++ b/frontend/components/views/QueryView/ExecutionPlan/PlanCard.tsx
@@ -76,17 +76,14 @@ const Accuracy = styled.span<{ $warn: boolean }>`
${({ $warn }) => ($warn ? 'color:#e92a2a;' : '')}
`;
-const formatTime = (time: number) =>
- ms(parseFloat(time.toPrecision(2)), {
- long: true,
- });
+const formatTime = (time: number) => ms(parseFloat(time.toPrecision(2)), {
+ long: true,
+});
-const totalTime = (plan: SizedPlanNode) =>
- plan['Actual Total Time'] * (plan['Actual Loops'] ?? 1);
+const totalTime = (plan: SizedPlanNode) => plan['Actual Total Time'] * (plan['Actual Loops'] ?? 1);
const exclusiveTime = (plan: SizedPlanNode) => {
- const childrenTime =
- plan.children?.reduce((sum, p) => totalTime(p) + sum, 0) ?? 0;
+ const childrenTime = plan.children?.reduce((sum, p) => totalTime(p) + sum, 0) ?? 0;
return totalTime(plan) - childrenTime;
};
@@ -99,17 +96,16 @@ interface PlanCardProps {
/**
* Memoizing predicate. Compares plan id's and prevent rerender if equal
*/
-const isSameCard = (prevProps: PlanCardProps, nextProps: PlanCardProps) =>
- prevProps.plan.id === nextProps.plan.id &&
- prevProps.thresholds === nextProps.thresholds;
+const isSameCard = (prevProps: PlanCardProps, nextProps: PlanCardProps) => prevProps.plan.id === nextProps.plan.id
+ && prevProps.thresholds === nextProps.thresholds;
-const PlanCard = ({ plan, totals, thresholds }: PlanCardProps) => {
+function PlanCard({ plan, totals, thresholds }: PlanCardProps) {
const [detailIsOpen, setDetailOpen] = useState(false);
const rowRatio = plan['Plan Rows'] / plan['Actual Rows'];
const exclusive = exclusiveTime(plan);
const time = totalTime(plan);
const exclusiveRatio = +((exclusiveTime(plan) / totals.time) * 100).toFixed(
- 2
+ 2,
);
const handleClick = (event: React.MouseEvent) => {
@@ -176,7 +172,7 @@ const PlanCard = ({ plan, totals, thresholds }: PlanCardProps) => {
/>
>
);
-};
+}
// memoize cards by id to improve performance on Zoom
export default memo(PlanCard, isSameCard);
diff --git a/frontend/components/views/QueryView/ExecutionPlan/PlanDetails.tsx b/frontend/components/views/QueryView/ExecutionPlan/PlanDetails.tsx
index 321f71da..e82c7b87 100644
--- a/frontend/components/views/QueryView/ExecutionPlan/PlanDetails.tsx
+++ b/frontend/components/views/QueryView/ExecutionPlan/PlanDetails.tsx
@@ -35,8 +35,8 @@ const LightPaper = styled(DarkPaperFull)`
`;
const StyledRow = styled(TableRow)<{$i: number}>`
- background: ${({$i}) => $i % 2 ? 'none' : greyLighter};
-`
+ background: ${({ $i }) => ($i % 2 ? 'none' : greyLighter)};
+`;
const StyledCell = styled(TableCell)`
color: ${greyDarkest};
@@ -63,21 +63,20 @@ const visibleProperties = ([property]: [string, any]) => {
}
};
-const detailRows = (plan: SizedPlanNode) =>
- Object.entries(plan)
- .filter(visibleProperties)
- .map(([property, value], index) => (
-
- {property}
-
- {/* insert spaces after commas to ensure wrapping is possible. Necessary for long Output strings */}
- {value?.toString().replace(/,/g, ', ') ?? ''}
-
-
- ));
+const detailRows = (plan: SizedPlanNode) => Object.entries(plan)
+ .filter(visibleProperties)
+ .map(([property, value], index) => (
+
+ {property}
+
+ {/* insert spaces after commas to ensure wrapping is possible. Necessary for long Output strings */}
+ {value?.toString().replace(/,/g, ', ') ?? ''}
+
+
+ ));
-const PlanDetails = ({ plan, open, handleClose }: PlanDetailsProps) => (
-
(
-);
+}
export default PlanDetails;
diff --git a/frontend/components/views/QueryView/ExecutionPlan/PlanTree.tsx b/frontend/components/views/QueryView/ExecutionPlan/PlanTree.tsx
index b2f5b071..508a136c 100644
--- a/frontend/components/views/QueryView/ExecutionPlan/PlanTree.tsx
+++ b/frontend/components/views/QueryView/ExecutionPlan/PlanTree.tsx
@@ -1,7 +1,7 @@
-import React, { useState, memo } from 'react';
+import React, { useState, memo } from 'react';
import styled from 'styled-components';
import ReactFlow, { Background } from 'reactflow';
-import 'reactflow/dist/style.css'
+import 'reactflow/dist/style.css';
import buildFlowGraph from '../../../../lib/flow';
import { ExplainJson, Thresholds } from '../../../../types';
import { DarkPaperFull } from '../../../../style-variables';
@@ -11,10 +11,10 @@ import nodeTypes from './ExecutionPlanNodeTypes';
interface FlowTreeProps {
data: ExplainJson;
thresholds: Thresholds;
-};
+}
-const FlowTree = ({ data, thresholds }: FlowTreeProps) => {
- const result = buildFlowGraph(data,thresholds,'flowNode','smoothstep');
+function FlowTree({ data, thresholds }: FlowTreeProps) {
+ const result = buildFlowGraph(data, thresholds, 'flowNode', 'smoothstep');
return (
{
>
-)};
+ );
+}
// Memoise to prevent rerender on fullscreen toggle
const MemoFlowTree = memo(FlowTree);
// prettier-ignore
const TreeContainer = styled(DarkPaperFull)<{$fullscreen: boolean}>`
-${({$fullscreen}) => $fullscreen ? `
+${({ $fullscreen }) => ($fullscreen ? `
position: fixed;
top: 0;
left: 0;
@@ -49,7 +50,7 @@ ${({$fullscreen}) => $fullscreen ? `
` : `
position: relative;
flex: 1;
-`}`;
+`)}`;
const defaultThresholds: Thresholds = {
percentDuration: 30,
@@ -59,7 +60,7 @@ const defaultThresholds: Thresholds = {
interface PlanTreeProps {
data: ExplainJson | undefined;
}
-const PlanTree = ({ data }: PlanTreeProps) => {
+function PlanTree({ data }: PlanTreeProps) {
const [isFullscreen, setFullscreen] = useState(false);
const [userThresholds, setUserThresholds] = useState(defaultThresholds);
@@ -75,6 +76,6 @@ const PlanTree = ({ data }: PlanTreeProps) => {
/>
);
-};
+}
export default memo(PlanTree);
diff --git a/frontend/components/views/QueryView/ExecutionPlan/ThresholdsDialog.tsx b/frontend/components/views/QueryView/ExecutionPlan/ThresholdsDialog.tsx
index c459df4d..5c6d1961 100644
--- a/frontend/components/views/QueryView/ExecutionPlan/ThresholdsDialog.tsx
+++ b/frontend/components/views/QueryView/ExecutionPlan/ThresholdsDialog.tsx
@@ -32,7 +32,7 @@ const updateThresholds = debounce(
(updater: (newThresholds: Thresholds) => void, newThresholds: Thresholds) => {
updater(newThresholds);
},
- 500
+ 500,
);
interface ThresholdsDialogProps {
@@ -42,12 +42,12 @@ interface ThresholdsDialogProps {
setThresholds: (newThresholds: Thresholds) => void;
}
-const ThresholdsDialog = ({
+function ThresholdsDialog({
thresholds,
setThresholds,
handleClose,
open,
-}: ThresholdsDialogProps) => {
+}: ThresholdsDialogProps) {
// Maintain local state with threshold value in order to control sliders without affecting debouncing
const [durThres, setDurThres] = useState(thresholds.percentDuration);
const [accThres, setAccThres] = useState(thresholds.percentDuration);
@@ -76,7 +76,7 @@ const ThresholdsDialog = ({
// slots={{
// valueLabel: ValueLabelComponent,
// }}
- valueLabelDisplay='auto'
+ valueLabelDisplay="auto"
value={durThres}
aria-label="custom thumb label"
onChange={handlePercentChange}
@@ -86,7 +86,7 @@ const ThresholdsDialog = ({
// slots={{
// valueLabel: ValueLabelComponent,
// }}
- valueLabelDisplay='auto'
+ valueLabelDisplay="auto"
value={accThres}
aria-label="custom thumb label"
onChange={handleAccuracyChange}
@@ -94,6 +94,6 @@ const ThresholdsDialog = ({
);
-};
+}
export default ThresholdsDialog;
diff --git a/frontend/components/views/QueryView/QueryDb.tsx b/frontend/components/views/QueryView/QueryDb.tsx
index 7060e3ab..2f3a61bf 100644
--- a/frontend/components/views/QueryView/QueryDb.tsx
+++ b/frontend/components/views/QueryView/QueryDb.tsx
@@ -21,7 +21,9 @@ interface QueryDbProps {
dbTypes: DBType[] | undefined;
}
-const QueryDb = ({ db, onDbChange, dbNames, dbTypes }: QueryDbProps) => {
+function QueryDb({
+ db, onDbChange, dbNames, dbTypes,
+}: QueryDbProps) {
const menuitems: any = [];
const values: any = {};
@@ -33,7 +35,7 @@ const QueryDb = ({ db, onDbChange, dbNames, dbTypes }: QueryDbProps) => {
key={`queryview_dbselect_${dbNames[i]}`}
>
{`${dbNames[i]} [${dbTypes[i]}]`}
-
+ ,
);
values[dbNames[i]] = [dbNames[i], dbTypes[i]];
}
@@ -44,18 +46,16 @@ const QueryDb = ({ db, onDbChange, dbNames, dbTypes }: QueryDbProps) => {
Database
- onDbChange(
- (values[evt.target.value as string] as Array)[0],
- (values[evt.target.value as string] as Array)[1]
- )
- }
+ onChange={(evt) => onDbChange(
+ (values[evt.target.value] as Array)[0],
+ (values[evt.target.value] as Array)[1],
+ )}
labelId="queryView-db-label"
>
{menuitems}
);
-};
+}
export default QueryDb;
diff --git a/frontend/components/views/QueryView/QueryGroup.tsx b/frontend/components/views/QueryView/QueryGroup.tsx
index 292f89d4..e0e5966d 100644
--- a/frontend/components/views/QueryView/QueryGroup.tsx
+++ b/frontend/components/views/QueryView/QueryGroup.tsx
@@ -7,14 +7,14 @@ interface QueryGroupProps {
onChange: (newGroup: string) => void;
}
-const QueryGroup = ({ group, onChange }: QueryGroupProps) => (
-
+function QueryGroup({ group, onChange }: QueryGroupProps) {
+ return
onChange(evt.target.value)}
/>
-);
-
+}
+
export default QueryGroup;
diff --git a/frontend/components/views/QueryView/QueryLabel.tsx b/frontend/components/views/QueryView/QueryLabel.tsx
index 03fdc57e..9e96328b 100644
--- a/frontend/components/views/QueryView/QueryLabel.tsx
+++ b/frontend/components/views/QueryView/QueryLabel.tsx
@@ -8,14 +8,14 @@ interface QueryLabelProps {
onChange: (newLabel: string) => void;
}
-const QueryLabel = ({ label, onChange }: QueryLabelProps) => (
-
+function QueryLabel({ label, onChange }: QueryLabelProps) {
+ return
onChange(evt.target.value)}
/>
-);
+}
export default QueryLabel;
diff --git a/frontend/components/views/QueryView/QueryResults.tsx b/frontend/components/views/QueryView/QueryResults.tsx
index c03ef0f5..97036cfe 100644
--- a/frontend/components/views/QueryView/QueryResults.tsx
+++ b/frontend/components/views/QueryView/QueryResults.tsx
@@ -29,16 +29,15 @@ const isNumber = (val: unknown) => {
return false;
};
-const buildColumns = (row: Record): Column[] =>
- Object.entries(row).map(([column, value]) => ({
- name: column,
- align: isNumber(value) ? 'right' : 'left',
- }));
+const buildColumns = (row: Record): Column[] => Object.entries(row).map(([column, value]) => ({
+ name: column,
+ align: isNumber(value) ? 'right' : 'left',
+}));
interface QueryResultsProps {
results: QueryData['returnedRows'];
}
-const QueryResults = ({ results }: QueryResultsProps) => {
+function QueryResults({ results }: QueryResultsProps) {
if (!results || !results.length) return null;
const [page, setPage] = React.useState(0);
const rowsPerPage = 10;
@@ -102,6 +101,6 @@ const QueryResults = ({ results }: QueryResultsProps) => {
/>
);
-};
+}
export default QueryResults;
diff --git a/frontend/components/views/QueryView/QueryRunNumber.tsx b/frontend/components/views/QueryView/QueryRunNumber.tsx
index 2b8bf2e0..07f46be5 100644
--- a/frontend/components/views/QueryView/QueryRunNumber.tsx
+++ b/frontend/components/views/QueryView/QueryRunNumber.tsx
@@ -7,14 +7,14 @@ interface QueryRunProps {
onChange: (runNumber: number) => void;
}
-const QueryRunNumber = ({ runNumber, onChange }: QueryRunProps) => (
-
+function QueryRunNumber({ runNumber, onChange }: QueryRunProps) {
+ return
onChange(Number(evt.target.value) || 1)}
/>
-);
-
+}
+
export default QueryRunNumber;
diff --git a/frontend/components/views/QueryView/QuerySqlInput.tsx b/frontend/components/views/QueryView/QuerySqlInput.tsx
index 3374f074..129f6c1a 100644
--- a/frontend/components/views/QueryView/QuerySqlInput.tsx
+++ b/frontend/components/views/QueryView/QuerySqlInput.tsx
@@ -3,8 +3,7 @@ import React from 'react';
import FormatPaintIcon from '@mui/icons-material/FormatPaint';
import { ButtonGroup, Button, Tooltip } from '@mui/material';
import styled from 'styled-components';
-import { format } from 'sql-formatter';
-
+import { formatDialect, postgresql } from 'sql-formatter';
import CodeMirror from '@uiw/react-codemirror';
import { dracula } from '@uiw/codemirror-theme-dracula';
@@ -35,9 +34,12 @@ interface QuerySqlInputProps {
runQuery: () => void;
}
-const QuerySqlInput = ({ sql, onChange, runQuery }: QuerySqlInputProps) => {
+function QuerySqlInput({ sql, onChange, runQuery }: QuerySqlInputProps) {
const formatQuery = () => {
- const formatted = format(sql, { language: 'postgresql', uppercase: true });
+ const formatted = formatDialect(sql, {
+ dialect: postgresql,
+ keywordCase: 'upper',
+ });
onChange(formatted);
};
@@ -52,17 +54,17 @@ const QuerySqlInput = ({ sql, onChange, runQuery }: QuerySqlInputProps) => {
-
);
-};
+}
export default QuerySqlInput;
diff --git a/frontend/components/views/QueryView/QuerySummary.tsx b/frontend/components/views/QueryView/QuerySummary.tsx
index 9ec2315e..746bea52 100644
--- a/frontend/components/views/QueryView/QuerySummary.tsx
+++ b/frontend/components/views/QueryView/QuerySummary.tsx
@@ -21,13 +21,13 @@ interface QuerySummaryProps {
executionPlan: QueryData['executionPlan'];
}
-const QuerySummary = ({ executionPlan }: QuerySummaryProps) => {
+function QuerySummary({ executionPlan }: QuerySummaryProps) {
const summaryData = {
'Number of Sample': executionPlan?.numberOfSample,
- 'Total Sample Time': executionPlan?.totalSampleTime + 'ms',
- 'Minimum Sample Time': executionPlan?.minimumSampleTime + 'ms',
- 'Maximum Sample Time': executionPlan?.maximumSampleTime + 'ms',
- 'Average Sample Time': executionPlan?.averageSampleTime + 'ms',
+ 'Total Sample Time': `${executionPlan?.totalSampleTime}ms`,
+ 'Minimum Sample Time': `${executionPlan?.minimumSampleTime}ms`,
+ 'Maximum Sample Time': `${executionPlan?.maximumSampleTime}ms`,
+ 'Average Sample Time': `${executionPlan?.averageSampleTime}ms`,
};
if (!executionPlan) return null;
@@ -47,6 +47,6 @@ const QuerySummary = ({ executionPlan }: QuerySummaryProps) => {
);
-};
+}
export default QuerySummary;
diff --git a/frontend/components/views/QueryView/QueryTabs.tsx b/frontend/components/views/QueryView/QueryTabs.tsx
index fc25cf57..74da6b44 100644
--- a/frontend/components/views/QueryView/QueryTabs.tsx
+++ b/frontend/components/views/QueryView/QueryTabs.tsx
@@ -7,7 +7,7 @@ import { QueryData, ValidTabs } from '../../../types';
import TabSelector from './TabSelector';
import QueryResults from './QueryResults';
import PlanTree from './ExecutionPlan/PlanTree';
-import { sidebarWidth, defaultMargin} from '../../../style-variables'
+import { sidebarWidth, defaultMargin } from '../../../style-variables';
const ToggleDisplay = styled.div<{ $isSelected: boolean }>`
display: flex;
@@ -26,15 +26,14 @@ const ToggleDisplay = styled.div<{ $isSelected: boolean }>`
/* Define estimated width so fitView triggered inside TabSelector is close to accurate */
/* define height to prevent react-flow warnings. Ignored due to flex:1 0 */
- ${({ $isSelected }) =>
- $isSelected
- ? ''
- : `
+ ${({ $isSelected }) => ($isSelected
+ ? ''
+ : `
position:fixed;
visibility: hidden;
width: calc(100vw - ${sidebarWidth} - (${defaultMargin} * 2));
z-index: -1
- `}
+ `)}
`;
interface QueryTabsProps {
@@ -42,27 +41,25 @@ interface QueryTabsProps {
executionPlan: QueryData['executionPlan'];
}
-const QueryTabs = ({ results, executionPlan }: QueryTabsProps) => {
+function QueryTabs({ results, executionPlan }: QueryTabsProps) {
const [selectedTab, setSelectedTab] = useState('Results');
if (!results && !executionPlan) return null;
return (
- <>
-
- setSelectedTab(tab)}
- />
-
-
-
+
+ setSelectedTab(tab)}
+ />
+
+
+
-
-
-
-
- >
+
+
+
+
);
-};
+}
export default QueryTabs;
diff --git a/frontend/components/views/QueryView/QueryTopSummary.tsx b/frontend/components/views/QueryView/QueryTopSummary.tsx
index 99b17169..0e3f3374 100644
--- a/frontend/components/views/QueryView/QueryTopSummary.tsx
+++ b/frontend/components/views/QueryView/QueryTopSummary.tsx
@@ -10,9 +10,9 @@ interface QueryTopSummaryProps {
totalTime: string | undefined;
}
-const QueryTopSummary = ({ rows, totalTime }: QueryTopSummaryProps) => {
- if (!rows || !totalTime) return null
- return {`${rows} rows - ${totalTime}`}
- };
+function QueryTopSummary({ rows, totalTime }: QueryTopSummaryProps) {
+ if (!rows || !totalTime) return null;
+ return {`${rows} rows - ${totalTime}`} ;
+}
export default QueryTopSummary;
diff --git a/frontend/components/views/QueryView/QueryView.tsx b/frontend/components/views/QueryView/QueryView.tsx
index f267db79..3b21495d 100644
--- a/frontend/components/views/QueryView/QueryView.tsx
+++ b/frontend/components/views/QueryView/QueryView.tsx
@@ -3,15 +3,10 @@ import React, { useState } from 'react';
import { Button } from '@mui/material/';
import Box from '@mui/material/Box';
import styled from 'styled-components';
-import {
- QueryData,
- CreateNewQuery,
- AppState,
- DatabaseInfo,
-} from '../../../types';
+import { QueryData, AppState, DatabaseInfo } from '../../../types';
import { DBType } from '../../../../backend/BE_types';
import { defaultMargin } from '../../../style-variables';
-import { getPrettyTime } from '../../../lib/queries';
+import { getPrettyTime, createNewQuery } from '../../../lib/queries';
import { sendFeedback } from '../../../lib/utils';
import QueryGroup from './QueryGroup';
import QueryLabel from './QueryLabel';
@@ -22,6 +17,11 @@ import QuerySummary from './QuerySummary';
import QueryTabs from './QueryTabs';
import QueryRunNumber from './QueryRunNumber';
+import {
+ useQueryContext,
+ useQueryDispatch,
+} from '../../../state_management/Contexts/QueryContext';
+
const TopRow = styled(Box)`
display: flex;
align-items: flex-end;
@@ -45,30 +45,25 @@ const QueryViewContainer = styled.div`
`;
interface QueryViewProps {
- query?: AppState['workingQuery'];
- createNewQuery: CreateNewQuery;
selectedDb: AppState['selectedDb'];
setSelectedDb: AppState['setSelectedDb'];
- setQuery: AppState['setWorkingQuery'];
show: boolean;
- queries: Record;
curDBType: DBType | undefined;
setDBType: (dbType: DBType | undefined) => void;
DBInfo: DatabaseInfo[] | undefined;
}
-const QueryView = ({
- query,
- createNewQuery,
+function QueryView({
selectedDb,
setSelectedDb,
- setQuery,
show,
- queries,
curDBType,
setDBType,
DBInfo,
-}: QueryViewProps) => {
+}: QueryViewProps) {
+ // using query state context and dispatch functions
+ const queryStateContext = useQueryContext();
+ const queryDispatchContext = useQueryDispatch();
// I think this returns undefined if DBInfo is falsy idk lol
const dbNames = DBInfo?.map((dbi) => dbi.db_name);
@@ -86,16 +81,22 @@ const QueryView = ({
averageSampleTime: 0,
};
- const localQuery = { ...defaultQuery, ...query };
+ const localQuery = { ...defaultQuery, ...queryStateContext?.workingQuery };
- const [ runQueryNumber, setRunQueryNumber ] = useState(1);
+ const [runQueryNumber, setRunQueryNumber] = useState(1);
const onLabelChange = (newLabel: string) => {
- setQuery({ ...localQuery, label: newLabel });
+ queryDispatchContext!({
+ type: 'UPDATE_WORKING_QUERIES',
+ payload: { ...localQuery, label: newLabel },
+ });
};
const onGroupChange = (newGroup: string) => {
- setQuery({ ...localQuery, group: newGroup });
+ queryDispatchContext!({
+ type: 'UPDATE_WORKING_QUERIES',
+ payload: { ...localQuery, group: newGroup },
+ });
};
const onDbChange = (newDb: string, nextDBType: DBType) => {
@@ -109,23 +110,28 @@ const QueryView = ({
ipcRenderer
.invoke('select-db', newDb, nextDBType)
.then(() => {
- setQuery({ ...localQuery, db: newDb });
+ queryDispatchContext!({
+ type: 'UPDATE_WORKING_QUERIES',
+ payload: { ...localQuery, db: newDb },
+ });
})
.catch(() =>
sendFeedback({
type: 'error',
message: `Failed to connect to ${newDb}`,
- })
+ }),
);
};
const onSqlChange = (newSql: string) => {
// because App's workingQuery changes ref
- setQuery({ ...localQuery, sqlString: newSql });
+ queryDispatchContext!({
+ type: 'UPDATE_WORKING_QUERIES',
+ payload: { ...localQuery, sqlString: newSql },
+ });
};
const onRun = () => {
- // console.log('onRun is called');
if (!localQuery.label.trim()) {
sendFeedback({
type: 'info',
@@ -150,85 +156,108 @@ const QueryView = ({
selectedDb,
runQueryNumber,
},
- curDBType
+ curDBType,
)
- .then(({ db, sqlString, returnedRows, explainResults, error,
- numberOfSample,
- totalSampleTime,
- minimumSampleTime,
- maximumSampleTime,
- averageSampleTime, }) => {
- if (error) {
- throw error;
- }
- let transformedData;
+ .then(
+ ({
+ db,
+ sqlString,
+ returnedRows,
+ explainResults,
+ error,
+ numberOfSample,
+ totalSampleTime,
+ minimumSampleTime,
+ maximumSampleTime,
+ averageSampleTime,
+ }) => {
+ if (error) {
+ throw error;
+ }
+ let transformedData;
- if (curDBType === DBType.Postgres) {
- transformedData = {
- sqlString,
- returnedRows,
- executionPlan: {
- numberOfSample,
- totalSampleTime,
- minimumSampleTime,
- maximumSampleTime,
- averageSampleTime,
- ...explainResults[0]['QUERY PLAN'][0],
- },
- label: localQuery.label,
- db,
- group: localQuery.group,
- };
- }
- if (curDBType === DBType.MySQL) {
- transformedData = {
- sqlString,
- returnedRows,
- label: localQuery.label,
- db,
- group: localQuery.group,
- executionPlan: {
- numberOfSample,
- totalSampleTime,
- minimumSampleTime,
- maximumSampleTime,
- averageSampleTime,
- // ...explainResults[0]['QUERY PLAN'][0],
- ...explainResults,
- },
- };
- }
- if (curDBType === DBType.SQLite) {
- transformedData = {
- sqlString,
- returnedRows,
- label: localQuery.label,
- db,
- group: localQuery.group,
- executionPlan: {
- numberOfSample,
- totalSampleTime,
- minimumSampleTime,
- maximumSampleTime,
- averageSampleTime,
- ...explainResults,
- },
- };
- }
+ if (curDBType === DBType.Postgres) {
+ transformedData = {
+ sqlString,
+ returnedRows,
+ executionPlan: {
+ numberOfSample,
+ totalSampleTime,
+ minimumSampleTime,
+ maximumSampleTime,
+ averageSampleTime,
+ ...explainResults[0]['QUERY PLAN'][0],
+ },
+ label: localQuery.label,
+ db,
+ group: localQuery.group,
+ };
+ }
+ if (curDBType === DBType.MySQL) {
+ transformedData = {
+ sqlString,
+ returnedRows,
+ label: localQuery.label,
+ db,
+ group: localQuery.group,
+ executionPlan: {
+ numberOfSample,
+ totalSampleTime,
+ minimumSampleTime,
+ maximumSampleTime,
+ averageSampleTime,
+ // ...explainResults[0]['QUERY PLAN'][0],
+ ...explainResults,
+ },
+ };
+ }
+ if (curDBType === DBType.SQLite) {
+ transformedData = {
+ sqlString,
+ returnedRows,
+ label: localQuery.label,
+ db,
+ group: localQuery.group,
+ executionPlan: {
+ numberOfSample,
+ totalSampleTime,
+ minimumSampleTime,
+ maximumSampleTime,
+ averageSampleTime,
+ ...explainResults,
+ },
+ };
+ }
- const keys: string[] = Object.keys(queries);
- for (let i = 0; i < keys.length; i++) {
- if (
- keys[i].includes(`db:${localQuery.db} group:${localQuery.group}`)
- ) {
- return sendFeedback({
- type: 'info',
- message: `${localQuery.db} already exists in ${localQuery.group}`,
- });
+ const keys: string[] = Object.keys(queryStateContext!.queries);
+ for (let i = 0; i < keys.length; i++) {
+ console.log(keys[i]);
+ if (
+ keys[i].includes(
+ `label:${localQuery?.label} group:${localQuery?.group}`,
+ )
+ ) {
+ return sendFeedback({
+ type: 'info',
+ message: `${localQuery.label} already exists in ${localQuery.group}`,
+ });
+ }
}
- }
- createNewQuery(transformedData);
- })
+ const newQueries = createNewQuery(
+ transformedData,
+ queryStateContext?.queries,
+ );
+ queryDispatchContext!({
+ type: 'UPDATE_QUERIES',
+ payload: newQueries,
+ });
+
+ queryDispatchContext!({
+ type: 'UPDATE_WORKING_QUERIES',
+ payload: transformedData,
+ });
+ },
+ )
.then(() => {
localQuery.sqlString = '';
})
@@ -242,7 +271,7 @@ const QueryView = ({
const onRunQueryNumChange = (runNumber: number) => {
setRunQueryNumber(runNumber);
- }
+ };
if (!show) return null;
return (
@@ -257,8 +286,8 @@ const QueryView = ({
dbTypes={dbTypes}
/>
-
+
Run Query
-
+
);
-};
+}
export default QueryView;
diff --git a/frontend/components/views/QueryView/TabSelector.tsx b/frontend/components/views/QueryView/TabSelector.tsx
index d9f9da20..65a3a490 100644
--- a/frontend/components/views/QueryView/TabSelector.tsx
+++ b/frontend/components/views/QueryView/TabSelector.tsx
@@ -3,7 +3,7 @@ import { ButtonGroup, Button } from '@mui/material';
import Box from '@mui/material/Box';
import AccountTreeIcon from '@mui/icons-material/AccountTree';
import FormatListBulletedIcon from '@mui/icons-material/FormatListBulleted';
-import {useReactFlow} from 'reactflow';
+import { useReactFlow } from 'reactflow';
import styled from 'styled-components';
import {
selectedColor,
@@ -20,8 +20,8 @@ interface ViewButtonProps {
$isSelected: boolean;
}
-const ViewButton = styled(Button)`
- background: ${({ $isSelected }: ViewButtonProps) =>
+const ViewButton = styled(Button)`
+ background: ${({ $isSelected }: { $isSelected: boolean }) =>
$isSelected ? selectedColor : textColor};
&:hover {
background: ${({ $isSelected }: ViewButtonProps) =>
@@ -34,7 +34,7 @@ interface TabSelectorProps {
select: (tab: ValidTabs) => void;
}
-const TabSelector = ({ selectedTab, select }: TabSelectorProps) => {
+function TabSelector({ selectedTab, select }: TabSelectorProps) {
const { fitView } = useReactFlow();
const handleSelect = (tabName: ValidTabs) => () => {
@@ -62,6 +62,6 @@ const TabSelector = ({ selectedTab, select }: TabSelectorProps) => {
);
-};
+}
export default TabSelector;
diff --git a/frontend/components/views/QuickStartView.tsx b/frontend/components/views/QuickStartView.tsx
index 47e2b87f..b7ca5deb 100644
--- a/frontend/components/views/QuickStartView.tsx
+++ b/frontend/components/views/QuickStartView.tsx
@@ -1,15 +1,15 @@
-import React, { useState } from 'react';
-import '../../lib/style.css';
-import styled from 'styled-components';
import {
- Stepper,
+ Button,
Step,
StepButton,
StepLabel,
- Button,
+ Stepper,
Typography,
} from '@mui/material';
+import React, { useState } from 'react';
+import styled from 'styled-components';
import logo from '../../../assets/logo/seeqr_dock.png';
+import '../../lib/style.css';
interface QuickStartViewProps {
show: boolean;
@@ -25,24 +25,25 @@ const PageContainer = styled.a`
`;
const StyledStepper = styled(Stepper)`
- margin: 70px 0px 20px 0px;
+ margin: 60px 0px 20px 0px;
background: transparent;
`;
const StyledStepLabel = styled(StepLabel)`
width: 10vw;
& .MuiStepLabel-label {
- font-size: clamp(1rem, 1.28vw, 1.5rem);
+ font-size: clamp(1rem, 1.28vw, 1.3rem);
}
`;
const StyledTypographyInstructions = styled.div`
- font-size: clamp(1rem, 2.2vw, 1.3rem);
+ font-size: clamp(1rem, 2.2vw, 1.2rem);
text-align: center;
+ width: 40vw;
`;
const StyledTypographyTitle = styled(Typography)`
- font-size: clamp(5rem, 40vw, 5rem);
+ font-size: clamp(2rem, 35vw, 3rem);
`;
const NavButtons = styled.div`
@@ -59,6 +60,7 @@ const StepContent = styled.div`
const StepList = styled.ul`
text-align: left;
font-size: 0.9em;
+ list-style: circle;
& li {
margin-top: 7px;
@@ -66,7 +68,13 @@ const StepList = styled.ul`
`;
function getSteps() {
- return ['Set Up Servers and Permissions', 'Import a Database', 'Create New Queries', 'Saving/Loading Queries', 'Compare Queries'];
+ return [
+ 'Set Up Servers and Permissions',
+ 'Import/ Export a Database',
+ 'Create New Queries',
+ 'Saving/Loading Queries',
+ 'Compare Queries',
+ ];
}
function getStepContent(step: number) {
@@ -76,35 +84,52 @@ function getStepContent(step: number) {
Step 1:
- Install PostgreSQL and/or MySQL servers (for Mac, use Homebrew).
- Ensure that PATH is enabled.
- Set up a username, password, port, and full permissions for database mainpulation.
- PostgreSQL username, password, and port is defaulted to "postgres," "postgres," and "5432," respectively. Similarly, MySQL username, password, and port is defaulted to "mysql," "mysql," and "3306," respectively.
- Set up usernames, passwords, and ports that match database server profiles. This can be done by clicking the gear on the top-left of the app. If you do not see your database(s), check that your information is correct.
- Run server(s) in the background.
+
+ Install PostgreSQL and/or MySQL servers (for Mac, use Homebrew)
+
+ Run server(s) in the background
+ Ensure that PATH is enabled
+
+ If existing user - sign in with user and password using gear icon
+ - top of left panel
+
+
+ Ports for PostgresSQL and MySQL are defaulted to ‘5432’ and
+ ‘3306’, respectively
+
+
+ Postgres new user: create user and password: eg. CREATE USER
+ davide WITH PASSWORD 'jw8s0F4’;
+
+ Enable full permissions for database manipulation
-
+
);
case 1:
return (
Step 2:
- To import a database, select the + icon in the sidebar.
- Enter a name for your database.
+
+ To import a database, select the file upload icon in the sidebar
+
+ Enter a unique name for your database
Click the green "Import File" button and select a .sql
- file.
+ file
- Select your imported database on the sidebar to view table information.
-
+ Select your imported database on the sidebar to view
To view each table, click the name of the table in the top tabs
- bar.
+ bar
The chart will include column names, types, and if they are
- nullable.
+ nullable
+
+
+ To export a database, select the file download icon next to the
+ database name
@@ -114,54 +139,63 @@ function getStepContent(step: number) {
Step 3:
- Select which database you want to create a query in.
+ Select which database you want to query with
+ Select the "QUERIES" tab in the sidebar
+ Give the query a label and a group
- Go into the queries tab by selecting the "QUERIES" tab
- in the sidebar.
+ Optionally: You can change the database from the
+ "Database" dropdown
- Select the + icon in the sidebar and give the query a label and a group on the
- right side.
+ Use the brush icon on the top-right to automatically format the
+ query
+ Select "RUN QUERY" button to execute
- Optionally: You can change the database to create the query in
- from the "Database" dropdown.
+ The planning time, execution time, and actual total time now show
+ The results from the query are in the table below
- Use the "Auto-Format" button on the top-left to
- automatically format the query.
+ Select the "Execution Plan" button to view the analysis
+ of running the query
- Select the "RUN QUERY" button to execute.
+
+
+ );
+ case 3:
+ return (
+
+ Step 4:
+
- The planning time, execution time, and actual total time now show.
+ To save a query, click the folder icon in the "QUERIES"
+ tab
- The results from the query are in the table below.
- Select the "Execution Plan" button to view the analysis
- of running the query.
+ Designate a save file location and click "Select Path"
+
+
+ Click the save icon in the query group drop-down to save queries
+ automatically to designated file location
+
+
+ To import a query file, click the import icon, select the file you
+ wish to upload (.json) in your local file system and click
+ "Upload"
);
- case 3:
- return (
-
- Step 4:
-
- To save a query, declare a file location by clicking the "Designate Save Location" button in the queries tab
- Then, save queries individually by clicking the "Save Query" button
- To load data into SeeQR just click the "Import Query" button, select the file you wish to upload in your local file system and click "Upload"
-
-
- )
case 4:
return (
Step 5:
- Select the checkbox of the queries inside the groups you would like to compare.
- Then, click the Chart Icon at the top of the sidebar.
- Feel free to continually select and deselect queries to compare.
+ Select the checkboxes in the query group drop-down
+
+ Click the chart icon at the top of the sidebar to compare selected
+ queries
+
);
@@ -170,7 +204,7 @@ function getStepContent(step: number) {
}
}
-const QuickStartView = ({ show }: QuickStartViewProps) => {
+function QuickStartView({ show }: QuickStartViewProps) {
if (!show) return null;
const [activeStep, setActiveStep] = useState(0);
const [completed, setCompleted] = useState(new Set());
@@ -266,13 +300,8 @@ const QuickStartView = ({ show }: QuickStartViewProps) => {
}
return (
-
-
- {label}
-
+
+ {label}
);
@@ -331,6 +360,6 @@ const QuickStartView = ({ show }: QuickStartViewProps) => {
);
-};
+}
export default QuickStartView;
diff --git a/frontend/components/views/ThreeDView/ThreeDUniverse.jsx b/frontend/components/views/ThreeDView/ThreeDUniverse.jsx
index 59fc8492..d2162194 100644
--- a/frontend/components/views/ThreeDView/ThreeDUniverse.jsx
+++ b/frontend/components/views/ThreeDView/ThreeDUniverse.jsx
@@ -2,14 +2,13 @@ import React, { useEffect, useState, useRef } from 'react';
import { ForceGraph3D } from 'react-force-graph';
import * as THREE from 'three';
import SpriteText from 'three-spritetext';
-import { IpcRendererEvent, ipcRenderer } from 'electron';
+import { ipcRenderer } from 'electron';
import * as d3 from 'd3';
import { TextGeometry } from 'three/examples/jsm/geometries/TextGeometry';
import { FontLoader } from 'three/examples/jsm/loaders/FontLoader';
import ClickedNodeDetail from './detailOfClickedNode';
-const ThreeDUniverse = ({ selectedDb, dbTables, dbType }) => {
-
+function ThreeDUniverse({ selectedDb, dbTables, dbType }) {
// Define the width and height of the universe container
const maxContainerWidth = window.innerWidth * 0.9 - 350;
const width = Math.min(window.innerWidth, maxContainerWidth);
@@ -27,18 +26,18 @@ const ThreeDUniverse = ({ selectedDb, dbTables, dbType }) => {
// For passing down to the ClickedNodeDetail table chart
const [cachedReturnedRows, setCachedReturnedRows] = useState([]);
// State variable to track the clicked node
- const [clickedNode, setClickedNode] = useState(null);
+ const [clickedNode, setClickedNode] = useState(null);
// State variable to track which node has been selected
- const [selectedNode, setSelectedNode] = useState('');
+ const [selectedNode, setSelectedNode] = useState('');
- const divStyle = {
- position: 'absolute',
- top: '50px',
- left: '475px',
+ const divStyle = {
+ position: 'absolute',
+ top: '50px',
+ left: '475px',
'z-index': '9999',
display: 'flex',
gap: '1rem',
- }
+ };
useEffect(() => {
const nodes = [];
@@ -46,8 +45,8 @@ const ThreeDUniverse = ({ selectedDb, dbTables, dbType }) => {
// ///// ***** Distinguish between MySQL & PG DBs, due to differences in object structure (when obj is sent from backend to frontend) ***** ///// //
// Handle the case when database is MySQL database
- if(dbType === 'mysql'){
- // First one collect the real column and table only, with considering the connection/ relationship between columns
+ if (dbType === 'mysql') {
+ // First one collect the real column and table only, with considering the connection/ relationship between columns
const databaseCache = {};
for (let i = 0; i < dbTables.length; i++) {
databaseCache[dbTables[i].table_name] = [];
@@ -55,11 +54,17 @@ const ThreeDUniverse = ({ selectedDb, dbTables, dbType }) => {
if (dbTables[i].columns[j].foreign_column === null) {
databaseCache[dbTables[i].table_name].push(dbTables[i].columns[j]);
}
- }
+ }
}
Object.keys(databaseCache).forEach((prop) => {
- const sourceNode = { id: `table:${prop}`, name: `table:${prop}`, size: 12, type: 'table', group: `${prop}` };
+ const sourceNode = {
+ id: `table:${prop}`,
+ name: `table:${prop}`,
+ size: 12,
+ type: 'table',
+ group: `${prop}`,
+ };
// Add the table to the nodes array in order to 3D visualize the table
nodes.push(sourceNode);
@@ -79,7 +84,7 @@ const ThreeDUniverse = ({ selectedDb, dbTables, dbType }) => {
edges.push({ source: sourceNode.id, target: targetNode.id });
});
});
- // Second one: start to consider the connection/ relationship between columns
+ // Second one: start to consider the connection/ relationship between columns
const databaseCacheAll = {};
for (let i = 0; i < dbTables.length; i++) {
databaseCacheAll[dbTables[i].table_name] = [];
@@ -91,17 +96,23 @@ const ThreeDUniverse = ({ selectedDb, dbTables, dbType }) => {
Object.keys(databaseCacheAll).forEach((prop) => {
const columns = databaseCacheAll[prop];
columns.forEach((column) => {
- // Verify if the current column already is in the nodes array; if not, current column may be system config/permission/built-in columns
+ // Verify if the current column already is in the nodes array; if not, current column may be system config/permission/built-in columns
const foundCurrColumn = nodes.find(
- (colEl) => colEl.id === `table:${prop}-column:${column.column_name}`
+ (colEl) =>
+ colEl.id === `table:${prop}-column:${column.column_name}`,
);
// Check if the current column's foreign is in the nodes array when the current column's foreign_table and foreign_column is not null
const foundForeignColumn = nodes.find(
- (colEl) => colEl.id === `table:${column.foreign_table}-column:${column.foreign_column}`
+ (colEl) =>
+ colEl.id ===
+ `table:${column.foreign_table}-column:${column.foreign_column}`,
);
// If current column and foreign column and foreign table all in the nodes array, than we can build the connection between the current column and foreign column
if (foundCurrColumn && foundForeignColumn) {
- edges.push({ source: foundForeignColumn.id, target: foundCurrColumn.id });
+ edges.push({
+ source: foundForeignColumn.id,
+ target: foundCurrColumn.id,
+ });
}
});
});
@@ -113,22 +124,28 @@ const ThreeDUniverse = ({ selectedDb, dbTables, dbType }) => {
databaseCache[dbTables[i].table_name] = [];
for (let j = 0; j < dbTables[i].columns.length; j++) {
databaseCache[dbTables[i].table_name].push(dbTables[i].columns[j]);
- }
+ }
}
Object.keys(databaseCache).forEach((prop) => {
- const sourceNode = { id: `table:${prop}`, name: `table:${prop}`, size: 12, type: 'table', group: `${prop}` };
+ const sourceNode = {
+ id: `table:${prop}`,
+ name: `table:${prop}`,
+ size: 12,
+ type: 'table',
+ group: `${prop}`,
+ };
// add the table to the nodes array in order to 3D visualize the table
nodes.push(sourceNode);
const columns = databaseCache[prop];
columns.forEach((column) => {
-
const foundCurrColumn = nodes.find(
- (colEl) => colEl.id === `table:${prop}-column:${column.column_name}`
+ (colEl) =>
+ colEl.id === `table:${prop}-column:${column.column_name}`,
);
// Verify if the current column already is in the nodes array;
- if(!foundCurrColumn){
+ if (!foundCurrColumn) {
const targetNode = {
id: `table:${prop}-column:${column.column_name}`,
name: `table:${prop}-column:${column.column_name}`,
@@ -144,18 +161,19 @@ const ThreeDUniverse = ({ selectedDb, dbTables, dbType }) => {
}
// If the column has foreign, we build the connection directly
if (column.foreign_table && column.foreign_column) {
- edges.push({ source: `table:${column.foreign_table}-column:${column.foreign_column}`, target: `table:${prop}-column:${column.column_name}` });
+ edges.push({
+ source: `table:${column.foreign_table}-column:${column.foreign_column}`,
+ target: `table:${prop}-column:${column.column_name}`,
+ });
}
});
});
-
}
-
setData({ nodes, links: edges });
}, []);
- // Shout out to Gundam Seed Stargazer
+ // Shout out to Gundam Seed Stargazer
// ThreeDUniverse Background Setting Up
// ThreeDUniverse Container
const toggleStars = () => {
@@ -163,38 +181,43 @@ const ThreeDUniverse = ({ selectedDb, dbTables, dbType }) => {
};
const graphRef = useRef();
useEffect(() => {
- var positions = [];
- var colors = [];
-
- // Get the random coordinate at distance is radius
- function getRandomInSphere(radius) {
- const u = Math.random();
- const v = Math.random();
- const theta = 2 * Math.PI * u;
- const phi = Math.acos(2 * v - 1);
- const x = radius * Math.sin(phi) * Math.cos(theta);
- const y = radius * Math.sin(phi) * Math.sin(theta);
- const z = radius * Math.cos(phi);
- return [x, y, z];
- }
+ const positions = [];
+ const colors = [];
+
+ // Get the random coordinate at distance is radius
+ function getRandomInSphere(radius) {
+ const u = Math.random();
+ const v = Math.random();
+ const theta = 2 * Math.PI * u;
+ const phi = Math.acos(2 * v - 1);
+ const x = radius * Math.sin(phi) * Math.cos(theta);
+ const y = radius * Math.sin(phi) * Math.sin(theta);
+ const z = radius * Math.cos(phi);
+ return [x, y, z];
+ }
const starsGeometry = new THREE.BufferGeometry();
// Generate 7777 stars on at the distance of 3351
d3.range(7777).map((d, i) => {
- // Generate random coordinate for each star
- const arr = getRandomInSphere(3351);
- var x = arr[0];
- var y = arr[1];
- var z = arr[2];
- // stars' coordinate
- positions.push(x, y, z);
- // stars' color
- colors.push(1, 1, 1);
+ // Generate random coordinate for each star
+ const arr = getRandomInSphere(3351);
+ const x = arr[0];
+ const y = arr[1];
+ const z = arr[2];
+ // stars' coordinate
+ positions.push(x, y, z);
+ // stars' color
+ colors.push(1, 1, 1);
});
- starsGeometry.setAttribute('position', new THREE.Float32BufferAttribute(positions, 3));
- starsGeometry.setAttribute('color', new THREE.Float32BufferAttribute(colors, 3));
-
+ starsGeometry.setAttribute(
+ 'position',
+ new THREE.Float32BufferAttribute(positions, 3),
+ );
+ starsGeometry.setAttribute(
+ 'color',
+ new THREE.Float32BufferAttribute(colors, 3),
+ );
const starsMaterial = new THREE.PointsMaterial({ vertexColors: true });
const starField = new THREE.Points(starsGeometry, starsMaterial);
@@ -214,15 +237,13 @@ const ThreeDUniverse = ({ selectedDb, dbTables, dbType }) => {
};
}, [showStars]);
-
-
// Variable to store the current table
- let table = null;
+ let table = null;
- function runQueryBloom (node){
+ function runQueryBloom(node) {
table = new THREE.Object3D();
- if(node.type === 'table'){
+ if (node.type === 'table') {
ipcRenderer
.invoke(
'run-query',
@@ -233,26 +254,25 @@ const ThreeDUniverse = ({ selectedDb, dbTables, dbType }) => {
selectedDb,
runQueryNumber: 1,
},
- dbType
+ dbType,
)
- .then(({ db, returnedRows }) => {
+ .then(({ db, returnedRows }) => {
// 3D preview greenboard design
let strrr = '';
let ct = 0;
- strrr += `columns: ` + "\n";
+ strrr += `columns: ` + '\n';
strrr += `------------------------------------------------------------------------------\n`;
- if(returnedRows){
- if(returnedRows.length === 0){
- setClickedNode(null)
- strrr += "This column is currently empty..."
- }
- else{
+ if (returnedRows) {
+ if (returnedRows.length === 0) {
+ setClickedNode(null);
+ strrr += 'This column is currently empty...';
+ } else {
setCachedReturnedRows(returnedRows);
- setClickedNode(true)
+ setClickedNode(true);
setSelectedNode(node.group);
// Only display the table's columns' name only
- for(const property in returnedRows[0]){
- strrr += `${property}` + "\n";
+ for (const property in returnedRows[0]) {
+ strrr += `${property}` + '\n';
ct += 1;
}
}
@@ -264,45 +284,58 @@ const ThreeDUniverse = ({ selectedDb, dbTables, dbType }) => {
// Create the table structure
const cellGeometry = new THREE.BoxGeometry(cellWidth, cellHeight, 10);
// Define the preview green board's color and transparency
- const cellMaterial = new THREE.MeshBasicMaterial({ color: 'rgb(50, 200, 150)', opacity: 0.3, transparent: true });
+ const cellMaterial = new THREE.MeshBasicMaterial({
+ color: 'rgb(50, 200, 150)',
+ opacity: 0.3,
+ transparent: true,
+ });
const cellMesh = new THREE.Mesh(cellGeometry, cellMaterial);
// Calculate the position of each cell
- cellMesh.position.set(node.x, node.y + cellHeight/2, node.z);
-
+ cellMesh.position.set(node.x, node.y + cellHeight / 2, node.z);
+
// Add the cell to the table object
table.add(cellMesh);
-
+
const fontLoader = new FontLoader();
fontLoader.load(
'https://cdn.jsdelivr.net/npm/three/examples/fonts/helvetiker_regular.typeface.json',
(font) => {
// Create a text mesh for the cell
const textGeometry = new TextGeometry(strrr, {
- font: font,
+ font,
size: 4,
height: 2,
});
// Declaring a new text 3D object with Three.MeshBasicMaterial method
- const textMaterial = new THREE.MeshBasicMaterial({ color: 'rgb(225, 255, 255)'});
+ const textMaterial = new THREE.MeshBasicMaterial({
+ color: 'rgb(225, 255, 255)',
+ });
const textMesh = new THREE.Mesh(textGeometry, textMaterial);
// Position the text on the cell
const textOffsetX = -cellWidth / 2 + 10; // Adjust the offset as needed
const textOffsetY = cellHeight / 2 - 12; // Adjust the offset as needed
- textMesh.position.set(node.x + textOffsetX, node.y + (cellHeight/2) + textOffsetY, node.z+5); // Set the z-position to ensure the text is visible
+ textMesh.position.set(
+ node.x + textOffsetX,
+ node.y + cellHeight / 2 + textOffsetY,
+ node.z + 5,
+ ); // Set the z-position to ensure the text is visible
// Add the text mesh to the table object
table.add(textMesh);
// Calculate the preview table's position relative to the camera
- const cameraPosition = camera.getWorldPosition(new THREE.Vector3());
+ const cameraPosition = camera.getWorldPosition(
+ new THREE.Vector3(),
+ );
// Set the table's rotation to face the user/camera
table.lookAt(cameraPosition);
- // Adding/attaching the object to the clicked node's 3D object
+ // Adding/attaching the object to the clicked node's 3D object
node.__threeObj.add(table);
- }
+ },
);
})
+ .catch((err) => console.log(err));
}
- if(node.type === 'column' ){
+ if (node.type === 'column') {
ipcRenderer
.invoke(
'run-query',
@@ -313,30 +346,29 @@ const ThreeDUniverse = ({ selectedDb, dbTables, dbType }) => {
selectedDb,
runQueryNumber: 1,
},
- dbType
+ dbType,
)
.then(({ db, returnedRows }) => {
// 3D preview greenboard design
let strrr = '';
let newlineCount = 0;
- strrr += `${node.columnName}: ` + "\n";
+ strrr += `${node.columnName}: ` + '\n';
strrr += `------------------------------------------------------------------------------\n`;
- if(returnedRows){
- if(returnedRows.length === 0){
- setClickedNode(null)
- strrr += "This column is currently empty..."
- }
- else{
+ if (returnedRows) {
+ if (returnedRows.length === 0) {
+ setClickedNode(null);
+ strrr += 'This column is currently empty...';
+ } else {
setCachedReturnedRows(returnedRows);
setClickedNode(true);
setSelectedNode(node.columnName);
// Only display the correspond column's contnet only
- for(let i = 0; i < returnedRows.length; i++){
- strrr += `${returnedRows[i][node.columnName]}` + "\n";
+ for (let i = 0; i < returnedRows.length; i++) {
+ strrr += `${returnedRows[i][node.columnName]}` + '\n';
newlineCount += 1;
// This is a restriction to preventing generate too many contents due to each character will be an individual object
- // And each object has multiple vertex that users' computer might be too laggy to perform camera control
- if(strrr.length > 250 || newlineCount >25){
+ // And each object has multiple vertex that users' computer might be too laggy to perform camera control
+ if (strrr.length > 250 || newlineCount > 25) {
// '...' represent a hint to tell user that current preview not able to load all the content of the column
strrr += ' .\n .\n .\n';
newlineCount += 3;
@@ -352,58 +384,73 @@ const ThreeDUniverse = ({ selectedDb, dbTables, dbType }) => {
// Create the table structure
const cellGeometry = new THREE.BoxGeometry(cellWidth, cellHeight, 10);
// Define the preview green board's color and transparency
- const cellMaterial = new THREE.MeshBasicMaterial({ color: 'rgb(50, 200, 150)', opacity: 0.3, transparent: true });
+ const cellMaterial = new THREE.MeshBasicMaterial({
+ color: 'rgb(50, 200, 150)',
+ opacity: 0.3,
+ transparent: true,
+ });
const cellMesh = new THREE.Mesh(cellGeometry, cellMaterial);
// Calculate the position of each cell
- cellMesh.position.set(node.x, node.y + cellHeight/2, node.z);
-
+ cellMesh.position.set(node.x, node.y + cellHeight / 2, node.z);
+
// Add the cell to the table object
table.add(cellMesh);
-
+
const fontLoader = new FontLoader();
fontLoader.load(
'https://cdn.jsdelivr.net/npm/three/examples/fonts/helvetiker_regular.typeface.json',
(font) => {
// Create a text mesh for the cell
const textGeometry = new TextGeometry(strrr, {
- font: font,
+ font,
size: 4,
height: 2,
});
// Declairing a new text 3D object with Three.MeshBasicMaterial method
- const textMaterial = new THREE.MeshBasicMaterial({ color: 'rgb(225, 255, 255)' });
+ const textMaterial = new THREE.MeshBasicMaterial({
+ color: 'rgb(225, 255, 255)',
+ });
const textMesh = new THREE.Mesh(textGeometry, textMaterial);
// Position the text on the cell
const textOffsetX = -cellWidth / 2 + 5; // Adjust the offset as needed
- const textOffsetY = cellHeight / 2 - 5 // Adjust the offset as needed
- textMesh.position.set(node.x + textOffsetX, node.y + (cellHeight/2) + textOffsetY, node.z+5); // Set the z-position to ensure the text is visible
+ const textOffsetY = cellHeight / 2 - 5; // Adjust the offset as needed
+ textMesh.position.set(
+ node.x + textOffsetX,
+ node.y + cellHeight / 2 + textOffsetY,
+ node.z + 5,
+ ); // Set the z-position to ensure the text is visible
// Add the text mesh to the table object
table.add(textMesh);
// Calculate the preview table's position relative to the camera
- const cameraPosition = camera.getWorldPosition(new THREE.Vector3());
+ const cameraPosition = camera.getWorldPosition(
+ new THREE.Vector3(),
+ );
// Set the table's rotation to face the user/camera
table.lookAt(cameraPosition);
- // Adding/attaching the object to the clicked node's 3D object
+ // Adding/attaching the object to the clicked node's 3D object
node.__threeObj.add(table);
- }
+ },
);
})
+ .catch((err) => console.log(err));
}
}
-
return (
<>
- {/* A button to turn off/on functionality of nodes' labeling */}
-
- setShowSprites(!showSprites)}>
- {showSprites ? 'Hide Node Labels' : 'Show Node Labels'}
-
- {/* A button to turn off/on functionality of star's theme background; also clean the green board preview together */}
-
- {showStars ? 'Hide Stars' : 'Show Stars'}
-
-
+ {/* A button to turn off/on functionality of nodes' labeling */}
+
+ setShowSprites(!showSprites)}
+ >
+ {showSprites ? 'Hide Node Labels' : 'Show Node Labels'}
+
+ {/* A button to turn off/on functionality of star's theme background; also clean the green board preview together */}
+
+ {showStars ? 'Hide Stars' : 'Show Stars'}
+
+
{
linkDirectionalParticles={3}
linkDirectionalParticleSpeed={0.005}
nodeThreeObject={(node) => {
- const nodeSize = node.size || 1; // Default node size is each Node/ball's property node.size's correspoinding value
+ const nodeSize = node.size || 1; // Default node size is each Node/ball's property node.size's correspoinding value
const color = node.color || 'orange'; // Default node size is each Node/ball's property node.color's correspoinding value
const geometry = new THREE.SphereGeometry(nodeSize, 32, 32); // The 2nd and 3rd parameters representing the number of horizontal and vertical resolution of each node/ball
const material = new THREE.MeshPhongMaterial({ color }); // Color of each node/ball
@@ -437,8 +484,12 @@ const ThreeDUniverse = ({ selectedDb, dbTables, dbType }) => {
onNodeClick={(node) => runQueryBloom(node)} // Click the node in order to display green board content preview
>
{/* The light and shadow to make the nodes/balls look 3D */}
-
-
+
+
{clickedNode && (
{
)}
>
);
-};
+}
export default ThreeDUniverse;
diff --git a/frontend/components/views/ThreeDView/ThreeDView.tsx b/frontend/components/views/ThreeDView/ThreeDView.tsx
index 35e2f8a4..68ad153f 100644
--- a/frontend/components/views/ThreeDView/ThreeDView.tsx
+++ b/frontend/components/views/ThreeDView/ThreeDView.tsx
@@ -8,19 +8,19 @@ interface ThreeDModelProps {
selectedDb: AppState['selectedDb'];
dbTables: TableInfo[];
dbType: DBType | undefined;
-};
+}
-const ThreeDView = ({ show, selectedDb, dbTables, dbType }: ThreeDModelProps) => {
+function ThreeDView({
+ show, selectedDb, dbTables, dbType,
+}: ThreeDModelProps) {
if (!show) return null;
return (
- <>
-
- >
+
);
-};
+}
export default ThreeDView;
diff --git a/frontend/components/views/ThreeDView/detailOfClickedNode.tsx b/frontend/components/views/ThreeDView/detailOfClickedNode.tsx
index 4e5739ff..27349edd 100644
--- a/frontend/components/views/ThreeDView/detailOfClickedNode.tsx
+++ b/frontend/components/views/ThreeDView/detailOfClickedNode.tsx
@@ -42,9 +42,8 @@ const StyledTh = styled.th<{ isSelected: boolean }>`
box-sizing: border-box;
}
- ${({ isSelected }) =>
- isSelected &&
- css`
+ ${({ isSelected }) => isSelected
+ && css`
border-left: 3px solid transparent;
border-right: 3px solid transparent;
animation: borderAnimation 2s infinite alternate;
@@ -71,9 +70,8 @@ const StyledTd = styled.td<{ isSelected: boolean }>`
padding: 5px 8px;
font-size: 15px;
- ${({ isSelected }) =>
- isSelected &&
- css`
+ ${({ isSelected }) => isSelected
+ && css`
border-left: 3px solid transparent;
border-right: 3px solid transparent;
animation: borderAnimation2 2s infinite alternate;
@@ -102,8 +100,7 @@ const ClickedNodeDetail: React.FC = ({ returnedRows, sel
if (sortColumn === column) {
// Toggle sort direction if the same column is clicked
setSortDirection((prevDirection) => (prevDirection === 'asc' ? 'desc' : 'asc'));
- }
- else {
+ } else {
// Sort by the clicked column in ascending order by default
setSortColumn(column);
setSortDirection('asc');
@@ -148,10 +145,9 @@ const ClickedNodeDetail: React.FC = ({ returnedRows, sel
{columns.map((column, columnIndex) => {
const cellValue = JSON.stringify(row[column]);
- const formattedValue =
- cellValue[0] === '"' && cellValue[cellValue.length - 1] === '"'
- ? cellValue.slice(1, -1)
- : cellValue;
+ const formattedValue = cellValue[0] === '"' && cellValue[cellValue.length - 1] === '"'
+ ? cellValue.slice(1, -1)
+ : cellValue;
return (
{formattedValue}
diff --git a/frontend/constants/constants.ts b/frontend/constants/constants.ts
index 9c59f919..3921d328 100644
--- a/frontend/constants/constants.ts
+++ b/frontend/constants/constants.ts
@@ -4,4 +4,3 @@
export const TABLE_HEADER = 'tableHeader';
export const TABLE_FIELD = 'tableField';
-
diff --git a/frontend/index.tsx b/frontend/index.tsx
index c96f1c24..ceded107 100644
--- a/frontend/index.tsx
+++ b/frontend/index.tsx
@@ -3,7 +3,7 @@ import { render } from 'react-dom';
import App from './components/App';
// import 'codemirror/lib/codemirror.css';
-import "fontsource-roboto"
+import 'fontsource-roboto';
const root = document.createElement('div');
root.id = 'root';
@@ -13,5 +13,5 @@ render(
,
- document.getElementById('root')
+ document.getElementById('root'),
);
diff --git a/frontend/lib/convertStateToReactFlow.js b/frontend/lib/convertStateToReactFlow.ts
similarity index 73%
rename from frontend/lib/convertStateToReactFlow.js
rename to frontend/lib/convertStateToReactFlow.ts
index f56a161f..75a45209 100644
--- a/frontend/lib/convertStateToReactFlow.js
+++ b/frontend/lib/convertStateToReactFlow.ts
@@ -1,17 +1,64 @@
import fs from 'fs';
-import { remote } from 'electron';
-import { MarkerType } from 'reactflow';
+import { app } from 'electron';
+import { Edge, MarkerType, Node } from 'reactflow';
import 'reactflow/dist/style.css';
-import { greenPrimary } from '../style-variables';
import * as types from '../constants/constants';
+import { greenPrimary } from '../style-variables';
+import { ERTableColumnData, ERTableData, SchemaStateObjType } from '../types';
+import {
+ DatabaseLayoutObjType,
+ isDatabaseLayoutObjTypeArr,
+} from '../components/views/ERTables/NodeTypes';
+
+// Need interface for table props
+// Need interface for convertStateToReactFlow obect (methods)
+// rename Table render method because wtf this makes it look like a react comp
+
+interface TableConstructor {
+ new (
+ id: number,
+ columns: ERTableColumnData[],
+ name: string,
+ tableCoordinates: { x: number; y: number },
+ otherTables: {
+ table_name: string;
+ column_names: string[];
+ }[],
+ database: string,
+ ): TableInterface;
+}
+
+interface TableInterface {
+ render: () => { nodes: Node[]; edges: Edge[] };
+}
/**
* This class creates a table instance which will get the data for
* the individual table and convert it to the form that react-flow is expecting
* for its nodes
*/
-class Table {
- constructor(id, columns, name, tableCoordinates, otherTables, database) {
+const Table: TableConstructor = class Table implements TableInterface {
+ private id: number;
+ private columns: ERTableColumnData[];
+ private name: string;
+ private tableCoordinates: { x: number; y: number };
+ private otherTables: {
+ table_name: string;
+ column_names: string[];
+ }[];
+
+ private database: string;
+ constructor(
+ id: number,
+ columns: ERTableColumnData[],
+ name: string,
+ tableCoordinates: { x: number; y: number },
+ otherTables: {
+ table_name: string;
+ column_names: string[];
+ }[],
+ database: string,
+ ) {
this.id = id;
this.columns = columns;
this.name = name;
@@ -19,21 +66,24 @@ class Table {
this.otherTables = otherTables;
this.database = database;
}
+
// the render method converts the data into the form of react flow
render() {
// This method gets the table position from the stored file
- const getTablePosition = () => {
- const location = remote.app
- .getPath('temp')
- .concat('/UserTableLayouts.json');
+ const getTablePosition = (): { x: number; y: number } => {
try {
+ const location = app.getPath('temp').concat('/UserTableLayouts.json');
// refactored code. parse json file, look for current db in saved file, look for current table inside db. return undefined if db or table doesn't exist
- const parsedData = JSON.parse(fs.readFileSync(location, 'utf8'));
- const foundCurrentDB = parsedData.find(
- (db) => db.db_name === this.database
+ const parsedData: unknown = JSON.parse(
+ fs.readFileSync(location, 'utf8'),
);
+ const foundCurrentDB = isDatabaseLayoutObjTypeArr(parsedData)
+ ? parsedData.find(
+ (db: DatabaseLayoutObjType) => db?.db_name === this.database,
+ )
+ : undefined;
const foundCurrentTable = foundCurrentDB?.db_tables.find(
- (table) => table.table_name === this.name
+ (table) => table.table_name === this.name,
);
// return current table's saved position coordinates else return passed in coordinates if could not find saved coordinates in json
return foundCurrentTable
@@ -45,18 +95,17 @@ class Table {
};
// create a nodes array for react flow, the first element will always be a
// TABLE_HEADER type of node
- const nodes = [
+ const nodes: Node[] = [
{
id: `table-${this.name}`,
type: types.TABLE_HEADER,
- position: getTablePosition(this.name, this.id),
- tableName: this.name,
+ position: getTablePosition(),
data: {
table_name: this.name,
},
},
];
- const edges = [];
+ const edges: Edge[] = [];
let num = -1;
// iterate through the columns data for this data, create a node for each column
@@ -66,7 +115,7 @@ class Table {
// check if column exists in the nodes array so duplicate nodes arent created in case there are duplicate columns. nums variable on line 63 starts at 0 and upon first incrementation on line 72 increases nnuber to 0 for the first node positioning on line 79
const found = nodes.find(
(colEl) =>
- colEl.id === `table-${this.name}_column-${column.column_name}`
+ colEl.id === `table-${this.name}_column-${column.column_name}`,
);
if (!found) {
num += 1;
@@ -105,14 +154,14 @@ class Table {
edges,
};
}
-}
+};
const convertStateToReactFlow = {
// generates nodes and edges to position tables in a dynamic grid formation based on total number of tables and columns
- convert: (schema) => {
- const nodes = [];
- const edges = [];
- const localTableList = [];
+ convert: (schema: SchemaStateObjType) => {
+ const nodes: Node[] = [];
+ const edges: Edge[] = [];
+ const localTableList: { table_name: string; column_names: string[] }[] = [];
const tables = schema.tableList;
const tableCoordinates = {
x: 0,
@@ -135,16 +184,16 @@ const convertStateToReactFlow = {
for (let i = 0; i < tables.length; i += 1) {
// make a deep copy so that modifying these values will not affect the data
- const copyOfTable = JSON.parse(JSON.stringify(tables[i]));
+ const copyOfTable = JSON.parse(JSON.stringify(tables[i])) as ERTableData;
// create a list of other tables to pass into the Table constructor
const otherTableList = localTableList.filter(
- (localTable) => localTable.table_name !== tables[i].table_name
+ (localTable) => localTable.table_name !== tables[i].table_name,
);
// if current table has more columns than any other in its row, set columnGap to new max number of columns * 74(px)
// filter for duplicate column names -- one imported test db was creating a new column for each constraint and this is a bandaid fix
const columnsGapSet = new Set();
tables[i].columns.forEach((column) =>
- columnsGapSet.add(column.column_name)
+ columnsGapSet.add(column.column_name),
);
columnGap = Math.max(columnsGapSet.size * 74, columnGap);
// calculate a default rowLength based on sqrt of number of tables
@@ -166,7 +215,7 @@ const convertStateToReactFlow = {
schema.tableList[i].table_name,
tableCoordinates,
otherTableList,
- schema.database
+ schema.database,
);
// assign the evaluated result of rendering the table into tablesNodesEdges
const tableNodesAndEdges = table.render();
diff --git a/frontend/lib/electronHelper.ts b/frontend/lib/electronHelper.ts
new file mode 100644
index 00000000..71a20353
--- /dev/null
+++ b/frontend/lib/electronHelper.ts
@@ -0,0 +1,7 @@
+import { ipcRenderer } from 'electron';
+
+function invoke(event: string, payload): Promise {
+ return ipcRenderer.invoke(event, payload);
+}
+
+export default invoke;
diff --git a/frontend/lib/flow.ts b/frontend/lib/flow.ts
index 0dab096e..4606aa38 100644
--- a/frontend/lib/flow.ts
+++ b/frontend/lib/flow.ts
@@ -16,13 +16,13 @@ const dagreToFlow = (
totals: Totals,
thresholds: Thresholds,
nodeType: string,
- edgeType: string
+ edgeType: string,
) => {
const nodes = graphElements.nodes.map((node) => ({
id: node.id,
// NOTE: BREAKS IF CIRCULAR STRUCTURES ARE PASSED IN
data: { plan: node.nodeData, totals, thresholds },
- position: { x: node.x , y: node.y },
+ position: { x: node.x, y: node.y },
type: nodeType,
}));
@@ -42,7 +42,7 @@ const dagreToFlow = (
const traverse = (
root: PlanNode,
idGenerator: () => string,
- cb: (node: SizedNode) => void
+ cb: (node: SizedNode) => void,
) => {
const node: SizedPlanNode = {
...root,
@@ -89,7 +89,7 @@ const buildFlowGraph = (
explain: ExplainJson,
thresholds: Thresholds,
nodeComponent: string,
- edgeType: string
+ edgeType: string,
) => {
const sizedNodes = getSizedNodes(explain.Plan);
@@ -103,7 +103,7 @@ const buildFlowGraph = (
totals,
thresholds,
nodeComponent,
- edgeType
+ edgeType,
);
return result;
};
diff --git a/frontend/lib/planLayout.ts b/frontend/lib/planLayout.ts
index 0cc3d252..9a6a7c43 100644
--- a/frontend/lib/planLayout.ts
+++ b/frontend/lib/planLayout.ts
@@ -41,7 +41,9 @@ const createLayout = (nodes: SizedNode[]): Graph => {
// Set an object for the graph label
// for horizontal graph, rankdir: 'LR'
- g.setGraph({ rankdir: 'TB', ranksep: 100, nodesep: 100, edgesep: 100 });
+ g.setGraph({
+ rankdir: 'TB', ranksep: 100, nodesep: 100, edgesep: 100,
+ });
// Default to assigning a new object as a label for each new edge.
g.setDefaultEdgeLabel(() => ({}));
diff --git a/frontend/lib/queries.ts b/frontend/lib/queries.ts
index 86801ce2..bd512209 100644
--- a/frontend/lib/queries.ts
+++ b/frontend/lib/queries.ts
@@ -4,14 +4,12 @@
* App.state.comparedQueries
*/
+import fs from 'fs';
+import path from 'path';
import ms from 'ms';
-import { AppState, QueryData } from '../types';
+import { AppState, QueryData, CreateNewQuery } from '../types';
import { sendFeedback } from './utils';
-const path = require('path');
-const fs = require('fs');
-
-
/**
* create identifiew from label and database name
*/
@@ -21,7 +19,8 @@ export const keyFromData = (label: string, db: string, group: string) =>
/**
* create identifiew from query object
*/
-export const key = (query: QueryData) => `label:${query.label} db:${query.db} group:${query.group}`;
+export const key = (query: QueryData) =>
+ `label:${query.label} db:${query.db} group:${query.group}`;
/**
* Creates new query in collection
@@ -29,7 +28,7 @@ export const key = (query: QueryData) => `label:${query.label} db:${query.db} gr
*/
export const createQuery = (
queries: AppState['queries'],
- newQuery: QueryData
+ newQuery: QueryData,
) => ({
...queries,
[key(newQuery)]: newQuery,
@@ -41,93 +40,110 @@ export const createQuery = (
*/
export const deleteQuery = (
queries: AppState['queries'],
- queryToDelete: QueryData
+ queryToDelete: QueryData,
) => {
const tempQueries = { ...queries };
delete tempQueries[key(queryToDelete)];
return tempQueries;
};
-
// Finds proper data path for saving based on operating system
-type GetAppDataPath = () => string;
+// type GetAppDataPath = (file: string) => string;
// used to determine default filepath for saving query information locally
-export const getAppDataPath: GetAppDataPath = () => {
+export const getAppDataPath = (file: 'sql' | 'json' = 'json') => {
switch (process.platform) {
- case "darwin": {
- return path.join(process.env.HOME, "Library", "SeeQR Data.json");
- }
- case "win32": {
- return path.join(process.env.APPDATA, "../../Documents/SeeQR Data.json");
- }
- case "linux": {
- return path.join(process.env.HOME, ".SeeQR Data.json");
- }
- default: {
- // console.log("Unsupported platform!");
- process.exit(1);
+ case 'darwin':
+ return path.join(process.env.HOME ?? '', 'Library', `SeeQR Data.${file}`);
+
+ case 'win32':
+ return path.join(
+ process.env.APPDATA ?? '',
+ `../../Documents/SeeQR Data.${file}`,
+ );
+
+ case 'linux':
+ return path.join(process.env.HOME ?? '', `.SeeQR Data.${file}`);
+
+ default:
+ return process.exit(1);
+ }
+};
+
+/**
+ * create new Query from data
+ */
+export const createNewQuery: CreateNewQuery = (query: QueryData, queries) => {
+ try {
+ // Only save query to saved queries if it contains all minimum information
+ if (query?.label && query?.db && query?.sqlString && query?.group) {
+ const newQueries = createQuery(queries, query);
+
+ return newQueries;
}
+ return [];
+ } catch (err) {
+ console.log(err);
}
-}
+};
// saves query data locally
-type SaveQuery = ( query: QueryData, filepath: string ) => void
+type SaveQuery = (query: QueryData, filepath: string) => void;
-export const saveQuery:SaveQuery = ( query: QueryData, filePath: string) => {
+export const saveQuery: SaveQuery = (query: QueryData, filePath: string) => {
// Open electron prompt and async writes to file
- fs.access(filePath, (err: unknown) => {
- if (err) {
- try {
- const label: string = `label:${query.label} db:${query.db} group:${query.group}`
- const data: object = {};
- data[label] = query;
- fs.writeFileSync(filePath, JSON.stringify(data));
- sendFeedback({
- type: 'info',
- message: `File saved at location ${filePath}`,
- });
- }
- catch (err: unknown) {
- console.log(err);
- };
- } else {
- // console.log('File is found');
- const data: object = JSON.parse(fs.readFileSync(filePath));
- const label: string = `label:${query.label} db:${query.db} group:${query.group}`
- data[label] = query;
- fs.writeFileSync(filePath, JSON.stringify(data));
- sendFeedback({
- type: 'info',
- message: `File saved at location ${filePath}`,
- });
- };
- })
+ fs.access(filePath, (err: unknown) => {
+ if (err) {
+ try {
+ const label: string = `label:${query.label} db:${query.db} group:${query.group}`;
+ const data: object = {};
+ data[label] = query;
+ fs.writeFileSync(filePath, JSON.stringify(data));
+ sendFeedback({
+ type: 'info',
+ message: `File saved at location ${filePath}`,
+ });
+ } catch (err: unknown) {
+ console.log(err);
+ }
+ } else {
+ const data: object = JSON.parse(fs.readFileSync(filePath).toString());
+ const label: string = `label:${query.label} db:${query.db} group:${query.group}`;
+ data[label] = query;
+ fs.writeFileSync(filePath, JSON.stringify(data));
+ sendFeedback({
+ type: 'info',
+ message: `File saved at location ${filePath}`,
+ });
+ }
+ });
};
/**
* Sets compare state for query
- * Adds or remove query from comparedQueries collection
+ * Adds or remove query from comparedQueries collection
*/
export const setCompare = (
comparedQueries: AppState['comparedQueries'],
queries: Record,
query: QueryData,
- isCompared: boolean
+ isCompared: boolean,
) => {
const tempQueries: any = JSON.parse(JSON.stringify(comparedQueries));
- const queriess:any = { ...queries }
+ const queriess: any = { ...queries };
const qKey = key(query);
if (!isCompared) {
- tempQueries[qKey].executionPlan['Execution Time'] = 0;
- tempQueries[qKey].executionPlan['Planning Time'] = 0;
+ tempQueries[qKey].executionPlan['Execution Time'] = 0;
+ tempQueries[qKey].executionPlan['Planning Time'] = 0;
return tempQueries;
}
if (tempQueries.hasOwnProperty(qKey)) {
- tempQueries[qKey].executionPlan['Execution Time'] = queriess[qKey].executionPlan['Execution Time'];
- tempQueries[qKey].executionPlan['Planning Time'] = queriess[qKey].executionPlan['Planning Time'];
+ tempQueries[qKey].executionPlan['Execution Time'] =
+ queriess[qKey].executionPlan['Execution Time'];
+ tempQueries[qKey].executionPlan['Planning Time'] =
+ queriess[qKey].executionPlan['Planning Time'];
} else {
tempQueries[qKey] = query;
}
@@ -141,7 +157,7 @@ export const getTotalTime = (query: QueryData | undefined) => {
if (!query?.executionPlan) return 0;
return (
// query.executionPlan['Execution Time'] + query.executionPlan['Planning Time']
- query.executionPlan['totalSampleTime'] / query.executionPlan['numberOfSample']
+ query.executionPlan.totalSampleTime / query.executionPlan.numberOfSample
);
};
@@ -149,6 +165,6 @@ export const getTotalTime = (query: QueryData | undefined) => {
* Get query exeuction time as a formatted string. Returns undefined if not given a query
*/
export const getPrettyTime = (query: QueryData | undefined) => {
- if (!query?.executionPlan) return undefined
+ if (!query?.executionPlan) return undefined;
return ms(+getTotalTime(query).toPrecision(8), { long: true });
};
diff --git a/frontend/lib/utils.ts b/frontend/lib/utils.ts
index bd49ad74..e10c6933 100644
--- a/frontend/lib/utils.ts
+++ b/frontend/lib/utils.ts
@@ -1,7 +1,7 @@
-import ms from 'ms'
-import type {Feedback } from '../types'
+import ms from 'ms';
-const { ipcRenderer } = window.require('electron');
+import { ipcRenderer } from 'electron';
+import type { Feedback } from '../types';
/**
* Execute function at most once. Doesn't passthrough functions returned value
@@ -16,21 +16,20 @@ export const once = (func: Function) => {
/**
* Get reading time for string in ms. Calculated based on number of words
- * Minimum reading time is 3s
+ * Minimum reading time is 3s
*/
export const readingTime = (str: string) => {
const averageWordsPerMinute = 200;
- const totalWords = str.split(' ').length
- const readTime = totalWords * ms('1m') / averageWordsPerMinute
- return Math.max(ms('3s'), readTime)
-}
+ const totalWords = str.split(' ').length;
+ const readTime = (totalWords * ms('1m')) / averageWordsPerMinute;
+ return Math.max(ms('3s'), readTime);
+};
/**
* Emit feedback event that can be listened to by ipcRenderer.
* Used to send messages to FeedbackModal.tsx
*/
-export const sendFeedback = (feedback: Feedback) => {
- const rendererId = window.require('electron').remote.getCurrentWebContents().id;
- ipcRenderer.sendTo(rendererId, 'feedback', feedback)
-}
+export const sendFeedback = async (feedback: Feedback) => {
+ await ipcRenderer.invoke('feedback', feedback);
+};
diff --git a/frontend/state_management/Actions/AppViewActions.tsx b/frontend/state_management/Actions/AppViewActions.tsx
new file mode 100644
index 00000000..53b077a5
--- /dev/null
+++ b/frontend/state_management/Actions/AppViewActions.tsx
@@ -0,0 +1,10 @@
+import { ViewName } from '../../types';
+
+// these are currently the only possible actions that the app view can take
+export type AppViewStateAction =
+ | { type: 'SELECTED_VIEW'; payload: ViewName }
+ | { type: 'TOGGLE_SIDEBAR' }
+ | { type: 'TOGGLE_CONFIG_DIALOG' }
+ | { type: 'TOGGLE_CREATE_DIALOG' }
+ | { type: 'IS_PG_CONNECTED'; payload: boolean }
+ | { type: 'IS_MYSQL_CONNECTED'; payload: boolean };
diff --git a/frontend/state_management/Actions/DatabaseActions.ts b/frontend/state_management/Actions/DatabaseActions.ts
new file mode 100644
index 00000000..6d3b64cc
--- /dev/null
+++ b/frontend/state_management/Actions/DatabaseActions.ts
@@ -0,0 +1,14 @@
+type databaseActions =
+ | { type: 'ADD_TABLE' }
+ | { type: 'SAVE_CHANGES' }
+ | { type: 'EDIT_TABLE' }
+ // | { type: 'SELECT_TABLE'; table: TableInfo }
+ | { type: 'GENERATE_DATA'; rows: any }
+ // | { type: 'SELECT_DATABASE'; dbName: string; dbType: DBType }
+ | { type: 'CREATE_DATABASE'; dbName: string }
+ | { type: 'IMPORT_DATABASE' }
+ | { type: 'DUPLICATE_DATABASE' }
+ | { type: 'DELETE_DATABASE' };
+// | { type: 'FILTER_DATABASE'; filter: Filter };
+
+export default databaseActions;
diff --git a/frontend/state_management/Actions/ERDMySqlActions.ts b/frontend/state_management/Actions/ERDMySqlActions.ts
new file mode 100644
index 00000000..ef116a72
--- /dev/null
+++ b/frontend/state_management/Actions/ERDMySqlActions.ts
@@ -0,0 +1,179 @@
+// NEEDS UPDATE: EVERYTHING POSTGRES
+import {
+ TableOperationAction,
+ PsqlOperationType,
+ ColumnOperationAction,
+ PSqlDataType,
+} from '@mytypes/erTypes';
+
+type postgresTableAction = {
+ type: TableOperationAction;
+ payload: PsqlOperationType;
+};
+
+type posgresColumnAction = {
+ type: ColumnOperationAction;
+ payload: any;
+};
+
+export function addTable(name: string, schema: string): postgresTableAction {
+ return {
+ type: TableOperationAction.add,
+ payload: {
+ action: TableOperationAction.add, // repeated because I defined this in my backend
+ tableName: name,
+ tableSchema: schema,
+ },
+ };
+}
+
+export function alterTableName(
+ name: string,
+ schema: string,
+ newName: string,
+): postgresTableAction {
+ return {
+ type: TableOperationAction.alter,
+ payload: {
+ action: TableOperationAction.alter, // repeated because I defined this in my backend
+ tableName: name,
+ tableSchema: schema,
+ newTableName: newName,
+ },
+ };
+}
+
+export function dropTable(name: string, schema: string): postgresTableAction {
+ return {
+ type: TableOperationAction.drop,
+ payload: {
+ action: TableOperationAction.drop, // repeated because I defined this in my backend
+ tableName: name,
+ tableSchema: schema,
+ },
+ };
+}
+
+// COLUMN ACTIONS seperate concerns, and single response principle (but we need a function to transform this to acceptable object that the backend is accepting )
+
+export function addColumnToTable(
+ tablename: string,
+ columname: string,
+): posgresColumnAction {
+ return {
+ type: ColumnOperationAction.add_column,
+ payload: {
+ tableName: tablename,
+ columnName: columname,
+ },
+ };
+}
+
+export function dropColumnFromTable(
+ tablename: string,
+ columname: string,
+): posgresColumnAction {
+ return {
+ type: ColumnOperationAction.drop_column,
+ payload: {
+ tableName: tablename,
+ columnName: columname,
+ },
+ };
+}
+
+export function alterColumnTypeFromTable(
+ tablename: string,
+ columname: string,
+ type: PSqlDataType,
+): posgresColumnAction {
+ return {
+ type: ColumnOperationAction.add_column,
+ payload: {
+ tableName: tablename,
+ columnName: columname,
+ columnType: type,
+ },
+ };
+}
+
+export function renameColumnFromTable(
+ tablename: string,
+ columname: string,
+ newcolumnname: string,
+): posgresColumnAction {
+ return {
+ type: ColumnOperationAction.rename_column,
+ payload: {
+ tableName: tablename,
+ columnName: columname,
+ newColumnName: newcolumnname,
+ },
+ };
+}
+
+export function togglePrimaryFromTable(
+ tablename: string,
+ columname: string,
+ primary: boolean,
+): posgresColumnAction {
+ return {
+ type: ColumnOperationAction.toggle_primary,
+ payload: {
+ tableName: tablename,
+ columnName: columname,
+ isPrimary: primary,
+ },
+ };
+}
+
+export function turnOnForeignFromTable(
+ tablename: string,
+ columname: string,
+ foreign_table: string,
+ foreign_column: string,
+ foreign_constraint: string,
+): posgresColumnAction {
+ return {
+ type: ColumnOperationAction.toggle_foreign,
+ payload: {
+ tableName: tablename,
+ columnName: columname,
+ hasForeign: true,
+ foreignTable: foreign_table,
+ foreignColumn: foreign_column,
+ foreignConstrinat: foreign_constraint,
+ },
+ };
+}
+
+export function turnOffForeignFromTable(
+ tablename: string,
+ columname: string,
+ foreign_constraint: string,
+): posgresColumnAction {
+ return {
+ type: ColumnOperationAction.toggle_foreign,
+ payload: {
+ tableName: tablename,
+ columnName: columname,
+ foreignConstraint: foreign_constraint,
+ hasForeign: false,
+ },
+ };
+}
+
+export function toggleUniqueFromTable(
+ tablename: string,
+ columname: string,
+ unique: boolean,
+): posgresColumnAction {
+ return {
+ type: ColumnOperationAction.toggle_unique,
+ payload: {
+ tableName: tablename,
+ columnName: columname,
+ isUnique: unique,
+ },
+ };
+}
diff --git a/frontend/state_management/Actions/ERDPsqlActions.ts b/frontend/state_management/Actions/ERDPsqlActions.ts
new file mode 100644
index 00000000..a1942533
--- /dev/null
+++ b/frontend/state_management/Actions/ERDPsqlActions.ts
@@ -0,0 +1,189 @@
+import {
+ TableOperationAction,
+ PsqlOperationType,
+ ColumnOperationAction,
+ PSqlDataType,
+} from '@mytypes/erTypes';
+
+export type posgresAction = {
+ type: ColumnOperationAction | TableOperationAction;
+ payload: any | PsqlOperationType; // too many action types do it later
+};
+
+export function addTable(name: string, schema: string): posgresAction {
+ return {
+ type: TableOperationAction.add,
+ payload: {
+ action: TableOperationAction.add, // repeated because I defined this in my backend
+ tableName: name,
+ tableSchema: schema,
+ },
+ };
+}
+
+export function alterTableName(
+ name: string,
+ schema: string,
+ newName: string,
+): posgresAction {
+ return {
+ type: TableOperationAction.alter,
+ payload: {
+ action: TableOperationAction.alter, // repeated because I defined this in my backend
+ tableName: name,
+ tableSchema: schema,
+ newTableName: newName,
+ },
+ };
+}
+
+export function dropTable(name: string, schema: string): posgresAction {
+ return {
+ type: TableOperationAction.drop,
+ payload: {
+ action: TableOperationAction.drop, // repeated because I defined this in my backend
+ tableName: name,
+ tableSchema: schema,
+ },
+ };
+}
+
+// COLUMN ACTIONS seperate concerns, and single response principle (but we need a function to transform this to acceptable object that the backend is accepting )
+
+export function addColumnToTable(
+ name: string,
+ schema: string,
+ columnname: string,
+): posgresAction {
+ return {
+ type: ColumnOperationAction.add_column,
+ payload: {
+ tableName: name,
+ tableSchema: schema,
+ columnName: columnname,
+ },
+ };
+}
+
+export function dropColumnFromTable(
+ tablename: string,
+ schema: string,
+ columname: string,
+): posgresAction {
+ return {
+ type: ColumnOperationAction.drop_column,
+ payload: {
+ tableName: tablename,
+ tableSchema: schema,
+ columnName: columname,
+ },
+ };
+}
+
+export function alterColumnTypeFromTable(
+ tablename: string,
+ schema: string,
+ columname: string,
+ type: PSqlDataType,
+): posgresAction {
+ return {
+ type: ColumnOperationAction.alter_type,
+ payload: {
+ tableName: tablename,
+ tableSchema: schema,
+ columnName: columname,
+ columnType: type,
+ },
+ };
+}
+
+export function renameColumnFromTable(
+ tablename: string,
+ schema: string,
+ columname: string,
+ newcolumnname: string,
+): posgresAction {
+ return {
+ type: ColumnOperationAction.rename_column,
+ payload: {
+ tableName: tablename,
+ tableSchema: schema,
+ columnName: columname,
+ newColumnName: newcolumnname,
+ },
+ };
+}
+
+export function togglePrimaryFromTable(
+ tablename: string,
+ schema: string,
+ columname: string,
+ primary: boolean,
+): posgresAction {
+ return {
+ type: ColumnOperationAction.toggle_primary,
+ payload: {
+ tableName: tablename,
+ tableSchema: schema,
+ columnName: columname,
+ isPrimary: primary,
+ },
+ };
+}
+
+export function turnOnForeignFromTable(
+ tablename: string,
+ schema: string,
+ columname: string,
+ foreign_table: string,
+ foreign_column: string,
+ foreign_constraint: string,
+): posgresAction {
+ return {
+ type: ColumnOperationAction.toggle_foreign,
+ payload: {
+ tableName: tablename,
+ tableSchema: schema,
+ columnName: columname,
+ hasForeign: true,
+ foreignTable: foreign_table,
+ foreignColumn: foreign_column,
+ foreignConstraint: foreign_constraint,
+ },
+ };
+}
+
+export function turnOffForeignFromTable(
+ tablename: string,
+ schema: string,
+ columname: string,
+ foreign_constraint: string,
+): posgresAction {
+ return {
+ type: ColumnOperationAction.toggle_foreign,
+ payload: {
+ tableName: tablename,
+ tableSchema: schema,
+ columnName: columname,
+ foreignConstraint: foreign_constraint,
+ hasForeign: false,
+ },
+ };
+}
+
+export function toggleUniqueFromTable(
+ tablename: string,
+ schema: string,
+ columname: string,
+ unique: boolean,
+): posgresAction {
+ return {
+ type: ColumnOperationAction.toggle_unique,
+ payload: {
+ tableName: tablename,
+ tableSchema: schema,
+ columnName: columname,
+ isUnique: unique,
+ },
+ };
+}
diff --git a/frontend/state_management/Actions/ERDSqLiteActions.ts b/frontend/state_management/Actions/ERDSqLiteActions.ts
new file mode 100644
index 00000000..ef116a72
--- /dev/null
+++ b/frontend/state_management/Actions/ERDSqLiteActions.ts
@@ -0,0 +1,179 @@
+// NEEDS UPDATE: EVERYTHING POSTGRES
+import {
+ TableOperationAction,
+ PsqlOperationType,
+ ColumnOperationAction,
+ PSqlDataType,
+} from '@mytypes/erTypes';
+
+type postgresTableAction = {
+ type: TableOperationAction;
+ payload: PsqlOperationType;
+};
+
+type posgresColumnAction = {
+ type: ColumnOperationAction;
+ payload: any;
+};
+
+export function addTable(name: string, schema: string): postgresTableAction {
+ return {
+ type: TableOperationAction.add,
+ payload: {
+ action: TableOperationAction.add, // repeated because I defined this in my backend
+ tableName: name,
+ tableSchema: schema,
+ },
+ };
+}
+
+export function alterTableName(
+ name: string,
+ schema: string,
+ newName: string,
+): postgresTableAction {
+ return {
+ type: TableOperationAction.alter,
+ payload: {
+ action: TableOperationAction.alter, // repeated because I defined this in my backend
+ tableName: name,
+ tableSchema: schema,
+ newTableName: newName,
+ },
+ };
+}
+
+export function dropTable(name: string, schema: string): postgresTableAction {
+ return {
+ type: TableOperationAction.drop,
+ payload: {
+ action: TableOperationAction.drop, // repeated because I defined this in my backend
+ tableName: name,
+ tableSchema: schema,
+ },
+ };
+}
+
+// COLUMN ACTIONS seperate concerns, and single response principle (but we need a function to transform this to acceptable object that the backend is accepting )
+
+export function addColumnToTable(
+ tablename: string,
+ columname: string,
+): posgresColumnAction {
+ return {
+ type: ColumnOperationAction.add_column,
+ payload: {
+ tableName: tablename,
+ columnName: columname,
+ },
+ };
+}
+
+export function dropColumnFromTable(
+ tablename: string,
+ columname: string,
+): posgresColumnAction {
+ return {
+ type: ColumnOperationAction.drop_column,
+ payload: {
+ tableName: tablename,
+ columnName: columname,
+ },
+ };
+}
+
+export function alterColumnTypeFromTable(
+ tablename: string,
+ columname: string,
+ type: PSqlDataType,
+): posgresColumnAction {
+ return {
+ type: ColumnOperationAction.add_column,
+ payload: {
+ tableName: tablename,
+ columnName: columname,
+ columnType: type,
+ },
+ };
+}
+
+export function renameColumnFromTable(
+ tablename: string,
+ columname: string,
+ newcolumnname: string,
+): posgresColumnAction {
+ return {
+ type: ColumnOperationAction.rename_column,
+ payload: {
+ tableName: tablename,
+ columnName: columname,
+ newColumnName: newcolumnname,
+ },
+ };
+}
+
+export function togglePrimaryFromTable(
+ tablename: string,
+ columname: string,
+ primary: boolean,
+): posgresColumnAction {
+ return {
+ type: ColumnOperationAction.toggle_primary,
+ payload: {
+ tableName: tablename,
+ columnName: columname,
+ isPrimary: primary,
+ },
+ };
+}
+
+export function turnOnForeignFromTable(
+ tablename: string,
+ columname: string,
+ foreign_table: string,
+ foreign_column: string,
+ foreign_constraint: string,
+): posgresColumnAction {
+ return {
+ type: ColumnOperationAction.toggle_foreign,
+ payload: {
+ tableName: tablename,
+ columnName: columname,
+ hasForeign: true,
+ foreignTable: foreign_table,
+ foreignColumn: foreign_column,
+ foreignConstrinat: foreign_constraint,
+ },
+ };
+}
+
+export function turnOffForeignFromTable(
+ tablename: string,
+ columname: string,
+ foreign_constraint: string,
+): posgresColumnAction {
+ return {
+ type: ColumnOperationAction.toggle_foreign,
+ payload: {
+ tableName: tablename,
+ columnName: columname,
+ foreignConstraint: foreign_constraint,
+ hasForeign: false,
+ },
+ };
+}
+
+export function toggleUniqueFromTable(
+ tablename: string,
+ columname: string,
+ unique: boolean,
+): posgresColumnAction {
+ return {
+ type: ColumnOperationAction.toggle_unique,
+ payload: {
+ tableName: tablename,
+ columnName: columname,
+ isUnique: unique,
+ },
+ };
+}
diff --git a/frontend/state_management/Actions/MenuActions.ts b/frontend/state_management/Actions/MenuActions.ts
new file mode 100644
index 00000000..5a555c38
--- /dev/null
+++ b/frontend/state_management/Actions/MenuActions.ts
@@ -0,0 +1,29 @@
+import { Dialogs, ViewName } from '../../../shared/types/frontendTypes';
+
+export type async = {
+ callback?: any;
+ args?: any[];
+ event: string;
+ payload?: any;
+};
+
+type MenuActions =
+ | { type: 'TOGGLE_DIALOG'; dialog: Dialogs }
+ | { type: 'CHANGE_VIEW'; newView: ViewName }
+ | {
+ type: 'ASYNC_TRIGGER';
+ loading: 'LOADING';
+ options: async;
+ }
+ | {
+ type: 'ASYNC_TRIGGER';
+ loading: 'IDLE';
+ payload: { key: number };
+ }
+ | { type: 'CHANGE_SAVE_LOCATION' }
+ | {
+ type: 'TOGGLE_SIDEBAR';
+ sidebarState: 'CLOSED' | 'QUERIES' | 'DATABASES';
+ };
+
+export default MenuActions;
diff --git a/frontend/state_management/Actions/QueryActions.ts b/frontend/state_management/Actions/QueryActions.ts
new file mode 100644
index 00000000..b96343b4
--- /dev/null
+++ b/frontend/state_management/Actions/QueryActions.ts
@@ -0,0 +1,5 @@
+export type QueryActions =
+ | { type: 'UPDATE_QUERIES'; payload: any }
+ | { type: 'UPDATE_COMPARED_QUERIES'; payload: any }
+ | { type: 'UPDATE_WORKING_QUERIES'; payload: any }
+ | { type: 'UPDATE_FILEPATH'; payload: any };
diff --git a/frontend/state_management/Contexts/AppViewContext.tsx b/frontend/state_management/Contexts/AppViewContext.tsx
new file mode 100644
index 00000000..bc0f79e5
--- /dev/null
+++ b/frontend/state_management/Contexts/AppViewContext.tsx
@@ -0,0 +1,16 @@
+import { createContext, Dispatch, useContext } from 'react';
+import { AppViewState } from '../Reducers/AppViewReducer';
+import { AppViewStateAction } from '../Actions/AppViewActions';
+
+// Creating the context provider with no default values. This is so that we can use the context in any component without having to worry about the provider.
+export const AppViewContextState = createContext(null);
+export const AppViewContextDispatch =
+ createContext | null>(null);
+
+// connecting the context to the provider and exporting it to be used in the proper files.
+export function useAppViewContext() {
+ return useContext(AppViewContextState);
+}
+export function useAppViewDispatch() {
+ return useContext(AppViewContextDispatch);
+}
diff --git a/frontend/state_management/Contexts/MenuContext.tsx b/frontend/state_management/Contexts/MenuContext.tsx
new file mode 100644
index 00000000..75f3f3c3
--- /dev/null
+++ b/frontend/state_management/Contexts/MenuContext.tsx
@@ -0,0 +1,12 @@
+import { createContext, Dispatch } from 'react';
+import { initialMenuState, MenuState } from '../Reducers/MenuReducers';
+import MenuActions from '../Actions/MenuActions';
+
+type MenuContextType = { state: MenuState; dispatch: Dispatch };
+
+const MenuContext = createContext({
+ state: initialMenuState,
+ dispatch: () => {},
+});
+
+export default MenuContext;
diff --git a/frontend/state_management/Contexts/QueryContext.tsx b/frontend/state_management/Contexts/QueryContext.tsx
new file mode 100644
index 00000000..fe50ad78
--- /dev/null
+++ b/frontend/state_management/Contexts/QueryContext.tsx
@@ -0,0 +1,14 @@
+import { createContext, Dispatch, useContext } from 'react';
+import { QueryState } from '../Reducers/QueryReducers';
+import { QueryActions } from '../Actions/QueryActions';
+
+export const QueryContextState = createContext(null);
+export const QueryContextDispatch =
+ createContext | null>(null);
+
+export function useQueryContext() {
+ return useContext(QueryContextState);
+}
+export function useQueryDispatch() {
+ return useContext(QueryContextDispatch);
+}
diff --git a/frontend/state_management/Reducers/AppViewReducer.ts b/frontend/state_management/Reducers/AppViewReducer.ts
new file mode 100644
index 00000000..b3f3451a
--- /dev/null
+++ b/frontend/state_management/Reducers/AppViewReducer.ts
@@ -0,0 +1,35 @@
+// Define the state type
+import { AppViewStateAction } from '../Actions/AppViewActions';
+// notice in the view state for sidebarishidden, showconfig dialog, and show create dialog, those are just toggles, so there is no payload. When invoked with the specific action type, it just toggles true or false for the variable.
+export interface AppViewState {
+ selectedView: string;
+ sideBarIsHidden: boolean;
+ showConfigDialog: boolean;
+ showCreateDialog: boolean;
+ PG_isConnected: boolean;
+ MYSQL_isConnected: boolean;
+}
+
+// eslint-disable-next-line import/prefer-default-export
+// This reducer is for all the pieces of viewstate. When you select a view, toggle the sidebar, etc/
+export const appViewStateReducer = (
+ state: AppViewState,
+ action: AppViewStateAction,
+): AppViewState => {
+ switch (action.type) {
+ case 'SELECTED_VIEW':
+ return { ...state, selectedView: action.payload };
+ case 'TOGGLE_SIDEBAR':
+ return { ...state, sideBarIsHidden: !state.sideBarIsHidden };
+ case 'TOGGLE_CONFIG_DIALOG':
+ return { ...state, showConfigDialog: !state.showConfigDialog };
+ case 'TOGGLE_CREATE_DIALOG':
+ return { ...state, showCreateDialog: !state.showCreateDialog };
+ case 'IS_PG_CONNECTED':
+ return { ...state, PG_isConnected: action.payload };
+ case 'IS_MYSQL_CONNECTED':
+ return { ...state, MYSQL_isConnected: action.payload };
+ default:
+ return state;
+ }
+};
diff --git a/frontend/state_management/Reducers/DatabaseReducers.ts b/frontend/state_management/Reducers/DatabaseReducers.ts
new file mode 100644
index 00000000..2f1f4c24
--- /dev/null
+++ b/frontend/state_management/Reducers/DatabaseReducers.ts
@@ -0,0 +1,129 @@
+import { ipcRenderer } from 'electron';
+import { DBList, DBType } from '@mytypes/dbTypes';
+import databaseActions from '../Actions/DatabaseActions';
+import { TableInfo } from '../../types';
+
+type TableChange = {
+ dbName: string;
+ dbType: DBType;
+ tableName: string;
+ changeType: C;
+ changeDetails: C extends 'ALTER' ? any : never;
+};
+
+type databaseState = {
+ dbList: DBList;
+ selectedDb: { name: string; type: DBType };
+ selectedTable: TableInfo | null;
+ currentChanges: TableChange[];
+};
+
+function databaseReducer(
+ state: databaseState,
+ action: databaseActions,
+) {
+ switch (action.type) {
+ case 'ADD_TABLE': {
+ // add table with name to selected db
+
+ return state;
+ }
+
+ /* Keep this local to ERTables stuff
+ case 'EDIT_TABLE': {
+ // modify currentChanges; don't send to back end yet
+ return state;
+ }
+ */
+
+ case 'GENERATE_DATA': {
+ // invoke event to populate selected table on selected db with dummy data
+ // TODO: initiate Loading, move this stuff to a useEffect
+
+ // ipcRenderer
+ // .invoke(
+ // 'generate-dummy-data',
+ // {
+ // dbName: state.selectedDb.name,
+ // tableName: state.selectedTable,
+ // rows: action.rows,
+ // },
+ // state.selectedDb.type,
+ // )
+ // .then(({ newDbList, feedback }) =>
+ // // TODO: do something with the feedback
+ // ({ ...state, dbList: newDbList }),
+ // )
+ // .catch(
+ // (err) =>
+ // // TODO: feedback modal integration
+ // state,
+ // );
+ return state;
+ }
+ case 'SAVE_CHANGES': {
+ // send currentChanges to backend
+ // TODO: initiate loading DOES NOT WORK RIGHT NOW
+
+ // TODO: move backendObj creation here
+ const backendObj = null;
+
+ ipcRenderer
+ .invoke(
+ 'ertable-schemaupdate',
+ backendObj,
+ state.selectedDb.name,
+ state.selectedDb.type,
+ )
+ .then(({ newDbList, feedback }) =>
+ // TODO: feedback modal integration
+
+ ({ ...state, dbList: newDbList }),
+ )
+ .catch((err) => state);
+
+ return state;
+ }
+ // case 'SELECT_TABLE': {
+ // // change active table on current active db
+
+ // return { ...state, selectedTable: action.table };
+ // }
+ case 'CREATE_DATABASE': {
+ // send database name and type to backend to add
+ // TODO: MORE ASYNC TO DO ONCE I GET IT ALL IN ORDER
+ return state;
+ }
+ /* case 'FILTER_DATABASE': {
+ // keep to local state in DBList.tsx for now
+ return state;
+ } */
+ // case 'SELECT_DATABASE': {
+ // // change active database
+ // return {
+ // ...state,
+ // selectedDb: { name: action.dbName, type: action.dbType },
+ // };
+ // }
+ case 'IMPORT_DATABASE': {
+ // invoke event to backend to get a db from a file
+ // TODO: MORE ASYNC TO DO
+ return state;
+ }
+ case 'DELETE_DATABASE': {
+ // invoke event to backend to drop database
+ // TODO: MORE ASYNC TO DO
+ return state;
+ }
+ case 'DUPLICATE_DATABASE': {
+ // invoke event to backend to create new duplicate db
+ // TODO: MORE ASYNC TO DO
+ return state;
+ }
+
+ default:
+ return state;
+ }
+}
+
+export default databaseReducer;
diff --git a/frontend/state_management/Reducers/ERDReducerHelpers/ERDMySqlReducers.ts b/frontend/state_management/Reducers/ERDReducerHelpers/ERDMySqlReducers.ts
new file mode 100644
index 00000000..635b31a0
--- /dev/null
+++ b/frontend/state_management/Reducers/ERDReducerHelpers/ERDMySqlReducers.ts
@@ -0,0 +1 @@
+// TO DO
diff --git a/frontend/state_management/Reducers/ERDReducerHelpers/ERDPsqlReducers.ts b/frontend/state_management/Reducers/ERDReducerHelpers/ERDPsqlReducers.ts
new file mode 100644
index 00000000..735d02d7
--- /dev/null
+++ b/frontend/state_management/Reducers/ERDReducerHelpers/ERDPsqlReducers.ts
@@ -0,0 +1,258 @@
+import {
+ ErdUpdatesType,
+ initialStateType,
+ OperationType,
+ TableOperationAction,
+ ColumnOperationAction,
+} from '@mytypes/erTypes';
+import { posgresAction } from '../../Actions/ERDPsqlActions';
+
+function ERDPsqlReducers(state: initialStateType, action: posgresAction) {
+ switch (action.type) {
+ case TableOperationAction.add: {
+ // add new table
+ const newUpdatesArray = [...state.updatesArray, action.payload];
+
+ // will need to look into guiTable and reactflow
+ const newGuiTable = [...state.guiTableArray]; // different for add
+ // former schemaTable
+ return {
+ ...state,
+ guiTable: newGuiTable,
+ updatesArray: newUpdatesArray,
+ };
+ }
+
+ case TableOperationAction.drop: {
+ const newUpdatesArray = [...state.updatesArray, action.payload];
+
+ const newGuiTable = [...state.guiTableArray]; // different for add
+
+ return {
+ ...state,
+ guiTable: newGuiTable,
+ updatesArray: newUpdatesArray,
+ };
+ }
+
+ case TableOperationAction.alter: {
+ const newUpdatesArray = [...state.updatesArray, action.payload];
+
+ const newGuiTable = [...state.guiTableArray]; // different for add
+
+ return {
+ ...state,
+ guiTable: newGuiTable,
+ updatesArray: newUpdatesArray,
+ };
+ }
+
+ // these need special helper function to transform action payload to desired payload: conformColumnPLtoErdPL(action.type, action.payload);
+ case ColumnOperationAction.add_column: {
+ // payload destructured
+ const newOperation: OperationType = {
+ action: 'column',
+ tableName: action.payload.tableName,
+ tableSchema: action.payload.tableSchema, // not sure about this one
+ columnOperations: {
+ columnName: action.payload.columnName,
+ columnAction: ColumnOperationAction.add_column,
+ },
+ };
+
+ const newUpdatesArray: ErdUpdatesType = [
+ ...state.updatesArray,
+ newOperation,
+ ];
+
+ const newGuiTable = [...state.guiTableArray]; // different for alter
+
+ return {
+ ...state,
+ guiTable: newGuiTable,
+ updatesArray: newUpdatesArray,
+ };
+ }
+
+ case ColumnOperationAction.drop_column: {
+ // payload destructured
+ const newOperation: OperationType = {
+ action: 'column',
+ tableName: action.payload.tableName,
+ tableSchema: action.payload.tableSchema, // not sure about this one
+ columnOperations: {
+ columnName: action.payload.columnName,
+ columnAction: ColumnOperationAction.drop_column,
+ },
+ };
+
+ const newUpdatesArray: ErdUpdatesType = [
+ ...state.updatesArray,
+ newOperation,
+ ];
+
+ const newGuiTable = [...state.guiTableArray]; // different for alter
+
+ return {
+ ...state,
+ guiTable: newGuiTable,
+ updatesArray: newUpdatesArray,
+ };
+ }
+
+ case ColumnOperationAction.alter_type: {
+ // payload destructured
+ const newOperation: OperationType = {
+ action: 'column',
+ tableName: action.payload.tableName,
+ tableSchema: action.payload.tableSchema, // not sure about this one
+ columnOperations: {
+ columnName: action.payload.columnName,
+ columnAction: ColumnOperationAction.alter_type,
+ type: action.payload.columnType,
+ },
+ };
+
+ const newUpdatesArray: ErdUpdatesType = [
+ ...state.updatesArray,
+ newOperation,
+ ];
+
+ const newGuiTable = [...state.guiTableArray]; // different for alter
+
+ return {
+ ...state,
+ guiTable: newGuiTable,
+ updatesArray: newUpdatesArray,
+ };
+ }
+
+ case ColumnOperationAction.rename_column: {
+ // payload destructured
+ const newOperation: OperationType = {
+ action: 'column',
+ tableName: action.payload.tableName,
+ tableSchema: action.payload.tableSchema, // not sure about this one
+ columnOperations: {
+ columnName: action.payload.columnName,
+ columnAction: ColumnOperationAction.rename_column,
+ newColumnName: action.payload.newColumnName,
+ },
+ };
+
+ const newUpdatesArray: ErdUpdatesType = [
+ ...state.updatesArray,
+ newOperation,
+ ];
+
+ const newGuiTable = [...state.guiTableArray]; // different for alter
+
+ return {
+ ...state,
+ guiTable: newGuiTable,
+ updatesArray: newUpdatesArray,
+ };
+ }
+
+ case ColumnOperationAction.toggle_primary: {
+ // payload destructured
+ const newOperation: OperationType = {
+ action: 'column',
+ tableName: action.payload.tableName,
+ tableSchema: action.payload.tableSchema, // not sure about this one
+ columnOperations: {
+ columnName: action.payload.columnName,
+ columnAction: ColumnOperationAction.toggle_primary,
+ isPrimary: action.payload.isPrimary,
+ },
+ };
+
+ const newUpdatesArray: ErdUpdatesType = [
+ ...state.updatesArray,
+ newOperation,
+ ];
+
+ const newGuiTable = [...state.guiTableArray]; // different for alter
+
+ return {
+ ...state,
+ guiTable: newGuiTable,
+ updatesArray: newUpdatesArray,
+ };
+ }
+
+ case ColumnOperationAction.toggle_foreign: {
+ // since there might be 2 foreigns coming in, we need to differentiate
+ // payload destructured
+ let newOperation: OperationType = {
+ action: 'column',
+ tableName: action.payload.tableName,
+ tableSchema: action.payload.tableSchema, // not sure about this one
+ columnOperations: {},
+ };
+
+ if (action.payload.hasForeign) {
+ newOperation.columnOperations = {
+ columnAction: ColumnOperationAction.toggle_primary,
+ columnName: action.payload.columnName,
+ hasForeign: action.payload.hasForeign,
+ foreignTable: action.payload.foreign_table,
+ foreignColumn: action.payload.foreignColumn,
+ foreignConstraint: action.payload.foreignConstraint,
+ };
+ } else {
+ newOperation.columnOperations = {
+ columnAction: ColumnOperationAction.toggle_primary,
+ columnName: action.payload.columnName,
+ foreignConstraint: action.payload.foreignConstraint,
+ hasForeign: action.payload.hasForeign,
+ };
+ }
+
+ const newUpdatesArray: ErdUpdatesType = [
+ ...state.updatesArray,
+ newOperation,
+ ];
+
+ const newGuiTable = [...state.guiTableArray]; // different for alter
+
+ return {
+ ...state,
+ guiTable: newGuiTable,
+ updatesArray: newUpdatesArray,
+ };
+ }
+
+ case ColumnOperationAction.toggle_unique: {
+ // payload destructured
+ const newOperation: OperationType = {
+ action: 'column',
+ tableName: action.payload.tableName,
+ tableSchema: action.payload.tableSchema, // not sure about this one
+ columnOperations: {
+ columnName: action.payload.columnName,
+ columnAction: ColumnOperationAction.toggle_unique,
+ isUnique: action.payload.isUnique,
+ },
+ };
+
+ const newUpdatesArray: ErdUpdatesType = [
+ ...state.updatesArray,
+ newOperation,
+ ];
+
+ const newGuiTable = [...state.guiTableArray]; // different for alter
+
+ return {
+ ...state,
+ guiTable: newGuiTable,
+ updatesArray: newUpdatesArray,
+ };
+ }
+
+ default:
+ return state;
+ }
+}
+
+export default ERDPsqlReducers;
diff --git a/frontend/state_management/Reducers/ERDReducerHelpers/ERDSqLiteReducers.ts b/frontend/state_management/Reducers/ERDReducerHelpers/ERDSqLiteReducers.ts
new file mode 100644
index 00000000..635b31a0
--- /dev/null
+++ b/frontend/state_management/Reducers/ERDReducerHelpers/ERDSqLiteReducers.ts
@@ -0,0 +1 @@
+// TO DO
diff --git a/frontend/state_management/Reducers/ERDReducers.ts b/frontend/state_management/Reducers/ERDReducers.ts
new file mode 100644
index 00000000..6efbdb54
--- /dev/null
+++ b/frontend/state_management/Reducers/ERDReducers.ts
@@ -0,0 +1,45 @@
+import { DBType } from '@mytypes/dbTypes';
+import { initialStateType } from '@mytypes/erTypes';
+import ERDPsqlReducers from './ERDReducerHelpers/ERDPsqlReducers';
+import { posgresAction } from '../Actions/ERDPsqlActions';
+
+export const initialErdState: initialStateType = {
+ db_type: DBType.Postgres, // need to update this when exported to main file
+ guiTableArray: [], // need a type for GUItable array
+ updatesArray: [],
+};
+
+type Action = {
+ type: posgresAction | any; // need other actions
+ payload: any; // We always have a payload
+};
+
+export function mainErdReducer(state: initialStateType, action: Action) {
+ switch (action.type) {
+ case 'SAVE':
+ // function sends updates array to backend through ipcmain
+ return {
+ ...state,
+ updatesArray: [],
+ };
+ }
+
+ /**
+ * State Switch from this:
+ *
+ * Depending on the state of the current active database type, our ERD Reducer can switch to the corresponding database type, which sends the actions off to a unique reducer branch.
+ *
+ * This allows us to differentiate nuanced conditions such as for example when a MySql table is created it requires a column while for Postgres this is not a requirement
+ * */
+
+ switch (state.db_type) {
+ case DBType.Postgres:
+ return ERDPsqlReducers(state, action);
+ // case DBType.MySQL:
+ // return ERDMySqlReducers(state, action);
+ // case DBType.SQLite:
+ // return ERDSqLiteReducers(state, action);
+ default:
+ return state;
+ }
+}
diff --git a/frontend/state_management/Reducers/MenuReducers.ts b/frontend/state_management/Reducers/MenuReducers.ts
new file mode 100644
index 00000000..6551e4e3
--- /dev/null
+++ b/frontend/state_management/Reducers/MenuReducers.ts
@@ -0,0 +1,125 @@
+import { Dialogs, ViewName } from '../../../shared/types/frontendTypes';
+import MenuActions, { async } from '../Actions/MenuActions';
+
+// idea: Loading event will take a payload: {dispatch: dispatch function, action: appropriate action}
+// Loading event action payload will have a getter function
+// use getter function to store backend event and its payload
+// loading: {status, queue[]} queue contains event, payload, dispatch fn
+// Set useEffect up to run invoke with payload when loading queue changes
+// After async, dispatch a Loading action with the Idle status and identifier for
+// removal from queue.
+
+export type MenuState = {
+ selectedView: ViewName;
+ sidebarState: 'CLOSED' | 'QUERIES' | 'DATABASES';
+ visibleDialog: Dialogs | null;
+ loading: {
+ status: 'IDLE' | 'LOADING';
+ issued: number;
+ resolved: number;
+ asyncList: Map;
+ };
+};
+
+export const initialMenuState: MenuState = {
+ selectedView: 'quickStartView',
+ sidebarState: 'DATABASES',
+ visibleDialog: null,
+ loading: {
+ status: 'IDLE',
+ issued: 0,
+ resolved: 0,
+ asyncList: new Map(),
+ },
+};
+
+function menuReducer(state: MenuState, action: MenuActions): MenuState {
+ switch (action.type) {
+ case 'CHANGE_VIEW': {
+ // change main view window
+
+ return { ...state, selectedView: action.newView };
+ }
+ case 'TOGGLE_DIALOG': {
+ // pop up any of the pop up dialogs
+ let dialog: Dialogs | null;
+ if (state.visibleDialog !== null) dialog = null;
+ else dialog = action.dialog;
+ return { ...state, visibleDialog: dialog };
+ }
+ case 'TOGGLE_SIDEBAR': {
+ // change between database, query, and hidden sidebar states
+ return { ...state, sidebarState: action.sidebarState };
+ }
+ case 'ASYNC_TRIGGER': {
+ // const oldLoading = structuredClone(state.loading);
+ const oldLoading = {
+ status: state.loading.status,
+ issued: state.loading.issued,
+ resolved: state.loading.resolved,
+ asyncList: new Map(state.loading.asyncList),
+ };
+
+ if (action.loading === 'IDLE') {
+ // LOGIC for removing async from queue
+ oldLoading.asyncList.delete(action.payload.key);
+ oldLoading.resolved += 1;
+ if (oldLoading.issued === oldLoading.resolved)
+ oldLoading.status = 'IDLE';
+ return { ...state, loading: oldLoading };
+ }
+ // LOGIC for adding async to queue
+ // increment num of issued asyncs
+ oldLoading.issued += 1;
+ // construct element of async tracker
+ const queueItem = {
+ ...action.options,
+ };
+
+ // add this async request to the asyncList using its issued count as an id
+ oldLoading.asyncList.set(oldLoading.issued, queueItem);
+
+ // after changing queue, useEffect will run invoke with event and payload acquired from
+ // getter, then dispatch an IDLE async trigger and the stored dispatch and action
+ // with any response data from async.
+ // useEffect can also handle feedback modal!
+ return { ...state, loading: oldLoading };
+ }
+ case 'CHANGE_SAVE_LOCATION': {
+ return state;
+ }
+
+ default:
+ return state;
+ }
+}
+
+/**
+ * Non reducer business logic
+ */
+export const submitAsyncToBackend = (
+ issued: number,
+ asyncList: Map,
+ invoke: (e: string, p: any) => Promise,
+ menuDispatch: (v: MenuActions) => void,
+) => {
+ const request = asyncList.get(issued);
+ if (request === undefined) return;
+ const { event, payload, callback, args } = request;
+ invoke(event, payload)
+ .then((response) => {
+ if (callback) callback(...(args || []), response);
+ menuDispatch({
+ type: 'ASYNC_TRIGGER',
+ loading: 'IDLE',
+ payload: { key: issued },
+ });
+ // TODO feedback modal call
+ })
+ .catch((err) => {
+ console.log('error communicating with the backend', err);
+ // TODO feedback modal call
+ });
+};
+
+export default menuReducer;
diff --git a/frontend/state_management/Reducers/QueryReducers.ts b/frontend/state_management/Reducers/QueryReducers.ts
new file mode 100644
index 00000000..030932d0
--- /dev/null
+++ b/frontend/state_management/Reducers/QueryReducers.ts
@@ -0,0 +1,37 @@
+import { QueryActions } from '../Actions/QueryActions';
+import { AppState } from '../../types';
+
+export interface QueryState {
+ queries: AppState['queries'];
+ comparedQueries: AppState['queries'];
+ workingQuery: AppState['workingQuery'];
+ newFilePath: AppState['newFilePath'];
+}
+
+export const queryReducer = (
+ state: QueryState,
+ action: QueryActions,
+): QueryState => {
+ switch (action.type) {
+ case 'UPDATE_QUERIES':
+ return { ...state, queries: action.payload };
+
+ case 'UPDATE_COMPARED_QUERIES':
+ return { ...state, comparedQueries: action.payload };
+
+ case 'UPDATE_WORKING_QUERIES':
+ return {
+ ...state,
+ workingQuery: action.payload,
+ };
+ case 'UPDATE_FILEPATH':
+ return {
+ ...state,
+ newFilePath: action.payload,
+ };
+
+ default: {
+ return state;
+ }
+ }
+};
diff --git a/frontend/style-variables.tsx b/frontend/style-variables.tsx
index 4f2f22a4..9cca58b2 100644
--- a/frontend/style-variables.tsx
+++ b/frontend/style-variables.tsx
@@ -1,7 +1,7 @@
/**
* This file contains all reusable variables for styling in styled-components
* Individual variables should be named exports
-*/
+ */
import React from 'react';
import {
@@ -66,10 +66,10 @@ export const selectedColor = greenPrimary;
export const hoverColor = greenPrimary;
// Size
-export const sidebarWidth = '375px';
-export const defaultMargin = '20px';
+export const sidebarWidth = '365px';
+export const defaultMargin = '15px';
export const tableWidth = `calc(100vw - (${defaultMargin} * 3) - ${sidebarWidth})`;
-export const sidebarShowButtonSize = '50px';
+export const sidebarShowButtonSize = '40px';
// Execution Tree
export const planNodeWidth = '200px';
@@ -101,7 +101,7 @@ export const MuiTheme = createTheme({
root: {
color: textColor,
'&:hover': {
- color: hoverColor,
+ color: hoverColor,
},
},
},
@@ -125,7 +125,7 @@ export const MuiTheme = createTheme({
});
export const SidebarList = styled(List)`
- padding: 0;
+ padding: 2%;
width: 100%;
`;
@@ -137,8 +137,9 @@ interface SidebarListItemProps {
* Sidebar List item. Designed for dark bg.
* Takes boolean in $customSelected prop to style selected item
*/
-export const SidebarListItem = styled(ListItemButton)`
- color: ${({ $customSelected }: SidebarListItemProps) =>
+
+export const SidebarListItem = styled(ListItemButton)`
+ color: ${({ $customSelected }: { $customSelected: boolean }) =>
$customSelected ? selectedColor : textColor};
background: transparent;
border-bottom: 1px solid transparent;
@@ -191,7 +192,7 @@ export const StyledButton = styled(Button)`
export const StyledInputLabel = styled(InputLabel)`
padding-left: 25px;
color: #171616;
-`
+`;
export const StyledDropdown = styled(Select)`
width: 90%;
@@ -208,11 +209,11 @@ export const StyledNativeDropdown = styled(NativeSelect)`
export const StyledNativeOption = styled.option`
color: #171616;
background-color: '#2b2d35';
-`
+`;
export const StyledMenuItem = styled(MenuItem)`
color: #171616;
-`
+`;
export const StyledTextField = styled(TextField)`
width: 80%;
diff --git a/frontend/types.ts b/frontend/types.ts
index a429a78d..ab97a979 100644
--- a/frontend/types.ts
+++ b/frontend/types.ts
@@ -4,7 +4,7 @@ import { DBType } from '../backend/BE_types';
* This file contains common types that need to be used across the frontend
*/
-type ViewName =
+export type ViewName =
| 'compareView'
| 'dbView'
| 'queryView'
@@ -13,19 +13,16 @@ type ViewName =
| 'threeDView'; // added for new chart
export interface AppState {
- selectedView: ViewName;
- setSelectedView: (selView: ViewName) => void;
+ // createNewQuery: CreateNewQuery;
selectedDb: string;
setSelectedDb: (selDb: string) => void;
workingQuery: QueryData | undefined;
- setWorkingQuery: (selQuery: QueryData | undefined) => void;
+ // setWorkingQuery: (selQuery: any) => void;
queries: Record;
- setQueries: (queries: Record) => void;
+ // setQueries: (queries: Record) => void;
comparedQueries: Record;
- setComparedQueries: (comparedQueries: Record) => void;
- setSidebarHidden: (isHidden: boolean) => void;
- sidebarIsHidden: boolean;
- setFilePath: (filePath: string) => void;
+ // setComparedQueries: (comparedQueries: Record) => void;
+ // setFilePath: (filePath: string) => void;
newFilePath: string;
setERView?: (boolean) => void;
curDBType: DBType | undefined;
@@ -36,9 +33,6 @@ export interface AppState {
setTables?: (tableInfo: TableInfo[]) => void;
selectedTable?: TableInfo | undefined;
setSelectedTable?: (tableInfo: TableInfo | undefined) => void;
- showCreateDialog: boolean;
- setCreateDialog: (show: boolean) => void;
- setConfigDialog: (show: boolean) => void;
}
export interface FilePath {
@@ -46,7 +40,7 @@ export interface FilePath {
filePath: string;
}
-export type CreateNewQuery = (query: QueryData) => void;
+export type CreateNewQuery = (query: QueryData, queries: any) => void;
export interface QueryData {
/**
@@ -76,11 +70,11 @@ export interface QueryData {
// flag: boolean
- numberOfSample: number,
- totalSampleTime: number | string,
- minimumSampleTime: number | string,
- maximumSampleTime: number | string,
- averageSampleTime: number | string,
+ numberOfSample: number;
+ totalSampleTime: number | string;
+ minimumSampleTime: number | string;
+ maximumSampleTime: number | string;
+ averageSampleTime: number | string;
}
export type ValidTabs = 'Results' | 'Execution Plan';
@@ -107,7 +101,7 @@ export interface Thresholds {
* Fake type guard that asserts a type to simplify tests inside real type guards
*/
// type assertions don't work with arrow functions https://github.com/microsoft/TypeScript/issues/34523
-function assumeType(x: unknown): asserts x is T { }
+function assumeType(x: unknown): asserts x is T {}
export interface DatabaseInfo {
/**
@@ -164,12 +158,12 @@ export interface TableInfo {
export interface DbLists {
databaseConnected: {
- PG: boolean,
- MySQL: boolean,
- RDSPG: boolean,
- RDSMySQL: boolean,
- SQLite: boolean,
- directPGURI: boolean,
+ PG: boolean;
+ MySQL: boolean;
+ RDSPG: boolean;
+ RDSMySQL: boolean;
+ SQLite: boolean;
+ directPGURI: boolean;
};
databaseList: DatabaseInfo[];
tableList: TableInfo[];
@@ -259,28 +253,20 @@ export type NodeTypes = {
tableField: JSX.Element;
};
-export type ERTableData = {
+export interface ERTableData extends TableInfo {
columns: ERTableColumnData[];
- is_insertable_into: 'yes' | 'no';
- table_catalog: string;
- table_name: string;
- table_schema: string;
new_table_name: string | null;
-};
+}
-export type ERTableColumnData = {
- column_name: string;
+export interface ERTableColumnData extends TableColumn {
new_column_name: string | null;
constraint_name: string | null;
constraint_type: string | null;
- data_type: string;
- character_maximum_length: number | null;
foreign_column: string;
foreign_table: string;
- is_nullable: 'YES' | 'NO';
unique?: boolean; // optional until implemented
auto_increment?: boolean; // optional until implemented
-};
+}
export type DataTypes = 'integer' | 'bigint' | 'varchar' | 'date' | null;
export type DataTypesMySQL = 'int' | 'bigint' | 'varchar' | 'date' | null;
@@ -325,6 +311,7 @@ export type AddTablesObjType = {
col_T?: any;
col_L?: any;
};
+
export type DropTablesObjType = {
table_name: string;
table_schema: string;
@@ -340,12 +327,6 @@ export type AlterTablesObjType = {
alterColumns: AlterColumnsObjType[];
};
-export type UpdatesObjType = {
- addTables: AddTablesObjType[];
- dropTables: DropTablesObjType[];
- alterTables: AlterTablesObjType[];
-};
-
export type BackendObjType = {
current: {
database: string;
@@ -353,9 +334,15 @@ export type BackendObjType = {
};
};
+export type UpdatesObjType = {
+ addTables: AddTablesObjType[];
+ dropTables: DropTablesObjType[];
+ alterTables: AlterTablesObjType[];
+};
+
export type SchemaStateObjType = {
database: string;
- tableList: ERTableData[];
+ tableList: TableInfo[];
};
export type TableHeaderDataObjectType = {
diff --git a/jest.config.js b/jest.config.js
deleted file mode 100644
index 2786a53d..00000000
--- a/jest.config.js
+++ /dev/null
@@ -1,4 +0,0 @@
-module.exports = {
- preset: 'ts-jest',
- testEnvironment: 'jsdom',
-};
diff --git a/jest.config.ts b/jest.config.ts
new file mode 100644
index 00000000..3d138c03
--- /dev/null
+++ b/jest.config.ts
@@ -0,0 +1,199 @@
+/**
+ * For a detailed explanation regarding each configuration property, visit:
+ * https://jestjs.io/docs/configuration
+ */
+
+import type { Config } from 'jest';
+
+const config: Config = {
+ // All imported modules in your tests should be mocked automatically
+ // automock: false,
+
+ // Stop running tests after `n` failures
+ // bail: 0,
+
+ // The directory where Jest should store its cached dependency information
+ // cacheDirectory: "/tmp/jest_rs",
+
+ // Automatically clear mock calls, instances, contexts and results before every test
+ clearMocks: true,
+
+ // Indicates whether the coverage information should be collected while executing the test
+ collectCoverage: true,
+
+ // An array of glob patterns indicating a set of files for which coverage information should be collected
+ // collectCoverageFrom: undefined,
+
+ // The directory where Jest should output its coverage files
+ coverageDirectory: 'coverage',
+
+ // An array of regexp pattern strings used to skip coverage collection
+ // coveragePathIgnorePatterns: [
+ // "/node_modules/"
+ // ],
+
+ // Indicates which provider should be used to instrument code for coverage
+ // coverageProvider: "babel",
+
+ // A list of reporter names that Jest uses when writing coverage reports
+ // coverageReporters: [
+ // "json",
+ // "text",
+ // "lcov",
+ // "clover"
+ // ],
+
+ // An object that configures minimum threshold enforcement for coverage results
+ // coverageThreshold: undefined,
+
+ // A path to a custom dependency extractor
+ // dependencyExtractor: undefined,
+
+ // Make calling deprecated APIs throw helpful error messages
+ // errorOnDeprecated: false,
+
+ // The default configuration for fake timers
+ // fakeTimers: {
+ // "enableGlobally": false
+ // },
+
+ // Force coverage collection from ignored files using an array of glob patterns
+ // forceCoverageMatch: [],
+
+ // A path to a module which exports an async function that is triggered once before all test suites
+ // globalSetup: undefined,
+
+ // A path to a module which exports an async function that is triggered once after all test suites
+ // globalTeardown: undefined,
+
+ // A set of global variables that need to be available in all test environments
+ // globals: {},
+
+ // The maximum amount of workers used to run your tests. Can be specified as % or a number. E.g. maxWorkers: 10% will use 10% of your CPU amount + 1 as the maximum worker number. maxWorkers: 2 will use a maximum of 2 workers.
+ // maxWorkers: "50%",
+
+ // An array of directory names to be searched recursively up from the requiring module's location
+ // moduleDirectories: [
+ // "node_modules"
+ // ],
+
+ // An array of file extensions your modules use
+ // moduleFileExtensions: [
+ // "js",
+ // "mjs",
+ // "cjs",
+ // "jsx",
+ // "ts",
+ // "tsx",
+ // "json",
+ // "node"
+ // ],
+
+ // A map from regular expressions to module names or to arrays of module names that allow to stub out resources with a single module
+ // moduleNameMapper: {},
+
+ // An array of regexp pattern strings, matched against all module paths before considered 'visible' to the module loader
+ // modulePathIgnorePatterns: [],
+
+ // Activates notifications for test results
+ // notify: false,
+
+ // An enum that specifies notification mode. Requires { notify: true }
+ // notifyMode: "failure-change",
+
+ // A preset that is used as a base for Jest's configuration
+ preset: 'ts-jest',
+
+ // Run tests from one or more projects
+ // projects: undefined,
+
+ // Use this configuration option to add custom reporters to Jest
+ // reporters: undefined,
+
+ // Automatically reset mock state before every test
+ // resetMocks: false,
+
+ // Reset the module registry before running each individual test
+ // resetModules: false,
+
+ // A path to a custom resolver
+ // resolver: undefined,
+
+ // Automatically restore mock state and implementation before every test
+ // restoreMocks: false,
+
+ // The root directory that Jest should scan for tests and modules within
+ // rootDir: undefined,
+
+ // A list of paths to directories that Jest should use to search for files in
+ // roots: [
+ // ""
+ // ],
+
+ // Allows you to use a custom runner instead of Jest's default test runner
+ // runner: "jest-runner",
+
+ // The paths to modules that run some code to configure or set up the testing environment before each test
+ // setupFiles: [],
+
+ // A list of paths to modules that run some code to configure or set up the testing framework before each test
+ // setupFilesAfterEnv: [],
+
+ // The number of seconds after which a test is considered as slow and reported as such in the results.
+ // slowTestThreshold: 5,
+
+ // A list of paths to snapshot serializer modules Jest should use for snapshot testing
+ // snapshotSerializers: [],
+
+ // The test environment that will be used for testing
+ testEnvironment: 'jsdom',
+
+ // Options that will be passed to the testEnvironment
+ // testEnvironmentOptions: {},
+
+ // Adds a location field to test results
+ // testLocationInResults: false,
+
+ // The glob patterns Jest uses to detect test files
+ // testMatch: [
+ // "**/__tests__/**/*.[jt]s?(x)",
+ // "**/?(*.)+(spec|test).[tj]s?(x)"
+ // ],
+
+ // An array of regexp pattern strings that are matched against all test paths, matched tests are skipped
+ // testPathIgnorePatterns: [
+ // "/node_modules/"
+ // ],
+
+ // The regexp pattern or array of patterns that Jest uses to detect test files
+ // testRegex: [],
+
+ // This option allows the use of a custom results processor
+ // testResultsProcessor: undefined,
+
+ // This option allows use of a custom test runner
+ // testRunner: "jest-circus/runner",
+
+ // A map from regular expressions to paths to transformers
+ // transform: undefined,
+
+ // An array of regexp pattern strings that are matched against all source file paths, matched files will skip transformation
+ // transformIgnorePatterns: [
+ // "/node_modules/",
+ // "\\.pnp\\.[^\\/]+$"
+ // ],
+
+ // An array of regexp pattern strings that are matched against all modules before the module loader will automatically return a mock for them
+ // unmockedModulePathPatterns: undefined,
+
+ // Indicates whether each individual test should be reported during the run
+ // verbose: undefined,
+
+ // An array of regexp patterns that are matched against all source file paths before re-running tests in watch mode
+ // watchPathIgnorePatterns: [],
+
+ // Whether to use watchman for file crawling
+ // watchman: true,
+};
+
+export default config;
diff --git a/package-lock.json b/package-lock.json
index 87a1da82..9d8824cb 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,115 +1,112 @@
{
"name": "seeqr",
- "version": "11.0.0",
+ "version": "12.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "seeqr",
- "version": "11.0.0",
+ "version": "12.0.0",
"hasInstallScript": true,
"license": "MIT",
"dependencies": {
- "@emotion/react": "^11.9.3",
- "@emotion/styled": "^11.9.3",
- "@mui/icons-material": "^5.4.2",
- "@mui/material": "^5.9.1",
- "@mui/styled-engine": "^5.4.2",
- "@types/react-router-dom": "^5.1.5",
- "@types/styled-components": "^5.1.7",
- "@uiw/codemirror-theme-dracula": "^4.21.4",
- "@uiw/react-codemirror": "^4.21.4",
- "chart.js": "^2.9.4",
+ "@emotion/react": "^11.11.1",
+ "@emotion/styled": "^11.11.0",
+ "@mui/icons-material": "^5.14.3",
+ "@mui/material": "^5.14.5",
+ "@uiw/codemirror-theme-dracula": "^4.21.9",
+ "@uiw/react-codemirror": "^4.21.9",
+ "chart.js": "^4.3.3",
"codemirror": "^6.0.1",
- "concurrently": "^5.3.0",
- "cross-env": "^7.0.3",
"d3": "^7.8.5",
"dagre": "^0.8.5",
- "debounce": "^1.2.0",
- "electron-packager": "^14.2.1",
- "electron-reloader": "^1.1.0",
- "electron-store": "^6.0.0",
- "faker": "^5.1.0",
+ "debounce": "^1.2.1",
+ "electron": "^25.5.0",
"fix-path": "^3.0.0",
"fontsource-roboto": "^4.0.0",
- "fs": "0.0.1-security",
"ms": "^2.1.3",
- "mysql2": "^2.3.3",
- "npm": "^8.5.5",
- "path": "^0.12.7",
- "pg": "^8.3.2",
- "react": "^17.0.2",
- "react-chartjs-2": "^2.11.1",
- "react-dom": "^17.0.2",
+ "mysql2": "^3.6.0",
+ "pg": "^8.11.3",
+ "react": "^18.2.0",
+ "react-chartjs-2": "^5.2.0",
+ "react-dom": "^18.2.0",
"react-force-graph": "^1.43.0",
- "react-loading": "^2.0.3",
- "react-router-dom": "^5.2.0",
- "reactflow": "^11.7.4",
- "sql-formatter": "^4.0.2",
+ "reactflow": "^11.8.3",
+ "sql-formatter": "^12.2.4",
"sqlite3": "^5.1.6",
- "styled-components": "^5.2.1",
- "three": "^0.153.0",
- "three-spritetext": "^1.8.1",
- "update-electron-app": "^2.0.1"
+ "styled-components": "^6.0.7",
+ "three": "^0.155.0",
+ "three-spritetext": "^1.8.1"
},
"devDependencies": {
- "@babel/core": "^7.10.5",
- "@babel/preset-env": "^7.10.4",
- "@babel/preset-react": "^7.10.4",
- "@pmmmwh/react-refresh-webpack-plugin": "^0.4.3",
- "@testing-library/react": "^12.1.5",
- "@types/chart.js": "^2.9.30",
- "@types/debounce": "^1.2.0",
+ "@babel/core": "^7.22.10",
+ "@babel/preset-env": "^7.22.10",
+ "@babel/preset-react": "^7.22.5",
+ "@babel/preset-typescript": "^7.22.5",
+ "@faker-js/faker": "^8.0.2",
+ "@pmmmwh/react-refresh-webpack-plugin": "^0.5.11",
+ "@testing-library/react": "^14.0.0",
+ "@types/chart.js": "^2.9.37",
+ "@types/debounce": "^1.2.1",
"@types/electron": "^1.6.10",
- "@types/enzyme": "^3.10.7",
+ "@types/enzyme": "^3.10.13",
"@types/enzyme-adapter-react-16": "^1.0.6",
- "@types/jest": "^26.0.14",
+ "@types/jest": "^29.5.3",
"@types/ms": "^0.7.31",
"@types/mysql2": "github:types/mysql2",
- "@types/node": "^14.14.22",
- "@types/react": "^18.2.13",
- "@types/react-dom": "^17.0.1",
- "@types/react-router-dom": "^5.1.5",
- "@types/three": "^0.152.1",
- "@typescript-eslint/eslint-plugin": "^4.14.2",
- "@typescript-eslint/parser": "^4.14.2",
- "autoprefixer": "^10.2.4",
- "babel-loader": "^8.1.0",
- "csp-html-webpack-plugin": "^5.1.0",
- "css-loader": "^5.2.7",
- "electron": "^11.5.0",
- "electron-builder": "^23.6.0",
- "electron-react-devtools": "^0.5.3",
- "eslint": "^7.19.0",
- "eslint-config-airbnb": "^18.2.1",
- "eslint-config-prettier": "^7.2.0",
- "eslint-plugin-import": "^2.22.1",
- "eslint-plugin-jsx-a11y": "^6.4.1",
- "eslint-plugin-react": "^7.22.0",
- "eslint-plugin-react-hooks": "^4.2.0",
+ "@types/node": "^20.5.2",
+ "@types/pg": "^8.10.2",
+ "@types/react": "^18.2.20",
+ "@types/react-dom": "^18.2.7",
+ "@types/styled-components": "^5.1.26",
+ "@types/three": "^0.155.0",
+ "@typescript-eslint/eslint-plugin": "^6.4.1",
+ "@typescript-eslint/parser": "^6.4.1",
+ "babel-loader": "^9.1.3",
+ "concurrently": "^8.2.1",
+ "cross-env": "^7.0.3",
+ "css-loader": "^6.8.1",
+ "electron-builder": "^24.6.3",
+ "enzyme": "^3.11.0",
+ "eslint": "^8.47.0",
+ "eslint-config-airbnb": "^19.0.4",
+ "eslint-config-prettier": "^9.0.0",
+ "eslint-import-resolver-typescript": "^3.6.0",
+ "eslint-plugin-import": "^2.28.1",
+ "eslint-plugin-jsx-a11y": "^6.7.1",
+ "eslint-plugin-react": "^7.33.2",
+ "eslint-plugin-react-hooks": "^4.6.0",
"file-loader": "^6.2.0",
- "fork-ts-checker-webpack-plugin": "^6.1.0",
- "html-webpack-plugin": "^5.2.0",
- "image-webpack-loader": "^7.0.1",
- "jest": "^26.4.2",
- "mini-css-extract-plugin": "^1.3.8",
- "nodemon": "^2.0.4",
+ "fork-ts-checker-webpack-plugin": "^8.0.0",
+ "html-webpack-plugin": "^5.5.3",
+ "jest": "^29.6.3",
+ "jest-environment-jsdom": "^29.6.3",
+ "nodemon": "^3.0.1",
+ "npm": "^9.8.1",
"npm-run-all": "^4.1.5",
- "postcss": "^8.2.6",
- "postcss-loader": "^5.0.0",
- "prettier": "^2.2.1",
- "react-refresh": "^0.9.0",
- "sass": "^1.32.8",
- "sass-loader": "^11.0.1",
- "source-map-loader": "^1.0.1",
- "style-loader": "^1.2.1",
- "ts-jest": "^26.4.0",
- "ts-loader": "^8.0.17",
- "ts-node": "^9.1.1",
- "typescript": "^4.1.3",
- "webpack": "^5.23.0",
- "webpack-cli": "^4.5.0",
- "webpack-dev-server": "^3.11.2"
+ "postcss": "^8.4.28",
+ "postcss-loader": "^7.3.3",
+ "react-refresh": "^0.14.0",
+ "sass": "^1.66.1",
+ "sass-loader": "^13.3.2",
+ "style-loader": "^3.3.3",
+ "ts-jest": "^29.1.1",
+ "ts-loader": "^9.4.4",
+ "ts-node": "^10.9.1",
+ "typescript": "^5.1.6",
+ "webpack": "^5.88.2",
+ "webpack-bundle-analyzer": "^4.9.0",
+ "webpack-cli": "^5.1.4",
+ "webpack-dev-server": "^4.15.1"
+ }
+ },
+ "node_modules/@aashutoshrathi/word-wrap": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
+ "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
}
},
"node_modules/@ampproject/remapping": {
@@ -124,45 +121,110 @@
"node": ">=6.0.0"
}
},
+ "node_modules/@babel/cli": {
+ "version": "7.22.9",
+ "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.22.9.tgz",
+ "integrity": "sha512-nb2O7AThqRo7/E53EGiuAkMaRbb7J5Qp3RvN+dmua1U+kydm0oznkhqbTEG15yk26G/C3yL6OdZjzgl+DMXVVA==",
+ "dependencies": {
+ "@jridgewell/trace-mapping": "^0.3.17",
+ "commander": "^4.0.1",
+ "convert-source-map": "^1.1.0",
+ "fs-readdir-recursive": "^1.1.0",
+ "glob": "^7.2.0",
+ "make-dir": "^2.1.0",
+ "slash": "^2.0.0"
+ },
+ "bin": {
+ "babel": "bin/babel.js",
+ "babel-external-helpers": "bin/babel-external-helpers.js"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "optionalDependencies": {
+ "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents.3",
+ "chokidar": "^3.4.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/cli/node_modules/commander": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
+ "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/@babel/cli/node_modules/make-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
+ "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
+ "dependencies": {
+ "pify": "^4.0.1",
+ "semver": "^5.6.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@babel/cli/node_modules/semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/@babel/cli/node_modules/slash": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
+ "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/@babel/code-frame": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz",
- "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==",
+ "version": "7.22.10",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.10.tgz",
+ "integrity": "sha512-/KKIMG4UEL35WmI9OlvMhurwtytjvXoFcGNrOvyG9zIzA8YmPjVtIZUf7b05+TPO7G7/GEmLHDaoCgACHl9hhA==",
"dependencies": {
- "@babel/highlight": "^7.22.5"
+ "@babel/highlight": "^7.22.10",
+ "chalk": "^2.4.2"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/compat-data": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.5.tgz",
- "integrity": "sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==",
+ "version": "7.22.9",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz",
+ "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/core": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.5.tgz",
- "integrity": "sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==",
+ "version": "7.22.10",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.10.tgz",
+ "integrity": "sha512-fTmqbbUBAwCcre6zPzNngvsI0aNrPZe77AeqvDxWM9Nm+04RrJ3CAmGHA9f7lJQY6ZMhRztNemy4uslDxTX4Qw==",
"dependencies": {
"@ampproject/remapping": "^2.2.0",
- "@babel/code-frame": "^7.22.5",
- "@babel/generator": "^7.22.5",
- "@babel/helper-compilation-targets": "^7.22.5",
- "@babel/helper-module-transforms": "^7.22.5",
- "@babel/helpers": "^7.22.5",
- "@babel/parser": "^7.22.5",
+ "@babel/code-frame": "^7.22.10",
+ "@babel/generator": "^7.22.10",
+ "@babel/helper-compilation-targets": "^7.22.10",
+ "@babel/helper-module-transforms": "^7.22.9",
+ "@babel/helpers": "^7.22.10",
+ "@babel/parser": "^7.22.10",
"@babel/template": "^7.22.5",
- "@babel/traverse": "^7.22.5",
- "@babel/types": "^7.22.5",
+ "@babel/traverse": "^7.22.10",
+ "@babel/types": "^7.22.10",
"convert-source-map": "^1.7.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
"json5": "^2.2.2",
- "semver": "^6.3.0"
+ "semver": "^6.3.1"
},
"engines": {
"node": ">=6.9.0"
@@ -173,11 +235,11 @@
}
},
"node_modules/@babel/generator": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.5.tgz",
- "integrity": "sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==",
+ "version": "7.22.10",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.10.tgz",
+ "integrity": "sha512-79KIf7YiWjjdZ81JnLujDRApWtl7BxTqWD88+FFdQEIOG8LJ0etDOM7CXuIgGJa55sGOwZVwuEsaLEm0PJ5/+A==",
"dependencies": {
- "@babel/types": "^7.22.5",
+ "@babel/types": "^7.22.10",
"@jridgewell/gen-mapping": "^0.3.2",
"@jridgewell/trace-mapping": "^0.3.17",
"jsesc": "^2.5.1"
@@ -201,7 +263,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.5.tgz",
"integrity": "sha512-m1EP3lVOPptR+2DwD125gziZNcmoNSHGmJROKoy87loWUQyJaVXDgpmruWqDARZSmtYQ+Dl25okU8+qhVzuykw==",
- "dev": true,
"dependencies": {
"@babel/types": "^7.22.5"
},
@@ -210,38 +271,34 @@
}
},
"node_modules/@babel/helper-compilation-targets": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.5.tgz",
- "integrity": "sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw==",
+ "version": "7.22.10",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.10.tgz",
+ "integrity": "sha512-JMSwHD4J7SLod0idLq5PKgI+6g/hLD/iuWBq08ZX49xE14VpVEojJ5rHWptpirV2j020MvypRLAXAO50igCJ5Q==",
"dependencies": {
- "@babel/compat-data": "^7.22.5",
+ "@babel/compat-data": "^7.22.9",
"@babel/helper-validator-option": "^7.22.5",
- "browserslist": "^4.21.3",
+ "browserslist": "^4.21.9",
"lru-cache": "^5.1.1",
- "semver": "^6.3.0"
+ "semver": "^6.3.1"
},
"engines": {
"node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
}
},
"node_modules/@babel/helper-create-class-features-plugin": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.5.tgz",
- "integrity": "sha512-xkb58MyOYIslxu3gKmVXmjTtUPvBU4odYzbiIQbWwLKIHCsx6UGZGX6F1IznMFVnDdirseUZopzN+ZRt8Xb33Q==",
- "dev": true,
+ "version": "7.22.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.9.tgz",
+ "integrity": "sha512-Pwyi89uO4YrGKxL/eNJ8lfEH55DnRloGPOseaA8NFNL6jAUnn+KccaISiFazCj5IolPPDjGSdzQzXVzODVRqUQ==",
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.22.5",
"@babel/helper-environment-visitor": "^7.22.5",
"@babel/helper-function-name": "^7.22.5",
"@babel/helper-member-expression-to-functions": "^7.22.5",
"@babel/helper-optimise-call-expression": "^7.22.5",
- "@babel/helper-replace-supers": "^7.22.5",
+ "@babel/helper-replace-supers": "^7.22.9",
"@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
- "@babel/helper-split-export-declaration": "^7.22.5",
- "semver": "^6.3.0"
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "semver": "^6.3.1"
},
"engines": {
"node": ">=6.9.0"
@@ -251,14 +308,13 @@
}
},
"node_modules/@babel/helper-create-regexp-features-plugin": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.5.tgz",
- "integrity": "sha512-1VpEFOIbMRaXyDeUwUfmTIxExLwQ+zkW+Bh5zXpApA3oQedBx9v/updixWxnx/bZpKw7u8VxWjb/qWpIcmPq8A==",
- "dev": true,
+ "version": "7.22.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.9.tgz",
+ "integrity": "sha512-+svjVa/tFwsNSG4NEy1h85+HQ5imbT92Q5/bgtS7P0GTQlP8WuFdqsiABmQouhiFGyV66oGxZFpeYHza1rNsKw==",
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.22.5",
"regexpu-core": "^5.3.1",
- "semver": "^6.3.0"
+ "semver": "^6.3.1"
},
"engines": {
"node": ">=6.9.0"
@@ -268,20 +324,18 @@
}
},
"node_modules/@babel/helper-define-polyfill-provider": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.0.tgz",
- "integrity": "sha512-RnanLx5ETe6aybRi1cO/edaRH+bNYWaryCEmjDDYyNr4wnSzyOp8T0dWipmqVHKEY3AbVKUom50AKSlj1zmKbg==",
- "dev": true,
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz",
+ "integrity": "sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==",
"dependencies": {
- "@babel/helper-compilation-targets": "^7.17.7",
- "@babel/helper-plugin-utils": "^7.16.7",
+ "@babel/helper-compilation-targets": "^7.22.6",
+ "@babel/helper-plugin-utils": "^7.22.5",
"debug": "^4.1.1",
"lodash.debounce": "^4.0.8",
- "resolve": "^1.14.2",
- "semver": "^6.1.2"
+ "resolve": "^1.14.2"
},
"peerDependencies": {
- "@babel/core": "^7.4.0-0"
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
}
},
"node_modules/@babel/helper-environment-visitor": {
@@ -319,7 +373,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.5.tgz",
"integrity": "sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ==",
- "dev": true,
"dependencies": {
"@babel/types": "^7.22.5"
},
@@ -339,28 +392,27 @@
}
},
"node_modules/@babel/helper-module-transforms": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.5.tgz",
- "integrity": "sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==",
+ "version": "7.22.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz",
+ "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==",
"dependencies": {
"@babel/helper-environment-visitor": "^7.22.5",
"@babel/helper-module-imports": "^7.22.5",
"@babel/helper-simple-access": "^7.22.5",
- "@babel/helper-split-export-declaration": "^7.22.5",
- "@babel/helper-validator-identifier": "^7.22.5",
- "@babel/template": "^7.22.5",
- "@babel/traverse": "^7.22.5",
- "@babel/types": "^7.22.5"
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "@babel/helper-validator-identifier": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
}
},
"node_modules/@babel/helper-optimise-call-expression": {
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz",
"integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==",
- "dev": true,
"dependencies": {
"@babel/types": "^7.22.5"
},
@@ -377,15 +429,13 @@
}
},
"node_modules/@babel/helper-remap-async-to-generator": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.5.tgz",
- "integrity": "sha512-cU0Sq1Rf4Z55fgz7haOakIyM7+x/uCFwXpLPaeRzfoUtAEAuUZjZvFPjL/rk5rW693dIgn2hng1W7xbT7lWT4g==",
- "dev": true,
+ "version": "7.22.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.9.tgz",
+ "integrity": "sha512-8WWC4oR4Px+tr+Fp0X3RHDVfINGpF3ad1HIbrc8A77epiR6eMMc6jsgozkzT2uDiOOdoS9cLIQ+XD2XvI2WSmQ==",
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.22.5",
"@babel/helper-environment-visitor": "^7.22.5",
- "@babel/helper-wrap-function": "^7.22.5",
- "@babel/types": "^7.22.5"
+ "@babel/helper-wrap-function": "^7.22.9"
},
"engines": {
"node": ">=6.9.0"
@@ -395,20 +445,19 @@
}
},
"node_modules/@babel/helper-replace-supers": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.5.tgz",
- "integrity": "sha512-aLdNM5I3kdI/V9xGNyKSF3X/gTyMUBohTZ+/3QdQKAA9vxIiy12E+8E2HoOP1/DjeqU+g6as35QHJNMDDYpuCg==",
- "dev": true,
+ "version": "7.22.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz",
+ "integrity": "sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==",
"dependencies": {
"@babel/helper-environment-visitor": "^7.22.5",
"@babel/helper-member-expression-to-functions": "^7.22.5",
- "@babel/helper-optimise-call-expression": "^7.22.5",
- "@babel/template": "^7.22.5",
- "@babel/traverse": "^7.22.5",
- "@babel/types": "^7.22.5"
+ "@babel/helper-optimise-call-expression": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
}
},
"node_modules/@babel/helper-simple-access": {
@@ -426,7 +475,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz",
"integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==",
- "dev": true,
"dependencies": {
"@babel/types": "^7.22.5"
},
@@ -435,9 +483,9 @@
}
},
"node_modules/@babel/helper-split-export-declaration": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.5.tgz",
- "integrity": "sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ==",
+ "version": "7.22.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
+ "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
"dependencies": {
"@babel/types": "^7.22.5"
},
@@ -470,14 +518,12 @@
}
},
"node_modules/@babel/helper-wrap-function": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.5.tgz",
- "integrity": "sha512-bYqLIBSEshYcYQyfks8ewYA8S30yaGSeRslcvKMvoUk6HHPySbxHq9YRi6ghhzEU+yhQv9bP/jXnygkStOcqZw==",
- "dev": true,
+ "version": "7.22.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.9.tgz",
+ "integrity": "sha512-sZ+QzfauuUEfxSEjKFmi3qDSHgLsTPK/pEpoD/qonZKOtTPTLbf59oabPQ4rKekt9lFcj/hTZaOhWwFYrgjk+Q==",
"dependencies": {
"@babel/helper-function-name": "^7.22.5",
"@babel/template": "^7.22.5",
- "@babel/traverse": "^7.22.5",
"@babel/types": "^7.22.5"
},
"engines": {
@@ -485,25 +531,25 @@
}
},
"node_modules/@babel/helpers": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.5.tgz",
- "integrity": "sha512-pSXRmfE1vzcUIDFQcSGA5Mr+GxBV9oiRKDuDxXvWQQBCh8HoIjs/2DlDB7H8smac1IVrB9/xdXj2N3Wol9Cr+Q==",
+ "version": "7.22.10",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.10.tgz",
+ "integrity": "sha512-a41J4NW8HyZa1I1vAndrraTlPZ/eZoga2ZgS7fEr0tZJGVU4xqdE80CEm0CcNjha5EZ8fTBYLKHF0kqDUuAwQw==",
"dependencies": {
"@babel/template": "^7.22.5",
- "@babel/traverse": "^7.22.5",
- "@babel/types": "^7.22.5"
+ "@babel/traverse": "^7.22.10",
+ "@babel/types": "^7.22.10"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/highlight": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz",
- "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==",
+ "version": "7.22.10",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.10.tgz",
+ "integrity": "sha512-78aUtVcT7MUscr0K5mIEnkwxPE0MaxkR5RxRwuHaQ+JuU5AmTPhY+do2mdzVTnIJJpyBglql2pehuBIWHug+WQ==",
"dependencies": {
"@babel/helper-validator-identifier": "^7.22.5",
- "chalk": "^2.0.0",
+ "chalk": "^2.4.2",
"js-tokens": "^4.0.0"
},
"engines": {
@@ -511,9 +557,9 @@
}
},
"node_modules/@babel/parser": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.5.tgz",
- "integrity": "sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==",
+ "version": "7.22.10",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.10.tgz",
+ "integrity": "sha512-lNbdGsQb9ekfsnjFGhEiF4hfFqGgfOP3H3d27re3n+CGhNuTSUEQdfWk556sTLNTloczcdM5TYF2LhzmDQKyvQ==",
"bin": {
"parser": "bin/babel-parser.js"
},
@@ -525,7 +571,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.5.tgz",
"integrity": "sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ==",
- "dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -540,7 +585,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.5.tgz",
"integrity": "sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g==",
- "dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5",
"@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
@@ -553,11 +597,13 @@
"@babel/core": "^7.13.0"
}
},
- "node_modules/@babel/plugin-proposal-private-property-in-object": {
- "version": "7.21.0-placeholder-for-preset-env.2",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz",
- "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==",
- "dev": true,
+ "node_modules/@babel/plugin-external-helpers": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-external-helpers/-/plugin-external-helpers-7.22.5.tgz",
+ "integrity": "sha512-ngnNEWxmykPk82mH4ajZT0qTztr3Je6hrMuKAslZVM8G1YZTENJSYwrIGtt6KOtznug3exmAtF4so/nPqJuA4A==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
"engines": {
"node": ">=6.9.0"
},
@@ -565,17 +611,45 @@
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-proposal-unicode-property-regex": {
+ "node_modules/@babel/plugin-proposal-class-properties": {
"version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz",
- "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==",
- "dev": true,
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz",
+ "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==",
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.18.6",
+ "@babel/helper-create-class-features-plugin": "^7.18.6",
"@babel/helper-plugin-utils": "^7.18.6"
},
"engines": {
- "node": ">=4"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-object-rest-spread": {
+ "version": "7.20.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz",
+ "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==",
+ "dependencies": {
+ "@babel/compat-data": "^7.20.5",
+ "@babel/helper-compilation-targets": "^7.20.7",
+ "@babel/helper-plugin-utils": "^7.20.2",
+ "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+ "@babel/plugin-transform-parameters": "^7.20.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-private-property-in-object": {
+ "version": "7.21.0-placeholder-for-preset-env.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz",
+ "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==",
+ "engines": {
+ "node": ">=6.9.0"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
@@ -585,7 +659,6 @@
"version": "7.8.4",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
"integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
- "dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
},
@@ -609,7 +682,6 @@
"version": "7.12.13",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
"integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
- "dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.12.13"
},
@@ -621,7 +693,6 @@
"version": "7.14.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz",
"integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==",
- "dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.14.5"
},
@@ -636,7 +707,6 @@
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
"integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
- "dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
},
@@ -648,7 +718,6 @@
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
"integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==",
- "dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.3"
},
@@ -660,7 +729,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz",
"integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==",
- "dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -675,7 +743,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz",
"integrity": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==",
- "dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -690,7 +757,6 @@
"version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
"integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
- "dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.10.4"
},
@@ -702,7 +768,6 @@
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
"integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
- "dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
},
@@ -728,7 +793,6 @@
"version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
"integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
- "dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.10.4"
},
@@ -740,7 +804,6 @@
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
"integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
- "dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
},
@@ -752,7 +815,6 @@
"version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
"integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
- "dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.10.4"
},
@@ -764,7 +826,6 @@
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
"integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
- "dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
},
@@ -776,7 +837,6 @@
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
"integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
- "dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
},
@@ -788,7 +848,6 @@
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
"integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
- "dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
},
@@ -800,7 +859,6 @@
"version": "7.14.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz",
"integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==",
- "dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.14.5"
},
@@ -815,7 +873,6 @@
"version": "7.14.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
"integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
- "dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.14.5"
},
@@ -826,11 +883,24 @@
"@babel/core": "^7.0.0-0"
}
},
+ "node_modules/@babel/plugin-syntax-typescript": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz",
+ "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
"node_modules/@babel/plugin-syntax-unicode-sets-regex": {
"version": "7.18.6",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz",
"integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==",
- "dev": true,
"dependencies": {
"@babel/helper-create-regexp-features-plugin": "^7.18.6",
"@babel/helper-plugin-utils": "^7.18.6"
@@ -846,7 +916,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz",
"integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==",
- "dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -858,14 +927,13 @@
}
},
"node_modules/@babel/plugin-transform-async-generator-functions": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.5.tgz",
- "integrity": "sha512-gGOEvFzm3fWoyD5uZq7vVTD57pPJ3PczPUD/xCFGjzBpUosnklmXyKnGQbbbGs1NPNPskFex0j93yKbHt0cHyg==",
- "dev": true,
+ "version": "7.22.10",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.10.tgz",
+ "integrity": "sha512-eueE8lvKVzq5wIObKK/7dvoeKJ+xc6TvRn6aysIjS6pSCeLy7S/eVi7pEQknZqyqvzaNKdDtem8nUNTBgDVR2g==",
"dependencies": {
"@babel/helper-environment-visitor": "^7.22.5",
"@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-remap-async-to-generator": "^7.22.5",
+ "@babel/helper-remap-async-to-generator": "^7.22.9",
"@babel/plugin-syntax-async-generators": "^7.8.4"
},
"engines": {
@@ -879,7 +947,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz",
"integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==",
- "dev": true,
"dependencies": {
"@babel/helper-module-imports": "^7.22.5",
"@babel/helper-plugin-utils": "^7.22.5",
@@ -896,7 +963,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz",
"integrity": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==",
- "dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -908,10 +974,9 @@
}
},
"node_modules/@babel/plugin-transform-block-scoping": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.5.tgz",
- "integrity": "sha512-EcACl1i5fSQ6bt+YGuU/XGCeZKStLmyVGytWkpyhCLeQVA0eu6Wtiw92V+I1T/hnezUv7j74dA/Ro69gWcU+hg==",
- "dev": true,
+ "version": "7.22.10",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.10.tgz",
+ "integrity": "sha512-1+kVpGAOOI1Albt6Vse7c8pHzcZQdQKW+wJH+g8mCaszOdDVwRXa/slHPqIw+oJAJANTKDMuM2cBdV0Dg618Vg==",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -926,7 +991,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz",
"integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==",
- "dev": true,
"dependencies": {
"@babel/helper-create-class-features-plugin": "^7.22.5",
"@babel/helper-plugin-utils": "^7.22.5"
@@ -942,7 +1006,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.5.tgz",
"integrity": "sha512-SPToJ5eYZLxlnp1UzdARpOGeC2GbHvr9d/UV0EukuVx8atktg194oe+C5BqQ8jRTkgLRVOPYeXRSBg1IlMoVRA==",
- "dev": true,
"dependencies": {
"@babel/helper-create-class-features-plugin": "^7.22.5",
"@babel/helper-plugin-utils": "^7.22.5",
@@ -956,19 +1019,18 @@
}
},
"node_modules/@babel/plugin-transform-classes": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.5.tgz",
- "integrity": "sha512-2edQhLfibpWpsVBx2n/GKOz6JdGQvLruZQfGr9l1qes2KQaWswjBzhQF7UDUZMNaMMQeYnQzxwOMPsbYF7wqPQ==",
- "dev": true,
+ "version": "7.22.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.6.tgz",
+ "integrity": "sha512-58EgM6nuPNG6Py4Z3zSuu0xWu2VfodiMi72Jt5Kj2FECmaYk1RrTXA45z6KBFsu9tRgwQDwIiY4FXTt+YsSFAQ==",
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.22.5",
- "@babel/helper-compilation-targets": "^7.22.5",
+ "@babel/helper-compilation-targets": "^7.22.6",
"@babel/helper-environment-visitor": "^7.22.5",
"@babel/helper-function-name": "^7.22.5",
"@babel/helper-optimise-call-expression": "^7.22.5",
"@babel/helper-plugin-utils": "^7.22.5",
"@babel/helper-replace-supers": "^7.22.5",
- "@babel/helper-split-export-declaration": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.22.6",
"globals": "^11.1.0"
},
"engines": {
@@ -982,7 +1044,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz",
"integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==",
- "dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5",
"@babel/template": "^7.22.5"
@@ -995,10 +1056,9 @@
}
},
"node_modules/@babel/plugin-transform-destructuring": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.5.tgz",
- "integrity": "sha512-GfqcFuGW8vnEqTUBM7UtPd5A4q797LTvvwKxXTgRsFjoqaJiEg9deBG6kWeQYkVEL569NpnmpC0Pkr/8BLKGnQ==",
- "dev": true,
+ "version": "7.22.10",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.10.tgz",
+ "integrity": "sha512-dPJrL0VOyxqLM9sritNbMSGx/teueHF/htMKrPT7DNxccXxRDPYqlgPFFdr8u+F+qUZOkZoXue/6rL5O5GduEw==",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -1013,7 +1073,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz",
"integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==",
- "dev": true,
"dependencies": {
"@babel/helper-create-regexp-features-plugin": "^7.22.5",
"@babel/helper-plugin-utils": "^7.22.5"
@@ -1029,7 +1088,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz",
"integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==",
- "dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -1044,7 +1102,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.5.tgz",
"integrity": "sha512-0MC3ppTB1AMxd8fXjSrbPa7LT9hrImt+/fcj+Pg5YMD7UQyWp/02+JWpdnCymmsXwIx5Z+sYn1bwCn4ZJNvhqQ==",
- "dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5",
"@babel/plugin-syntax-dynamic-import": "^7.8.3"
@@ -1060,7 +1117,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz",
"integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==",
- "dev": true,
"dependencies": {
"@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5",
"@babel/helper-plugin-utils": "^7.22.5"
@@ -1076,7 +1132,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.5.tgz",
"integrity": "sha512-X4hhm7FRnPgd4nDA4b/5V280xCx6oL7Oob5+9qVS5C13Zq4bh1qq7LU0GgRU6b5dBWBvhGaXYVB4AcN6+ol6vg==",
- "dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5",
"@babel/plugin-syntax-export-namespace-from": "^7.8.3"
@@ -1092,7 +1147,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.5.tgz",
"integrity": "sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A==",
- "dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -1107,7 +1161,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz",
"integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==",
- "dev": true,
"dependencies": {
"@babel/helper-compilation-targets": "^7.22.5",
"@babel/helper-function-name": "^7.22.5",
@@ -1124,7 +1177,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.5.tgz",
"integrity": "sha512-DuCRB7fu8MyTLbEQd1ew3R85nx/88yMoqo2uPSjevMj3yoN7CDM8jkgrY0wmVxfJZyJ/B9fE1iq7EQppWQmR5A==",
- "dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5",
"@babel/plugin-syntax-json-strings": "^7.8.3"
@@ -1140,7 +1192,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz",
"integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==",
- "dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -1155,7 +1206,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.5.tgz",
"integrity": "sha512-MQQOUW1KL8X0cDWfbwYP+TbVbZm16QmQXJQ+vndPtH/BoO0lOKpVoEDMI7+PskYxH+IiE0tS8xZye0qr1lGzSA==",
- "dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5",
"@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
@@ -1171,7 +1221,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz",
"integrity": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==",
- "dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -1186,7 +1235,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz",
"integrity": "sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==",
- "dev": true,
"dependencies": {
"@babel/helper-module-transforms": "^7.22.5",
"@babel/helper-plugin-utils": "^7.22.5"
@@ -1202,7 +1250,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.5.tgz",
"integrity": "sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA==",
- "dev": true,
"dependencies": {
"@babel/helper-module-transforms": "^7.22.5",
"@babel/helper-plugin-utils": "^7.22.5",
@@ -1219,7 +1266,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.5.tgz",
"integrity": "sha512-emtEpoaTMsOs6Tzz+nbmcePl6AKVtS1yC4YNAeMun9U8YCsgadPNxnOPQ8GhHFB2qdx+LZu9LgoC0Lthuu05DQ==",
- "dev": true,
"dependencies": {
"@babel/helper-hoist-variables": "^7.22.5",
"@babel/helper-module-transforms": "^7.22.5",
@@ -1237,7 +1283,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz",
"integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==",
- "dev": true,
"dependencies": {
"@babel/helper-module-transforms": "^7.22.5",
"@babel/helper-plugin-utils": "^7.22.5"
@@ -1253,7 +1298,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz",
"integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==",
- "dev": true,
"dependencies": {
"@babel/helper-create-regexp-features-plugin": "^7.22.5",
"@babel/helper-plugin-utils": "^7.22.5"
@@ -1269,7 +1313,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz",
"integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==",
- "dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -1284,7 +1327,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.5.tgz",
"integrity": "sha512-6CF8g6z1dNYZ/VXok5uYkkBBICHZPiGEl7oDnAx2Mt1hlHVHOSIKWJaXHjQJA5VB43KZnXZDIexMchY4y2PGdA==",
- "dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5",
"@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
@@ -1300,7 +1342,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.5.tgz",
"integrity": "sha512-NbslED1/6M+sXiwwtcAB/nieypGw02Ejf4KtDeMkCEpP6gWFMX1wI9WKYua+4oBneCCEmulOkRpwywypVZzs/g==",
- "dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5",
"@babel/plugin-syntax-numeric-separator": "^7.10.4"
@@ -1316,7 +1357,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.5.tgz",
"integrity": "sha512-Kk3lyDmEslH9DnvCDA1s1kkd3YWQITiBOHngOtDL9Pt6BZjzqb6hiOlb8VfjiiQJ2unmegBqZu0rx5RxJb5vmQ==",
- "dev": true,
"dependencies": {
"@babel/compat-data": "^7.22.5",
"@babel/helper-compilation-targets": "^7.22.5",
@@ -1335,7 +1375,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz",
"integrity": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==",
- "dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5",
"@babel/helper-replace-supers": "^7.22.5"
@@ -1351,7 +1390,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.5.tgz",
"integrity": "sha512-pH8orJahy+hzZje5b8e2QIlBWQvGpelS76C63Z+jhZKsmzfNaPQ+LaW6dcJ9bxTpo1mtXbgHwy765Ro3jftmUg==",
- "dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5",
"@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
@@ -1364,10 +1402,9 @@
}
},
"node_modules/@babel/plugin-transform-optional-chaining": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.5.tgz",
- "integrity": "sha512-AconbMKOMkyG+xCng2JogMCDcqW8wedQAqpVIL4cOSescZ7+iW8utC6YDZLMCSUIReEA733gzRSaOSXMAt/4WQ==",
- "dev": true,
+ "version": "7.22.10",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.10.tgz",
+ "integrity": "sha512-MMkQqZAZ+MGj+jGTG3OTuhKeBpNcO+0oCEbrGNEaOmiEn+1MzRyQlYsruGiU8RTK3zV6XwrVJTmwiDOyYK6J9g==",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5",
"@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
@@ -1384,7 +1421,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.5.tgz",
"integrity": "sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==",
- "dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -1399,7 +1435,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz",
"integrity": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==",
- "dev": true,
"dependencies": {
"@babel/helper-create-class-features-plugin": "^7.22.5",
"@babel/helper-plugin-utils": "^7.22.5"
@@ -1415,7 +1450,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.5.tgz",
"integrity": "sha512-/9xnaTTJcVoBtSSmrVyhtSvO3kbqS2ODoh2juEU72c3aYonNF0OMGiaz2gjukyKM2wBBYJP38S4JiE0Wfb5VMQ==",
- "dev": true,
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.22.5",
"@babel/helper-create-class-features-plugin": "^7.22.5",
@@ -1433,7 +1467,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz",
"integrity": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==",
- "dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -1448,7 +1481,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.22.5.tgz",
"integrity": "sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw==",
- "dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -1463,7 +1495,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.5.tgz",
"integrity": "sha512-rog5gZaVbUip5iWDMTYbVM15XQq+RkUKhET/IHR6oizR+JEoN6CAfTTuHcK4vwUyzca30qqHqEpzBOnaRMWYMA==",
- "dev": true,
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.22.5",
"@babel/helper-module-imports": "^7.22.5",
@@ -1482,7 +1513,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz",
"integrity": "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==",
- "dev": true,
"dependencies": {
"@babel/plugin-transform-react-jsx": "^7.22.5"
},
@@ -1497,7 +1527,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.22.5.tgz",
"integrity": "sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA==",
- "dev": true,
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.22.5",
"@babel/helper-plugin-utils": "^7.22.5"
@@ -1510,13 +1539,12 @@
}
},
"node_modules/@babel/plugin-transform-regenerator": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.5.tgz",
- "integrity": "sha512-rR7KePOE7gfEtNTh9Qw+iO3Q/e4DEsoQ+hdvM6QUDH7JRJ5qxq5AA52ZzBWbI5i9lfNuvySgOGP8ZN7LAmaiPw==",
- "dev": true,
+ "version": "7.22.10",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz",
+ "integrity": "sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5",
- "regenerator-transform": "^0.15.1"
+ "regenerator-transform": "^0.15.2"
},
"engines": {
"node": ">=6.9.0"
@@ -1529,7 +1557,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz",
"integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==",
- "dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -1544,7 +1571,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz",
"integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==",
- "dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -1559,7 +1585,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz",
"integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==",
- "dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5",
"@babel/helper-skip-transparent-expression-wrappers": "^7.22.5"
@@ -1575,7 +1600,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz",
"integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==",
- "dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -1590,7 +1614,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz",
"integrity": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==",
- "dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -1605,7 +1628,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz",
"integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==",
- "dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -1616,11 +1638,27 @@
"@babel/core": "^7.0.0-0"
}
},
+ "node_modules/@babel/plugin-transform-typescript": {
+ "version": "7.22.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.9.tgz",
+ "integrity": "sha512-BnVR1CpKiuD0iobHPaM1iLvcwPYN2uVFAqoLVSpEDKWuOikoCv5HbKLxclhKYUXlWkX86DoZGtqI4XhbOsyrMg==",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-create-class-features-plugin": "^7.22.9",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-typescript": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
"node_modules/@babel/plugin-transform-unicode-escapes": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.5.tgz",
- "integrity": "sha512-biEmVg1IYB/raUO5wT1tgfacCef15Fbzhkx493D3urBI++6hpJ+RFG4SrWMn0NEZLfvilqKf3QDrRVZHo08FYg==",
- "dev": true,
+ "version": "7.22.10",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz",
+ "integrity": "sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -1635,7 +1673,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz",
"integrity": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==",
- "dev": true,
"dependencies": {
"@babel/helper-create-regexp-features-plugin": "^7.22.5",
"@babel/helper-plugin-utils": "^7.22.5"
@@ -1651,7 +1688,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz",
"integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==",
- "dev": true,
"dependencies": {
"@babel/helper-create-regexp-features-plugin": "^7.22.5",
"@babel/helper-plugin-utils": "^7.22.5"
@@ -1667,7 +1703,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz",
"integrity": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==",
- "dev": true,
"dependencies": {
"@babel/helper-create-regexp-features-plugin": "^7.22.5",
"@babel/helper-plugin-utils": "^7.22.5"
@@ -1680,13 +1715,12 @@
}
},
"node_modules/@babel/preset-env": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.5.tgz",
- "integrity": "sha512-fj06hw89dpiZzGZtxn+QybifF07nNiZjZ7sazs2aVDcysAZVGjW7+7iFYxg6GLNM47R/thYfLdrXc+2f11Vi9A==",
- "dev": true,
+ "version": "7.22.10",
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.10.tgz",
+ "integrity": "sha512-riHpLb1drNkpLlocmSyEg4oYJIQFeXAK/d7rI6mbD0XsvoTOOweXDmQPG/ErxsEhWk3rl3Q/3F6RFQlVFS8m0A==",
"dependencies": {
- "@babel/compat-data": "^7.22.5",
- "@babel/helper-compilation-targets": "^7.22.5",
+ "@babel/compat-data": "^7.22.9",
+ "@babel/helper-compilation-targets": "^7.22.10",
"@babel/helper-plugin-utils": "^7.22.5",
"@babel/helper-validator-option": "^7.22.5",
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.5",
@@ -1711,15 +1745,15 @@
"@babel/plugin-syntax-top-level-await": "^7.14.5",
"@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
"@babel/plugin-transform-arrow-functions": "^7.22.5",
- "@babel/plugin-transform-async-generator-functions": "^7.22.5",
+ "@babel/plugin-transform-async-generator-functions": "^7.22.10",
"@babel/plugin-transform-async-to-generator": "^7.22.5",
"@babel/plugin-transform-block-scoped-functions": "^7.22.5",
- "@babel/plugin-transform-block-scoping": "^7.22.5",
+ "@babel/plugin-transform-block-scoping": "^7.22.10",
"@babel/plugin-transform-class-properties": "^7.22.5",
"@babel/plugin-transform-class-static-block": "^7.22.5",
- "@babel/plugin-transform-classes": "^7.22.5",
+ "@babel/plugin-transform-classes": "^7.22.6",
"@babel/plugin-transform-computed-properties": "^7.22.5",
- "@babel/plugin-transform-destructuring": "^7.22.5",
+ "@babel/plugin-transform-destructuring": "^7.22.10",
"@babel/plugin-transform-dotall-regex": "^7.22.5",
"@babel/plugin-transform-duplicate-keys": "^7.22.5",
"@babel/plugin-transform-dynamic-import": "^7.22.5",
@@ -1742,29 +1776,29 @@
"@babel/plugin-transform-object-rest-spread": "^7.22.5",
"@babel/plugin-transform-object-super": "^7.22.5",
"@babel/plugin-transform-optional-catch-binding": "^7.22.5",
- "@babel/plugin-transform-optional-chaining": "^7.22.5",
+ "@babel/plugin-transform-optional-chaining": "^7.22.10",
"@babel/plugin-transform-parameters": "^7.22.5",
"@babel/plugin-transform-private-methods": "^7.22.5",
"@babel/plugin-transform-private-property-in-object": "^7.22.5",
"@babel/plugin-transform-property-literals": "^7.22.5",
- "@babel/plugin-transform-regenerator": "^7.22.5",
+ "@babel/plugin-transform-regenerator": "^7.22.10",
"@babel/plugin-transform-reserved-words": "^7.22.5",
"@babel/plugin-transform-shorthand-properties": "^7.22.5",
"@babel/plugin-transform-spread": "^7.22.5",
"@babel/plugin-transform-sticky-regex": "^7.22.5",
"@babel/plugin-transform-template-literals": "^7.22.5",
"@babel/plugin-transform-typeof-symbol": "^7.22.5",
- "@babel/plugin-transform-unicode-escapes": "^7.22.5",
+ "@babel/plugin-transform-unicode-escapes": "^7.22.10",
"@babel/plugin-transform-unicode-property-regex": "^7.22.5",
"@babel/plugin-transform-unicode-regex": "^7.22.5",
"@babel/plugin-transform-unicode-sets-regex": "^7.22.5",
- "@babel/preset-modules": "^0.1.5",
- "@babel/types": "^7.22.5",
- "babel-plugin-polyfill-corejs2": "^0.4.3",
- "babel-plugin-polyfill-corejs3": "^0.8.1",
- "babel-plugin-polyfill-regenerator": "^0.5.0",
- "core-js-compat": "^3.30.2",
- "semver": "^6.3.0"
+ "@babel/preset-modules": "0.1.6-no-external-plugins",
+ "@babel/types": "^7.22.10",
+ "babel-plugin-polyfill-corejs2": "^0.4.5",
+ "babel-plugin-polyfill-corejs3": "^0.8.3",
+ "babel-plugin-polyfill-regenerator": "^0.5.2",
+ "core-js-compat": "^3.31.0",
+ "semver": "^6.3.1"
},
"engines": {
"node": ">=6.9.0"
@@ -1774,26 +1808,22 @@
}
},
"node_modules/@babel/preset-modules": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz",
- "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==",
- "dev": true,
+ "version": "0.1.6-no-external-plugins",
+ "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz",
+ "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==",
"dependencies": {
"@babel/helper-plugin-utils": "^7.0.0",
- "@babel/plugin-proposal-unicode-property-regex": "^7.4.4",
- "@babel/plugin-transform-dotall-regex": "^7.4.4",
"@babel/types": "^7.4.4",
"esutils": "^2.0.2"
},
"peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0"
}
},
"node_modules/@babel/preset-react": {
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.22.5.tgz",
"integrity": "sha512-M+Is3WikOpEJHgR385HbuCITPTaPRaNkibTEa9oiofmJvIsrceb4yp9RL9Kb+TE8LznmeyZqpP+Lopwcx59xPQ==",
- "dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5",
"@babel/helper-validator-option": "^7.22.5",
@@ -1809,18 +1839,35 @@
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/regjsgen": {
- "version": "0.8.0",
- "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz",
- "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==",
- "dev": true
- },
- "node_modules/@babel/runtime": {
+ "node_modules/@babel/preset-typescript": {
"version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.5.tgz",
- "integrity": "sha512-ecjvYlnAaZ/KVneE/OdKYBYfgXV3Ptu6zQWmgEF7vwKhQnvVS6bjMD2XYgj+SNvQ1GfK/pjgokfPkC/2CO8CuA==",
+ "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.22.5.tgz",
+ "integrity": "sha512-YbPaal9LxztSGhmndR46FmAbkJ/1fAsw293tSU+I5E5h+cnJ3d4GTwyUgGYmOXJYdGA+uNePle4qbaRzj2NISQ==",
"dependencies": {
- "regenerator-runtime": "^0.13.11"
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-validator-option": "^7.22.5",
+ "@babel/plugin-syntax-jsx": "^7.22.5",
+ "@babel/plugin-transform-modules-commonjs": "^7.22.5",
+ "@babel/plugin-transform-typescript": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/regjsgen": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz",
+ "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA=="
+ },
+ "node_modules/@babel/runtime": {
+ "version": "7.22.6",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.6.tgz",
+ "integrity": "sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==",
+ "dependencies": {
+ "regenerator-runtime": "^0.13.11"
},
"engines": {
"node": ">=6.9.0"
@@ -1840,18 +1887,18 @@
}
},
"node_modules/@babel/traverse": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.5.tgz",
- "integrity": "sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==",
+ "version": "7.22.10",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.10.tgz",
+ "integrity": "sha512-Q/urqV4pRByiNNpb/f5OSv28ZlGJiFiiTh+GAHktbIrkPhPbl90+uW6SmpoLyZqutrg9AEaEf3Q/ZBRHBXgxig==",
"dependencies": {
- "@babel/code-frame": "^7.22.5",
- "@babel/generator": "^7.22.5",
+ "@babel/code-frame": "^7.22.10",
+ "@babel/generator": "^7.22.10",
"@babel/helper-environment-visitor": "^7.22.5",
"@babel/helper-function-name": "^7.22.5",
"@babel/helper-hoist-variables": "^7.22.5",
- "@babel/helper-split-export-declaration": "^7.22.5",
- "@babel/parser": "^7.22.5",
- "@babel/types": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "@babel/parser": "^7.22.10",
+ "@babel/types": "^7.22.10",
"debug": "^4.1.0",
"globals": "^11.1.0"
},
@@ -1860,9 +1907,9 @@
}
},
"node_modules/@babel/types": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz",
- "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==",
+ "version": "7.22.10",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.10.tgz",
+ "integrity": "sha512-obaoigiLrlDZ7TUQln/8m4mSqIW2QFeOrCQc9r+xsaHGNoplVNYlRVpsfE8Vj35GEm2ZH4ZhrNYogs/3fj85kg==",
"dependencies": {
"@babel/helper-string-parser": "^7.22.5",
"@babel/helper-validator-identifier": "^7.22.5",
@@ -1878,26 +1925,10 @@
"integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
"dev": true
},
- "node_modules/@cnakazawa/watch": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz",
- "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==",
- "dev": true,
- "dependencies": {
- "exec-sh": "^0.3.2",
- "minimist": "^1.2.0"
- },
- "bin": {
- "watch": "cli.js"
- },
- "engines": {
- "node": ">=0.1.95"
- }
- },
"node_modules/@codemirror/autocomplete": {
- "version": "6.8.1",
- "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.8.1.tgz",
- "integrity": "sha512-HpphvDcTdOx+9R3eUw9hZK9JA77jlaBF0kOt2McbyfvY0rX9pnMoO8rkkZc0GzSbzhIY4m5xJ0uHHgjfqHNmXQ==",
+ "version": "6.9.0",
+ "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.9.0.tgz",
+ "integrity": "sha512-Fbwm0V/Wn3BkEJZRhr0hi5BhCo5a7eBL6LYaliPjOSwCyfOpnjXY59HruSxOUNV+1OYer0Tgx1zRNQttjXyDog==",
"dependencies": {
"@codemirror/language": "^6.0.0",
"@codemirror/state": "^6.0.0",
@@ -1936,9 +1967,9 @@
}
},
"node_modules/@codemirror/lint": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.3.0.tgz",
- "integrity": "sha512-tzxOVQNoDhhwFNfcTO2IB74wQoWarARcH6gv3YufPpiJ9yhcb7zD6JCkO5+FWARskqRFc8GFa6E+wUyOvADl5A==",
+ "version": "6.4.0",
+ "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.4.0.tgz",
+ "integrity": "sha512-6VZ44Ysh/Zn07xrGkdtNfmHCbGSHZzFBdzWi0pbd7chAQ/iUcpLGX99NYRZTa7Ugqg4kEHCqiHhcZnH0gLIgSg==",
"dependencies": {
"@codemirror/state": "^6.0.0",
"@codemirror/view": "^6.0.0",
@@ -1972,15 +2003,37 @@
}
},
"node_modules/@codemirror/view": {
- "version": "6.14.0",
- "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.14.0.tgz",
- "integrity": "sha512-I263FPs4In42MNmrdwN2DfmYPFMVMXgT7o/mxdGp4jv5LPs8i0FOxzmxF5yeeQdYSTztb2ZhmPIu0ahveInVTg==",
+ "version": "6.16.0",
+ "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.16.0.tgz",
+ "integrity": "sha512-1Z2HkvkC3KR/oEZVuW9Ivmp8TWLzGEd8T8TA04TTwPvqogfkHBdYSlflytDOqmkUxM2d1ywTg7X2dU5mC+SXvg==",
"dependencies": {
"@codemirror/state": "^6.1.4",
"style-mod": "^4.0.0",
"w3c-keyname": "^2.2.4"
}
},
+ "node_modules/@cspotcode/source-map-support": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
+ "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/trace-mapping": "0.3.9"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.9",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
+ "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.0.3",
+ "@jridgewell/sourcemap-codec": "^1.4.10"
+ }
+ },
"node_modules/@develar/schema-utils": {
"version": "2.6.5",
"resolved": "https://registry.npmjs.org/@develar/schema-utils/-/schema-utils-2.6.5.tgz",
@@ -2007,37 +2060,180 @@
"node": ">=10.0.0"
}
},
+ "node_modules/@electron/asar": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/@electron/asar/-/asar-3.2.4.tgz",
+ "integrity": "sha512-lykfY3TJRRWFeTxccEKdf1I6BLl2Plw81H0bbp4Fc5iEc67foDCa5pjJQULVgo0wF+Dli75f3xVcdb/67FFZ/g==",
+ "dev": true,
+ "dependencies": {
+ "chromium-pickle-js": "^0.2.0",
+ "commander": "^5.0.0",
+ "glob": "^7.1.6",
+ "minimatch": "^3.0.4"
+ },
+ "bin": {
+ "asar": "bin/asar.js"
+ },
+ "engines": {
+ "node": ">=10.12.0"
+ }
+ },
+ "node_modules/@electron/asar/node_modules/commander": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz",
+ "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
"node_modules/@electron/get": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.14.1.tgz",
- "integrity": "sha512-BrZYyL/6m0ZXz/lDxy/nlVhQz+WF+iPS6qXolEU8atw7h6v1aYkjwJZ63m+bJMBTxDE66X+r2tPS4a/8C82sZw==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@electron/get/-/get-2.0.2.tgz",
+ "integrity": "sha512-eFZVFoRXb3GFGd7Ak7W4+6jBl9wBtiZ4AaYOse97ej6mKj5tkyO0dUnUChs1IhJZtx1BENo4/p4WUTXpi6vT+g==",
"dependencies": {
"debug": "^4.1.1",
"env-paths": "^2.2.0",
"fs-extra": "^8.1.0",
- "got": "^9.6.0",
+ "got": "^11.8.5",
"progress": "^2.0.3",
"semver": "^6.2.0",
"sumchecker": "^3.0.1"
},
"engines": {
- "node": ">=8.6"
+ "node": ">=12"
+ },
+ "optionalDependencies": {
+ "global-agent": "^3.0.0"
+ }
+ },
+ "node_modules/@electron/notarize": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@electron/notarize/-/notarize-1.2.4.tgz",
+ "integrity": "sha512-W5GQhJEosFNafewnS28d3bpQ37/s91CDWqxVchHfmv2dQSTWpOzNlUVQwYzC1ay5bChRV/A9BTL68yj0Pa+TSg==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^4.1.1",
+ "fs-extra": "^9.0.1"
+ },
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/@electron/notarize/node_modules/fs-extra": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
+ "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
+ "dev": true,
+ "dependencies": {
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@electron/notarize/node_modules/jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "dev": true,
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/@electron/notarize/node_modules/universalify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/@electron/osx-sign": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@electron/osx-sign/-/osx-sign-1.0.4.tgz",
+ "integrity": "sha512-xfhdEcIOfAZg7scZ9RQPya1G1lWo8/zMCwUXAulq0SfY7ONIW+b9qGyKdMyuMctNYwllrIS+vmxfijSfjeh97g==",
+ "dev": true,
+ "dependencies": {
+ "compare-version": "^0.1.2",
+ "debug": "^4.3.4",
+ "fs-extra": "^10.0.0",
+ "isbinaryfile": "^4.0.8",
+ "minimist": "^1.2.6",
+ "plist": "^3.0.5"
+ },
+ "bin": {
+ "electron-osx-flat": "bin/electron-osx-flat.js",
+ "electron-osx-sign": "bin/electron-osx-sign.js"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/@electron/osx-sign/node_modules/fs-extra": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
+ "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@electron/osx-sign/node_modules/isbinaryfile": {
+ "version": "4.0.10",
+ "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz",
+ "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/gjtorikian/"
+ }
+ },
+ "node_modules/@electron/osx-sign/node_modules/jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "dev": true,
+ "dependencies": {
+ "universalify": "^2.0.0"
},
"optionalDependencies": {
- "global-agent": "^3.0.0",
- "global-tunnel-ng": "^2.7.1"
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/@electron/osx-sign/node_modules/universalify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10.0.0"
}
},
"node_modules/@electron/universal": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.2.1.tgz",
- "integrity": "sha512-7323HyMh7KBAl/nPDppdLsC87G6RwRU02dy5FPeGB1eS7rUePh55+WNWiDPLhFQqqVPHzh77M69uhmoT8XnwMQ==",
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.3.4.tgz",
+ "integrity": "sha512-BdhBgm2ZBnYyYRLRgOjM5VHkyFItsbggJ0MHycOjKWdFGYwK97ZFXH54dTvUWEfha81vfvwr5On6XBjt99uDcg==",
"dev": true,
"dependencies": {
+ "@electron/asar": "^3.2.1",
"@malept/cross-spawn-promise": "^1.1.0",
- "asar": "^3.1.0",
"debug": "^4.3.1",
- "dir-compare": "^2.4.0",
+ "dir-compare": "^3.0.0",
"fs-extra": "^9.0.1",
"minimatch": "^3.0.4",
"plist": "^3.0.4"
@@ -2192,11 +2388,6 @@
}
}
},
- "node_modules/@emotion/stylis": {
- "version": "0.8.5",
- "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz",
- "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ=="
- },
"node_modules/@emotion/unitless": {
"version": "0.8.1",
"resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz",
@@ -2220,78 +2411,68 @@
"resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz",
"integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww=="
},
- "node_modules/@eslint/eslintrc": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz",
- "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==",
+ "node_modules/@eslint-community/eslint-utils": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
+ "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
"dev": true,
"dependencies": {
- "ajv": "^6.12.4",
- "debug": "^4.1.1",
- "espree": "^7.3.0",
- "globals": "^13.9.0",
- "ignore": "^4.0.6",
- "import-fresh": "^3.2.1",
- "js-yaml": "^3.13.1",
- "minimatch": "^3.0.4",
- "strip-json-comments": "^3.1.1"
+ "eslint-visitor-keys": "^3.3.0"
},
"engines": {
- "node": "^10.12.0 || >=12.0.0"
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
}
},
- "node_modules/@eslint/eslintrc/node_modules/argparse": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "node_modules/@eslint-community/regexpp": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.6.2.tgz",
+ "integrity": "sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==",
"dev": true,
- "dependencies": {
- "sprintf-js": "~1.0.2"
+ "engines": {
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
}
},
- "node_modules/@eslint/eslintrc/node_modules/globals": {
- "version": "13.20.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz",
- "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==",
+ "node_modules/@eslint/eslintrc": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz",
+ "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==",
"dev": true,
"dependencies": {
- "type-fest": "^0.20.2"
+ "ajv": "^6.12.4",
+ "debug": "^4.3.2",
+ "espree": "^9.6.0",
+ "globals": "^13.19.0",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.0",
+ "minimatch": "^3.1.2",
+ "strip-json-comments": "^3.1.1"
},
"engines": {
- "node": ">=8"
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@eslint/eslintrc/node_modules/ignore": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
- "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
- "dev": true,
- "engines": {
- "node": ">= 4"
+ "url": "https://opencollective.com/eslint"
}
},
- "node_modules/@eslint/eslintrc/node_modules/js-yaml": {
- "version": "3.14.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
- "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+ "node_modules/@eslint/eslintrc/node_modules/globals": {
+ "version": "13.21.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz",
+ "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==",
"dev": true,
"dependencies": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
+ "type-fest": "^0.20.2"
},
- "bin": {
- "js-yaml": "bin/js-yaml.js"
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@eslint/eslintrc/node_modules/sprintf-js": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
- "dev": true
- },
"node_modules/@eslint/eslintrc/node_modules/type-fest": {
"version": "0.20.2",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
@@ -2304,6 +2485,31 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/@eslint/js": {
+ "version": "8.47.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.47.0.tgz",
+ "integrity": "sha512-P6omY1zv5MItm93kLM8s2vr1HICJH8v0dvddDhysbIuZ+vcjOHg5Zbkf1mTkcmi2JA9oBG2anOkRnW8WJTS8Og==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@faker-js/faker": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-8.0.2.tgz",
+ "integrity": "sha512-Uo3pGspElQW91PCvKSIAXoEgAUlRnH29sX2/p89kg7sP1m2PzCufHINd0FhTXQf6DYGiUlVncdSPa2F9wxed2A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/fakerjs"
+ }
+ ],
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0",
+ "npm": ">=6.14.13"
+ }
+ },
"node_modules/@gar/promisify": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz",
@@ -2311,19 +2517,32 @@
"optional": true
},
"node_modules/@humanwhocodes/config-array": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz",
- "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==",
+ "version": "0.11.10",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz",
+ "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==",
"dev": true,
"dependencies": {
- "@humanwhocodes/object-schema": "^1.2.0",
+ "@humanwhocodes/object-schema": "^1.2.1",
"debug": "^4.1.1",
- "minimatch": "^3.0.4"
+ "minimatch": "^3.0.5"
},
"engines": {
"node": ">=10.10.0"
}
},
+ "node_modules/@humanwhocodes/module-importer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.22"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
"node_modules/@humanwhocodes/object-schema": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
@@ -2445,20 +2664,20 @@
}
},
"node_modules/@jest/console": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz",
- "integrity": "sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.6.3.tgz",
+ "integrity": "sha512-ukZbHAdDH4ktZIOKvWs1juAXhiVAdvCyM8zv4S/7Ii3vJSDvMW5k+wOVGMQmHLHUFw3Ko63ZQNy7NI6PSlsD5w==",
"dev": true,
"dependencies": {
- "@jest/types": "^26.6.2",
+ "@jest/types": "^29.6.3",
"@types/node": "*",
"chalk": "^4.0.0",
- "jest-message-util": "^26.6.2",
- "jest-util": "^26.6.2",
+ "jest-message-util": "^29.6.3",
+ "jest-util": "^29.6.3",
"slash": "^3.0.0"
},
"engines": {
- "node": ">= 10.14.2"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/@jest/console/node_modules/ansi-styles": {
@@ -2526,42 +2745,50 @@
}
},
"node_modules/@jest/core": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/@jest/core/-/core-26.6.3.tgz",
- "integrity": "sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.6.3.tgz",
+ "integrity": "sha512-skV1XrfNxfagmjRUrk2FyN5/2YwIzdWVVBa/orUfbLvQUANXxERq2pTvY0I+FinWHjDKB2HRmpveUiph4X0TJw==",
"dev": true,
"dependencies": {
- "@jest/console": "^26.6.2",
- "@jest/reporters": "^26.6.2",
- "@jest/test-result": "^26.6.2",
- "@jest/transform": "^26.6.2",
- "@jest/types": "^26.6.2",
+ "@jest/console": "^29.6.3",
+ "@jest/reporters": "^29.6.3",
+ "@jest/test-result": "^29.6.3",
+ "@jest/transform": "^29.6.3",
+ "@jest/types": "^29.6.3",
"@types/node": "*",
"ansi-escapes": "^4.2.1",
"chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
"exit": "^0.1.2",
- "graceful-fs": "^4.2.4",
- "jest-changed-files": "^26.6.2",
- "jest-config": "^26.6.3",
- "jest-haste-map": "^26.6.2",
- "jest-message-util": "^26.6.2",
- "jest-regex-util": "^26.0.0",
- "jest-resolve": "^26.6.2",
- "jest-resolve-dependencies": "^26.6.3",
- "jest-runner": "^26.6.3",
- "jest-runtime": "^26.6.3",
- "jest-snapshot": "^26.6.2",
- "jest-util": "^26.6.2",
- "jest-validate": "^26.6.2",
- "jest-watcher": "^26.6.2",
- "micromatch": "^4.0.2",
- "p-each-series": "^2.1.0",
- "rimraf": "^3.0.0",
+ "graceful-fs": "^4.2.9",
+ "jest-changed-files": "^29.6.3",
+ "jest-config": "^29.6.3",
+ "jest-haste-map": "^29.6.3",
+ "jest-message-util": "^29.6.3",
+ "jest-regex-util": "^29.6.3",
+ "jest-resolve": "^29.6.3",
+ "jest-resolve-dependencies": "^29.6.3",
+ "jest-runner": "^29.6.3",
+ "jest-runtime": "^29.6.3",
+ "jest-snapshot": "^29.6.3",
+ "jest-util": "^29.6.3",
+ "jest-validate": "^29.6.3",
+ "jest-watcher": "^29.6.3",
+ "micromatch": "^4.0.4",
+ "pretty-format": "^29.6.3",
"slash": "^3.0.0",
"strip-ansi": "^6.0.0"
},
"engines": {
- "node": ">= 10.14.2"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ },
+ "peerDependencies": {
+ "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+ },
+ "peerDependenciesMeta": {
+ "node-notifier": {
+ "optional": true
+ }
}
},
"node_modules/@jest/core/node_modules/ansi-styles": {
@@ -2616,6 +2843,32 @@
"node": ">=8"
}
},
+ "node_modules/@jest/core/node_modules/pretty-format": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.3.tgz",
+ "integrity": "sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/schemas": "^29.6.3",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^18.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jest/core/node_modules/pretty-format/node_modules/ansi-styles": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
"node_modules/@jest/core/node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -2629,87 +2882,118 @@
}
},
"node_modules/@jest/environment": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-26.6.2.tgz",
- "integrity": "sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.6.3.tgz",
+ "integrity": "sha512-u/u3cCztYCfgBiGHsamqP5x+XvucftOGPbf5RJQxfpeC1y4AL8pCjKvPDA3oCmdhZYPgk5AE0VOD/flweR69WA==",
"dev": true,
"dependencies": {
- "@jest/fake-timers": "^26.6.2",
- "@jest/types": "^26.6.2",
+ "@jest/fake-timers": "^29.6.3",
+ "@jest/types": "^29.6.3",
"@types/node": "*",
- "jest-mock": "^26.6.2"
+ "jest-mock": "^29.6.3"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jest/expect": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.6.3.tgz",
+ "integrity": "sha512-Ic08XbI2jlg6rECy+CGwk/8NDa6VE7UmIG6++9OTPAMnQmNGY28hu69Nf629CWv6T7YMODLbONxDFKdmQeI9FA==",
+ "dev": true,
+ "dependencies": {
+ "expect": "^29.6.3",
+ "jest-snapshot": "^29.6.3"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jest/expect-utils": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.6.3.tgz",
+ "integrity": "sha512-nvOEW4YoqRKD9HBJ9OJ6przvIvP9qilp5nAn1462P5ZlL/MM9SgPEZFyjTGPfs7QkocdUsJa6KjHhyRn4ueItA==",
+ "dev": true,
+ "dependencies": {
+ "jest-get-type": "^29.6.3"
},
"engines": {
- "node": ">= 10.14.2"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/@jest/fake-timers": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.6.2.tgz",
- "integrity": "sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.6.3.tgz",
+ "integrity": "sha512-pa1wmqvbj6eX0nMvOM2VDAWvJOI5A/Mk3l8O7n7EsAh71sMZblaKO9iT4GjIj0LwwK3CP/Jp1ypEV0x3m89RvA==",
"dev": true,
"dependencies": {
- "@jest/types": "^26.6.2",
- "@sinonjs/fake-timers": "^6.0.1",
+ "@jest/types": "^29.6.3",
+ "@sinonjs/fake-timers": "^10.0.2",
"@types/node": "*",
- "jest-message-util": "^26.6.2",
- "jest-mock": "^26.6.2",
- "jest-util": "^26.6.2"
+ "jest-message-util": "^29.6.3",
+ "jest-mock": "^29.6.3",
+ "jest-util": "^29.6.3"
},
"engines": {
- "node": ">= 10.14.2"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/@jest/globals": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.6.2.tgz",
- "integrity": "sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.6.3.tgz",
+ "integrity": "sha512-RB+uI+CZMHntzlnOPlll5x/jgRff3LEPl/td/jzMXiIgR0iIhKq9qm1HLU+EC52NuoVy/1swit/sDGjVn4bc6A==",
"dev": true,
"dependencies": {
- "@jest/environment": "^26.6.2",
- "@jest/types": "^26.6.2",
- "expect": "^26.6.2"
+ "@jest/environment": "^29.6.3",
+ "@jest/expect": "^29.6.3",
+ "@jest/types": "^29.6.3",
+ "jest-mock": "^29.6.3"
},
"engines": {
- "node": ">= 10.14.2"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/@jest/reporters": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-26.6.2.tgz",
- "integrity": "sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.6.3.tgz",
+ "integrity": "sha512-kGz59zMi0GkVjD2CJeYWG9k6cvj7eBqt9aDAqo2rcCLRTYlvQ62Gu/n+tOmJMBHGjzeijjuCENjzTyYBgrtLUw==",
"dev": true,
"dependencies": {
"@bcoe/v8-coverage": "^0.2.3",
- "@jest/console": "^26.6.2",
- "@jest/test-result": "^26.6.2",
- "@jest/transform": "^26.6.2",
- "@jest/types": "^26.6.2",
+ "@jest/console": "^29.6.3",
+ "@jest/test-result": "^29.6.3",
+ "@jest/transform": "^29.6.3",
+ "@jest/types": "^29.6.3",
+ "@jridgewell/trace-mapping": "^0.3.18",
+ "@types/node": "*",
"chalk": "^4.0.0",
"collect-v8-coverage": "^1.0.0",
"exit": "^0.1.2",
- "glob": "^7.1.2",
- "graceful-fs": "^4.2.4",
+ "glob": "^7.1.3",
+ "graceful-fs": "^4.2.9",
"istanbul-lib-coverage": "^3.0.0",
- "istanbul-lib-instrument": "^4.0.3",
+ "istanbul-lib-instrument": "^6.0.0",
"istanbul-lib-report": "^3.0.0",
"istanbul-lib-source-maps": "^4.0.0",
- "istanbul-reports": "^3.0.2",
- "jest-haste-map": "^26.6.2",
- "jest-resolve": "^26.6.2",
- "jest-util": "^26.6.2",
- "jest-worker": "^26.6.2",
+ "istanbul-reports": "^3.1.3",
+ "jest-message-util": "^29.6.3",
+ "jest-util": "^29.6.3",
+ "jest-worker": "^29.6.3",
"slash": "^3.0.0",
- "source-map": "^0.6.0",
"string-length": "^4.0.1",
- "terminal-link": "^2.0.0",
- "v8-to-istanbul": "^7.0.0"
+ "strip-ansi": "^6.0.0",
+ "v8-to-istanbul": "^9.0.1"
},
"engines": {
- "node": ">= 10.14.2"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
},
- "optionalDependencies": {
- "node-notifier": "^8.0.0"
+ "peerDependencies": {
+ "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+ },
+ "peerDependenciesMeta": {
+ "node-notifier": {
+ "optional": true
+ }
}
},
"node_modules/@jest/reporters/node_modules/ansi-styles": {
@@ -2764,13 +3048,47 @@
"node": ">=8"
}
},
- "node_modules/@jest/reporters/node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.0.tgz",
+ "integrity": "sha512-x58orMzEVfzPUKqlbLd1hXCnySCxKdDKa6Rjg97CwuLLRI4g3FHTdnExu1OqffVFay6zeMW+T6/DowFLndWnIw==",
"dev": true,
+ "dependencies": {
+ "@babel/core": "^7.12.3",
+ "@babel/parser": "^7.14.7",
+ "@istanbuljs/schema": "^0.1.2",
+ "istanbul-lib-coverage": "^3.2.0",
+ "semver": "^7.5.4"
+ },
"engines": {
- "node": ">=0.10.0"
+ "node": ">=10"
+ }
+ },
+ "node_modules/@jest/reporters/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@jest/reporters/node_modules/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
}
},
"node_modules/@jest/reporters/node_modules/supports-color": {
@@ -2785,84 +3103,92 @@
"node": ">=8"
}
},
- "node_modules/@jest/source-map": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-26.6.2.tgz",
- "integrity": "sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==",
+ "node_modules/@jest/reporters/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
+ "node_modules/@jest/schemas": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz",
+ "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==",
"dev": true,
"dependencies": {
- "callsites": "^3.0.0",
- "graceful-fs": "^4.2.4",
- "source-map": "^0.6.0"
+ "@sinclair/typebox": "^0.27.8"
},
"engines": {
- "node": ">= 10.14.2"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "node_modules/@jest/source-map/node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "node_modules/@jest/source-map": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz",
+ "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==",
"dev": true,
+ "dependencies": {
+ "@jridgewell/trace-mapping": "^0.3.18",
+ "callsites": "^3.0.0",
+ "graceful-fs": "^4.2.9"
+ },
"engines": {
- "node": ">=0.10.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/@jest/test-result": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz",
- "integrity": "sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.6.3.tgz",
+ "integrity": "sha512-k7ZZaNvOSMBHPZYiy0kuiaFoyansR5QnTwDux1EjK3kD5iWpRVyJIJ0RAIV39SThafchuW59vra7F8mdy5Hfgw==",
"dev": true,
"dependencies": {
- "@jest/console": "^26.6.2",
- "@jest/types": "^26.6.2",
+ "@jest/console": "^29.6.3",
+ "@jest/types": "^29.6.3",
"@types/istanbul-lib-coverage": "^2.0.0",
"collect-v8-coverage": "^1.0.0"
},
"engines": {
- "node": ">= 10.14.2"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/@jest/test-sequencer": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz",
- "integrity": "sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.6.3.tgz",
+ "integrity": "sha512-/SmijaAU2TY9ComFGIYa6Z+fmKqQMnqs2Nmwb0P/Z/tROdZ7M0iruES1EaaU9PBf8o9uED5xzaJ3YPFEIcDgAg==",
"dev": true,
"dependencies": {
- "@jest/test-result": "^26.6.2",
- "graceful-fs": "^4.2.4",
- "jest-haste-map": "^26.6.2",
- "jest-runner": "^26.6.3",
- "jest-runtime": "^26.6.3"
+ "@jest/test-result": "^29.6.3",
+ "graceful-fs": "^4.2.9",
+ "jest-haste-map": "^29.6.3",
+ "slash": "^3.0.0"
},
"engines": {
- "node": ">= 10.14.2"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/@jest/transform": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz",
- "integrity": "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.6.3.tgz",
+ "integrity": "sha512-dPIc3DsvMZ/S8ut4L2ViCj265mKO0owB0wfzBv2oGzL9pQ+iRvJewHqLBmsGb7XFb5UotWIEtvY5A/lnylaIoQ==",
"dev": true,
"dependencies": {
- "@babel/core": "^7.1.0",
- "@jest/types": "^26.6.2",
- "babel-plugin-istanbul": "^6.0.0",
+ "@babel/core": "^7.11.6",
+ "@jest/types": "^29.6.3",
+ "@jridgewell/trace-mapping": "^0.3.18",
+ "babel-plugin-istanbul": "^6.1.1",
"chalk": "^4.0.0",
- "convert-source-map": "^1.4.0",
- "fast-json-stable-stringify": "^2.0.0",
- "graceful-fs": "^4.2.4",
- "jest-haste-map": "^26.6.2",
- "jest-regex-util": "^26.0.0",
- "jest-util": "^26.6.2",
- "micromatch": "^4.0.2",
- "pirates": "^4.0.1",
+ "convert-source-map": "^2.0.0",
+ "fast-json-stable-stringify": "^2.1.0",
+ "graceful-fs": "^4.2.9",
+ "jest-haste-map": "^29.6.3",
+ "jest-regex-util": "^29.6.3",
+ "jest-util": "^29.6.3",
+ "micromatch": "^4.0.4",
+ "pirates": "^4.0.4",
"slash": "^3.0.0",
- "source-map": "^0.6.1",
- "write-file-atomic": "^3.0.0"
+ "write-file-atomic": "^4.0.2"
},
"engines": {
- "node": ">= 10.14.2"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/@jest/transform/node_modules/ansi-styles": {
@@ -2908,6 +3234,12 @@
"node": ">=7.0.0"
}
},
+ "node_modules/@jest/transform/node_modules/convert-source-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
+ "dev": true
+ },
"node_modules/@jest/transform/node_modules/has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -2917,15 +3249,6 @@
"node": ">=8"
}
},
- "node_modules/@jest/transform/node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/@jest/transform/node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -2939,28 +3262,20 @@
}
},
"node_modules/@jest/types": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz",
- "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz",
+ "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==",
"dev": true,
"dependencies": {
+ "@jest/schemas": "^29.6.3",
"@types/istanbul-lib-coverage": "^2.0.0",
"@types/istanbul-reports": "^3.0.0",
"@types/node": "*",
- "@types/yargs": "^15.0.0",
+ "@types/yargs": "^17.0.8",
"chalk": "^4.0.0"
},
"engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/@jest/types/node_modules/@types/yargs": {
- "version": "15.0.15",
- "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.15.tgz",
- "integrity": "sha512-IziEYMU9XoVj8hWg7k+UJrXALkGFjWJhn5QFEv9q4p+v40oZhSuC135M38st8XPjICL7Ey4TV64ferBGUoJhBg==",
- "dev": true,
- "dependencies": {
- "@types/yargs-parser": "*"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/@jest/types/node_modules/ansi-styles": {
@@ -3057,9 +3372,9 @@
}
},
"node_modules/@jridgewell/source-map": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz",
- "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==",
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz",
+ "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==",
"dev": true,
"dependencies": {
"@jridgewell/gen-mapping": "^0.3.0",
@@ -3085,6 +3400,17 @@
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
"integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw=="
},
+ "node_modules/@kurkle/color": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.2.tgz",
+ "integrity": "sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw=="
+ },
+ "node_modules/@leichtgewicht/ip-codec": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz",
+ "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==",
+ "dev": true
+ },
"node_modules/@lezer/common": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.0.3.tgz",
@@ -3099,9 +3425,9 @@
}
},
"node_modules/@lezer/lr": {
- "version": "1.3.7",
- "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.3.7.tgz",
- "integrity": "sha512-ssHKb3p0MxhJXT2i7UBmgAY1BIM3Uq/D772Qutu3EVmxWIyNMU12nQ0rL3Fhu+MiFtiTzyTmd3xGwEf3ON5PSA==",
+ "version": "1.3.9",
+ "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.3.9.tgz",
+ "integrity": "sha512-XPz6dzuTHlnsbA5M2DZgjflNQ+9Hi5Swhic0RULdp3oOs3rh6bqGZolosVqN/fQIT8uNiepzINJDnS39oweTHQ==",
"dependencies": {
"@lezer/common": "^1.0.0"
}
@@ -3180,9 +3506,9 @@
}
},
"node_modules/@mapbox/node-pre-gyp": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.10.tgz",
- "integrity": "sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==",
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz",
+ "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==",
"dependencies": {
"detect-libc": "^2.0.0",
"https-proxy-agent": "^5.0.0",
@@ -3210,9 +3536,9 @@
}
},
"node_modules/@mapbox/node-pre-gyp/node_modules/semver": {
- "version": "7.5.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz",
- "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==",
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
"dependencies": {
"lru-cache": "^6.0.0"
},
@@ -3229,16 +3555,16 @@
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
},
"node_modules/@mui/base": {
- "version": "5.0.0-beta.5",
- "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.5.tgz",
- "integrity": "sha512-vy3TWLQYdGNecTaufR4wDNQFV2WEg6wRPi6BVbx6q1vP3K1mbxIn1+XOqOzfYBXjFHvMx0gZAo2TgWbaqfgvAA==",
+ "version": "5.0.0-beta.11",
+ "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.11.tgz",
+ "integrity": "sha512-FdKZGPd8qmC3ZNke7CNhzcEgToc02M6WYZc9hcBsNQ17bgAd3s9F//1bDDYgMVBYxDM71V0sv/hBHlOY4I1ZVA==",
"dependencies": {
- "@babel/runtime": "^7.22.5",
+ "@babel/runtime": "^7.22.6",
"@emotion/is-prop-valid": "^1.2.1",
"@mui/types": "^7.2.4",
- "@mui/utils": "^5.13.6",
+ "@mui/utils": "^5.14.5",
"@popperjs/core": "^2.11.8",
- "clsx": "^1.2.1",
+ "clsx": "^2.0.0",
"prop-types": "^15.8.1",
"react-is": "^18.2.0"
},
@@ -3261,20 +3587,20 @@
}
},
"node_modules/@mui/core-downloads-tracker": {
- "version": "5.13.4",
- "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.13.4.tgz",
- "integrity": "sha512-yFrMWcrlI0TqRN5jpb6Ma9iI7sGTHpytdzzL33oskFHNQ8UgrtPas33Y1K7sWAMwCrr1qbWDrOHLAQG4tAzuSw==",
+ "version": "5.14.5",
+ "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.5.tgz",
+ "integrity": "sha512-+wpGH1USwPcKMFPMvXqYPC6fEvhxM3FzxC8lyDiNK/imLyyJ6y2DPb1Oue7OGIKJWBmYBqrWWtfovrxd1aJHTA==",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/mui"
}
},
"node_modules/@mui/icons-material": {
- "version": "5.11.16",
- "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.11.16.tgz",
- "integrity": "sha512-oKkx9z9Kwg40NtcIajF9uOXhxiyTZrrm9nmIJ4UjkU2IdHpd4QVLbCc/5hZN/y0C6qzi2Zlxyr9TGddQx2vx2A==",
+ "version": "5.14.3",
+ "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.14.3.tgz",
+ "integrity": "sha512-XkxWPhageu1OPUm2LWjo5XqeQ0t2xfGe8EiLkRW9oz2LHMMZmijvCxulhgquUVTF1DnoSh+3KoDLSsoAFtVNVw==",
"dependencies": {
- "@babel/runtime": "^7.21.0"
+ "@babel/runtime": "^7.22.6"
},
"engines": {
"node": ">=12.0.0"
@@ -3295,18 +3621,18 @@
}
},
"node_modules/@mui/material": {
- "version": "5.13.6",
- "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.13.6.tgz",
- "integrity": "sha512-/c2ZApeQm2sTYdQXjqEnldaBMBcUEiyu2VRS6bS39ZeNaAcCLBQbYocLR46R+f0S5dgpBzB0T4AsOABPOFYZ5Q==",
- "dependencies": {
- "@babel/runtime": "^7.22.5",
- "@mui/base": "5.0.0-beta.5",
- "@mui/core-downloads-tracker": "^5.13.4",
- "@mui/system": "^5.13.6",
+ "version": "5.14.5",
+ "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.14.5.tgz",
+ "integrity": "sha512-4qa4GMfuZH0Ai3mttk5ccXP8a3sf7aPlAJwyMrUSz6h9hPri6BPou94zeu3rENhhmKLby9S/W1y+pmficy8JKA==",
+ "dependencies": {
+ "@babel/runtime": "^7.22.6",
+ "@mui/base": "5.0.0-beta.11",
+ "@mui/core-downloads-tracker": "^5.14.5",
+ "@mui/system": "^5.14.5",
"@mui/types": "^7.2.4",
- "@mui/utils": "^5.13.6",
+ "@mui/utils": "^5.14.5",
"@types/react-transition-group": "^4.4.6",
- "clsx": "^1.2.1",
+ "clsx": "^2.0.0",
"csstype": "^3.1.2",
"prop-types": "^15.8.1",
"react-is": "^18.2.0",
@@ -3339,12 +3665,12 @@
}
},
"node_modules/@mui/private-theming": {
- "version": "5.13.1",
- "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.13.1.tgz",
- "integrity": "sha512-HW4npLUD9BAkVppOUZHeO1FOKUJWAwbpy0VQoGe3McUYTlck1HezGHQCfBQ5S/Nszi7EViqiimECVl9xi+/WjQ==",
+ "version": "5.14.5",
+ "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.14.5.tgz",
+ "integrity": "sha512-cC4C5RrpXpDaaZyH9QwmPhRLgz+f2SYbOty3cPkk4qPSOSfif2ZEcDD9HTENKDDd9deB+xkPKzzZhi8cxIx8Ig==",
"dependencies": {
- "@babel/runtime": "^7.21.0",
- "@mui/utils": "^5.13.1",
+ "@babel/runtime": "^7.22.6",
+ "@mui/utils": "^5.14.5",
"prop-types": "^15.8.1"
},
"engines": {
@@ -3396,16 +3722,16 @@
}
},
"node_modules/@mui/system": {
- "version": "5.13.6",
- "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.13.6.tgz",
- "integrity": "sha512-G3Xr28uLqU3DyF6r2LQkHGw/ku4P0AHzlKVe7FGXOPl7X1u+hoe2xxj8Vdiq/69II/mh9OP21i38yBWgWb7WgQ==",
+ "version": "5.14.5",
+ "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.14.5.tgz",
+ "integrity": "sha512-mextXZHDeGcR7E1kx43TRARrVXy+gI4wzpUgNv7MqZs1dvTVXQGVeAT6ydj9d6FUqHBPMNLGV/21vJOrpqsL+w==",
"dependencies": {
- "@babel/runtime": "^7.22.5",
- "@mui/private-theming": "^5.13.1",
+ "@babel/runtime": "^7.22.6",
+ "@mui/private-theming": "^5.14.5",
"@mui/styled-engine": "^5.13.2",
"@mui/types": "^7.2.4",
- "@mui/utils": "^5.13.6",
- "clsx": "^1.2.1",
+ "@mui/utils": "^5.14.5",
+ "clsx": "^2.0.0",
"csstype": "^3.1.2",
"prop-types": "^15.8.1"
},
@@ -3448,13 +3774,13 @@
}
},
"node_modules/@mui/utils": {
- "version": "5.13.6",
- "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.13.6.tgz",
- "integrity": "sha512-ggNlxl5NPSbp+kNcQLmSig6WVB0Id+4gOxhx644987v4fsji+CSXc+MFYLocFB/x4oHtzCUlSzbVHlJfP/fXoQ==",
+ "version": "5.14.5",
+ "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.14.5.tgz",
+ "integrity": "sha512-6Hzw63VR9C5xYv+CbjndoRLU6Gntal8rJ5W+GUzkyHrGWIyYPWZPa6AevnyGioySNETATe1H9oXS8f/7qgIHJA==",
"dependencies": {
- "@babel/runtime": "^7.22.5",
+ "@babel/runtime": "^7.22.6",
"@types/prop-types": "^15.7.5",
- "@types/react-is": "^18.2.0",
+ "@types/react-is": "^18.2.1",
"prop-types": "^15.8.1",
"react-is": "^18.2.0"
},
@@ -3469,6 +3795,12 @@
"react": "^17.0.0 || ^18.0.0"
}
},
+ "node_modules/@nicolo-ribaudo/chokidar-2": {
+ "version": "2.1.8-no-fsevents.3",
+ "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz",
+ "integrity": "sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==",
+ "optional": true
+ },
"node_modules/@nodelib/fs.scandir": {
"version": "2.1.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
@@ -3527,9 +3859,9 @@
}
},
"node_modules/@npmcli/fs/node_modules/semver": {
- "version": "7.5.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz",
- "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==",
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
"optional": true,
"dependencies": {
"lru-cache": "^6.0.0"
@@ -3561,41 +3893,32 @@
"node": ">=10"
}
},
- "node_modules/@npmcli/move-file/node_modules/mkdirp": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
- "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
- "optional": true,
- "bin": {
- "mkdirp": "bin/cmd.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/@pmmmwh/react-refresh-webpack-plugin": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.4.3.tgz",
- "integrity": "sha512-br5Qwvh8D2OQqSXpd1g/xqXKnK0r+Jz6qVKBbWmpUcrbGOxUrf39V5oZ1876084CGn18uMdR5uvPqBv9UqtBjQ==",
+ "version": "0.5.11",
+ "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.11.tgz",
+ "integrity": "sha512-7j/6vdTym0+qZ6u4XbSAxrWBGYSdCfTzySkj7WAFgDLmSyWlOrWvpyzxlFh5jtw9dn0oL/jtW+06XfFiisN3JQ==",
"dev": true,
"dependencies": {
- "ansi-html": "^0.0.7",
+ "ansi-html-community": "^0.0.8",
+ "common-path-prefix": "^3.0.0",
+ "core-js-pure": "^3.23.3",
"error-stack-parser": "^2.0.6",
- "html-entities": "^1.2.1",
- "native-url": "^0.2.6",
- "schema-utils": "^2.6.5",
+ "find-up": "^5.0.0",
+ "html-entities": "^2.1.0",
+ "loader-utils": "^2.0.4",
+ "schema-utils": "^3.0.0",
"source-map": "^0.7.3"
},
"engines": {
- "node": ">= 10.x"
+ "node": ">= 10.13"
},
"peerDependencies": {
- "@types/webpack": "4.x",
- "react-refresh": ">=0.8.3 <0.10.0",
+ "@types/webpack": "4.x || 5.x",
+ "react-refresh": ">=0.10.0 <1.0.0",
"sockjs-client": "^1.4.0",
- "type-fest": "^0.13.1",
+ "type-fest": ">=0.17.0 <5.0.0",
"webpack": ">=4.43.0 <6.0.0",
- "webpack-dev-server": "3.x",
+ "webpack-dev-server": "3.x || 4.x",
"webpack-hot-middleware": "2.x",
"webpack-plugin-serve": "0.x || 1.x"
},
@@ -3620,6 +3943,24 @@
}
}
},
+ "node_modules/@pmmmwh/react-refresh-webpack-plugin/node_modules/schema-utils": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz",
+ "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==",
+ "dev": true,
+ "dependencies": {
+ "@types/json-schema": "^7.0.8",
+ "ajv": "^6.12.5",
+ "ajv-keywords": "^3.5.2"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ }
+ },
"node_modules/@pmmmwh/react-refresh-webpack-plugin/node_modules/source-map": {
"version": "0.7.4",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
@@ -3629,6 +3970,12 @@
"node": ">= 8"
}
},
+ "node_modules/@polka/url": {
+ "version": "1.0.0-next.21",
+ "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz",
+ "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==",
+ "dev": true
+ },
"node_modules/@popperjs/core": {
"version": "2.11.8",
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
@@ -3639,13 +3986,13 @@
}
},
"node_modules/@reactflow/background": {
- "version": "11.2.4",
- "resolved": "https://registry.npmjs.org/@reactflow/background/-/background-11.2.4.tgz",
- "integrity": "sha512-SYQbCRCU0GuxT/40Tm7ZK+l5wByGnNJSLtZhbL9C/Hl7JhsJXV3UGXr0vrlhVZUBEtkWA7XhZM/5S9XEA5XSFA==",
+ "version": "11.2.8",
+ "resolved": "https://registry.npmjs.org/@reactflow/background/-/background-11.2.8.tgz",
+ "integrity": "sha512-5o41N2LygiNC2/Pk8Ak2rIJjXbKHfQ23/Y9LFsnAlufqwdzFqKA8txExpsMoPVHHlbAdA/xpQaMuoChGPqmyDw==",
"dependencies": {
- "@reactflow/core": "11.7.4",
+ "@reactflow/core": "11.8.3",
"classcat": "^5.0.3",
- "zustand": "^4.3.1"
+ "zustand": "^4.4.1"
},
"peerDependencies": {
"react": ">=17",
@@ -3653,13 +4000,13 @@
}
},
"node_modules/@reactflow/controls": {
- "version": "11.1.15",
- "resolved": "https://registry.npmjs.org/@reactflow/controls/-/controls-11.1.15.tgz",
- "integrity": "sha512-//33XfBYu8vQ6brfmlZwKrDoh+8hh93xO2d88XiqfIbrPEEb32SYjsb9mS9VuHKNlSIW+eB27fBA1Gt00mEj5w==",
+ "version": "11.1.19",
+ "resolved": "https://registry.npmjs.org/@reactflow/controls/-/controls-11.1.19.tgz",
+ "integrity": "sha512-Vo0LFfAYjiSRMLEII/aeBo+1MT2a0Yc7iLVnkuRTLzChC0EX+A2Fa+JlzeOEYKxXlN4qcDxckRNGR7092v1HOQ==",
"dependencies": {
- "@reactflow/core": "11.7.4",
+ "@reactflow/core": "11.8.3",
"classcat": "^5.0.3",
- "zustand": "^4.3.1"
+ "zustand": "^4.4.1"
},
"peerDependencies": {
"react": ">=17",
@@ -3667,9 +4014,9 @@
}
},
"node_modules/@reactflow/core": {
- "version": "11.7.4",
- "resolved": "https://registry.npmjs.org/@reactflow/core/-/core-11.7.4.tgz",
- "integrity": "sha512-nt0T8ERp8TE7YCDQViaoEY9lb0StDPrWHVx3zBjhStFYET3wc88t8QRasZdf99xRTmyNtI3U3M40M5EBLNUpMw==",
+ "version": "11.8.3",
+ "resolved": "https://registry.npmjs.org/@reactflow/core/-/core-11.8.3.tgz",
+ "integrity": "sha512-y6DN8Wy4V4KQBGHFqlj9zWRjLJU6CgdnVwWaEA/PdDg/YUkFBMpZnXqTs60czinoA2rAcvsz50syLTPsj5e+Wg==",
"dependencies": {
"@types/d3": "^7.4.0",
"@types/d3-drag": "^3.0.1",
@@ -3679,7 +4026,7 @@
"d3-drag": "^3.0.0",
"d3-selection": "^3.0.0",
"d3-zoom": "^3.0.0",
- "zustand": "^4.3.1"
+ "zustand": "^4.4.1"
},
"peerDependencies": {
"react": ">=17",
@@ -3687,17 +4034,17 @@
}
},
"node_modules/@reactflow/minimap": {
- "version": "11.5.4",
- "resolved": "https://registry.npmjs.org/@reactflow/minimap/-/minimap-11.5.4.tgz",
- "integrity": "sha512-1tDBj2zX2gxu2oHU6qvH5RGNrOWRfRxu8369KhDotuuBN5yJrGXJzWIKikwhzjsNsQJYOB+B0cS44yWAfwSwzw==",
+ "version": "11.6.3",
+ "resolved": "https://registry.npmjs.org/@reactflow/minimap/-/minimap-11.6.3.tgz",
+ "integrity": "sha512-PSA28dk09RnBHOA1zb45fjQXz3UozSJZmsIpgq49O3trfVFlSgRapxNdGsughWLs7/emg2M5jmi6Vc+ejcfjvQ==",
"dependencies": {
- "@reactflow/core": "11.7.4",
+ "@reactflow/core": "11.8.3",
"@types/d3-selection": "^3.0.3",
"@types/d3-zoom": "^3.0.1",
"classcat": "^5.0.3",
"d3-selection": "^3.0.0",
"d3-zoom": "^3.0.0",
- "zustand": "^4.3.1"
+ "zustand": "^4.4.1"
},
"peerDependencies": {
"react": ">=17",
@@ -3705,15 +4052,15 @@
}
},
"node_modules/@reactflow/node-resizer": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@reactflow/node-resizer/-/node-resizer-2.1.1.tgz",
- "integrity": "sha512-5Q+IBmZfpp/bYsw3+KRVJB1nUbj6W3XAp5ycx4uNWH+K98vbssymyQsW0vvKkIhxEPg6tkiMzO4UWRWvwBwt1g==",
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@reactflow/node-resizer/-/node-resizer-2.1.5.tgz",
+ "integrity": "sha512-z/hJlsptd2vTx13wKouqvN/Kln08qbkA+YTJLohc2aJ6rx3oGn9yX4E4IqNxhA7zNqYEdrnc1JTEA//ifh9z3w==",
"dependencies": {
- "@reactflow/core": "^11.6.0",
+ "@reactflow/core": "11.8.3",
"classcat": "^5.0.4",
"d3-drag": "^3.0.0",
"d3-selection": "^3.0.0",
- "zustand": "^4.3.1"
+ "zustand": "^4.4.1"
},
"peerDependencies": {
"react": ">=17",
@@ -3721,60 +4068,69 @@
}
},
"node_modules/@reactflow/node-toolbar": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/@reactflow/node-toolbar/-/node-toolbar-1.2.3.tgz",
- "integrity": "sha512-uFQy9xpog92s0G1wsPLniwV9nyH4i/MmL7QoMsWdnKaOi7XMhd8SJcCzUdHC3imR21HltsuQITff/XQ51ApMbg==",
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/@reactflow/node-toolbar/-/node-toolbar-1.2.7.tgz",
+ "integrity": "sha512-vs+Wg1tjy3SuD7eoeTqEtscBfE9RY+APqC28urVvftkrtsN7KlnoQjqDG6aE45jWP4z+8bvFizRWjAhxysNLkg==",
"dependencies": {
- "@reactflow/core": "11.7.4",
+ "@reactflow/core": "11.8.3",
"classcat": "^5.0.3",
- "zustand": "^4.3.1"
+ "zustand": "^4.4.1"
},
"peerDependencies": {
"react": ">=17",
"react-dom": ">=17"
}
},
+ "node_modules/@sinclair/typebox": {
+ "version": "0.27.8",
+ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz",
+ "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==",
+ "dev": true
+ },
"node_modules/@sindresorhus/is": {
- "version": "0.14.0",
- "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz",
- "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==",
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz",
+ "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==",
"engines": {
- "node": ">=6"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/is?sponsor=1"
}
},
"node_modules/@sinonjs/commons": {
- "version": "1.8.6",
- "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz",
- "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz",
+ "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==",
"dev": true,
"dependencies": {
"type-detect": "4.0.8"
}
},
"node_modules/@sinonjs/fake-timers": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz",
- "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==",
+ "version": "10.3.0",
+ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz",
+ "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==",
"dev": true,
"dependencies": {
- "@sinonjs/commons": "^1.7.0"
+ "@sinonjs/commons": "^3.0.0"
}
},
"node_modules/@szmarczak/http-timer": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz",
- "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==",
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz",
+ "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==",
"dependencies": {
- "defer-to-connect": "^1.0.1"
+ "defer-to-connect": "^2.0.0"
},
"engines": {
- "node": ">=6"
+ "node": ">=10"
}
},
"node_modules/@testing-library/dom": {
- "version": "8.20.1",
- "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.20.1.tgz",
- "integrity": "sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g==",
+ "version": "9.3.1",
+ "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.1.tgz",
+ "integrity": "sha512-0DGPd9AR3+iDTjGoMpxIkAsUihHZ3Ai6CneU6bRRrffXMgzCdlNk43jTrD2/5LT6CBb3MWTP8v510JzYtahD2w==",
"dev": true,
"dependencies": {
"@babel/code-frame": "^7.10.4",
@@ -3787,7 +4143,7 @@
"pretty-format": "^27.0.2"
},
"engines": {
- "node": ">=12"
+ "node": ">=14"
}
},
"node_modules/@testing-library/dom/node_modules/ansi-styles": {
@@ -3805,15 +4161,6 @@
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/@testing-library/dom/node_modules/aria-query": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz",
- "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==",
- "dev": true,
- "dependencies": {
- "deep-equal": "^2.0.5"
- }
- },
"node_modules/@testing-library/dom/node_modules/chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
@@ -3842,35 +4189,6 @@
"node": ">=7.0.0"
}
},
- "node_modules/@testing-library/dom/node_modules/deep-equal": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.1.tgz",
- "integrity": "sha512-lKdkdV6EOGoVn65XaOsPdH4rMxTZOnmFyuIkMjM1i5HHCbfjC97dawgTAy0deYNfuqUqW+Q5VrVaQYtUpSd6yQ==",
- "dev": true,
- "dependencies": {
- "array-buffer-byte-length": "^1.0.0",
- "call-bind": "^1.0.2",
- "es-get-iterator": "^1.1.3",
- "get-intrinsic": "^1.2.0",
- "is-arguments": "^1.1.1",
- "is-array-buffer": "^3.0.2",
- "is-date-object": "^1.0.5",
- "is-regex": "^1.1.4",
- "is-shared-array-buffer": "^1.0.2",
- "isarray": "^2.0.5",
- "object-is": "^1.1.5",
- "object-keys": "^1.1.1",
- "object.assign": "^4.1.4",
- "regexp.prototype.flags": "^1.5.0",
- "side-channel": "^1.0.4",
- "which-boxed-primitive": "^1.0.2",
- "which-collection": "^1.0.1",
- "which-typed-array": "^1.1.9"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/@testing-library/dom/node_modules/has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -3880,44 +4198,6 @@
"node": ">=8"
}
},
- "node_modules/@testing-library/dom/node_modules/isarray": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
- "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
- "dev": true
- },
- "node_modules/@testing-library/dom/node_modules/pretty-format": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz",
- "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==",
- "dev": true,
- "dependencies": {
- "ansi-regex": "^5.0.1",
- "ansi-styles": "^5.0.0",
- "react-is": "^17.0.1"
- },
- "engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
- }
- },
- "node_modules/@testing-library/dom/node_modules/pretty-format/node_modules/ansi-styles": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
- "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/@testing-library/dom/node_modules/react-is": {
- "version": "17.0.2",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
- "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
- "dev": true
- },
"node_modules/@testing-library/dom/node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -3931,21 +4211,21 @@
}
},
"node_modules/@testing-library/react": {
- "version": "12.1.5",
- "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-12.1.5.tgz",
- "integrity": "sha512-OfTXCJUFgjd/digLUuPxa0+/3ZxsQmE7ub9kcbW/wi96Bh3o/p5vrETcBGfP17NWPGqeYYl5LTRpwyGoMC4ysg==",
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-14.0.0.tgz",
+ "integrity": "sha512-S04gSNJbYE30TlIMLTzv6QCTzt9AqIF5y6s6SzVFILNcNvbV/jU96GeiTPillGQo+Ny64M/5PV7klNYYgv5Dfg==",
"dev": true,
"dependencies": {
"@babel/runtime": "^7.12.5",
- "@testing-library/dom": "^8.0.0",
- "@types/react-dom": "<18.0.0"
+ "@testing-library/dom": "^9.0.0",
+ "@types/react-dom": "^18.0.0"
},
"engines": {
- "node": ">=12"
+ "node": ">=14"
},
"peerDependencies": {
- "react": "<18.0.0",
- "react-dom": "<18.0.0"
+ "react": "^18.0.0",
+ "react-dom": "^18.0.0"
}
},
"node_modules/@tootallnate/once": {
@@ -3957,9 +4237,33 @@
"node": ">= 10"
}
},
- "node_modules/@tweenjs/tween.js": {
- "version": "18.6.4",
- "resolved": "https://registry.npmjs.org/@tweenjs/tween.js/-/tween.js-18.6.4.tgz",
+ "node_modules/@tsconfig/node10": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz",
+ "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==",
+ "dev": true
+ },
+ "node_modules/@tsconfig/node12": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz",
+ "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==",
+ "dev": true
+ },
+ "node_modules/@tsconfig/node14": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz",
+ "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==",
+ "dev": true
+ },
+ "node_modules/@tsconfig/node16": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz",
+ "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==",
+ "dev": true
+ },
+ "node_modules/@tweenjs/tween.js": {
+ "version": "18.6.4",
+ "resolved": "https://registry.npmjs.org/@tweenjs/tween.js/-/tween.js-18.6.4.tgz",
"integrity": "sha512-lB9lMjuqjtuJrx7/kOkqQBtllspPIN+96OvTCeJ2j5FEzinoAXTdAMFnDAQT1KVPRlnYfBrqxtqP66vDM40xxQ=="
},
"node_modules/@types/aria-query": {
@@ -4009,6 +4313,36 @@
"@babel/types": "^7.20.7"
}
},
+ "node_modules/@types/body-parser": {
+ "version": "1.19.2",
+ "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz",
+ "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==",
+ "dev": true,
+ "dependencies": {
+ "@types/connect": "*",
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/bonjour": {
+ "version": "3.5.10",
+ "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz",
+ "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/cacheable-request": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz",
+ "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==",
+ "dependencies": {
+ "@types/http-cache-semantics": "*",
+ "@types/keyv": "^3.1.4",
+ "@types/node": "*",
+ "@types/responselike": "^1.0.0"
+ }
+ },
"node_modules/@types/chart.js": {
"version": "2.9.37",
"resolved": "https://registry.npmjs.org/@types/chart.js/-/chart.js-2.9.37.tgz",
@@ -4027,6 +4361,25 @@
"@types/node": "*"
}
},
+ "node_modules/@types/connect": {
+ "version": "3.4.35",
+ "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz",
+ "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/connect-history-api-fallback": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz",
+ "integrity": "sha512-4x5FkPpLipqwthjPsF7ZRbOv3uoLUFkTA9G9v583qi4pACvq0uTELrB8OLUzPWUI4IJIyvM85vzkV1nyiI2Lig==",
+ "dev": true,
+ "dependencies": {
+ "@types/express-serve-static-core": "*",
+ "@types/node": "*"
+ }
+ },
"node_modules/@types/d3": {
"version": "7.4.0",
"resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.0.tgz",
@@ -4305,9 +4658,9 @@
}
},
"node_modules/@types/eslint": {
- "version": "8.40.2",
- "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.40.2.tgz",
- "integrity": "sha512-PRVjQ4Eh9z9pmmtaq8nTjZjQwKFk7YIHIud3lRoKRBgUQjgjRmoGxxGEPXQkF+lH7QkHJRNr5F4aBgYCW0lqpQ==",
+ "version": "8.44.1",
+ "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.1.tgz",
+ "integrity": "sha512-XpNDc4Z5Tb4x+SW1MriMVeIsMoONHCkWFMkR/aPJbzEsxqHy+4Glu/BqTdPrApfDeMaXbtNh6bseNgl5KaWrSg==",
"dev": true,
"dependencies": {
"@types/estree": "*",
@@ -4330,6 +4683,30 @@
"integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==",
"dev": true
},
+ "node_modules/@types/express": {
+ "version": "4.17.17",
+ "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz",
+ "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==",
+ "dev": true,
+ "dependencies": {
+ "@types/body-parser": "*",
+ "@types/express-serve-static-core": "^4.17.33",
+ "@types/qs": "*",
+ "@types/serve-static": "*"
+ }
+ },
+ "node_modules/@types/express-serve-static-core": {
+ "version": "4.17.35",
+ "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz",
+ "integrity": "sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*",
+ "@types/qs": "*",
+ "@types/range-parser": "*",
+ "@types/send": "*"
+ }
+ },
"node_modules/@types/fs-extra": {
"version": "9.0.13",
"resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz",
@@ -4344,16 +4721,6 @@
"resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.10.tgz",
"integrity": "sha512-Nmh0K3iWQJzniTuPRcJn5hxXkfB1T1pgB89SBig5PlJQU5yocazeu4jATJlaA0GYFKWMqDdvYemoSnF2pXgLVA=="
},
- "node_modules/@types/glob": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz",
- "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==",
- "devOptional": true,
- "dependencies": {
- "@types/minimatch": "*",
- "@types/node": "*"
- }
- },
"node_modules/@types/graceful-fs": {
"version": "4.1.6",
"resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz",
@@ -4363,16 +4730,11 @@
"@types/node": "*"
}
},
- "node_modules/@types/history": {
- "version": "4.7.11",
- "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz",
- "integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==",
- "dev": true
- },
"node_modules/@types/hoist-non-react-statics": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz",
"integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==",
+ "dev": true,
"dependencies": {
"@types/react": "*",
"hoist-non-react-statics": "^3.3.0"
@@ -4384,6 +4746,26 @@
"integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==",
"dev": true
},
+ "node_modules/@types/http-cache-semantics": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz",
+ "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ=="
+ },
+ "node_modules/@types/http-errors": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.1.tgz",
+ "integrity": "sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==",
+ "dev": true
+ },
+ "node_modules/@types/http-proxy": {
+ "version": "1.17.11",
+ "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.11.tgz",
+ "integrity": "sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
"node_modules/@types/istanbul-lib-coverage": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz",
@@ -4409,13 +4791,50 @@
}
},
"node_modules/@types/jest": {
- "version": "26.0.24",
- "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.24.tgz",
- "integrity": "sha512-E/X5Vib8BWqZNRlDxj9vYXhsDwPYbPINqKF9BsnSoon4RQ0D9moEuLD8txgyypFLH7J4+Lho9Nr/c8H0Fi+17w==",
+ "version": "29.5.3",
+ "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.3.tgz",
+ "integrity": "sha512-1Nq7YrO/vJE/FYnqYyw0FS8LdrjExSgIiHyKg7xPpn+yi8Q4huZryKnkJatN1ZRH89Kw2v33/8ZMB7DuZeSLlA==",
+ "dev": true,
+ "dependencies": {
+ "expect": "^29.0.0",
+ "pretty-format": "^29.0.0"
+ }
+ },
+ "node_modules/@types/jest/node_modules/pretty-format": {
+ "version": "29.6.2",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.2.tgz",
+ "integrity": "sha512-1q0oC8eRveTg5nnBEWMXAU2qpv65Gnuf2eCQzSjxpWFkPaPARwqZZDGuNE0zPAZfTCHzIk3A8dIjwlQKKLphyg==",
+ "dev": true,
+ "dependencies": {
+ "@jest/schemas": "^29.6.0",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^18.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@types/jest/node_modules/pretty-format/node_modules/ansi-styles": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@types/jsdom": {
+ "version": "20.0.1",
+ "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz",
+ "integrity": "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==",
"dev": true,
"dependencies": {
- "jest-diff": "^26.0.0",
- "pretty-format": "^26.0.0"
+ "@types/node": "*",
+ "@types/tough-cookie": "*",
+ "parse5": "^7.0.0"
}
},
"node_modules/@types/json-schema": {
@@ -4430,11 +4849,19 @@
"integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==",
"dev": true
},
- "node_modules/@types/minimatch": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz",
- "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==",
- "devOptional": true
+ "node_modules/@types/keyv": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz",
+ "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/mime": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz",
+ "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==",
+ "dev": true
},
"node_modules/@types/ms": {
"version": "0.7.31",
@@ -4458,22 +4885,83 @@
}
},
"node_modules/@types/node": {
- "version": "14.18.51",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.51.tgz",
- "integrity": "sha512-P9bsdGFPpVtofEKlhWMVS2qqx1A/rt9QBfihWlklfHHpUpjtYse5AzFz6j4DWrARLYh6gRnw9+5+DJcrq3KvBA==",
- "devOptional": true
- },
- "node_modules/@types/normalize-package-data": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz",
- "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==",
- "dev": true
+ "version": "20.5.2",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.2.tgz",
+ "integrity": "sha512-5j/lXt7unfPOUlrKC34HIaedONleyLtwkKggiD/0uuMfT8gg2EOpg0dz4lCD15Ga7muC+1WzJZAjIB9simWd6Q=="
},
"node_modules/@types/parse-json": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz",
"integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA=="
},
+ "node_modules/@types/pg": {
+ "version": "8.10.2",
+ "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.10.2.tgz",
+ "integrity": "sha512-MKFs9P6nJ+LAeHLU3V0cODEOgyThJ3OAnmOlsZsxux6sfQs3HRXR5bBn7xG5DjckEFhTAxsXi7k7cd0pCMxpJw==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*",
+ "pg-protocol": "*",
+ "pg-types": "^4.0.1"
+ }
+ },
+ "node_modules/@types/pg/node_modules/pg-types": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-4.0.1.tgz",
+ "integrity": "sha512-hRCSDuLII9/LE3smys1hRHcu5QGcLs9ggT7I/TCs0IE+2Eesxi9+9RWAAwZ0yaGjxoWICF/YHLOEjydGujoJ+g==",
+ "dev": true,
+ "dependencies": {
+ "pg-int8": "1.0.1",
+ "pg-numeric": "1.0.2",
+ "postgres-array": "~3.0.1",
+ "postgres-bytea": "~3.0.0",
+ "postgres-date": "~2.0.1",
+ "postgres-interval": "^3.0.0",
+ "postgres-range": "^1.1.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@types/pg/node_modules/postgres-array": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-3.0.2.tgz",
+ "integrity": "sha512-6faShkdFugNQCLwucjPcY5ARoW1SlbnrZjmGl0IrrqewpvxvhSLHimCVzqeuULCbG0fQv7Dtk1yDbG3xv7Veog==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@types/pg/node_modules/postgres-bytea": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-3.0.0.tgz",
+ "integrity": "sha512-CNd4jim9RFPkObHSjVHlVrxoVQXz7quwNFpz7RY1okNNme49+sVyiTvTRobiLV548Hx/hb1BG+iE7h9493WzFw==",
+ "dev": true,
+ "dependencies": {
+ "obuf": "~1.1.2"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/@types/pg/node_modules/postgres-date": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-2.0.1.tgz",
+ "integrity": "sha512-YtMKdsDt5Ojv1wQRvUhnyDJNSr2dGIC96mQVKz7xufp07nfuFONzdaowrMHjlAzY6GDLd4f+LUHHAAM1h4MdUw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@types/pg/node_modules/postgres-interval": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-3.0.0.tgz",
+ "integrity": "sha512-BSNDnbyZCXSxgA+1f5UU2GmwhoI0aU5yMxRGO8CdFEcY2BQF9xm/7MqKnYoM1nJDk8nONNWDk9WeSmePFhQdlw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
"node_modules/@types/plist": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/@types/plist/-/plist-3.0.2.tgz",
@@ -4485,28 +4973,27 @@
"xmlbuilder": ">=11.0.1"
}
},
- "node_modules/@types/prettier": {
- "version": "2.7.3",
- "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz",
- "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==",
- "dev": true
- },
"node_modules/@types/prop-types": {
"version": "15.7.5",
"resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
"integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w=="
},
- "node_modules/@types/q": {
- "version": "1.5.5",
- "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz",
- "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==",
- "dev": true,
- "optional": true
+ "node_modules/@types/qs": {
+ "version": "6.9.7",
+ "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz",
+ "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==",
+ "dev": true
+ },
+ "node_modules/@types/range-parser": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz",
+ "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==",
+ "dev": true
},
"node_modules/@types/react": {
- "version": "18.2.14",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.14.tgz",
- "integrity": "sha512-A0zjq+QN/O0Kpe30hA1GidzyFjatVvrpIvWLxD+xv67Vt91TWWgco9IvrJBkeyHm1trGaFS/FSGqPlhyeZRm0g==",
+ "version": "18.2.20",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.20.tgz",
+ "integrity": "sha512-WKNtmsLWJM/3D5mG4U84cysVY31ivmyw85dE84fOCk5Hx78wezB/XEjVPWl2JTZ5FkEeaTJf+VgUAUn3PE7Isw==",
"dependencies": {
"@types/prop-types": "*",
"@types/scheduler": "*",
@@ -4514,23 +5001,12 @@
}
},
"node_modules/@types/react-dom": {
- "version": "17.0.20",
- "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.20.tgz",
- "integrity": "sha512-4pzIjSxDueZZ90F52mU3aPoogkHIoSIDG+oQ+wQK7Cy2B9S+MvOqY0uEA/qawKz381qrEDkvpwyt8Bm31I8sbA==",
- "dev": true,
- "dependencies": {
- "@types/react": "^17"
- }
- },
- "node_modules/@types/react-dom/node_modules/@types/react": {
- "version": "17.0.62",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.62.tgz",
- "integrity": "sha512-eANCyz9DG8p/Vdhr0ZKST8JV12PhH2ACCDYlFw6DIO+D+ca+uP4jtEDEpVqXZrh/uZdXQGwk7whJa3ah5DtyLw==",
+ "version": "18.2.7",
+ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.7.tgz",
+ "integrity": "sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==",
"dev": true,
"dependencies": {
- "@types/prop-types": "*",
- "@types/scheduler": "*",
- "csstype": "^3.0.2"
+ "@types/react": "*"
}
},
"node_modules/@types/react-is": {
@@ -4541,27 +5017,6 @@
"@types/react": "*"
}
},
- "node_modules/@types/react-router": {
- "version": "5.1.20",
- "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.20.tgz",
- "integrity": "sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==",
- "dev": true,
- "dependencies": {
- "@types/history": "^4.7.11",
- "@types/react": "*"
- }
- },
- "node_modules/@types/react-router-dom": {
- "version": "5.3.3",
- "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.3.tgz",
- "integrity": "sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==",
- "dev": true,
- "dependencies": {
- "@types/history": "^4.7.11",
- "@types/react": "*",
- "@types/react-router": "*"
- }
- },
"node_modules/@types/react-transition-group": {
"version": "4.4.6",
"resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.6.tgz",
@@ -4570,11 +5025,70 @@
"@types/react": "*"
}
},
+ "node_modules/@types/responselike": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz",
+ "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/retry": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz",
+ "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==",
+ "dev": true
+ },
"node_modules/@types/scheduler": {
"version": "0.16.3",
"resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz",
"integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ=="
},
+ "node_modules/@types/semver": {
+ "version": "7.5.0",
+ "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz",
+ "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==",
+ "dev": true
+ },
+ "node_modules/@types/send": {
+ "version": "0.17.1",
+ "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz",
+ "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==",
+ "dev": true,
+ "dependencies": {
+ "@types/mime": "^1",
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/serve-index": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz",
+ "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==",
+ "dev": true,
+ "dependencies": {
+ "@types/express": "*"
+ }
+ },
+ "node_modules/@types/serve-static": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.2.tgz",
+ "integrity": "sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==",
+ "dev": true,
+ "dependencies": {
+ "@types/http-errors": "*",
+ "@types/mime": "*",
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/sockjs": {
+ "version": "0.3.33",
+ "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz",
+ "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
"node_modules/@types/stack-utils": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz",
@@ -4591,25 +5105,38 @@
"version": "5.1.26",
"resolved": "https://registry.npmjs.org/@types/styled-components/-/styled-components-5.1.26.tgz",
"integrity": "sha512-KuKJ9Z6xb93uJiIyxo/+ksS7yLjS1KzG6iv5i78dhVg/X3u5t1H7juRWqVmodIdz6wGVaIApo1u01kmFRdJHVw==",
+ "dev": true,
"dependencies": {
"@types/hoist-non-react-statics": "*",
"@types/react": "*",
"csstype": "^3.0.2"
}
},
+ "node_modules/@types/stylis": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/@types/stylis/-/stylis-4.2.0.tgz",
+ "integrity": "sha512-n4sx2bqL0mW1tvDf/loQ+aMX7GQD3lc3fkCMC55VFNDu/vBOabO+LTIeXKM14xK0ppk5TUGcWRjiSpIlUpghKw=="
+ },
"node_modules/@types/three": {
- "version": "0.152.1",
- "resolved": "https://registry.npmjs.org/@types/three/-/three-0.152.1.tgz",
- "integrity": "sha512-PMOCQnx9JRmq+2OUGTPoY9h1hTWD2L7/nmuW/SyNq1Vbq3Lwt3MNdl3wYSa4DvLTGv62NmIXD9jYdAOwohwJyw==",
+ "version": "0.155.0",
+ "resolved": "https://registry.npmjs.org/@types/three/-/three-0.155.0.tgz",
+ "integrity": "sha512-IzdbqXsGsbG0flvq9D5L9pZRwySQQps2bGcizLYEsfvK3dM+B0sqKR6S+xAOXbouXemfDmHttrcQjVOM46YnAw==",
"dev": true,
"dependencies": {
"@tweenjs/tween.js": "~18.6.4",
"@types/stats.js": "*",
"@types/webxr": "*",
"fflate": "~0.6.9",
- "lil-gui": "~0.17.0"
+ "lil-gui": "~0.17.0",
+ "meshoptimizer": "~0.18.1"
}
},
+ "node_modules/@types/tough-cookie": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.2.tgz",
+ "integrity": "sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==",
+ "dev": true
+ },
"node_modules/@types/verror": {
"version": "1.10.6",
"resolved": "https://registry.npmjs.org/@types/verror/-/verror-1.10.6.tgz",
@@ -4623,6 +5150,15 @@
"integrity": "sha512-szL74BnIcok9m7QwYtVmQ+EdIKwbjPANudfuvDrAF8Cljg9MKUlIoc1w5tjj9PMpeSH3U1Xnx//czQybJ0EfSw==",
"dev": true
},
+ "node_modules/@types/ws": {
+ "version": "8.5.5",
+ "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.5.tgz",
+ "integrity": "sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
"node_modules/@types/yargs": {
"version": "17.0.24",
"resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz",
@@ -4638,31 +5174,43 @@
"integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==",
"dev": true
},
+ "node_modules/@types/yauzl": {
+ "version": "2.10.0",
+ "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz",
+ "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==",
+ "optional": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
"node_modules/@typescript-eslint/eslint-plugin": {
- "version": "4.33.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz",
- "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==",
+ "version": "6.4.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.4.1.tgz",
+ "integrity": "sha512-3F5PtBzUW0dYlq77Lcqo13fv+58KDwUib3BddilE8ajPJT+faGgxmI9Sw+I8ZS22BYwoir9ZhNXcLi+S+I2bkw==",
"dev": true,
"dependencies": {
- "@typescript-eslint/experimental-utils": "4.33.0",
- "@typescript-eslint/scope-manager": "4.33.0",
- "debug": "^4.3.1",
- "functional-red-black-tree": "^1.0.1",
- "ignore": "^5.1.8",
- "regexpp": "^3.1.0",
- "semver": "^7.3.5",
- "tsutils": "^3.21.0"
+ "@eslint-community/regexpp": "^4.5.1",
+ "@typescript-eslint/scope-manager": "6.4.1",
+ "@typescript-eslint/type-utils": "6.4.1",
+ "@typescript-eslint/utils": "6.4.1",
+ "@typescript-eslint/visitor-keys": "6.4.1",
+ "debug": "^4.3.4",
+ "graphemer": "^1.4.0",
+ "ignore": "^5.2.4",
+ "natural-compare": "^1.4.0",
+ "semver": "^7.5.4",
+ "ts-api-utils": "^1.0.1"
},
"engines": {
- "node": "^10.12.0 || >=12.0.0"
+ "node": "^16.0.0 || >=18.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
- "@typescript-eslint/parser": "^4.0.0",
- "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0"
+ "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha",
+ "eslint": "^7.0.0 || ^8.0.0"
},
"peerDependenciesMeta": {
"typescript": {
@@ -4683,9 +5231,9 @@
}
},
"node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": {
- "version": "7.5.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz",
- "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==",
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
"dev": true,
"dependencies": {
"lru-cache": "^6.0.0"
@@ -4703,81 +5251,85 @@
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"dev": true
},
- "node_modules/@typescript-eslint/experimental-utils": {
- "version": "4.33.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz",
- "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==",
+ "node_modules/@typescript-eslint/parser": {
+ "version": "6.4.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.4.1.tgz",
+ "integrity": "sha512-610G6KHymg9V7EqOaNBMtD1GgpAmGROsmfHJPXNLCU9bfIuLrkdOygltK784F6Crboyd5tBFayPB7Sf0McrQwg==",
"dev": true,
"dependencies": {
- "@types/json-schema": "^7.0.7",
- "@typescript-eslint/scope-manager": "4.33.0",
- "@typescript-eslint/types": "4.33.0",
- "@typescript-eslint/typescript-estree": "4.33.0",
- "eslint-scope": "^5.1.1",
- "eslint-utils": "^3.0.0"
+ "@typescript-eslint/scope-manager": "6.4.1",
+ "@typescript-eslint/types": "6.4.1",
+ "@typescript-eslint/typescript-estree": "6.4.1",
+ "@typescript-eslint/visitor-keys": "6.4.1",
+ "debug": "^4.3.4"
},
"engines": {
- "node": "^10.12.0 || >=12.0.0"
+ "node": "^16.0.0 || >=18.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
- "eslint": "*"
+ "eslint": "^7.0.0 || ^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
}
},
- "node_modules/@typescript-eslint/parser": {
- "version": "4.33.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz",
- "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==",
+ "node_modules/@typescript-eslint/scope-manager": {
+ "version": "6.4.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.4.1.tgz",
+ "integrity": "sha512-p/OavqOQfm4/Hdrr7kvacOSFjwQ2rrDVJRPxt/o0TOWdFnjJptnjnZ+sYDR7fi4OimvIuKp+2LCkc+rt9fIW+A==",
"dev": true,
"dependencies": {
- "@typescript-eslint/scope-manager": "4.33.0",
- "@typescript-eslint/types": "4.33.0",
- "@typescript-eslint/typescript-estree": "4.33.0",
- "debug": "^4.3.1"
+ "@typescript-eslint/types": "6.4.1",
+ "@typescript-eslint/visitor-keys": "6.4.1"
},
"engines": {
- "node": "^10.12.0 || >=12.0.0"
+ "node": "^16.0.0 || >=18.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
}
},
- "node_modules/@typescript-eslint/scope-manager": {
- "version": "4.33.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz",
- "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==",
+ "node_modules/@typescript-eslint/type-utils": {
+ "version": "6.4.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.4.1.tgz",
+ "integrity": "sha512-7ON8M8NXh73SGZ5XvIqWHjgX2f+vvaOarNliGhjrJnv1vdjG0LVIz+ToYfPirOoBi56jxAKLfsLm40+RvxVVXA==",
"dev": true,
"dependencies": {
- "@typescript-eslint/types": "4.33.0",
- "@typescript-eslint/visitor-keys": "4.33.0"
+ "@typescript-eslint/typescript-estree": "6.4.1",
+ "@typescript-eslint/utils": "6.4.1",
+ "debug": "^4.3.4",
+ "ts-api-utils": "^1.0.1"
},
"engines": {
- "node": "^8.10.0 || ^10.13.0 || >=11.10.1"
+ "node": "^16.0.0 || >=18.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^7.0.0 || ^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
}
},
"node_modules/@typescript-eslint/types": {
- "version": "4.33.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz",
- "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==",
+ "version": "6.4.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.4.1.tgz",
+ "integrity": "sha512-zAAopbNuYu++ijY1GV2ylCsQsi3B8QvfPHVqhGdDcbx/NK5lkqMnCGU53amAjccSpk+LfeONxwzUhDzArSfZJg==",
"dev": true,
"engines": {
- "node": "^8.10.0 || ^10.13.0 || >=11.10.1"
+ "node": "^16.0.0 || >=18.0.0"
},
"funding": {
"type": "opencollective",
@@ -4785,21 +5337,21 @@
}
},
"node_modules/@typescript-eslint/typescript-estree": {
- "version": "4.33.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz",
- "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==",
+ "version": "6.4.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.4.1.tgz",
+ "integrity": "sha512-xF6Y7SatVE/OyV93h1xGgfOkHr2iXuo8ip0gbfzaKeGGuKiAnzS+HtVhSPx8Www243bwlW8IF7X0/B62SzFftg==",
"dev": true,
"dependencies": {
- "@typescript-eslint/types": "4.33.0",
- "@typescript-eslint/visitor-keys": "4.33.0",
- "debug": "^4.3.1",
- "globby": "^11.0.3",
- "is-glob": "^4.0.1",
- "semver": "^7.3.5",
- "tsutils": "^3.21.0"
+ "@typescript-eslint/types": "6.4.1",
+ "@typescript-eslint/visitor-keys": "6.4.1",
+ "debug": "^4.3.4",
+ "globby": "^11.1.0",
+ "is-glob": "^4.0.3",
+ "semver": "^7.5.4",
+ "ts-api-utils": "^1.0.1"
},
"engines": {
- "node": "^10.12.0 || >=12.0.0"
+ "node": "^16.0.0 || >=18.0.0"
},
"funding": {
"type": "opencollective",
@@ -4824,9 +5376,9 @@
}
},
"node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
- "version": "7.5.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz",
- "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==",
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
"dev": true,
"dependencies": {
"lru-cache": "^6.0.0"
@@ -4844,17 +5396,75 @@
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"dev": true
},
+ "node_modules/@typescript-eslint/utils": {
+ "version": "6.4.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.4.1.tgz",
+ "integrity": "sha512-F/6r2RieNeorU0zhqZNv89s9bDZSovv3bZQpUNOmmQK1L80/cV4KEu95YUJWi75u5PhboFoKUJBnZ4FQcoqhDw==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.4.0",
+ "@types/json-schema": "^7.0.12",
+ "@types/semver": "^7.5.0",
+ "@typescript-eslint/scope-manager": "6.4.1",
+ "@typescript-eslint/types": "6.4.1",
+ "@typescript-eslint/typescript-estree": "6.4.1",
+ "semver": "^7.5.4"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/utils/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@typescript-eslint/utils/node_modules/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@typescript-eslint/utils/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
"node_modules/@typescript-eslint/visitor-keys": {
- "version": "4.33.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz",
- "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==",
+ "version": "6.4.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.4.1.tgz",
+ "integrity": "sha512-y/TyRJsbZPkJIZQXrHfdnxVnxyKegnpEvnRGNam7s3TRR2ykGefEWOhaef00/UUN3IZxizS7BTO3svd3lCOJRQ==",
"dev": true,
"dependencies": {
- "@typescript-eslint/types": "4.33.0",
- "eslint-visitor-keys": "^2.0.0"
+ "@typescript-eslint/types": "6.4.1",
+ "eslint-visitor-keys": "^3.4.1"
},
"engines": {
- "node": "^8.10.0 || ^10.13.0 || >=11.10.1"
+ "node": "^16.0.0 || >=18.0.0"
},
"funding": {
"type": "opencollective",
@@ -4862,9 +5472,9 @@
}
},
"node_modules/@uiw/codemirror-extensions-basic-setup": {
- "version": "4.21.4",
- "resolved": "https://registry.npmjs.org/@uiw/codemirror-extensions-basic-setup/-/codemirror-extensions-basic-setup-4.21.4.tgz",
- "integrity": "sha512-2W7jZlkY5DZJ31sWGyFHEtm96EHSql41iT1Ao7Kxai17vGGjzz9UgsE9BX+3k251ArDeF8R3lvGrzMA/SXl8kg==",
+ "version": "4.21.9",
+ "resolved": "https://registry.npmjs.org/@uiw/codemirror-extensions-basic-setup/-/codemirror-extensions-basic-setup-4.21.9.tgz",
+ "integrity": "sha512-TQT6aF8brxZpFnk/K4fm/K/9k9eF3PMav/KKjHlYrGUT8BTNk/qL+ximLtIzvTUhmBFchjM1lrqSJdvpVom7/w==",
"dependencies": {
"@codemirror/autocomplete": "^6.0.0",
"@codemirror/commands": "^6.0.0",
@@ -4885,17 +5495,17 @@
}
},
"node_modules/@uiw/codemirror-theme-dracula": {
- "version": "4.21.4",
- "resolved": "https://registry.npmjs.org/@uiw/codemirror-theme-dracula/-/codemirror-theme-dracula-4.21.4.tgz",
- "integrity": "sha512-R9sJVpQRntMSwM2P06i5br7KFoAznVltlZNmIIEmJf6ukzIyuOn5lj66C9hQ3MDFZm9rew4RfHc7HGqxLz27Xw==",
+ "version": "4.21.9",
+ "resolved": "https://registry.npmjs.org/@uiw/codemirror-theme-dracula/-/codemirror-theme-dracula-4.21.9.tgz",
+ "integrity": "sha512-+idRF+ouOuVW/gLykhnWW1k21KTz9Tci16EvX5h4/3S0fHXu35B//hRiDS5+13bN5HkjQRdtCljnt7GpLjCHvg==",
"dependencies": {
- "@uiw/codemirror-themes": "4.21.4"
+ "@uiw/codemirror-themes": "4.21.9"
}
},
"node_modules/@uiw/codemirror-themes": {
- "version": "4.21.4",
- "resolved": "https://registry.npmjs.org/@uiw/codemirror-themes/-/codemirror-themes-4.21.4.tgz",
- "integrity": "sha512-Zp0rPMji9MzV4cTwUHP/CP8JpAQ80cTNaXeVef7kyRZv6TznIjV3VrevXox5C2CoaJc/dygXc2K/JFl9CdrLpQ==",
+ "version": "4.21.9",
+ "resolved": "https://registry.npmjs.org/@uiw/codemirror-themes/-/codemirror-themes-4.21.9.tgz",
+ "integrity": "sha512-ndfka95Ax4LXQSPVtCXJC3Qu2ruhlWUB7PAj+qTeMZobYJdXRxDEm4jMl+/d5fN1ok3jivShQdNgIwvEIFf4lg==",
"dependencies": {
"@codemirror/language": "^6.0.0",
"@codemirror/state": "^6.0.0",
@@ -4908,15 +5518,15 @@
}
},
"node_modules/@uiw/react-codemirror": {
- "version": "4.21.4",
- "resolved": "https://registry.npmjs.org/@uiw/react-codemirror/-/react-codemirror-4.21.4.tgz",
- "integrity": "sha512-N9N6bX5cUj/FmNepV6d8HE+oH7DA2GlyqNZb8gss7l77dvpme1saphjoOLg1gRmOi2MlQydNsz5PundoN9VBtQ==",
+ "version": "4.21.9",
+ "resolved": "https://registry.npmjs.org/@uiw/react-codemirror/-/react-codemirror-4.21.9.tgz",
+ "integrity": "sha512-aeLegPz2iCvqJjhzXp2WUMqpMZDqxsTnF3rX9kGRlfY6vQLsrjoctj0cQ29uxEtFYJChOVjtCOtnQUlyIuNAHQ==",
"dependencies": {
"@babel/runtime": "^7.18.6",
"@codemirror/commands": "^6.1.0",
"@codemirror/state": "^6.1.1",
"@codemirror/theme-one-dark": "^6.0.0",
- "@uiw/codemirror-extensions-basic-setup": "4.21.4",
+ "@uiw/codemirror-extensions-basic-setup": "4.21.9",
"codemirror": "^6.0.0"
},
"peerDependencies": {
@@ -5081,34 +5691,42 @@
}
},
"node_modules/@webpack-cli/configtest": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz",
- "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz",
+ "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==",
"dev": true,
+ "engines": {
+ "node": ">=14.15.0"
+ },
"peerDependencies": {
- "webpack": "4.x.x || 5.x.x",
- "webpack-cli": "4.x.x"
+ "webpack": "5.x.x",
+ "webpack-cli": "5.x.x"
}
},
"node_modules/@webpack-cli/info": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz",
- "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz",
+ "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==",
"dev": true,
- "dependencies": {
- "envinfo": "^7.7.3"
+ "engines": {
+ "node": ">=14.15.0"
},
"peerDependencies": {
- "webpack-cli": "4.x.x"
+ "webpack": "5.x.x",
+ "webpack-cli": "5.x.x"
}
},
"node_modules/@webpack-cli/serve": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz",
- "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==",
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz",
+ "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==",
"dev": true,
+ "engines": {
+ "node": ">=14.15.0"
+ },
"peerDependencies": {
- "webpack-cli": "4.x.x"
+ "webpack": "5.x.x",
+ "webpack-cli": "5.x.x"
},
"peerDependenciesMeta": {
"webpack-dev-server": {
@@ -5116,6 +5734,15 @@
}
}
},
+ "node_modules/@xmldom/xmldom": {
+ "version": "0.8.10",
+ "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz",
+ "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
"node_modules/@xtuc/ieee754": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
@@ -5129,9 +5756,9 @@
"dev": true
},
"node_modules/3d-force-graph": {
- "version": "1.71.4",
- "resolved": "https://registry.npmjs.org/3d-force-graph/-/3d-force-graph-1.71.4.tgz",
- "integrity": "sha512-hgTxHFAzB7Vz45lU7NSMVWkCh6hl+06cMXzBV+xfocGkyLm7ut+Gm3No7pa+L8GxWK5CxeixuY476obVRqAYLw==",
+ "version": "1.71.5",
+ "resolved": "https://registry.npmjs.org/3d-force-graph/-/3d-force-graph-1.71.5.tgz",
+ "integrity": "sha512-h+iLJhvouZz8bmQRxYqoV1OXtG+aJ9LzcakLwR9VUkBJ8tmZx5HtbNm5pYAJ4c1kzZc9JljJzh2u0CCJUrmA4A==",
"dependencies": {
"accessor-fn": "1",
"kapsule": "1",
@@ -5210,9 +5837,9 @@
}
},
"node_modules/acorn": {
- "version": "7.4.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
- "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
+ "version": "8.10.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz",
+ "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==",
"dev": true,
"bin": {
"acorn": "bin/acorn"
@@ -5222,13 +5849,13 @@
}
},
"node_modules/acorn-globals": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz",
- "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==",
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz",
+ "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==",
"dev": true,
"dependencies": {
- "acorn": "^7.1.1",
- "acorn-walk": "^7.1.1"
+ "acorn": "^8.1.0",
+ "acorn-walk": "^8.0.2"
}
},
"node_modules/acorn-jsx": {
@@ -5241,9 +5868,9 @@
}
},
"node_modules/acorn-walk": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
- "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==",
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz",
+ "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==",
"dev": true,
"engines": {
"node": ">=0.4.0"
@@ -5363,6 +5990,7 @@
"version": "6.12.6",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dev": true,
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
@@ -5374,15 +6002,45 @@
"url": "https://github.com/sponsors/epoberezkin"
}
},
- "node_modules/ajv-errors": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz",
- "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==",
+ "node_modules/ajv-formats": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz",
+ "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==",
"dev": true,
+ "dependencies": {
+ "ajv": "^8.0.0"
+ },
"peerDependencies": {
- "ajv": ">=5.0.0"
+ "ajv": "^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "ajv": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/ajv-formats/node_modules/ajv": {
+ "version": "8.12.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
+ "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
}
},
+ "node_modules/ajv-formats/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "dev": true
+ },
"node_modules/ajv-keywords": {
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
@@ -5397,15 +6055,6 @@
"resolved": "https://registry.npmjs.org/an-array/-/an-array-1.0.0.tgz",
"integrity": "sha512-M175GYI7RmsYu24Ok383yZQa3eveDfNnmhTe3OQ3bm70bEovz2gWenH+ST/n32M8lrwLWk74hcPds5CDRPe2wg=="
},
- "node_modules/ansi-colors": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz",
- "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/ansi-escapes": {
"version": "4.3.2",
"resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
@@ -5433,18 +6082,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/ansi-html": {
- "version": "0.0.7",
- "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz",
- "integrity": "sha512-JoAxEa1DfP9m2xfB/y2r/aKcwXNlltr4+0QSBC4TrLfcxyvepX2Pv0t/xpgGV5bGsDzCYV8SzjWgyCW0T9yYbA==",
- "dev": true,
- "engines": [
- "node >= 0.8.0"
- ],
- "bin": {
- "ansi-html": "bin/ansi-html"
- }
- },
"node_modules/ansi-html-community": {
"version": "0.0.8",
"resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz",
@@ -5480,6 +6117,7 @@
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
"integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "devOptional": true,
"dependencies": {
"normalize-path": "^3.0.0",
"picomatch": "^2.0.4"
@@ -5495,42 +6133,53 @@
"dev": true
},
"node_modules/app-builder-lib": {
- "version": "23.6.0",
- "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-23.6.0.tgz",
- "integrity": "sha512-dQYDuqm/rmy8GSCE6Xl/3ShJg6Ab4bZJMT8KaTKGzT436gl1DN4REP3FCWfXoh75qGTJ+u+WsdnnpO9Jl8nyMA==",
+ "version": "24.6.3",
+ "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-24.6.3.tgz",
+ "integrity": "sha512-++0Zp7vcCHfXMBGVj7luFxpqvMPk5mcWeTuw7OK0xNAaNtYQTTN0d9YfWRsb1MvviTOOhyHeULWz1CaixrdrDg==",
"dev": true,
"dependencies": {
"@develar/schema-utils": "~2.6.5",
- "@electron/universal": "1.2.1",
+ "@electron/notarize": "^1.2.3",
+ "@electron/osx-sign": "^1.0.4",
+ "@electron/universal": "1.3.4",
"@malept/flatpak-bundler": "^0.4.0",
+ "@types/fs-extra": "9.0.13",
"7zip-bin": "~5.1.1",
"async-exit-hook": "^2.0.1",
"bluebird-lst": "^1.0.9",
- "builder-util": "23.6.0",
- "builder-util-runtime": "9.1.1",
+ "builder-util": "24.5.0",
+ "builder-util-runtime": "9.2.1",
"chromium-pickle-js": "^0.2.0",
"debug": "^4.3.4",
- "ejs": "^3.1.7",
- "electron-osx-sign": "^0.6.0",
- "electron-publish": "23.6.0",
+ "ejs": "^3.1.8",
+ "electron-publish": "24.5.0",
"form-data": "^4.0.0",
"fs-extra": "^10.1.0",
"hosted-git-info": "^4.1.0",
"is-ci": "^3.0.0",
- "isbinaryfile": "^4.0.10",
+ "isbinaryfile": "^5.0.0",
"js-yaml": "^4.1.0",
"lazy-val": "^1.0.5",
- "minimatch": "^3.1.2",
- "read-config-file": "6.2.0",
+ "minimatch": "^5.1.1",
+ "read-config-file": "6.3.2",
"sanitize-filename": "^1.6.3",
- "semver": "^7.3.7",
- "tar": "^6.1.11",
+ "semver": "^7.3.8",
+ "tar": "^6.1.12",
"temp-file": "^3.4.0"
},
"engines": {
"node": ">=14.0.0"
}
},
+ "node_modules/app-builder-lib/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
"node_modules/app-builder-lib/node_modules/fs-extra": {
"version": "10.1.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
@@ -5569,10 +6218,22 @@
"node": ">=10"
}
},
+ "node_modules/app-builder-lib/node_modules/minimatch": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
+ "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/app-builder-lib/node_modules/semver": {
- "version": "7.5.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz",
- "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==",
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
"dev": true,
"dependencies": {
"lru-cache": "^6.0.0"
@@ -5604,50 +6265,6 @@
"resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz",
"integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ=="
},
- "node_modules/arch": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz",
- "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "optional": true
- },
- "node_modules/archive-type": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/archive-type/-/archive-type-4.0.0.tgz",
- "integrity": "sha512-zV4Ky0v1F8dBrdYElwTvQhweQ0P7Kwc1aluqJsYtOBP01jXcWCyW2IEfI1YiqsG+Iy7ZR+o5LF1N+PGECBxHWA==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "file-type": "^4.2.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/archive-type/node_modules/file-type": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/file-type/-/file-type-4.4.0.tgz",
- "integrity": "sha512-f2UbFQEk7LXgWpi5ntcO86OeA/cC80fuDDDaX/fZ2ZGel+AF7leRQqBBW1eJNiiQkrZlAoM6P+VYP5P6bOlDEQ==",
- "dev": true,
- "optional": true,
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/are-we-there-yet": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz",
@@ -5660,19 +6277,6 @@
"node": ">=10"
}
},
- "node_modules/are-we-there-yet/node_modules/readable-stream": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
- "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
- "dependencies": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
"node_modules/arg": {
"version": "4.1.3",
"resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
@@ -5685,39 +6289,12 @@
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
},
"node_modules/aria-query": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.2.1.tgz",
- "integrity": "sha512-7uFg4b+lETFgdaJyETnILsXgnnzVnkHcgRbwbPwevm5x/LmUlt3MjczMRe1zg824iBgXZNRPTBftNYyRSKLp2g==",
+ "version": "5.1.3",
+ "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz",
+ "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==",
"dev": true,
"dependencies": {
- "dequal": "^2.0.3"
- }
- },
- "node_modules/arr-diff": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
- "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/arr-flatten": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
- "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/arr-union": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
- "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
+ "deep-equal": "^2.0.5"
}
},
"node_modules/array-buffer-byte-length": {
@@ -5775,34 +6352,36 @@
"node": ">=8"
}
},
- "node_modules/array-uniq": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
- "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/array-unique": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
- "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==",
+ "node_modules/array.prototype.filter": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array.prototype.filter/-/array.prototype.filter-1.0.2.tgz",
+ "integrity": "sha512-us+UrmGOilqttSOgoWZTpOvHu68vZT2YCjc/H4vhu56vzZpaDFBhB+Se2UwqWzMKbDv7Myq5M5pcZLAtUvTQdQ==",
"dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.20.4",
+ "es-array-method-boxes-properly": "^1.0.0",
+ "is-string": "^1.0.7"
+ },
"engines": {
- "node": ">=0.10.0"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/array.prototype.flat": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz",
- "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==",
+ "node_modules/array.prototype.findlastindex": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.2.tgz",
+ "integrity": "sha512-tb5thFFlUcp7NdNF6/MpDk/1r/4awWG1FIz3YqDf+/zJSTezBb+/5WViH41obXULHVpDzoiCLpJ/ZO9YbJMsdw==",
"dev": true,
"dependencies": {
"call-bind": "^1.0.2",
"define-properties": "^1.1.4",
"es-abstract": "^1.20.4",
- "es-shim-unscopables": "^1.0.0"
+ "es-shim-unscopables": "^1.0.0",
+ "get-intrinsic": "^1.1.3"
},
"engines": {
"node": ">= 0.4"
@@ -5811,10 +6390,10 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/array.prototype.flatmap": {
+ "node_modules/array.prototype.flat": {
"version": "1.3.1",
- "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz",
- "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==",
+ "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz",
+ "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==",
"dev": true,
"dependencies": {
"call-bind": "^1.0.2",
@@ -5829,18 +6408,16 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/array.prototype.reduce": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz",
- "integrity": "sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q==",
+ "node_modules/array.prototype.flatmap": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz",
+ "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==",
"dev": true,
- "optional": true,
"dependencies": {
"call-bind": "^1.0.2",
"define-properties": "^1.1.4",
"es-abstract": "^1.20.4",
- "es-array-method-boxes-properly": "^1.0.0",
- "is-string": "^1.0.7"
+ "es-shim-unscopables": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
@@ -5862,33 +6439,31 @@
"get-intrinsic": "^1.1.3"
}
},
- "node_modules/as-number": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/as-number/-/as-number-1.0.0.tgz",
- "integrity": "sha512-HkI/zLo2AbSRO4fqVkmyf3hms0bJDs3iboHqTrNuwTiCRvdYXM7HFhfhB6Dk51anV2LM/IMB83mtK9mHw4FlAg=="
- },
- "node_modules/asar": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/asar/-/asar-3.2.0.tgz",
- "integrity": "sha512-COdw2ZQvKdFGFxXwX3oYh2/sOsJWJegrdJCGxnN4MZ7IULgRBp9P6665aqj9z1v9VwP4oP1hRBojRDQ//IGgAg==",
- "deprecated": "Please use @electron/asar moving forward. There is no API change, just a package name change",
+ "node_modules/arraybuffer.prototype.slice": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz",
+ "integrity": "sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==",
"dev": true,
"dependencies": {
- "chromium-pickle-js": "^0.2.0",
- "commander": "^5.0.0",
- "glob": "^7.1.6",
- "minimatch": "^3.0.4"
- },
- "bin": {
- "asar": "bin/asar.js"
+ "array-buffer-byte-length": "^1.0.0",
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "get-intrinsic": "^1.2.1",
+ "is-array-buffer": "^3.0.2",
+ "is-shared-array-buffer": "^1.0.2"
},
"engines": {
- "node": ">=10.12.0"
+ "node": ">= 0.4"
},
- "optionalDependencies": {
- "@types/glob": "^7.1.1"
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/as-number": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/as-number/-/as-number-1.0.0.tgz",
+ "integrity": "sha512-HkI/zLo2AbSRO4fqVkmyf3hms0bJDs3iboHqTrNuwTiCRvdYXM7HFhfhB6Dk51anV2LM/IMB83mtK9mHw4FlAg=="
+ },
"node_modules/assert-plus": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
@@ -5899,15 +6474,6 @@
"node": ">=0.8"
}
},
- "node_modules/assign-symbols": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
- "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/ast-types-flow": {
"version": "0.0.7",
"resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz",
@@ -5919,6 +6485,7 @@
"resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
"integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
"dev": true,
+ "optional": true,
"engines": {
"node": ">=8"
}
@@ -5929,18 +6496,6 @@
"integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==",
"dev": true
},
- "node_modules/async-each": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.6.tgz",
- "integrity": "sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==",
- "dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://paulmillr.com/funding/"
- }
- ]
- },
"node_modules/async-exit-hook": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz",
@@ -5950,11 +6505,14 @@
"node": ">=0.12.0"
}
},
- "node_modules/async-limiter": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz",
- "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==",
- "dev": true
+ "node_modules/asynciterator.prototype": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz",
+ "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==",
+ "dev": true,
+ "dependencies": {
+ "has-symbols": "^1.0.3"
+ }
},
"node_modules/asynckit": {
"version": "0.4.0",
@@ -5971,67 +6529,6 @@
"node": ">= 4.0.0"
}
},
- "node_modules/atob": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
- "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
- "dev": true,
- "bin": {
- "atob": "bin/atob.js"
- },
- "engines": {
- "node": ">= 4.5.0"
- }
- },
- "node_modules/atomically": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/atomically/-/atomically-1.7.0.tgz",
- "integrity": "sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w==",
- "engines": {
- "node": ">=10.12.0"
- }
- },
- "node_modules/author-regex": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/author-regex/-/author-regex-1.0.0.tgz",
- "integrity": "sha512-KbWgR8wOYRAPekEmMXrYYdc7BRyhn2Ftk7KWfMUnQ43hFdojWEFRxhhRUm3/OFEdPa1r0KAvTTg9YQK57xTe0g==",
- "engines": {
- "node": ">=0.8"
- }
- },
- "node_modules/autoprefixer": {
- "version": "10.4.14",
- "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz",
- "integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/autoprefixer"
- }
- ],
- "dependencies": {
- "browserslist": "^4.21.5",
- "caniuse-lite": "^1.0.30001464",
- "fraction.js": "^4.2.0",
- "normalize-range": "^0.1.2",
- "picocolors": "^1.0.0",
- "postcss-value-parser": "^4.2.0"
- },
- "bin": {
- "autoprefixer": "bin/autoprefixer"
- },
- "engines": {
- "node": "^10 || ^12 || >=14"
- },
- "peerDependencies": {
- "postcss": "^8.1.0"
- }
- },
"node_modules/available-typed-arrays": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
@@ -6063,25 +6560,24 @@
}
},
"node_modules/babel-jest": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-26.6.3.tgz",
- "integrity": "sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.6.3.tgz",
+ "integrity": "sha512-1Ne93zZZEy5XmTa4Q+W5+zxBrDpExX8E3iy+xJJ+24ewlfo/T3qHfQJCzi/MMVFmBQDNxtRR/Gfd2dwb/0yrQw==",
"dev": true,
"dependencies": {
- "@jest/transform": "^26.6.2",
- "@jest/types": "^26.6.2",
- "@types/babel__core": "^7.1.7",
- "babel-plugin-istanbul": "^6.0.0",
- "babel-preset-jest": "^26.6.2",
+ "@jest/transform": "^29.6.3",
+ "@types/babel__core": "^7.1.14",
+ "babel-plugin-istanbul": "^6.1.1",
+ "babel-preset-jest": "^29.6.3",
"chalk": "^4.0.0",
- "graceful-fs": "^4.2.4",
+ "graceful-fs": "^4.2.9",
"slash": "^3.0.0"
},
"engines": {
- "node": ">= 10.14.2"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
},
"peerDependencies": {
- "@babel/core": "^7.0.0"
+ "@babel/core": "^7.8.0"
}
},
"node_modules/babel-jest/node_modules/ansi-styles": {
@@ -6149,22 +6645,73 @@
}
},
"node_modules/babel-loader": {
- "version": "8.3.0",
- "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz",
- "integrity": "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==",
+ "version": "9.1.3",
+ "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz",
+ "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==",
"dev": true,
"dependencies": {
- "find-cache-dir": "^3.3.1",
- "loader-utils": "^2.0.0",
- "make-dir": "^3.1.0",
- "schema-utils": "^2.6.5"
+ "find-cache-dir": "^4.0.0",
+ "schema-utils": "^4.0.0"
},
"engines": {
- "node": ">= 8.9"
+ "node": ">= 14.15.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.12.0",
+ "webpack": ">=5"
+ }
+ },
+ "node_modules/babel-loader/node_modules/ajv": {
+ "version": "8.12.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
+ "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/babel-loader/node_modules/ajv-keywords": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
+ "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3"
},
"peerDependencies": {
- "@babel/core": "^7.0.0",
- "webpack": ">=2"
+ "ajv": "^8.8.2"
+ }
+ },
+ "node_modules/babel-loader/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "dev": true
+ },
+ "node_modules/babel-loader/node_modules/schema-utils": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz",
+ "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==",
+ "dev": true,
+ "dependencies": {
+ "@types/json-schema": "^7.0.9",
+ "ajv": "^8.9.0",
+ "ajv-formats": "^2.1.1",
+ "ajv-keywords": "^5.1.0"
+ },
+ "engines": {
+ "node": ">= 12.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
}
},
"node_modules/babel-plugin-istanbul": {
@@ -6183,35 +6730,19 @@
"node": ">=8"
}
},
- "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz",
- "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==",
- "dev": true,
- "dependencies": {
- "@babel/core": "^7.12.3",
- "@babel/parser": "^7.14.7",
- "@istanbuljs/schema": "^0.1.2",
- "istanbul-lib-coverage": "^3.2.0",
- "semver": "^6.3.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/babel-plugin-jest-hoist": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz",
- "integrity": "sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz",
+ "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==",
"dev": true,
"dependencies": {
"@babel/template": "^7.3.3",
"@babel/types": "^7.3.3",
- "@types/babel__core": "^7.0.0",
+ "@types/babel__core": "^7.1.14",
"@types/babel__traverse": "^7.0.6"
},
"engines": {
- "node": ">= 10.14.2"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/babel-plugin-macros": {
@@ -6229,48 +6760,47 @@
}
},
"node_modules/babel-plugin-polyfill-corejs2": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.3.tgz",
- "integrity": "sha512-bM3gHc337Dta490gg+/AseNB9L4YLHxq1nGKZZSHbhXv4aTYU2MD2cjza1Ru4S6975YLTaL1K8uJf6ukJhhmtw==",
- "dev": true,
+ "version": "0.4.5",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz",
+ "integrity": "sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==",
"dependencies": {
- "@babel/compat-data": "^7.17.7",
- "@babel/helper-define-polyfill-provider": "^0.4.0",
- "semver": "^6.1.1"
+ "@babel/compat-data": "^7.22.6",
+ "@babel/helper-define-polyfill-provider": "^0.4.2",
+ "semver": "^6.3.1"
},
"peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
}
},
"node_modules/babel-plugin-polyfill-corejs3": {
- "version": "0.8.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.1.tgz",
- "integrity": "sha512-ikFrZITKg1xH6pLND8zT14UPgjKHiGLqex7rGEZCH2EvhsneJaJPemmpQaIZV5AL03II+lXylw3UmddDK8RU5Q==",
- "dev": true,
+ "version": "0.8.3",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz",
+ "integrity": "sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==",
"dependencies": {
- "@babel/helper-define-polyfill-provider": "^0.4.0",
- "core-js-compat": "^3.30.1"
+ "@babel/helper-define-polyfill-provider": "^0.4.2",
+ "core-js-compat": "^3.31.0"
},
"peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
}
},
"node_modules/babel-plugin-polyfill-regenerator": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.0.tgz",
- "integrity": "sha512-hDJtKjMLVa7Z+LwnTCxoDLQj6wdc+B8dun7ayF2fYieI6OzfuvcLMB32ihJZ4UhCBwNYGl5bg/x/P9cMdnkc2g==",
- "dev": true,
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz",
+ "integrity": "sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==",
"dependencies": {
- "@babel/helper-define-polyfill-provider": "^0.4.0"
+ "@babel/helper-define-polyfill-provider": "^0.4.2"
},
"peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
}
},
"node_modules/babel-plugin-styled-components": {
"version": "2.1.4",
"resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-2.1.4.tgz",
"integrity": "sha512-Xgp9g+A/cG47sUyRwwYxGM4bR/jDRg5N6it/8+HxCnbT5XNKSKDT9xm4oag/osgqjC2It/vH0yXsomOG6k558g==",
+ "optional": true,
+ "peer": true,
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.22.5",
"@babel/helper-module-imports": "^7.22.5",
@@ -6306,16 +6836,16 @@
}
},
"node_modules/babel-preset-jest": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz",
- "integrity": "sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz",
+ "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==",
"dev": true,
"dependencies": {
- "babel-plugin-jest-hoist": "^26.6.2",
+ "babel-plugin-jest-hoist": "^29.6.3",
"babel-preset-current-node-syntax": "^1.0.0"
},
"engines": {
- "node": ">= 10.14.2"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
},
"peerDependencies": {
"@babel/core": "^7.0.0"
@@ -6326,36 +6856,6 @@
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
},
- "node_modules/base": {
- "version": "0.11.2",
- "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
- "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
- "dev": true,
- "dependencies": {
- "cache-base": "^1.0.1",
- "class-utils": "^0.3.5",
- "component-emitter": "^1.2.1",
- "define-property": "^1.0.0",
- "isobject": "^3.0.1",
- "mixin-deep": "^1.2.0",
- "pascalcase": "^0.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/base/node_modules/define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
- "dev": true,
- "dependencies": {
- "is-descriptor": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/base64-js": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
@@ -6382,9 +6882,9 @@
"dev": true
},
"node_modules/bezier-js": {
- "version": "6.1.3",
- "resolved": "https://registry.npmjs.org/bezier-js/-/bezier-js-6.1.3.tgz",
- "integrity": "sha512-VPFvkyO98oCJ1Tsi+bFBrKEWLdefAj4DJVaWp3xTEsdCbunC7Pt/nTeIgu/UdskBNcmHv8TOfsgdMZb1GsICmg==",
+ "version": "6.1.4",
+ "resolved": "https://registry.npmjs.org/bezier-js/-/bezier-js-6.1.4.tgz",
+ "integrity": "sha512-PA0FW9ZpcHbojUCMu28z9Vg/fNkwTj5YhusSAjHHDfHDGLxJ6YUKrAN2vk1fP2MMOxVw4Oko16FMlRGVBGqLKg==",
"funding": {
"type": "individual",
"url": "https://github.com/Pomax/bezierjs/blob/master/FUNDING.md"
@@ -6399,5963 +6899,3735 @@
"node": "*"
}
},
- "node_modules/bin-build": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/bin-build/-/bin-build-3.0.0.tgz",
- "integrity": "sha512-jcUOof71/TNAI2uM5uoUaDq2ePcVBQ3R/qhxAz1rX7UfvduAL/RXD3jXzvn8cVcDJdGVkiR1shal3OH0ImpuhA==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "decompress": "^4.0.0",
- "download": "^6.2.2",
- "execa": "^0.7.0",
- "p-map-series": "^1.0.0",
- "tempfile": "^2.0.0"
- },
+ "node_modules/binary-extensions": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
+ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+ "devOptional": true,
"engines": {
- "node": ">=4"
+ "node": ">=8"
}
},
- "node_modules/bin-build/node_modules/cross-spawn": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
- "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==",
+ "node_modules/bluebird": {
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
+ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
+ "dev": true
+ },
+ "node_modules/bluebird-lst": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/bluebird-lst/-/bluebird-lst-1.0.9.tgz",
+ "integrity": "sha512-7B1Rtx82hjnSD4PGLAjVWeYH3tHAcVUmChh85a3lltKQm6FresXh9ErQo6oAv6CqxttczC3/kEg8SY5NluPuUw==",
"dev": true,
- "optional": true,
"dependencies": {
- "lru-cache": "^4.0.1",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
+ "bluebird": "^3.5.5"
}
},
- "node_modules/bin-build/node_modules/execa": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
- "integrity": "sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==",
+ "node_modules/body-parser": {
+ "version": "1.20.1",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
+ "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==",
"dev": true,
- "optional": true,
"dependencies": {
- "cross-spawn": "^5.0.1",
- "get-stream": "^3.0.0",
- "is-stream": "^1.1.0",
- "npm-run-path": "^2.0.0",
- "p-finally": "^1.0.0",
- "signal-exit": "^3.0.0",
- "strip-eof": "^1.0.0"
+ "bytes": "3.1.2",
+ "content-type": "~1.0.4",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "on-finished": "2.4.1",
+ "qs": "6.11.0",
+ "raw-body": "2.5.1",
+ "type-is": "~1.6.18",
+ "unpipe": "1.0.0"
},
"engines": {
- "node": ">=4"
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
}
},
- "node_modules/bin-build/node_modules/get-stream": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
- "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==",
+ "node_modules/body-parser/node_modules/bytes": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
"dev": true,
- "optional": true,
"engines": {
- "node": ">=4"
+ "node": ">= 0.8"
}
},
- "node_modules/bin-build/node_modules/lru-cache": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
- "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
+ "node_modules/body-parser/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
- "optional": true,
"dependencies": {
- "pseudomap": "^1.0.2",
- "yallist": "^2.1.2"
+ "ms": "2.0.0"
}
},
- "node_modules/bin-build/node_modules/shebang-command": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
- "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
+ "node_modules/body-parser/node_modules/iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
"dev": true,
- "optional": true,
"dependencies": {
- "shebang-regex": "^1.0.0"
+ "safer-buffer": ">= 2.1.2 < 3"
},
"engines": {
"node": ">=0.10.0"
}
},
- "node_modules/bin-build/node_modules/shebang-regex": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
- "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
- "dev": true,
- "optional": true,
- "engines": {
- "node": ">=0.10.0"
- }
+ "node_modules/body-parser/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
},
- "node_modules/bin-build/node_modules/which": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "node_modules/bonjour-service": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.1.tgz",
+ "integrity": "sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==",
"dev": true,
- "optional": true,
"dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "which": "bin/which"
+ "array-flatten": "^2.1.2",
+ "dns-equal": "^1.0.0",
+ "fast-deep-equal": "^3.1.3",
+ "multicast-dns": "^7.2.5"
}
},
- "node_modules/bin-build/node_modules/yallist": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
- "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==",
- "dev": true,
+ "node_modules/boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
+ "dev": true
+ },
+ "node_modules/boolean": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz",
+ "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==",
"optional": true
},
- "node_modules/bin-check": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/bin-check/-/bin-check-4.1.0.tgz",
- "integrity": "sha512-b6weQyEUKsDGFlACWSIOfveEnImkJyK/FGW6FAG42loyoquvjdtOIqO6yBFzHyqyVVhNgNkQxxx09SFLK28YnA==",
- "dev": true,
- "optional": true,
+ "node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"dependencies": {
- "execa": "^0.7.0",
- "executable": "^4.1.0"
- },
- "engines": {
- "node": ">=4"
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
}
},
- "node_modules/bin-check/node_modules/cross-spawn": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
- "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==",
- "dev": true,
- "optional": true,
+ "node_modules/braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "devOptional": true,
"dependencies": {
- "lru-cache": "^4.0.1",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
+ "fill-range": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "node_modules/bin-check/node_modules/execa": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
- "integrity": "sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==",
- "dev": true,
- "optional": true,
+ "node_modules/browserslist": {
+ "version": "4.21.10",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz",
+ "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
"dependencies": {
- "cross-spawn": "^5.0.1",
- "get-stream": "^3.0.0",
- "is-stream": "^1.1.0",
- "npm-run-path": "^2.0.0",
- "p-finally": "^1.0.0",
- "signal-exit": "^3.0.0",
- "strip-eof": "^1.0.0"
+ "caniuse-lite": "^1.0.30001517",
+ "electron-to-chromium": "^1.4.477",
+ "node-releases": "^2.0.13",
+ "update-browserslist-db": "^1.0.11"
+ },
+ "bin": {
+ "browserslist": "cli.js"
},
"engines": {
- "node": ">=4"
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
}
},
- "node_modules/bin-check/node_modules/get-stream": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
- "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==",
+ "node_modules/bs-logger": {
+ "version": "0.2.6",
+ "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz",
+ "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==",
"dev": true,
- "optional": true,
+ "dependencies": {
+ "fast-json-stable-stringify": "2.x"
+ },
"engines": {
- "node": ">=4"
+ "node": ">= 6"
}
},
- "node_modules/bin-check/node_modules/lru-cache": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
- "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
+ "node_modules/bser": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz",
+ "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==",
"dev": true,
- "optional": true,
"dependencies": {
- "pseudomap": "^1.0.2",
- "yallist": "^2.1.2"
+ "node-int64": "^0.4.0"
}
},
- "node_modules/bin-check/node_modules/shebang-command": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
- "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
+ "node_modules/buffer": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
+ "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
"dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
"optional": true,
"dependencies": {
- "shebang-regex": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.1.13"
}
},
- "node_modules/bin-check/node_modules/shebang-regex": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
- "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
- "dev": true,
- "optional": true,
+ "node_modules/buffer-crc32": {
+ "version": "0.2.13",
+ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+ "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
"engines": {
- "node": ">=0.10.0"
+ "node": "*"
}
},
- "node_modules/bin-check/node_modules/which": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "node_modules/buffer-equal": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.1.tgz",
+ "integrity": "sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==",
"dev": true,
- "optional": true,
- "dependencies": {
- "isexe": "^2.0.0"
+ "engines": {
+ "node": ">=0.4"
},
- "bin": {
- "which": "bin/which"
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/bin-check/node_modules/yallist": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
- "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==",
+ "node_modules/buffer-from": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+ "dev": true
+ },
+ "node_modules/buffer-to-arraybuffer": {
+ "version": "0.0.5",
+ "resolved": "https://registry.npmjs.org/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz",
+ "integrity": "sha512-3dthu5CYiVB1DEJp61FtApNnNndTckcqe4pFcLdvHtrpG+kcyekCJKg4MRiDcFW7A6AODnXB9U4dwQiCW5kzJQ=="
+ },
+ "node_modules/buffer-writer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz",
+ "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/builder-util": {
+ "version": "24.5.0",
+ "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-24.5.0.tgz",
+ "integrity": "sha512-STnBmZN/M5vGcv01u/K8l+H+kplTaq4PAIn3yeuufUKSpcdro0DhJWxPI81k5XcNfC//bjM3+n9nr8F9uV4uAQ==",
"dev": true,
- "optional": true
+ "dependencies": {
+ "@types/debug": "^4.1.6",
+ "7zip-bin": "~5.1.1",
+ "app-builder-bin": "4.0.0",
+ "bluebird-lst": "^1.0.9",
+ "builder-util-runtime": "9.2.1",
+ "chalk": "^4.1.2",
+ "cross-spawn": "^7.0.3",
+ "debug": "^4.3.4",
+ "fs-extra": "^10.1.0",
+ "http-proxy-agent": "^5.0.0",
+ "https-proxy-agent": "^5.0.1",
+ "is-ci": "^3.0.0",
+ "js-yaml": "^4.1.0",
+ "source-map-support": "^0.5.19",
+ "stat-mode": "^1.0.0",
+ "temp-file": "^3.4.0"
+ }
},
- "node_modules/bin-version": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/bin-version/-/bin-version-3.1.0.tgz",
- "integrity": "sha512-Mkfm4iE1VFt4xd4vH+gx+0/71esbfus2LsnCGe8Pi4mndSPyT+NGES/Eg99jx8/lUGWfu3z2yuB/bt5UB+iVbQ==",
+ "node_modules/builder-util-runtime": {
+ "version": "9.2.1",
+ "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.2.1.tgz",
+ "integrity": "sha512-2rLv/uQD2x+dJ0J3xtsmI12AlRyk7p45TEbE/6o/fbb633e/S3pPgm+ct+JHsoY7r39dKHnGEFk/AASRFdnXmA==",
"dev": true,
- "optional": true,
"dependencies": {
- "execa": "^1.0.0",
- "find-versions": "^3.0.0"
+ "debug": "^4.3.4",
+ "sax": "^1.2.4"
},
"engines": {
- "node": ">=6"
+ "node": ">=12.0.0"
}
},
- "node_modules/bin-version-check": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/bin-version-check/-/bin-version-check-4.0.0.tgz",
- "integrity": "sha512-sR631OrhC+1f8Cvs8WyVWOA33Y8tgwjETNPyyD/myRBXLkfS/vl74FmH/lFcRl9KY3zwGh7jFhvyk9vV3/3ilQ==",
+ "node_modules/builder-util/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
- "optional": true,
"dependencies": {
- "bin-version": "^3.0.0",
- "semver": "^5.6.0",
- "semver-truncate": "^1.1.2"
+ "color-convert": "^2.0.1"
},
"engines": {
- "node": ">=6"
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/bin-version-check/node_modules/semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "node_modules/builder-util/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
- "optional": true,
- "bin": {
- "semver": "bin/semver"
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/bin-wrapper": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/bin-wrapper/-/bin-wrapper-4.1.0.tgz",
- "integrity": "sha512-hfRmo7hWIXPkbpi0ZltboCMVrU+0ClXR/JgbCKKjlDjQf6igXa7OwdqNcFWQZPZTgiY7ZpzE3+LjjkLiTN2T7Q==",
+ "node_modules/builder-util/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
- "optional": true,
"dependencies": {
- "bin-check": "^4.1.0",
- "bin-version-check": "^4.0.0",
- "download": "^7.1.0",
- "import-lazy": "^3.1.0",
- "os-filter-obj": "^2.0.0",
- "pify": "^4.0.1"
+ "color-name": "~1.1.4"
},
"engines": {
- "node": ">=6"
+ "node": ">=7.0.0"
}
},
- "node_modules/bin-wrapper/node_modules/@sindresorhus/is": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz",
- "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==",
+ "node_modules/builder-util/node_modules/fs-extra": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
+ "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
"dev": true,
- "optional": true,
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
"engines": {
- "node": ">=4"
+ "node": ">=12"
}
},
- "node_modules/bin-wrapper/node_modules/cacheable-request": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz",
- "integrity": "sha512-vag0O2LKZ/najSoUwDbVlnlCFvhBE/7mGTY2B5FgCBDcRD+oVV1HYTOwM6JZfMg/hIcM6IwnTZ1uQQL5/X3xIQ==",
+ "node_modules/builder-util/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
- "optional": true,
- "dependencies": {
- "clone-response": "1.0.2",
- "get-stream": "3.0.0",
- "http-cache-semantics": "3.8.1",
- "keyv": "3.0.0",
- "lowercase-keys": "1.0.0",
- "normalize-url": "2.0.1",
- "responselike": "1.0.2"
+ "engines": {
+ "node": ">=8"
}
},
- "node_modules/bin-wrapper/node_modules/clone-response": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz",
- "integrity": "sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==",
+ "node_modules/builder-util/node_modules/jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
"dev": true,
- "optional": true,
"dependencies": {
- "mimic-response": "^1.0.0"
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
}
},
- "node_modules/bin-wrapper/node_modules/download": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/download/-/download-7.1.0.tgz",
- "integrity": "sha512-xqnBTVd/E+GxJVrX5/eUJiLYjCGPwMpdL+jGhGU57BvtcA7wwhtHVbXBeUk51kOpW3S7Jn3BQbN9Q1R1Km2qDQ==",
+ "node_modules/builder-util/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
- "optional": true,
"dependencies": {
- "archive-type": "^4.0.0",
- "caw": "^2.0.1",
- "content-disposition": "^0.5.2",
- "decompress": "^4.2.0",
- "ext-name": "^5.0.0",
- "file-type": "^8.1.0",
- "filenamify": "^2.0.0",
- "get-stream": "^3.0.0",
- "got": "^8.3.1",
- "make-dir": "^1.2.0",
- "p-event": "^2.1.0",
- "pify": "^3.0.0"
+ "has-flag": "^4.0.0"
},
"engines": {
- "node": ">=6"
- }
- },
- "node_modules/bin-wrapper/node_modules/download/node_modules/pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
- "dev": true,
- "optional": true,
- "engines": {
- "node": ">=4"
+ "node": ">=8"
}
},
- "node_modules/bin-wrapper/node_modules/file-type": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/file-type/-/file-type-8.1.0.tgz",
- "integrity": "sha512-qyQ0pzAy78gVoJsmYeNgl8uH8yKhr1lVhW7JbzJmnlRi0I4R2eEDEJZVKG8agpDnLpacwNbDhLNG/LMdxHD2YQ==",
+ "node_modules/builder-util/node_modules/universalify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
"dev": true,
- "optional": true,
"engines": {
- "node": ">=6"
+ "node": ">= 10.0.0"
}
},
- "node_modules/bin-wrapper/node_modules/get-stream": {
+ "node_modules/bytes": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
- "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
+ "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==",
"dev": true,
- "optional": true,
"engines": {
- "node": ">=4"
+ "node": ">= 0.8"
}
},
- "node_modules/bin-wrapper/node_modules/got": {
- "version": "8.3.2",
- "resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz",
- "integrity": "sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==",
- "dev": true,
+ "node_modules/cacache": {
+ "version": "15.3.0",
+ "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz",
+ "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==",
"optional": true,
"dependencies": {
- "@sindresorhus/is": "^0.7.0",
- "cacheable-request": "^2.1.1",
- "decompress-response": "^3.3.0",
- "duplexer3": "^0.1.4",
- "get-stream": "^3.0.0",
- "into-stream": "^3.1.0",
- "is-retry-allowed": "^1.1.0",
- "isurl": "^1.0.0-alpha5",
- "lowercase-keys": "^1.0.0",
- "mimic-response": "^1.0.0",
- "p-cancelable": "^0.4.0",
- "p-timeout": "^2.0.1",
- "pify": "^3.0.0",
- "safe-buffer": "^5.1.1",
- "timed-out": "^4.0.1",
- "url-parse-lax": "^3.0.0",
- "url-to-options": "^1.0.1"
+ "@npmcli/fs": "^1.0.0",
+ "@npmcli/move-file": "^1.0.1",
+ "chownr": "^2.0.0",
+ "fs-minipass": "^2.0.0",
+ "glob": "^7.1.4",
+ "infer-owner": "^1.0.4",
+ "lru-cache": "^6.0.0",
+ "minipass": "^3.1.1",
+ "minipass-collect": "^1.0.2",
+ "minipass-flush": "^1.0.5",
+ "minipass-pipeline": "^1.2.2",
+ "mkdirp": "^1.0.3",
+ "p-map": "^4.0.0",
+ "promise-inflight": "^1.0.1",
+ "rimraf": "^3.0.2",
+ "ssri": "^8.0.1",
+ "tar": "^6.0.2",
+ "unique-filename": "^1.1.1"
},
"engines": {
- "node": ">=4"
+ "node": ">= 10"
}
},
- "node_modules/bin-wrapper/node_modules/got/node_modules/pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
- "dev": true,
+ "node_modules/cacache/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"optional": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
"engines": {
- "node": ">=4"
+ "node": ">=10"
}
},
- "node_modules/bin-wrapper/node_modules/http-cache-semantics": {
- "version": "3.8.1",
- "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz",
- "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==",
- "dev": true,
+ "node_modules/cacache/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"optional": true
},
- "node_modules/bin-wrapper/node_modules/keyv": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz",
- "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "json-buffer": "3.0.0"
+ "node_modules/cacheable-lookup": {
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz",
+ "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==",
+ "engines": {
+ "node": ">=10.6.0"
}
},
- "node_modules/bin-wrapper/node_modules/lowercase-keys": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz",
- "integrity": "sha512-RPlX0+PHuvxVDZ7xX+EBVAp4RsVxP/TdDSN2mJYdiq1Lc4Hz7EUSjUI7RZrKKlmrIzVhf6Jo2stj7++gVarS0A==",
- "dev": true,
- "optional": true,
+ "node_modules/cacheable-request": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz",
+ "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==",
+ "dependencies": {
+ "clone-response": "^1.0.2",
+ "get-stream": "^5.1.0",
+ "http-cache-semantics": "^4.0.0",
+ "keyv": "^4.0.0",
+ "lowercase-keys": "^2.0.0",
+ "normalize-url": "^6.0.1",
+ "responselike": "^2.0.0"
+ },
"engines": {
- "node": ">=0.10.0"
+ "node": ">=8"
}
},
- "node_modules/bin-wrapper/node_modules/make-dir": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
- "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
+ "node_modules/call-bind": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
+ "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
"dev": true,
- "optional": true,
"dependencies": {
- "pify": "^3.0.0"
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.0.2"
},
- "engines": {
- "node": ">=4"
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/bin-wrapper/node_modules/make-dir/node_modules/pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
- "dev": true,
- "optional": true,
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
"engines": {
- "node": ">=4"
+ "node": ">=6"
}
},
- "node_modules/bin-wrapper/node_modules/normalize-url": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz",
- "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==",
+ "node_modules/camel-case": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz",
+ "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==",
"dev": true,
- "optional": true,
"dependencies": {
- "prepend-http": "^2.0.0",
- "query-string": "^5.0.1",
- "sort-keys": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
+ "pascal-case": "^3.1.2",
+ "tslib": "^2.0.3"
}
},
- "node_modules/bin-wrapper/node_modules/p-cancelable": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz",
- "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==",
+ "node_modules/camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
"dev": true,
- "optional": true,
"engines": {
- "node": ">=4"
+ "node": ">=6"
}
},
- "node_modules/bin-wrapper/node_modules/p-event": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/p-event/-/p-event-2.3.1.tgz",
- "integrity": "sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA==",
- "dev": true,
- "optional": true,
+ "node_modules/camelize": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz",
+ "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001518",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001518.tgz",
+ "integrity": "sha512-rup09/e3I0BKjncL+FesTayKtPrdwKhUufQFd3riFw1hHg8JmIFoInYfB102cFcY/pPgGmdyl/iy+jgiDi2vdA==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ]
+ },
+ "node_modules/canvas-color-tracker": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/canvas-color-tracker/-/canvas-color-tracker-1.2.1.tgz",
+ "integrity": "sha512-i5clg2pEdaWqHuEM/B74NZNLkHh5+OkXbA/T4iaBiaNDagkOCXkLNrhqUfdUugsRwuaNRU20e/OygzxWRor3yg==",
"dependencies": {
- "p-timeout": "^2.0.1"
+ "tinycolor2": "^1.6.0"
},
"engines": {
- "node": ">=6"
+ "node": ">=12"
}
},
- "node_modules/bin-wrapper/node_modules/p-timeout": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz",
- "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==",
- "dev": true,
- "optional": true,
+ "node_modules/cardboard-vr-display": {
+ "version": "1.0.19",
+ "resolved": "https://registry.npmjs.org/cardboard-vr-display/-/cardboard-vr-display-1.0.19.tgz",
+ "integrity": "sha512-+MjcnWKAkb95p68elqZLDPzoiF/dGncQilLGvPBM5ZorABp/ao3lCs7nnRcYBckmuNkg1V/5rdGDKoUaCVsHzQ==",
"dependencies": {
- "p-finally": "^1.0.0"
- },
- "engines": {
- "node": ">=4"
+ "gl-preserve-state": "^1.0.0",
+ "nosleep.js": "^0.7.0",
+ "webvr-polyfill-dpdb": "^1.0.17"
}
},
- "node_modules/bin-wrapper/node_modules/sort-keys": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz",
- "integrity": "sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==",
- "dev": true,
- "optional": true,
+ "node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
"dependencies": {
- "is-plain-obj": "^1.0.0"
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
},
"engines": {
"node": ">=4"
}
},
- "node_modules/binary-extensions": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
- "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+ "node_modules/chalk/node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
"engines": {
- "node": ">=8"
+ "node": ">=0.8.0"
}
},
- "node_modules/bindings": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
- "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
+ "node_modules/char-regex": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz",
+ "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==",
"dev": true,
- "optional": true,
- "dependencies": {
- "file-uri-to-path": "1.0.0"
+ "engines": {
+ "node": ">=10"
}
},
- "node_modules/bl": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz",
- "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==",
- "dev": true,
- "optional": true,
+ "node_modules/chart.js": {
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.3.3.tgz",
+ "integrity": "sha512-aTk7pBw+x6sQYhon/NR3ikfUJuym/LdgpTlgZRe2PaEhjUMKBKyNaFCMVRAyTEWYFNO7qRu7iQVqOw/OqzxZxQ==",
"dependencies": {
- "readable-stream": "^2.3.5",
- "safe-buffer": "^5.1.1"
+ "@kurkle/color": "^0.3.0"
+ },
+ "engines": {
+ "pnpm": ">=7"
}
},
- "node_modules/bluebird": {
- "version": "3.7.2",
- "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
- "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg=="
- },
- "node_modules/bluebird-lst": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/bluebird-lst/-/bluebird-lst-1.0.9.tgz",
- "integrity": "sha512-7B1Rtx82hjnSD4PGLAjVWeYH3tHAcVUmChh85a3lltKQm6FresXh9ErQo6oAv6CqxttczC3/kEg8SY5NluPuUw==",
+ "node_modules/cheerio": {
+ "version": "1.0.0-rc.12",
+ "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz",
+ "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==",
"dev": true,
"dependencies": {
- "bluebird": "^3.5.5"
- }
- },
- "node_modules/body-parser": {
- "version": "1.20.1",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
- "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==",
- "dev": true,
- "dependencies": {
- "bytes": "3.1.2",
- "content-type": "~1.0.4",
- "debug": "2.6.9",
- "depd": "2.0.0",
- "destroy": "1.2.0",
- "http-errors": "2.0.0",
- "iconv-lite": "0.4.24",
- "on-finished": "2.4.1",
- "qs": "6.11.0",
- "raw-body": "2.5.1",
- "type-is": "~1.6.18",
- "unpipe": "1.0.0"
- },
- "engines": {
- "node": ">= 0.8",
- "npm": "1.2.8000 || >= 1.4.16"
- }
- },
- "node_modules/body-parser/node_modules/bytes": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
- "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
- "dev": true,
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/body-parser/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/body-parser/node_modules/iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
- "dev": true,
- "dependencies": {
- "safer-buffer": ">= 2.1.2 < 3"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/body-parser/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "dev": true
- },
- "node_modules/bonjour": {
- "version": "3.5.0",
- "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz",
- "integrity": "sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==",
- "dev": true,
- "dependencies": {
- "array-flatten": "^2.1.0",
- "deep-equal": "^1.0.1",
- "dns-equal": "^1.0.0",
- "dns-txt": "^2.0.2",
- "multicast-dns": "^6.0.1",
- "multicast-dns-service-types": "^1.1.0"
- }
- },
- "node_modules/boolbase": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
- "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
- "dev": true
- },
- "node_modules/boolean": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz",
- "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==",
- "optional": true
- },
- "node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "dependencies": {
- "fill-range": "^7.0.1"
+ "cheerio-select": "^2.1.0",
+ "dom-serializer": "^2.0.0",
+ "domhandler": "^5.0.3",
+ "domutils": "^3.0.1",
+ "htmlparser2": "^8.0.1",
+ "parse5": "^7.0.0",
+ "parse5-htmlparser2-tree-adapter": "^7.0.0"
},
"engines": {
- "node": ">=8"
- }
- },
- "node_modules/browser-process-hrtime": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz",
- "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==",
- "dev": true
- },
- "node_modules/browserslist": {
- "version": "4.21.9",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz",
- "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==",
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/browserslist"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "dependencies": {
- "caniuse-lite": "^1.0.30001503",
- "electron-to-chromium": "^1.4.431",
- "node-releases": "^2.0.12",
- "update-browserslist-db": "^1.0.11"
- },
- "bin": {
- "browserslist": "cli.js"
+ "node": ">= 6"
},
- "engines": {
- "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ "funding": {
+ "url": "https://github.com/cheeriojs/cheerio?sponsor=1"
}
},
- "node_modules/bs-logger": {
- "version": "0.2.6",
- "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz",
- "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==",
+ "node_modules/cheerio-select": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz",
+ "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==",
"dev": true,
"dependencies": {
- "fast-json-stable-stringify": "2.x"
+ "boolbase": "^1.0.0",
+ "css-select": "^5.1.0",
+ "css-what": "^6.1.0",
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3",
+ "domutils": "^3.0.1"
},
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/bser": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz",
- "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==",
- "dev": true,
- "dependencies": {
- "node-int64": "^0.4.0"
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
}
},
- "node_modules/buffer": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
- "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
- "dev": true,
+ "node_modules/chokidar": {
+ "version": "3.5.3",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
+ "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
+ "devOptional": true,
"funding": [
{
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
}
],
- "optional": true,
- "dependencies": {
- "base64-js": "^1.3.1",
- "ieee754": "^1.1.13"
- }
- },
- "node_modules/buffer-alloc": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
- "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
- "dependencies": {
- "buffer-alloc-unsafe": "^1.1.0",
- "buffer-fill": "^1.0.0"
- }
- },
- "node_modules/buffer-alloc-unsafe": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
- "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg=="
- },
- "node_modules/buffer-crc32": {
- "version": "0.2.13",
- "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
- "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
- "engines": {
- "node": "*"
- }
- },
- "node_modules/buffer-equal": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz",
- "integrity": "sha512-tcBWO2Dl4e7Asr9hTGcpVrCe+F7DubpmqWCTbj4FHLmjqO2hIaC383acQubWtRJhdceqs5uBHs6Es+Sk//RKiQ==",
- "dev": true,
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/buffer-fill": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
- "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ=="
- },
- "node_modules/buffer-from": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
- "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
- },
- "node_modules/buffer-indexof": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz",
- "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==",
- "dev": true
- },
- "node_modules/buffer-to-arraybuffer": {
- "version": "0.0.5",
- "resolved": "https://registry.npmjs.org/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz",
- "integrity": "sha512-3dthu5CYiVB1DEJp61FtApNnNndTckcqe4pFcLdvHtrpG+kcyekCJKg4MRiDcFW7A6AODnXB9U4dwQiCW5kzJQ=="
- },
- "node_modules/buffer-writer": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz",
- "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/builder-util": {
- "version": "23.6.0",
- "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-23.6.0.tgz",
- "integrity": "sha512-QiQHweYsh8o+U/KNCZFSvISRnvRctb8m/2rB2I1JdByzvNKxPeFLlHFRPQRXab6aYeXc18j9LpsDLJ3sGQmWTQ==",
- "dev": true,
- "dependencies": {
- "@types/debug": "^4.1.6",
- "@types/fs-extra": "^9.0.11",
- "7zip-bin": "~5.1.1",
- "app-builder-bin": "4.0.0",
- "bluebird-lst": "^1.0.9",
- "builder-util-runtime": "9.1.1",
- "chalk": "^4.1.1",
- "cross-spawn": "^7.0.3",
- "debug": "^4.3.4",
- "fs-extra": "^10.0.0",
- "http-proxy-agent": "^5.0.0",
- "https-proxy-agent": "^5.0.0",
- "is-ci": "^3.0.0",
- "js-yaml": "^4.1.0",
- "source-map-support": "^0.5.19",
- "stat-mode": "^1.0.0",
- "temp-file": "^3.4.0"
- }
- },
- "node_modules/builder-util-runtime": {
- "version": "9.1.1",
- "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.1.1.tgz",
- "integrity": "sha512-azRhYLEoDvRDR8Dhis4JatELC/jUvYjm4cVSj7n9dauGTOM2eeNn9KS0z6YA6oDsjI1xphjNbY6PZZeHPzzqaw==",
- "dev": true,
"dependencies": {
- "debug": "^4.3.4",
- "sax": "^1.2.4"
- },
- "engines": {
- "node": ">=12.0.0"
- }
- },
- "node_modules/builder-util/node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/builder-util/node_modules/chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/builder-util/node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/builder-util/node_modules/fs-extra": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
- "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/builder-util/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/builder-util/node_modules/jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
- "dev": true,
- "dependencies": {
- "universalify": "^2.0.0"
- },
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
- }
- },
- "node_modules/builder-util/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/builder-util/node_modules/universalify": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
- "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
- "dev": true,
- "engines": {
- "node": ">= 10.0.0"
- }
- },
- "node_modules/bytes": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
- "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==",
- "dev": true,
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/cacache": {
- "version": "15.3.0",
- "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz",
- "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==",
- "optional": true,
- "dependencies": {
- "@npmcli/fs": "^1.0.0",
- "@npmcli/move-file": "^1.0.1",
- "chownr": "^2.0.0",
- "fs-minipass": "^2.0.0",
- "glob": "^7.1.4",
- "infer-owner": "^1.0.4",
- "lru-cache": "^6.0.0",
- "minipass": "^3.1.1",
- "minipass-collect": "^1.0.2",
- "minipass-flush": "^1.0.5",
- "minipass-pipeline": "^1.2.2",
- "mkdirp": "^1.0.3",
- "p-map": "^4.0.0",
- "promise-inflight": "^1.0.1",
- "rimraf": "^3.0.2",
- "ssri": "^8.0.1",
- "tar": "^6.0.2",
- "unique-filename": "^1.1.1"
- },
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/cacache/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "optional": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/cacache/node_modules/mkdirp": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
- "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
- "optional": true,
- "bin": {
- "mkdirp": "bin/cmd.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/cacache/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "optional": true
- },
- "node_modules/cache-base": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
- "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
- "dev": true,
- "dependencies": {
- "collection-visit": "^1.0.0",
- "component-emitter": "^1.2.1",
- "get-value": "^2.0.6",
- "has-value": "^1.0.0",
- "isobject": "^3.0.1",
- "set-value": "^2.0.0",
- "to-object-path": "^0.3.0",
- "union-value": "^1.0.0",
- "unset-value": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/cacheable-request": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz",
- "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==",
- "dependencies": {
- "clone-response": "^1.0.2",
- "get-stream": "^5.1.0",
- "http-cache-semantics": "^4.0.0",
- "keyv": "^3.0.0",
- "lowercase-keys": "^2.0.0",
- "normalize-url": "^4.1.0",
- "responselike": "^1.0.2"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/cacheable-request/node_modules/get-stream": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
- "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
- "dependencies": {
- "pump": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/cacheable-request/node_modules/lowercase-keys": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
- "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/call-bind": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
- "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
- "dev": true,
- "dependencies": {
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/callsites": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
- "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/camel-case": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz",
- "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==",
- "dev": true,
- "dependencies": {
- "pascal-case": "^3.1.2",
- "tslib": "^2.0.3"
- }
- },
- "node_modules/camelcase": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
- "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/camelize": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz",
- "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/caniuse-lite": {
- "version": "1.0.30001507",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001507.tgz",
- "integrity": "sha512-SFpUDoSLCaE5XYL2jfqe9ova/pbQHEmbheDf5r4diNwbAgR3qxM9NQtfsiSscjqoya5K7kFcHPUQ+VsUkIJR4A==",
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ]
- },
- "node_modules/canvas-color-tracker": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/canvas-color-tracker/-/canvas-color-tracker-1.2.1.tgz",
- "integrity": "sha512-i5clg2pEdaWqHuEM/B74NZNLkHh5+OkXbA/T4iaBiaNDagkOCXkLNrhqUfdUugsRwuaNRU20e/OygzxWRor3yg==",
- "dependencies": {
- "tinycolor2": "^1.6.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/capture-exit": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz",
- "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==",
- "dev": true,
- "dependencies": {
- "rsvp": "^4.8.4"
- },
- "engines": {
- "node": "6.* || 8.* || >= 10.*"
- }
- },
- "node_modules/cardboard-vr-display": {
- "version": "1.0.19",
- "resolved": "https://registry.npmjs.org/cardboard-vr-display/-/cardboard-vr-display-1.0.19.tgz",
- "integrity": "sha512-+MjcnWKAkb95p68elqZLDPzoiF/dGncQilLGvPBM5ZorABp/ao3lCs7nnRcYBckmuNkg1V/5rdGDKoUaCVsHzQ==",
- "dependencies": {
- "gl-preserve-state": "^1.0.0",
- "nosleep.js": "^0.7.0",
- "webvr-polyfill-dpdb": "^1.0.17"
- }
- },
- "node_modules/caw": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/caw/-/caw-2.0.1.tgz",
- "integrity": "sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "get-proxy": "^2.0.0",
- "isurl": "^1.0.0-alpha5",
- "tunnel-agent": "^0.6.0",
- "url-to-options": "^1.0.1"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dependencies": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/chalk/node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/char-regex": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz",
- "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==",
- "dev": true,
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/chart.js": {
- "version": "2.9.4",
- "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-2.9.4.tgz",
- "integrity": "sha512-B07aAzxcrikjAPyV+01j7BmOpxtQETxTSlQ26BEYJ+3iUkbNKaOJ/nDbT6JjyqYxseM0ON12COHYdU2cTIjC7A==",
- "dependencies": {
- "chartjs-color": "^2.1.0",
- "moment": "^2.10.2"
- }
- },
- "node_modules/chartjs-color": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/chartjs-color/-/chartjs-color-2.4.1.tgz",
- "integrity": "sha512-haqOg1+Yebys/Ts/9bLo/BqUcONQOdr/hoEr2LLTRl6C5LXctUdHxsCYfvQVg5JIxITrfCNUDr4ntqmQk9+/0w==",
- "dependencies": {
- "chartjs-color-string": "^0.6.0",
- "color-convert": "^1.9.3"
- }
- },
- "node_modules/chartjs-color-string": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/chartjs-color-string/-/chartjs-color-string-0.6.0.tgz",
- "integrity": "sha512-TIB5OKn1hPJvO7JcteW4WY/63v6KwEdt6udfnDE9iCAZgy+V4SrbSxoIbTw/xkUIapjEI4ExGtD0+6D3KyFd7A==",
- "dependencies": {
- "color-name": "^1.0.0"
- }
- },
- "node_modules/cheerio": {
- "version": "1.0.0-rc.12",
- "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz",
- "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==",
- "dev": true,
- "dependencies": {
- "cheerio-select": "^2.1.0",
- "dom-serializer": "^2.0.0",
- "domhandler": "^5.0.3",
- "domutils": "^3.0.1",
- "htmlparser2": "^8.0.1",
- "parse5": "^7.0.0",
- "parse5-htmlparser2-tree-adapter": "^7.0.0"
- },
- "engines": {
- "node": ">= 6"
- },
- "funding": {
- "url": "https://github.com/cheeriojs/cheerio?sponsor=1"
- }
- },
- "node_modules/cheerio-select": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz",
- "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==",
- "dev": true,
- "dependencies": {
- "boolbase": "^1.0.0",
- "css-select": "^5.1.0",
- "css-what": "^6.1.0",
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.3",
- "domutils": "^3.0.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/fb55"
- }
- },
- "node_modules/chokidar": {
- "version": "3.5.3",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
- "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
- "funding": [
- {
- "type": "individual",
- "url": "https://paulmillr.com/funding/"
- }
- ],
- "dependencies": {
- "anymatch": "~3.1.2",
- "braces": "~3.0.2",
- "glob-parent": "~5.1.2",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.6.0"
- },
- "engines": {
- "node": ">= 8.10.0"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.2"
- }
- },
- "node_modules/chownr": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
- "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/chrome-trace-event": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
- "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==",
- "dev": true,
- "engines": {
- "node": ">=6.0"
- }
- },
- "node_modules/chromium-pickle-js": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz",
- "integrity": "sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw=="
- },
- "node_modules/ci-info": {
- "version": "3.8.0",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz",
- "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/sibiraj-s"
- }
- ],
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/cjs-module-lexer": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz",
- "integrity": "sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==",
- "dev": true
- },
- "node_modules/class-utils": {
- "version": "0.3.6",
- "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
- "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
- "dev": true,
- "dependencies": {
- "arr-union": "^3.1.0",
- "define-property": "^0.2.5",
- "isobject": "^3.0.0",
- "static-extend": "^0.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-utils/node_modules/define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
- "dev": true,
- "dependencies": {
- "is-descriptor": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-utils/node_modules/is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-utils/node_modules/is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-utils/node_modules/is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dev": true,
- "dependencies": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-utils/node_modules/kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/classcat": {
- "version": "5.0.4",
- "resolved": "https://registry.npmjs.org/classcat/-/classcat-5.0.4.tgz",
- "integrity": "sha512-sbpkOw6z413p+HDGcBENe498WM9woqWHiJxCq7nvmxe9WmrUmqfAcxpIwAiMtM5Q3AhYkzXcNQHqsWq0mND51g=="
- },
- "node_modules/clean-css": {
- "version": "5.3.2",
- "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz",
- "integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==",
- "dev": true,
- "dependencies": {
- "source-map": "~0.6.0"
- },
- "engines": {
- "node": ">= 10.0"
- }
- },
- "node_modules/clean-css/node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/clean-stack": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
- "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
- "optional": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/cli-truncate": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz",
- "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "slice-ansi": "^3.0.0",
- "string-width": "^4.2.0"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/cliui": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
- "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
- "dependencies": {
- "string-width": "^3.1.0",
- "strip-ansi": "^5.2.0",
- "wrap-ansi": "^5.1.0"
- }
- },
- "node_modules/cliui/node_modules/ansi-regex": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
- "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/cliui/node_modules/emoji-regex": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
- "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA=="
- },
- "node_modules/cliui/node_modules/is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/cliui/node_modules/string-width": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
- "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
- "dependencies": {
- "emoji-regex": "^7.0.1",
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^5.1.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/cliui/node_modules/strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
- "dependencies": {
- "ansi-regex": "^4.1.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/clone-deep": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
- "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
- "dev": true,
- "dependencies": {
- "is-plain-object": "^2.0.4",
- "kind-of": "^6.0.2",
- "shallow-clone": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/clone-response": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz",
- "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==",
- "dependencies": {
- "mimic-response": "^1.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/clsx": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz",
- "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/co": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
- "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==",
- "dev": true,
- "engines": {
- "iojs": ">= 1.0.0",
- "node": ">= 0.12.0"
- }
- },
- "node_modules/coa": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz",
- "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "@types/q": "^1.5.1",
- "chalk": "^2.4.1",
- "q": "^1.1.2"
- },
- "engines": {
- "node": ">= 4.0"
- }
- },
- "node_modules/codemirror": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-6.0.1.tgz",
- "integrity": "sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==",
- "dependencies": {
- "@codemirror/autocomplete": "^6.0.0",
- "@codemirror/commands": "^6.0.0",
- "@codemirror/language": "^6.0.0",
- "@codemirror/lint": "^6.0.0",
- "@codemirror/search": "^6.0.0",
- "@codemirror/state": "^6.0.0",
- "@codemirror/view": "^6.0.0"
- }
- },
- "node_modules/collect-v8-coverage": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz",
- "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==",
- "dev": true
- },
- "node_modules/collection-visit": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
- "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==",
- "dev": true,
- "dependencies": {
- "map-visit": "^1.0.0",
- "object-visit": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dependencies": {
- "color-name": "1.1.3"
- }
- },
- "node_modules/color-convert/node_modules/color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
- },
- "node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
- },
- "node_modules/color-support": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
- "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
- "bin": {
- "color-support": "bin.js"
- }
- },
- "node_modules/colorette": {
- "version": "2.0.20",
- "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz",
- "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==",
- "dev": true
- },
- "node_modules/colors": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz",
- "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==",
- "dev": true,
- "engines": {
- "node": ">=0.1.90"
- }
- },
- "node_modules/combined-stream": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "dev": true,
- "dependencies": {
- "delayed-stream": "~1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/commander": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz",
- "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==",
- "dev": true,
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/commondir": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
- "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==",
- "dev": true
- },
- "node_modules/compare-version": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz",
- "integrity": "sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/component-emitter": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
- "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
- "dev": true
- },
- "node_modules/compressible": {
- "version": "2.0.18",
- "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
- "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
- "dev": true,
- "dependencies": {
- "mime-db": ">= 1.43.0 < 2"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/compression": {
- "version": "1.7.4",
- "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz",
- "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==",
- "dev": true,
- "dependencies": {
- "accepts": "~1.3.5",
- "bytes": "3.0.0",
- "compressible": "~2.0.16",
- "debug": "2.6.9",
- "on-headers": "~1.0.2",
- "safe-buffer": "5.1.2",
- "vary": "~1.1.2"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/compression/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/compression/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "dev": true
- },
- "node_modules/compression/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "node_modules/concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
- },
- "node_modules/concat-stream": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
- "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
- "engines": [
- "node >= 0.8"
- ],
- "dependencies": {
- "buffer-from": "^1.0.0",
- "inherits": "^2.0.3",
- "readable-stream": "^2.2.2",
- "typedarray": "^0.0.6"
- }
- },
- "node_modules/concurrently": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-5.3.0.tgz",
- "integrity": "sha512-8MhqOB6PWlBfA2vJ8a0bSFKATOdWlHiQlk11IfmQBPaHVP8oP2gsh2MObE6UR3hqDHqvaIvLTyceNW6obVuFHQ==",
- "dependencies": {
- "chalk": "^2.4.2",
- "date-fns": "^2.0.1",
- "lodash": "^4.17.15",
- "read-pkg": "^4.0.1",
- "rxjs": "^6.5.2",
- "spawn-command": "^0.0.2-1",
- "supports-color": "^6.1.0",
- "tree-kill": "^1.2.2",
- "yargs": "^13.3.0"
- },
- "bin": {
- "concurrently": "bin/concurrently.js"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/concurrently/node_modules/supports-color": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
- "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/conf": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/conf/-/conf-7.1.2.tgz",
- "integrity": "sha512-r8/HEoWPFn4CztjhMJaWNAe5n+gPUCSaJ0oufbqDLFKsA1V8JjAG7G+p0pgoDFAws9Bpk2VtVLLXqOBA7WxLeg==",
- "dependencies": {
- "ajv": "^6.12.2",
- "atomically": "^1.3.1",
- "debounce-fn": "^4.0.0",
- "dot-prop": "^5.2.0",
- "env-paths": "^2.2.0",
- "json-schema-typed": "^7.0.3",
- "make-dir": "^3.1.0",
- "onetime": "^5.1.0",
- "pkg-up": "^3.1.0",
- "semver": "^7.3.2"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/conf/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/conf/node_modules/semver": {
- "version": "7.5.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz",
- "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/conf/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- },
- "node_modules/config-chain": {
- "version": "1.1.13",
- "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz",
- "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==",
- "optional": true,
- "dependencies": {
- "ini": "^1.3.4",
- "proto-list": "~1.2.1"
- }
- },
- "node_modules/confusing-browser-globals": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz",
- "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==",
- "dev": true
- },
- "node_modules/connect-history-api-fallback": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz",
- "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==",
- "dev": true,
- "engines": {
- "node": ">=0.8"
- }
- },
- "node_modules/console-control-strings": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
- "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ=="
- },
- "node_modules/content-disposition": {
- "version": "0.5.4",
- "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
- "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "5.2.1"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/content-type": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
- "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
- "dev": true,
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/convert-source-map": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
- "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A=="
- },
- "node_modules/cookie": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
- "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
- "dev": true,
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/cookie-signature": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
- "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
- "dev": true
- },
- "node_modules/copy-descriptor": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
- "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/core-js-compat": {
- "version": "3.31.0",
- "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.31.0.tgz",
- "integrity": "sha512-hM7YCu1cU6Opx7MXNu0NuumM0ezNeAeRKadixyiQELWY3vT3De9S4J5ZBMraWV2vZnrE1Cirl0GtFtDtMUXzPw==",
- "dev": true,
- "dependencies": {
- "browserslist": "^4.21.5"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/core-js"
- }
- },
- "node_modules/core-util-is": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
- "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
- },
- "node_modules/cosmiconfig": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz",
- "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==",
- "dependencies": {
- "@types/parse-json": "^4.0.0",
- "import-fresh": "^3.2.1",
- "parse-json": "^5.0.0",
- "path-type": "^4.0.0",
- "yaml": "^1.10.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/crc": {
- "version": "3.8.0",
- "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz",
- "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "buffer": "^5.1.0"
- }
- },
- "node_modules/create-require": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
- "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
- "dev": true
- },
- "node_modules/crelt": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz",
- "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g=="
- },
- "node_modules/cross-env": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz",
- "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==",
- "dependencies": {
- "cross-spawn": "^7.0.1"
- },
- "bin": {
- "cross-env": "src/bin/cross-env.js",
- "cross-env-shell": "src/bin/cross-env-shell.js"
- },
- "engines": {
- "node": ">=10.14",
- "npm": ">=6",
- "yarn": ">=1"
- }
- },
- "node_modules/cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
- "dependencies": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/cross-zip": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/cross-zip/-/cross-zip-3.1.0.tgz",
- "integrity": "sha512-aX02l0SD3KE27pMl69gkxDdDM5D3u9Ic4Je+2b1B2fP0dWnlWWY6ns2Vk5DEgCXJRhL3GasSpicNQRNbDkq0+w==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "dependencies": {
- "rimraf": "^3.0.0"
- }
- },
- "node_modules/csp-html-webpack-plugin": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/csp-html-webpack-plugin/-/csp-html-webpack-plugin-5.1.0.tgz",
- "integrity": "sha512-6l/s6hACE+UA01PLReNKZfgLZWM98f7ewWmE79maDWIbEXiPcIWQGB3LQR/Zw+hPBj4XPZZ5zNrrO+aygqaLaQ==",
- "dev": true,
- "dependencies": {
- "cheerio": "^1.0.0-rc.5",
- "lodash": "^4.17.20"
- },
- "peerDependencies": {
- "html-webpack-plugin": "^4 || ^5",
- "webpack": "^4 || ^5"
- }
- },
- "node_modules/css-color-keywords": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz",
- "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/css-loader": {
- "version": "5.2.7",
- "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-5.2.7.tgz",
- "integrity": "sha512-Q7mOvpBNBG7YrVGMxRxcBJZFL75o+cH2abNASdibkj/fffYD8qWbInZrD0S9ccI6vZclF3DsHE7njGlLtaHbhg==",
- "dev": true,
- "dependencies": {
- "icss-utils": "^5.1.0",
- "loader-utils": "^2.0.0",
- "postcss": "^8.2.15",
- "postcss-modules-extract-imports": "^3.0.0",
- "postcss-modules-local-by-default": "^4.0.0",
- "postcss-modules-scope": "^3.0.0",
- "postcss-modules-values": "^4.0.0",
- "postcss-value-parser": "^4.1.0",
- "schema-utils": "^3.0.0",
- "semver": "^7.3.5"
- },
- "engines": {
- "node": ">= 10.13.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
- },
- "peerDependencies": {
- "webpack": "^4.27.0 || ^5.0.0"
- }
- },
- "node_modules/css-loader/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/css-loader/node_modules/schema-utils": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz",
- "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==",
- "dev": true,
- "dependencies": {
- "@types/json-schema": "^7.0.8",
- "ajv": "^6.12.5",
- "ajv-keywords": "^3.5.2"
- },
- "engines": {
- "node": ">= 10.13.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
- }
- },
- "node_modules/css-loader/node_modules/semver": {
- "version": "7.5.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz",
- "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==",
- "dev": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/css-loader/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
- "node_modules/css-select": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz",
- "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==",
- "dev": true,
- "dependencies": {
- "boolbase": "^1.0.0",
- "css-what": "^6.1.0",
- "domhandler": "^5.0.2",
- "domutils": "^3.0.1",
- "nth-check": "^2.0.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/fb55"
- }
- },
- "node_modules/css-select-base-adapter": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz",
- "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==",
- "dev": true,
- "optional": true
- },
- "node_modules/css-to-react-native": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz",
- "integrity": "sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==",
- "dependencies": {
- "camelize": "^1.0.0",
- "css-color-keywords": "^1.0.0",
- "postcss-value-parser": "^4.0.2"
- }
- },
- "node_modules/css-tree": {
- "version": "1.0.0-alpha.37",
- "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz",
- "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "mdn-data": "2.0.4",
- "source-map": "^0.6.1"
- },
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/css-tree/node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
- "optional": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/css-what": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
- "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
- "dev": true,
- "engines": {
- "node": ">= 6"
- },
- "funding": {
- "url": "https://github.com/sponsors/fb55"
- }
- },
- "node_modules/cssesc": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
- "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
- "dev": true,
- "bin": {
- "cssesc": "bin/cssesc"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/csso": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz",
- "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "css-tree": "^1.1.2"
- },
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/csso/node_modules/css-tree": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz",
- "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "mdn-data": "2.0.14",
- "source-map": "^0.6.1"
- },
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/csso/node_modules/mdn-data": {
- "version": "2.0.14",
- "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz",
- "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==",
- "dev": true,
- "optional": true
- },
- "node_modules/csso/node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
- "optional": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/cssom": {
- "version": "0.4.4",
- "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz",
- "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==",
- "dev": true
- },
- "node_modules/cssstyle": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz",
- "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==",
- "dev": true,
- "dependencies": {
- "cssom": "~0.3.6"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/cssstyle/node_modules/cssom": {
- "version": "0.3.8",
- "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz",
- "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==",
- "dev": true
- },
- "node_modules/csstype": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
- "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
- },
- "node_modules/cuint": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz",
- "integrity": "sha512-d4ZVpCW31eWwCMe1YT3ur7mUDnTXbgwyzaL320DrcRT45rfjYxkt5QWLrmOJ+/UEAI2+fQgKe/fCjR8l4TpRgw=="
- },
- "node_modules/custom-event-polyfill": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/custom-event-polyfill/-/custom-event-polyfill-1.0.7.tgz",
- "integrity": "sha512-TDDkd5DkaZxZFM8p+1I3yAlvM3rSr1wbrOliG4yJiwinMZN8z/iGL7BTlDkrJcYTmgUSb4ywVCc3ZaUtOtC76w=="
- },
- "node_modules/cwebp-bin": {
- "version": "6.1.2",
- "resolved": "https://registry.npmjs.org/cwebp-bin/-/cwebp-bin-6.1.2.tgz",
- "integrity": "sha512-NLEZ/BVAl9g426hwUX/qrQ7b/EfQH7BS1tr+CzPo2EgDQbcdzmUVE+fIfsi64lsL638lWgzTEViMAL4pxV1GOg==",
- "dev": true,
- "hasInstallScript": true,
- "optional": true,
- "dependencies": {
- "bin-build": "^3.0.0",
- "bin-wrapper": "^4.0.1"
- },
- "bin": {
- "cwebp": "cli.js"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/imagemin/cwebp-bin?sponsor=1"
- }
- },
- "node_modules/d3": {
- "version": "7.8.5",
- "resolved": "https://registry.npmjs.org/d3/-/d3-7.8.5.tgz",
- "integrity": "sha512-JgoahDG51ncUfJu6wX/1vWQEqOflgXyl4MaHqlcSruTez7yhaRKR9i8VjjcQGeS2en/jnFivXuaIMnseMMt0XA==",
- "dependencies": {
- "d3-array": "3",
- "d3-axis": "3",
- "d3-brush": "3",
- "d3-chord": "3",
- "d3-color": "3",
- "d3-contour": "4",
- "d3-delaunay": "6",
- "d3-dispatch": "3",
- "d3-drag": "3",
- "d3-dsv": "3",
- "d3-ease": "3",
- "d3-fetch": "3",
- "d3-force": "3",
- "d3-format": "3",
- "d3-geo": "3",
- "d3-hierarchy": "3",
- "d3-interpolate": "3",
- "d3-path": "3",
- "d3-polygon": "3",
- "d3-quadtree": "3",
- "d3-random": "3",
- "d3-scale": "4",
- "d3-scale-chromatic": "3",
- "d3-selection": "3",
- "d3-shape": "3",
- "d3-time": "3",
- "d3-time-format": "4",
- "d3-timer": "3",
- "d3-transition": "3",
- "d3-zoom": "3"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-array": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz",
- "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==",
- "dependencies": {
- "internmap": "1 - 2"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-axis": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz",
- "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-binarytree": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/d3-binarytree/-/d3-binarytree-1.0.2.tgz",
- "integrity": "sha512-cElUNH+sHu95L04m92pG73t2MEJXKu+GeKUN1TJkFsu93E5W8E9Sc3kHEGJKgenGvj19m6upSn2EunvMgMD2Yw=="
- },
- "node_modules/d3-brush": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz",
- "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==",
- "dependencies": {
- "d3-dispatch": "1 - 3",
- "d3-drag": "2 - 3",
- "d3-interpolate": "1 - 3",
- "d3-selection": "3",
- "d3-transition": "3"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-chord": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz",
- "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==",
- "dependencies": {
- "d3-path": "1 - 3"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-color": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz",
- "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-contour": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz",
- "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==",
- "dependencies": {
- "d3-array": "^3.2.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-delaunay": {
- "version": "6.0.4",
- "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz",
- "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==",
- "dependencies": {
- "delaunator": "5"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-dispatch": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz",
- "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-drag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz",
- "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==",
- "dependencies": {
- "d3-dispatch": "1 - 3",
- "d3-selection": "3"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-dsv": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz",
- "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==",
- "dependencies": {
- "commander": "7",
- "iconv-lite": "0.6",
- "rw": "1"
- },
- "bin": {
- "csv2json": "bin/dsv2json.js",
- "csv2tsv": "bin/dsv2dsv.js",
- "dsv2dsv": "bin/dsv2dsv.js",
- "dsv2json": "bin/dsv2json.js",
- "json2csv": "bin/json2dsv.js",
- "json2dsv": "bin/json2dsv.js",
- "json2tsv": "bin/json2dsv.js",
- "tsv2csv": "bin/dsv2dsv.js",
- "tsv2json": "bin/dsv2json.js"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-dsv/node_modules/commander": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
- "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/d3-ease": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz",
- "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-fetch": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz",
- "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==",
- "dependencies": {
- "d3-dsv": "1 - 3"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-force": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz",
- "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==",
- "dependencies": {
- "d3-dispatch": "1 - 3",
- "d3-quadtree": "1 - 3",
- "d3-timer": "1 - 3"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-force-3d": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/d3-force-3d/-/d3-force-3d-3.0.5.tgz",
- "integrity": "sha512-tdwhAhoTYZY/a6eo9nR7HP3xSW/C6XvJTbeRpR92nlPzH6OiE+4MliN9feuSFd0tPtEUo+191qOhCTWx3NYifg==",
- "dependencies": {
- "d3-binarytree": "1",
- "d3-dispatch": "1 - 3",
- "d3-octree": "1",
- "d3-quadtree": "1 - 3",
- "d3-timer": "1 - 3"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-format": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz",
- "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-geo": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.0.tgz",
- "integrity": "sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA==",
- "dependencies": {
- "d3-array": "2.5.0 - 3"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-hierarchy": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz",
- "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-interpolate": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz",
- "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==",
- "dependencies": {
- "d3-color": "1 - 3"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-octree": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/d3-octree/-/d3-octree-1.0.2.tgz",
- "integrity": "sha512-Qxg4oirJrNXauiuC94uKMbgxwnhdda9xRLl9ihq45srlJ4Ga3CSgqGcAL8iW7N5CIv4Oz8x3E734ulxyvHPvwA=="
- },
- "node_modules/d3-path": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz",
- "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-polygon": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz",
- "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-quadtree": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz",
- "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-random": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz",
- "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-scale": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz",
- "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==",
- "dependencies": {
- "d3-array": "2.10.0 - 3",
- "d3-format": "1 - 3",
- "d3-interpolate": "1.2.0 - 3",
- "d3-time": "2.1.1 - 3",
- "d3-time-format": "2 - 4"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-scale-chromatic": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz",
- "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==",
- "dependencies": {
- "d3-color": "1 - 3",
- "d3-interpolate": "1 - 3"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-selection": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz",
- "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-shape": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz",
- "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==",
- "dependencies": {
- "d3-path": "^3.1.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-time": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz",
- "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==",
- "dependencies": {
- "d3-array": "2 - 3"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-time-format": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz",
- "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==",
- "dependencies": {
- "d3-time": "1 - 3"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-timer": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz",
- "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-transition": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz",
- "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==",
- "dependencies": {
- "d3-color": "1 - 3",
- "d3-dispatch": "1 - 3",
- "d3-ease": "1 - 3",
- "d3-interpolate": "1 - 3",
- "d3-timer": "1 - 3"
- },
- "engines": {
- "node": ">=12"
- },
- "peerDependencies": {
- "d3-selection": "2 - 3"
- }
- },
- "node_modules/d3-zoom": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz",
- "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==",
- "dependencies": {
- "d3-dispatch": "1 - 3",
- "d3-drag": "2 - 3",
- "d3-interpolate": "1 - 3",
- "d3-selection": "2 - 3",
- "d3-transition": "2 - 3"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/dagre": {
- "version": "0.8.5",
- "resolved": "https://registry.npmjs.org/dagre/-/dagre-0.8.5.tgz",
- "integrity": "sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw==",
- "dependencies": {
- "graphlib": "^2.1.8",
- "lodash": "^4.17.15"
- }
- },
- "node_modules/damerau-levenshtein": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz",
- "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==",
- "dev": true
- },
- "node_modules/data-joint": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/data-joint/-/data-joint-1.3.1.tgz",
- "integrity": "sha512-tMK0m4OVGqiA3zkn8JmO6YAqD8UwJqIAx4AAwFl1SKTtKAqcXePuT+n2aayiX9uITtlN3DFtKKTOxJRUc2+HvQ==",
- "dependencies": {
- "index-array-by": "^1.4.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/data-urls": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz",
- "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==",
- "dev": true,
- "dependencies": {
- "abab": "^2.0.3",
- "whatwg-mimetype": "^2.3.0",
- "whatwg-url": "^8.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/date-fns": {
- "version": "2.30.0",
- "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz",
- "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==",
- "dependencies": {
- "@babel/runtime": "^7.21.0"
- },
- "engines": {
- "node": ">=0.11"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/date-fns"
- }
- },
- "node_modules/date-time": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/date-time/-/date-time-3.1.0.tgz",
- "integrity": "sha512-uqCUKXE5q1PNBXjPqvwhwJf9SwMoAHBgWJ6DcrnS5o+W2JOiIILl0JEdVD8SGujrNS02GGxgwAg2PN2zONgtjg==",
- "dependencies": {
- "time-zone": "^1.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/debounce": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz",
- "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug=="
- },
- "node_modules/debounce-fn": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/debounce-fn/-/debounce-fn-4.0.0.tgz",
- "integrity": "sha512-8pYCQiL9Xdcg0UPSD3d+0KMlOjp+KGU5EPwYddgzQ7DATsg4fuUDjQtsYLmWjnk2obnNHgV3vE2Y4jejSOJVBQ==",
- "dependencies": {
- "mimic-fn": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/debug/node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
- },
- "node_modules/decamelize": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
- "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/decimal.js": {
- "version": "10.4.3",
- "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz",
- "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==",
- "dev": true
- },
- "node_modules/decode-uri-component": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
- "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==",
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/decompress": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz",
- "integrity": "sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "decompress-tar": "^4.0.0",
- "decompress-tarbz2": "^4.0.0",
- "decompress-targz": "^4.0.0",
- "decompress-unzip": "^4.0.1",
- "graceful-fs": "^4.1.10",
- "make-dir": "^1.0.0",
- "pify": "^2.3.0",
- "strip-dirs": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/decompress-response": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
- "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==",
- "dependencies": {
- "mimic-response": "^1.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/decompress-tar": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz",
- "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "file-type": "^5.2.0",
- "is-stream": "^1.1.0",
- "tar-stream": "^1.5.2"
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
},
"engines": {
- "node": ">=4"
+ "node": ">= 8.10.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
}
},
- "node_modules/decompress-tar/node_modules/file-type": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz",
- "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==",
- "dev": true,
- "optional": true,
+ "node_modules/chownr": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
+ "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
"engines": {
- "node": ">=4"
+ "node": ">=10"
}
},
- "node_modules/decompress-tarbz2": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz",
- "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==",
+ "node_modules/chrome-trace-event": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
+ "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==",
"dev": true,
- "optional": true,
- "dependencies": {
- "decompress-tar": "^4.1.0",
- "file-type": "^6.1.0",
- "is-stream": "^1.1.0",
- "seek-bzip": "^1.0.5",
- "unbzip2-stream": "^1.0.9"
- },
"engines": {
- "node": ">=4"
+ "node": ">=6.0"
}
},
- "node_modules/decompress-tarbz2/node_modules/file-type": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz",
- "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==",
+ "node_modules/chromium-pickle-js": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz",
+ "integrity": "sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==",
+ "dev": true
+ },
+ "node_modules/ci-info": {
+ "version": "3.8.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz",
+ "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==",
"dev": true,
- "optional": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/sibiraj-s"
+ }
+ ],
"engines": {
- "node": ">=4"
+ "node": ">=8"
}
},
- "node_modules/decompress-targz": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz",
- "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==",
+ "node_modules/cjs-module-lexer": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz",
+ "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==",
+ "dev": true
+ },
+ "node_modules/classcat": {
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/classcat/-/classcat-5.0.4.tgz",
+ "integrity": "sha512-sbpkOw6z413p+HDGcBENe498WM9woqWHiJxCq7nvmxe9WmrUmqfAcxpIwAiMtM5Q3AhYkzXcNQHqsWq0mND51g=="
+ },
+ "node_modules/clean-css": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz",
+ "integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==",
"dev": true,
- "optional": true,
"dependencies": {
- "decompress-tar": "^4.1.1",
- "file-type": "^5.2.0",
- "is-stream": "^1.1.0"
+ "source-map": "~0.6.0"
},
"engines": {
- "node": ">=4"
+ "node": ">= 10.0"
}
},
- "node_modules/decompress-targz/node_modules/file-type": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz",
- "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==",
+ "node_modules/clean-css/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true,
- "optional": true,
"engines": {
- "node": ">=4"
+ "node": ">=0.10.0"
}
},
- "node_modules/decompress-unzip": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz",
- "integrity": "sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw==",
- "dev": true,
+ "node_modules/clean-stack": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
+ "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
"optional": true,
- "dependencies": {
- "file-type": "^3.8.0",
- "get-stream": "^2.2.0",
- "pify": "^2.3.0",
- "yauzl": "^2.4.2"
- },
"engines": {
- "node": ">=4"
+ "node": ">=6"
}
},
- "node_modules/decompress-unzip/node_modules/file-type": {
- "version": "3.9.0",
- "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz",
- "integrity": "sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==",
+ "node_modules/cli-truncate": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz",
+ "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==",
"dev": true,
"optional": true,
+ "dependencies": {
+ "slice-ansi": "^3.0.0",
+ "string-width": "^4.2.0"
+ },
"engines": {
- "node": ">=0.10.0"
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/decompress-unzip/node_modules/get-stream": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz",
- "integrity": "sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==",
+ "node_modules/cliui": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
"dev": true,
- "optional": true,
"dependencies": {
- "object-assign": "^4.0.1",
- "pinkie-promise": "^2.0.0"
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=12"
}
},
- "node_modules/decompress-unzip/node_modules/pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+ "node_modules/clone-deep": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
+ "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
"dev": true,
- "optional": true,
+ "dependencies": {
+ "is-plain-object": "^2.0.4",
+ "kind-of": "^6.0.2",
+ "shallow-clone": "^3.0.0"
+ },
"engines": {
- "node": ">=0.10.0"
+ "node": ">=6"
}
},
- "node_modules/decompress/node_modules/make-dir": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
- "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
- "dev": true,
- "optional": true,
+ "node_modules/clone-response": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz",
+ "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==",
"dependencies": {
- "pify": "^3.0.0"
+ "mimic-response": "^1.0.0"
},
- "engines": {
- "node": ">=4"
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/decompress/node_modules/make-dir/node_modules/pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
- "dev": true,
- "optional": true,
+ "node_modules/clsx": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz",
+ "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==",
"engines": {
- "node": ">=4"
+ "node": ">=6"
}
},
- "node_modules/decompress/node_modules/pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+ "node_modules/co": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+ "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==",
"dev": true,
- "optional": true,
"engines": {
- "node": ">=0.10.0"
+ "iojs": ">= 1.0.0",
+ "node": ">= 0.12.0"
}
},
- "node_modules/deep-assign": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/deep-assign/-/deep-assign-2.0.0.tgz",
- "integrity": "sha512-2QhG3Kxulu4XIF3WL5C5x0sc/S17JLgm1SfvDfIRsR/5m7ZGmcejII7fZ2RyWhN0UWIJm0TNM/eKow6LAn3evQ==",
+ "node_modules/codemirror": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-6.0.1.tgz",
+ "integrity": "sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==",
"dependencies": {
- "is-obj": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
+ "@codemirror/autocomplete": "^6.0.0",
+ "@codemirror/commands": "^6.0.0",
+ "@codemirror/language": "^6.0.0",
+ "@codemirror/lint": "^6.0.0",
+ "@codemirror/search": "^6.0.0",
+ "@codemirror/state": "^6.0.0",
+ "@codemirror/view": "^6.0.0"
}
},
- "node_modules/deep-assign/node_modules/is-obj": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
- "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==",
- "engines": {
- "node": ">=0.10.0"
+ "node_modules/collect-v8-coverage": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz",
+ "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==",
+ "dev": true
+ },
+ "node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dependencies": {
+ "color-name": "1.1.3"
}
},
- "node_modules/deep-equal": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz",
- "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==",
+ "node_modules/color-convert/node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
+ },
+ "node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/color-support": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
+ "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
+ "bin": {
+ "color-support": "bin.js"
+ }
+ },
+ "node_modules/colorette": {
+ "version": "2.0.20",
+ "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz",
+ "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==",
+ "dev": true
+ },
+ "node_modules/combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
"dev": true,
"dependencies": {
- "is-arguments": "^1.0.4",
- "is-date-object": "^1.0.1",
- "is-regex": "^1.0.4",
- "object-is": "^1.0.1",
- "object-keys": "^1.1.1",
- "regexp.prototype.flags": "^1.2.0"
+ "delayed-stream": "~1.0.0"
},
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "engines": {
+ "node": ">= 0.8"
}
},
- "node_modules/deep-is": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
- "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "node_modules/commander": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
+ "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/common-path-prefix": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz",
+ "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==",
"dev": true
},
- "node_modules/deepmerge": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
- "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
+ "node_modules/compare-version": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz",
+ "integrity": "sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/compressible": {
+ "version": "2.0.18",
+ "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
+ "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
"dev": true,
+ "dependencies": {
+ "mime-db": ">= 1.43.0 < 2"
+ },
"engines": {
- "node": ">=0.10.0"
+ "node": ">= 0.6"
}
},
- "node_modules/default-gateway": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz",
- "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==",
+ "node_modules/compression": {
+ "version": "1.7.4",
+ "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz",
+ "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==",
"dev": true,
"dependencies": {
- "execa": "^1.0.0",
- "ip-regex": "^2.1.0"
+ "accepts": "~1.3.5",
+ "bytes": "3.0.0",
+ "compressible": "~2.0.16",
+ "debug": "2.6.9",
+ "on-headers": "~1.0.2",
+ "safe-buffer": "5.1.2",
+ "vary": "~1.1.2"
},
"engines": {
- "node": ">=6"
+ "node": ">= 0.8.0"
}
},
- "node_modules/default-shell": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/default-shell/-/default-shell-1.0.1.tgz",
- "integrity": "sha512-/Os8tTMPSriNHCsVj3VLjMZblIl1sIg8EXz3qg7C5K+y9calfTA/qzlfPvCQ+LEgLWmtZ9wCnzE1w+S6TPPFyQ==",
- "engines": {
- "node": ">=4"
+ "node_modules/compression/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.0.0"
}
},
- "node_modules/defer-to-connect": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz",
- "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ=="
+ "node_modules/compression/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
},
- "node_modules/define-properties": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz",
- "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==",
- "devOptional": true,
+ "node_modules/compression/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
+ },
+ "node_modules/concurrently": {
+ "version": "8.2.1",
+ "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-8.2.1.tgz",
+ "integrity": "sha512-nVraf3aXOpIcNud5pB9M82p1tynmZkrSGQ1p6X/VY8cJ+2LMVqAgXsJxYYefACSHbTYlm92O1xuhdGTjwoEvbQ==",
+ "dev": true,
"dependencies": {
- "has-property-descriptors": "^1.0.0",
- "object-keys": "^1.1.1"
+ "chalk": "^4.1.2",
+ "date-fns": "^2.30.0",
+ "lodash": "^4.17.21",
+ "rxjs": "^7.8.1",
+ "shell-quote": "^1.8.1",
+ "spawn-command": "0.0.2",
+ "supports-color": "^8.1.1",
+ "tree-kill": "^1.2.2",
+ "yargs": "^17.7.2"
+ },
+ "bin": {
+ "conc": "dist/bin/concurrently.js",
+ "concurrently": "dist/bin/concurrently.js"
},
"engines": {
- "node": ">= 0.4"
+ "node": "^14.13.0 || >=16.0.0"
},
"funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "url": "https://github.com/open-cli-tools/concurrently?sponsor=1"
}
},
- "node_modules/define-property": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
- "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+ "node_modules/concurrently/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"dependencies": {
- "is-descriptor": "^1.0.2",
- "isobject": "^3.0.1"
+ "color-convert": "^2.0.1"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/del": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz",
- "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==",
+ "node_modules/concurrently/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
"dependencies": {
- "@types/glob": "^7.1.1",
- "globby": "^6.1.0",
- "is-path-cwd": "^2.0.0",
- "is-path-in-cwd": "^2.0.0",
- "p-map": "^2.0.0",
- "pify": "^4.0.1",
- "rimraf": "^2.6.3"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
},
"engines": {
- "node": ">=6"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/del/node_modules/array-union": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
- "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==",
+ "node_modules/concurrently/node_modules/chalk/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"dependencies": {
- "array-uniq": "^1.0.1"
+ "has-flag": "^4.0.0"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=8"
}
},
- "node_modules/del/node_modules/globby": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
- "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==",
+ "node_modules/concurrently/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"dependencies": {
- "array-union": "^1.0.1",
- "glob": "^7.0.3",
- "object-assign": "^4.0.1",
- "pify": "^2.0.0",
- "pinkie-promise": "^2.0.0"
+ "color-name": "~1.1.4"
},
"engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/del/node_modules/globby/node_modules/pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
+ "node": ">=7.0.0"
}
},
- "node_modules/del/node_modules/p-map": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz",
- "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==",
+ "node_modules/concurrently/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
"engines": {
- "node": ">=6"
+ "node": ">=8"
}
},
- "node_modules/del/node_modules/rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+ "node_modules/concurrently/node_modules/supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
"dev": true,
"dependencies": {
- "glob": "^7.1.3"
+ "has-flag": "^4.0.0"
},
- "bin": {
- "rimraf": "bin.js"
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
}
},
- "node_modules/delaunator": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz",
- "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==",
+ "node_modules/config-file-ts": {
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/config-file-ts/-/config-file-ts-0.2.4.tgz",
+ "integrity": "sha512-cKSW0BfrSaAUnxpgvpXPLaaW/umg4bqg4k3GO1JqlRfpx+d5W0GDXznCMkWotJQek5Mmz1MJVChQnz3IVaeMZQ==",
+ "dev": true,
"dependencies": {
- "robust-predicates": "^3.0.0"
+ "glob": "^7.1.6",
+ "typescript": "^4.0.2"
}
},
- "node_modules/delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "node_modules/config-file-ts/node_modules/typescript": {
+ "version": "4.9.5",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
+ "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
"dev": true,
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
"engines": {
- "node": ">=0.4.0"
+ "node": ">=4.2.0"
}
},
- "node_modules/delegates": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
- "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ=="
- },
- "node_modules/denque": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz",
- "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==",
- "engines": {
- "node": ">=0.10"
- }
+ "node_modules/confusing-browser-globals": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz",
+ "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==",
+ "dev": true
},
- "node_modules/depd": {
+ "node_modules/connect-history-api-fallback": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
- "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
- "devOptional": true,
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/dequal": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
- "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/destroy": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
- "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
+ "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz",
+ "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==",
"dev": true,
"engines": {
- "node": ">= 0.8",
- "npm": "1.2.8000 || >= 1.4.16"
+ "node": ">=0.8"
}
},
- "node_modules/detect-libc": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz",
- "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==",
- "engines": {
- "node": ">=8"
- }
+ "node_modules/console-control-strings": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
+ "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ=="
},
- "node_modules/detect-newline": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz",
- "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==",
+ "node_modules/content-disposition": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
+ "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
"dev": true,
+ "dependencies": {
+ "safe-buffer": "5.2.1"
+ },
"engines": {
- "node": ">=8"
+ "node": ">= 0.6"
}
},
- "node_modules/detect-node": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz",
- "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==",
- "devOptional": true
- },
- "node_modules/diff": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
- "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
+ "node_modules/content-type": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
+ "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
"dev": true,
"engines": {
- "node": ">=0.3.1"
+ "node": ">= 0.6"
}
},
- "node_modules/diff-sequences": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz",
- "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==",
+ "node_modules/convert-source-map": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
+ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A=="
+ },
+ "node_modules/cookie": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
+ "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
"dev": true,
"engines": {
- "node": ">= 10.14.2"
+ "node": ">= 0.6"
}
},
- "node_modules/dir-compare": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-2.4.0.tgz",
- "integrity": "sha512-l9hmu8x/rjVC9Z2zmGzkhOEowZvW7pmYws5CWHutg8u1JgvsKWMx7Q/UODeu4djLZ4FgW5besw5yvMQnBHzuCA==",
- "dev": true,
- "dependencies": {
- "buffer-equal": "1.0.0",
- "colors": "1.0.3",
- "commander": "2.9.0",
- "minimatch": "3.0.4"
- },
- "bin": {
- "dircompare": "src/cli/dircompare.js"
- }
+ "node_modules/cookie-signature": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
+ "dev": true
},
- "node_modules/dir-compare/node_modules/commander": {
- "version": "2.9.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz",
- "integrity": "sha512-bmkUukX8wAOjHdN26xj5c4ctEV22TQ7dQYhSmuckKhToXrkUn0iIaolHdIxYYqD55nhpSPA9zPQ1yP57GdXP2A==",
- "dev": true,
+ "node_modules/core-js-compat": {
+ "version": "3.32.0",
+ "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.32.0.tgz",
+ "integrity": "sha512-7a9a3D1k4UCVKnLhrgALyFcP7YCsLOQIxPd0dKjf/6GuPcgyiGP70ewWdCGrSK7evyhymi0qO4EqCmSJofDeYw==",
"dependencies": {
- "graceful-readlink": ">= 1.0.0"
+ "browserslist": "^4.21.9"
},
- "engines": {
- "node": ">= 0.6.x"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/core-js"
}
},
- "node_modules/dir-compare/node_modules/minimatch": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "node_modules/core-js-pure": {
+ "version": "3.32.0",
+ "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.32.0.tgz",
+ "integrity": "sha512-qsev1H+dTNYpDUEURRuOXMvpdtAnNEvQWS/FMJ2Vb5AY8ZP4rAPQldkE27joykZPJTe0+IVgHZYh1P5Xu1/i1g==",
"dev": true,
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
+ "hasInstallScript": true,
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/core-js"
}
},
- "node_modules/dir-glob": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
- "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
- "dev": true,
+ "node_modules/core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==",
+ "dev": true
+ },
+ "node_modules/cosmiconfig": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz",
+ "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==",
"dependencies": {
- "path-type": "^4.0.0"
+ "@types/parse-json": "^4.0.0",
+ "import-fresh": "^3.2.1",
+ "parse-json": "^5.0.0",
+ "path-type": "^4.0.0",
+ "yaml": "^1.10.0"
},
"engines": {
- "node": ">=8"
+ "node": ">=10"
}
},
- "node_modules/dmg-builder": {
- "version": "23.6.0",
- "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-23.6.0.tgz",
- "integrity": "sha512-jFZvY1JohyHarIAlTbfQOk+HnceGjjAdFjVn3n8xlDWKsYNqbO4muca6qXEZTfGXeQMG7TYim6CeS5XKSfSsGA==",
+ "node_modules/crc": {
+ "version": "3.8.0",
+ "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz",
+ "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==",
"dev": true,
+ "optional": true,
"dependencies": {
- "app-builder-lib": "23.6.0",
- "builder-util": "23.6.0",
- "builder-util-runtime": "9.1.1",
- "fs-extra": "^10.0.0",
- "iconv-lite": "^0.6.2",
- "js-yaml": "^4.1.0"
- },
- "optionalDependencies": {
- "dmg-license": "^1.0.11"
+ "buffer": "^5.1.0"
}
},
- "node_modules/dmg-builder/node_modules/fs-extra": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
- "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
+ "node_modules/create-require": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
+ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
+ "dev": true
+ },
+ "node_modules/crelt": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz",
+ "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g=="
+ },
+ "node_modules/cross-env": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz",
+ "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==",
"dev": true,
"dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
+ "cross-spawn": "^7.0.1"
+ },
+ "bin": {
+ "cross-env": "src/bin/cross-env.js",
+ "cross-env-shell": "src/bin/cross-env-shell.js"
},
"engines": {
- "node": ">=12"
+ "node": ">=10.14",
+ "npm": ">=6",
+ "yarn": ">=1"
}
},
- "node_modules/dmg-builder/node_modules/jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "node_modules/cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
"dev": true,
"dependencies": {
- "universalify": "^2.0.0"
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
},
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
+ "engines": {
+ "node": ">= 8"
}
},
- "node_modules/dmg-builder/node_modules/universalify": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
- "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
- "dev": true,
+ "node_modules/css-color-keywords": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz",
+ "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==",
"engines": {
- "node": ">= 10.0.0"
+ "node": ">=4"
}
},
- "node_modules/dmg-license": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/dmg-license/-/dmg-license-1.0.11.tgz",
- "integrity": "sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q==",
+ "node_modules/css-loader": {
+ "version": "6.8.1",
+ "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.8.1.tgz",
+ "integrity": "sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==",
"dev": true,
- "optional": true,
- "os": [
- "darwin"
- ],
"dependencies": {
- "@types/plist": "^3.0.1",
- "@types/verror": "^1.10.3",
- "ajv": "^6.10.0",
- "crc": "^3.8.0",
- "iconv-corefoundation": "^1.1.7",
- "plist": "^3.0.4",
- "smart-buffer": "^4.0.2",
- "verror": "^1.10.0"
- },
- "bin": {
- "dmg-license": "bin/dmg-license.js"
+ "icss-utils": "^5.1.0",
+ "postcss": "^8.4.21",
+ "postcss-modules-extract-imports": "^3.0.0",
+ "postcss-modules-local-by-default": "^4.0.3",
+ "postcss-modules-scope": "^3.0.0",
+ "postcss-modules-values": "^4.0.0",
+ "postcss-value-parser": "^4.2.0",
+ "semver": "^7.3.8"
},
"engines": {
- "node": ">=8"
- }
- },
- "node_modules/dns-equal": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz",
- "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==",
- "dev": true
- },
- "node_modules/dns-packet": {
- "version": "1.3.4",
- "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz",
- "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==",
- "dev": true,
- "dependencies": {
- "ip": "^1.1.0",
- "safe-buffer": "^5.0.1"
+ "node": ">= 12.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "webpack": "^5.0.0"
}
},
- "node_modules/dns-packet/node_modules/ip": {
- "version": "1.1.8",
- "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz",
- "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==",
- "dev": true
- },
- "node_modules/dns-txt": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz",
- "integrity": "sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==",
+ "node_modules/css-loader/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dev": true,
"dependencies": {
- "buffer-indexof": "^1.0.0"
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
}
},
- "node_modules/doctrine": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
- "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "node_modules/css-loader/node_modules/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
"dev": true,
"dependencies": {
- "esutils": "^2.0.2"
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
},
"engines": {
- "node": ">=6.0.0"
+ "node": ">=10"
}
},
- "node_modules/dom-accessibility-api": {
- "version": "0.5.16",
- "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz",
- "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==",
+ "node_modules/css-loader/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"dev": true
},
- "node_modules/dom-converter": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz",
- "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==",
+ "node_modules/css-select": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz",
+ "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==",
"dev": true,
"dependencies": {
- "utila": "~0.4"
+ "boolbase": "^1.0.0",
+ "css-what": "^6.1.0",
+ "domhandler": "^5.0.2",
+ "domutils": "^3.0.1",
+ "nth-check": "^2.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
}
},
- "node_modules/dom-helpers": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz",
- "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==",
+ "node_modules/css-to-react-native": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz",
+ "integrity": "sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==",
"dependencies": {
- "@babel/runtime": "^7.8.7",
- "csstype": "^3.0.2"
+ "camelize": "^1.0.0",
+ "css-color-keywords": "^1.0.0",
+ "postcss-value-parser": "^4.0.2"
}
},
- "node_modules/dom-serializer": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
- "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
+ "node_modules/css-what": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
+ "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
"dev": true,
- "dependencies": {
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.2",
- "entities": "^4.2.0"
+ "engines": {
+ "node": ">= 6"
},
"funding": {
- "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+ "url": "https://github.com/sponsors/fb55"
}
},
- "node_modules/dom-walk": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz",
- "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w=="
- },
- "node_modules/domelementtype": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
- "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/fb55"
- }
- ]
- },
- "node_modules/domexception": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz",
- "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==",
+ "node_modules/cssesc": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
"dev": true,
- "dependencies": {
- "webidl-conversions": "^5.0.0"
+ "bin": {
+ "cssesc": "bin/cssesc"
},
"engines": {
- "node": ">=8"
+ "node": ">=4"
}
},
- "node_modules/domexception/node_modules/webidl-conversions": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz",
- "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==",
+ "node_modules/cssom": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz",
+ "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==",
+ "dev": true
+ },
+ "node_modules/cssstyle": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz",
+ "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==",
"dev": true,
+ "dependencies": {
+ "cssom": "~0.3.6"
+ },
"engines": {
"node": ">=8"
}
},
- "node_modules/domhandler": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
- "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
- "dev": true,
+ "node_modules/cssstyle/node_modules/cssom": {
+ "version": "0.3.8",
+ "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz",
+ "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==",
+ "dev": true
+ },
+ "node_modules/csstype": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
+ "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
+ },
+ "node_modules/custom-event-polyfill": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/custom-event-polyfill/-/custom-event-polyfill-1.0.7.tgz",
+ "integrity": "sha512-TDDkd5DkaZxZFM8p+1I3yAlvM3rSr1wbrOliG4yJiwinMZN8z/iGL7BTlDkrJcYTmgUSb4ywVCc3ZaUtOtC76w=="
+ },
+ "node_modules/d3": {
+ "version": "7.8.5",
+ "resolved": "https://registry.npmjs.org/d3/-/d3-7.8.5.tgz",
+ "integrity": "sha512-JgoahDG51ncUfJu6wX/1vWQEqOflgXyl4MaHqlcSruTez7yhaRKR9i8VjjcQGeS2en/jnFivXuaIMnseMMt0XA==",
"dependencies": {
- "domelementtype": "^2.3.0"
+ "d3-array": "3",
+ "d3-axis": "3",
+ "d3-brush": "3",
+ "d3-chord": "3",
+ "d3-color": "3",
+ "d3-contour": "4",
+ "d3-delaunay": "6",
+ "d3-dispatch": "3",
+ "d3-drag": "3",
+ "d3-dsv": "3",
+ "d3-ease": "3",
+ "d3-fetch": "3",
+ "d3-force": "3",
+ "d3-format": "3",
+ "d3-geo": "3",
+ "d3-hierarchy": "3",
+ "d3-interpolate": "3",
+ "d3-path": "3",
+ "d3-polygon": "3",
+ "d3-quadtree": "3",
+ "d3-random": "3",
+ "d3-scale": "4",
+ "d3-scale-chromatic": "3",
+ "d3-selection": "3",
+ "d3-shape": "3",
+ "d3-time": "3",
+ "d3-time-format": "4",
+ "d3-timer": "3",
+ "d3-transition": "3",
+ "d3-zoom": "3"
},
"engines": {
- "node": ">= 4"
- },
- "funding": {
- "url": "https://github.com/fb55/domhandler?sponsor=1"
+ "node": ">=12"
}
},
- "node_modules/domutils": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz",
- "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==",
- "dev": true,
+ "node_modules/d3-array": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz",
+ "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==",
"dependencies": {
- "dom-serializer": "^2.0.0",
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.3"
+ "internmap": "1 - 2"
},
- "funding": {
- "url": "https://github.com/fb55/domutils?sponsor=1"
+ "engines": {
+ "node": ">=12"
}
},
- "node_modules/dot-case": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz",
- "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==",
- "dev": true,
- "dependencies": {
- "no-case": "^3.0.4",
- "tslib": "^2.0.3"
+ "node_modules/d3-axis": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz",
+ "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==",
+ "engines": {
+ "node": ">=12"
}
},
- "node_modules/dot-prop": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz",
- "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==",
+ "node_modules/d3-binarytree": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/d3-binarytree/-/d3-binarytree-1.0.2.tgz",
+ "integrity": "sha512-cElUNH+sHu95L04m92pG73t2MEJXKu+GeKUN1TJkFsu93E5W8E9Sc3kHEGJKgenGvj19m6upSn2EunvMgMD2Yw=="
+ },
+ "node_modules/d3-brush": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz",
+ "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==",
"dependencies": {
- "is-obj": "^2.0.0"
+ "d3-dispatch": "1 - 3",
+ "d3-drag": "2 - 3",
+ "d3-interpolate": "1 - 3",
+ "d3-selection": "3",
+ "d3-transition": "3"
},
"engines": {
- "node": ">=8"
+ "node": ">=12"
}
},
- "node_modules/dotenv": {
- "version": "9.0.2",
- "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-9.0.2.tgz",
- "integrity": "sha512-I9OvvrHp4pIARv4+x9iuewrWycX6CcZtoAu1XrzPxc5UygMJXJZYmBsynku8IkrJwgypE5DGNjDPmPRhDCptUg==",
- "dev": true,
+ "node_modules/d3-chord": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz",
+ "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==",
+ "dependencies": {
+ "d3-path": "1 - 3"
+ },
"engines": {
- "node": ">=10"
+ "node": ">=12"
}
},
- "node_modules/dotenv-expand": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz",
- "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==",
- "dev": true
+ "node_modules/d3-color": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz",
+ "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==",
+ "engines": {
+ "node": ">=12"
+ }
},
- "node_modules/download": {
- "version": "6.2.5",
- "resolved": "https://registry.npmjs.org/download/-/download-6.2.5.tgz",
- "integrity": "sha512-DpO9K1sXAST8Cpzb7kmEhogJxymyVUd5qz/vCOSyvwtp2Klj2XcDt5YUuasgxka44SxF0q5RriKIwJmQHG2AuA==",
- "dev": true,
- "optional": true,
+ "node_modules/d3-contour": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz",
+ "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==",
"dependencies": {
- "caw": "^2.0.0",
- "content-disposition": "^0.5.2",
- "decompress": "^4.0.0",
- "ext-name": "^5.0.0",
- "file-type": "5.2.0",
- "filenamify": "^2.0.0",
- "get-stream": "^3.0.0",
- "got": "^7.0.0",
- "make-dir": "^1.0.0",
- "p-event": "^1.0.0",
- "pify": "^3.0.0"
+ "d3-array": "^3.2.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=12"
}
},
- "node_modules/download/node_modules/file-type": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz",
- "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==",
- "dev": true,
- "optional": true,
+ "node_modules/d3-delaunay": {
+ "version": "6.0.4",
+ "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz",
+ "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==",
+ "dependencies": {
+ "delaunator": "5"
+ },
"engines": {
- "node": ">=4"
+ "node": ">=12"
}
},
- "node_modules/download/node_modules/get-stream": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
- "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==",
- "dev": true,
- "optional": true,
+ "node_modules/d3-dispatch": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz",
+ "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==",
"engines": {
- "node": ">=4"
+ "node": ">=12"
}
},
- "node_modules/download/node_modules/got": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz",
- "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==",
- "dev": true,
- "optional": true,
+ "node_modules/d3-drag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz",
+ "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==",
"dependencies": {
- "decompress-response": "^3.2.0",
- "duplexer3": "^0.1.4",
- "get-stream": "^3.0.0",
- "is-plain-obj": "^1.1.0",
- "is-retry-allowed": "^1.0.0",
- "is-stream": "^1.0.0",
- "isurl": "^1.0.0-alpha5",
- "lowercase-keys": "^1.0.0",
- "p-cancelable": "^0.3.0",
- "p-timeout": "^1.1.1",
- "safe-buffer": "^5.0.1",
- "timed-out": "^4.0.0",
- "url-parse-lax": "^1.0.0",
- "url-to-options": "^1.0.1"
+ "d3-dispatch": "1 - 3",
+ "d3-selection": "3"
},
"engines": {
- "node": ">=4"
+ "node": ">=12"
}
},
- "node_modules/download/node_modules/make-dir": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
- "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
- "dev": true,
- "optional": true,
+ "node_modules/d3-dsv": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz",
+ "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==",
"dependencies": {
- "pify": "^3.0.0"
+ "commander": "7",
+ "iconv-lite": "0.6",
+ "rw": "1"
+ },
+ "bin": {
+ "csv2json": "bin/dsv2json.js",
+ "csv2tsv": "bin/dsv2dsv.js",
+ "dsv2dsv": "bin/dsv2dsv.js",
+ "dsv2json": "bin/dsv2json.js",
+ "json2csv": "bin/json2dsv.js",
+ "json2dsv": "bin/json2dsv.js",
+ "json2tsv": "bin/json2dsv.js",
+ "tsv2csv": "bin/dsv2dsv.js",
+ "tsv2json": "bin/dsv2json.js"
},
"engines": {
- "node": ">=4"
+ "node": ">=12"
}
},
- "node_modules/download/node_modules/p-cancelable": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz",
- "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==",
- "dev": true,
- "optional": true,
+ "node_modules/d3-ease": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz",
+ "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==",
"engines": {
- "node": ">=4"
+ "node": ">=12"
}
},
- "node_modules/download/node_modules/pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
- "dev": true,
- "optional": true,
+ "node_modules/d3-fetch": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz",
+ "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==",
+ "dependencies": {
+ "d3-dsv": "1 - 3"
+ },
"engines": {
- "node": ">=4"
+ "node": ">=12"
}
},
- "node_modules/download/node_modules/prepend-http": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz",
- "integrity": "sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==",
- "dev": true,
- "optional": true,
+ "node_modules/d3-force": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz",
+ "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==",
+ "dependencies": {
+ "d3-dispatch": "1 - 3",
+ "d3-quadtree": "1 - 3",
+ "d3-timer": "1 - 3"
+ },
"engines": {
- "node": ">=0.10.0"
+ "node": ">=12"
}
},
- "node_modules/download/node_modules/url-parse-lax": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz",
- "integrity": "sha512-BVA4lR5PIviy2PMseNd2jbFQ+jwSwQGdJejf5ctd1rEXt0Ypd7yanUK9+lYechVlN5VaTJGsu2U/3MDDu6KgBA==",
- "dev": true,
- "optional": true,
+ "node_modules/d3-force-3d": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/d3-force-3d/-/d3-force-3d-3.0.5.tgz",
+ "integrity": "sha512-tdwhAhoTYZY/a6eo9nR7HP3xSW/C6XvJTbeRpR92nlPzH6OiE+4MliN9feuSFd0tPtEUo+191qOhCTWx3NYifg==",
"dependencies": {
- "prepend-http": "^1.0.1"
+ "d3-binarytree": "1",
+ "d3-dispatch": "1 - 3",
+ "d3-octree": "1",
+ "d3-quadtree": "1 - 3",
+ "d3-timer": "1 - 3"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=12"
}
},
- "node_modules/dtype": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/dtype/-/dtype-2.0.0.tgz",
- "integrity": "sha512-s2YVcLKdFGS0hpFqJaTwscsyt0E8nNFdmo73Ocd81xNPj4URI4rj6D60A+vFMIw7BXWlb4yRkEwfBqcZzPGiZg==",
+ "node_modules/d3-format": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz",
+ "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==",
"engines": {
- "node": ">= 0.8.0"
+ "node": ">=12"
}
},
- "node_modules/duplexer3": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz",
- "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA=="
- },
- "node_modules/ee-first": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
- "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
- "dev": true
- },
- "node_modules/ejs": {
- "version": "3.1.9",
- "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz",
- "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==",
- "dev": true,
+ "node_modules/d3-geo": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.0.tgz",
+ "integrity": "sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA==",
"dependencies": {
- "jake": "^10.8.5"
- },
- "bin": {
- "ejs": "bin/cli.js"
+ "d3-array": "2.5.0 - 3"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=12"
}
},
- "node_modules/electron": {
- "version": "11.5.0",
- "resolved": "https://registry.npmjs.org/electron/-/electron-11.5.0.tgz",
- "integrity": "sha512-WjNDd6lGpxyiNjE3LhnFCAk/D9GIj1rU3GSDealVShhkkkPR3Vh4q8ErXGDl1OAO/faomVa10KoFPUN/pLbNxg==",
- "hasInstallScript": true,
- "dependencies": {
- "@electron/get": "^1.0.1",
- "@types/node": "^12.0.12",
- "extract-zip": "^1.0.3"
- },
- "bin": {
- "electron": "cli.js"
- },
+ "node_modules/d3-hierarchy": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz",
+ "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==",
"engines": {
- "node": ">= 8.6"
+ "node": ">=12"
}
},
- "node_modules/electron-builder": {
- "version": "23.6.0",
- "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-23.6.0.tgz",
- "integrity": "sha512-y8D4zO+HXGCNxFBV/JlyhFnoQ0Y0K7/sFH+XwIbj47pqaW8S6PGYQbjoObolKBR1ddQFPt4rwp4CnwMJrW3HAw==",
- "dev": true,
+ "node_modules/d3-interpolate": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz",
+ "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==",
"dependencies": {
- "@types/yargs": "^17.0.1",
- "app-builder-lib": "23.6.0",
- "builder-util": "23.6.0",
- "builder-util-runtime": "9.1.1",
- "chalk": "^4.1.1",
- "dmg-builder": "23.6.0",
- "fs-extra": "^10.0.0",
- "is-ci": "^3.0.0",
- "lazy-val": "^1.0.5",
- "read-config-file": "6.2.0",
- "simple-update-notifier": "^1.0.7",
- "yargs": "^17.5.1"
- },
- "bin": {
- "electron-builder": "cli.js",
- "install-app-deps": "install-app-deps.js"
+ "d3-color": "1 - 3"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=12"
}
},
- "node_modules/electron-builder/node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
+ "node_modules/d3-octree": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/d3-octree/-/d3-octree-1.0.2.tgz",
+ "integrity": "sha512-Qxg4oirJrNXauiuC94uKMbgxwnhdda9xRLl9ihq45srlJ4Ga3CSgqGcAL8iW7N5CIv4Oz8x3E734ulxyvHPvwA=="
+ },
+ "node_modules/d3-path": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz",
+ "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==",
"engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ "node": ">=12"
}
},
- "node_modules/electron-builder/node_modules/chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
+ "node_modules/d3-polygon": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz",
+ "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==",
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
+ "node": ">=12"
}
},
- "node_modules/electron-builder/node_modules/cliui": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
- "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
- "dev": true,
- "dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.1",
- "wrap-ansi": "^7.0.0"
- },
+ "node_modules/d3-quadtree": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz",
+ "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==",
"engines": {
"node": ">=12"
}
},
- "node_modules/electron-builder/node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
+ "node_modules/d3-random": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz",
+ "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-scale": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz",
+ "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==",
"dependencies": {
- "color-name": "~1.1.4"
+ "d3-array": "2.10.0 - 3",
+ "d3-format": "1 - 3",
+ "d3-interpolate": "1.2.0 - 3",
+ "d3-time": "2.1.1 - 3",
+ "d3-time-format": "2 - 4"
},
"engines": {
- "node": ">=7.0.0"
+ "node": ">=12"
}
},
- "node_modules/electron-builder/node_modules/fs-extra": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
- "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
- "dev": true,
+ "node_modules/d3-scale-chromatic": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz",
+ "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==",
"dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
+ "d3-color": "1 - 3",
+ "d3-interpolate": "1 - 3"
},
"engines": {
"node": ">=12"
}
},
- "node_modules/electron-builder/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
+ "node_modules/d3-selection": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz",
+ "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==",
"engines": {
- "node": ">=8"
+ "node": ">=12"
}
},
- "node_modules/electron-builder/node_modules/jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
- "dev": true,
+ "node_modules/d3-shape": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz",
+ "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==",
"dependencies": {
- "universalify": "^2.0.0"
+ "d3-path": "^3.1.0"
},
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
+ "engines": {
+ "node": ">=12"
}
},
- "node_modules/electron-builder/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
+ "node_modules/d3-time": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz",
+ "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==",
"dependencies": {
- "has-flag": "^4.0.0"
+ "d3-array": "2 - 3"
},
"engines": {
- "node": ">=8"
- }
- },
- "node_modules/electron-builder/node_modules/universalify": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
- "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
- "dev": true,
- "engines": {
- "node": ">= 10.0.0"
+ "node": ">=12"
}
},
- "node_modules/electron-builder/node_modules/wrap-ansi": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
- "dev": true,
+ "node_modules/d3-time-format": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz",
+ "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==",
"dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
+ "d3-time": "1 - 3"
},
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ "node": ">=12"
}
},
- "node_modules/electron-builder/node_modules/y18n": {
- "version": "5.0.8",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
- "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
- "dev": true,
+ "node_modules/d3-timer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz",
+ "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==",
"engines": {
- "node": ">=10"
+ "node": ">=12"
}
- },
- "node_modules/electron-builder/node_modules/yargs": {
- "version": "17.7.2",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
- "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
- "dev": true,
- "dependencies": {
- "cliui": "^8.0.1",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.3",
- "y18n": "^5.0.5",
- "yargs-parser": "^21.1.1"
+ },
+ "node_modules/d3-transition": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz",
+ "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==",
+ "dependencies": {
+ "d3-color": "1 - 3",
+ "d3-dispatch": "1 - 3",
+ "d3-ease": "1 - 3",
+ "d3-interpolate": "1 - 3",
+ "d3-timer": "1 - 3"
},
"engines": {
"node": ">=12"
+ },
+ "peerDependencies": {
+ "d3-selection": "2 - 3"
}
},
- "node_modules/electron-builder/node_modules/yargs-parser": {
- "version": "21.1.1",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
- "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
- "dev": true,
+ "node_modules/d3-zoom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz",
+ "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==",
+ "dependencies": {
+ "d3-dispatch": "1 - 3",
+ "d3-drag": "2 - 3",
+ "d3-interpolate": "1 - 3",
+ "d3-selection": "2 - 3",
+ "d3-transition": "2 - 3"
+ },
"engines": {
"node": ">=12"
}
},
- "node_modules/electron-is-dev": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/electron-is-dev/-/electron-is-dev-1.2.0.tgz",
- "integrity": "sha512-R1oD5gMBPS7PVU8gJwH6CtT0e6VSoD0+SzSnYpNm+dBkcijgA+K7VAMHDfnRq/lkKPZArpzplTW6jfiMYosdzw=="
- },
- "node_modules/electron-notarize": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/electron-notarize/-/electron-notarize-0.2.1.tgz",
- "integrity": "sha512-oZ6/NhKeXmEKNROiFmRNfytqu3cxqC95sjooG7kBXQVEUSQkZnbiAhxVh5jXngL881G197pbwpeVPJyM7Ikmxw==",
- "deprecated": "Please use @electron/notarize moving forward. There is no API change, just a package name change",
+ "node_modules/dagre": {
+ "version": "0.8.5",
+ "resolved": "https://registry.npmjs.org/dagre/-/dagre-0.8.5.tgz",
+ "integrity": "sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw==",
"dependencies": {
- "debug": "^4.1.1",
- "fs-extra": "^8.1.0"
+ "graphlib": "^2.1.8",
+ "lodash": "^4.17.15"
}
},
- "node_modules/electron-osx-sign": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.6.0.tgz",
- "integrity": "sha512-+hiIEb2Xxk6eDKJ2FFlpofCnemCbjbT5jz+BKGpVBrRNT3kWTGs4DfNX6IzGwgi33hUcXF+kFs9JW+r6Wc1LRg==",
- "deprecated": "Please use @electron/osx-sign moving forward. Be aware the API is slightly different",
- "dev": true,
+ "node_modules/damerau-levenshtein": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz",
+ "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==",
+ "dev": true
+ },
+ "node_modules/data-joint": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/data-joint/-/data-joint-1.3.1.tgz",
+ "integrity": "sha512-tMK0m4OVGqiA3zkn8JmO6YAqD8UwJqIAx4AAwFl1SKTtKAqcXePuT+n2aayiX9uITtlN3DFtKKTOxJRUc2+HvQ==",
"dependencies": {
- "bluebird": "^3.5.0",
- "compare-version": "^0.1.2",
- "debug": "^2.6.8",
- "isbinaryfile": "^3.0.2",
- "minimist": "^1.2.0",
- "plist": "^3.0.1"
- },
- "bin": {
- "electron-osx-flat": "bin/electron-osx-flat.js",
- "electron-osx-sign": "bin/electron-osx-sign.js"
+ "index-array-by": "^1.4.0"
},
"engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/electron-osx-sign/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "dependencies": {
- "ms": "2.0.0"
+ "node": ">=12"
}
},
- "node_modules/electron-osx-sign/node_modules/isbinaryfile": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz",
- "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==",
+ "node_modules/data-urls": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz",
+ "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==",
"dev": true,
"dependencies": {
- "buffer-alloc": "^1.2.0"
+ "abab": "^2.0.6",
+ "whatwg-mimetype": "^3.0.0",
+ "whatwg-url": "^11.0.0"
},
"engines": {
- "node": ">=0.6.0"
+ "node": ">=12"
}
},
- "node_modules/electron-osx-sign/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "dev": true
- },
- "node_modules/electron-packager": {
- "version": "14.2.1",
- "resolved": "https://registry.npmjs.org/electron-packager/-/electron-packager-14.2.1.tgz",
- "integrity": "sha512-g6y3BVrAOz/iavKD+VMFbehrQcwCWuA3CZvVbmmbQuCfegGA1ytwWn0BNIDDrEdbuz31Fti7mnNHhb5L+3Wq9A==",
- "dependencies": {
- "@electron/get": "^1.6.0",
- "asar": "^2.0.1",
- "cross-zip": "^3.0.0",
- "debug": "^4.0.1",
- "electron-notarize": "^0.2.0",
- "electron-osx-sign": "^0.4.11",
- "fs-extra": "^8.1.0",
- "galactus": "^0.2.1",
- "get-package-info": "^1.0.0",
- "junk": "^3.1.0",
- "parse-author": "^2.0.0",
- "plist": "^3.0.0",
- "rcedit": "^2.0.0",
- "resolve": "^1.1.6",
- "sanitize-filename": "^1.6.0",
- "semver": "^6.0.0",
- "yargs-parser": "^16.0.0"
- },
- "bin": {
- "electron-packager": "bin/electron-packager.js"
+ "node_modules/date-fns": {
+ "version": "2.30.0",
+ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz",
+ "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/runtime": "^7.21.0"
},
"engines": {
- "node": ">= 8.0"
+ "node": ">=0.11"
},
"funding": {
- "url": "https://github.com/electron/electron-packager?sponsor=1"
+ "type": "opencollective",
+ "url": "https://opencollective.com/date-fns"
}
},
- "node_modules/electron-packager/node_modules/asar": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/asar/-/asar-2.1.0.tgz",
- "integrity": "sha512-d2Ovma+bfqNpvBzY/KU8oPY67ZworixTpkjSx0PCXnQi67c2cXmssaTxpFDUM0ttopXoGx/KRxNg/GDThYbXQA==",
- "deprecated": "Please use @electron/asar moving forward. There is no API change, just a package name change",
+ "node_modules/debounce": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz",
+ "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug=="
+ },
+ "node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"dependencies": {
- "chromium-pickle-js": "^0.2.0",
- "commander": "^2.20.0",
- "cuint": "^0.2.2",
- "glob": "^7.1.3",
- "minimatch": "^3.0.4",
- "mkdirp": "^0.5.1",
- "tmp-promise": "^1.0.5"
- },
- "bin": {
- "asar": "bin/asar.js"
+ "ms": "2.1.2"
},
"engines": {
- "node": ">=8.0"
+ "node": ">=6.0"
},
- "optionalDependencies": {
- "@types/glob": "^7.1.1"
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
}
},
- "node_modules/electron-packager/node_modules/commander": {
- "version": "2.20.3",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
- "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
+ "node_modules/debug/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
- "node_modules/electron-packager/node_modules/electron-osx-sign": {
- "version": "0.4.17",
- "resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.4.17.tgz",
- "integrity": "sha512-wUJPmZJQCs1zgdlQgeIpRcvrf7M5/COQaOV68Va1J/SgmWx5KL2otgg+fAae7luw6qz9R8Gvu/Qpe9tAOu/3xQ==",
- "deprecated": "Please use @electron/osx-sign moving forward. Be aware the API is slightly different",
- "dependencies": {
- "bluebird": "^3.5.0",
- "compare-version": "^0.1.2",
- "debug": "^2.6.8",
- "isbinaryfile": "^3.0.2",
- "minimist": "^1.2.0",
- "plist": "^3.0.1"
- },
- "bin": {
- "electron-osx-flat": "bin/electron-osx-flat.js",
- "electron-osx-sign": "bin/electron-osx-sign.js"
- },
- "engines": {
- "node": ">=4.0.0"
- }
+ "node_modules/decimal.js": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz",
+ "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==",
+ "dev": true
},
- "node_modules/electron-packager/node_modules/electron-osx-sign/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dependencies": {
- "ms": "2.0.0"
+ "node_modules/decode-uri-component": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
+ "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==",
+ "engines": {
+ "node": ">=0.10"
}
},
- "node_modules/electron-packager/node_modules/isbinaryfile": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz",
- "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==",
+ "node_modules/decompress-response": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
+ "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
"dependencies": {
- "buffer-alloc": "^1.2.0"
+ "mimic-response": "^3.1.0"
},
"engines": {
- "node": ">=0.6.0"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/electron-packager/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
- },
- "node_modules/electron-packager/node_modules/rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "dependencies": {
- "glob": "^7.1.3"
+ "node_modules/decompress-response/node_modules/mimic-response": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
+ "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
+ "engines": {
+ "node": ">=10"
},
- "bin": {
- "rimraf": "bin.js"
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/electron-packager/node_modules/tmp": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.1.0.tgz",
- "integrity": "sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw==",
- "dependencies": {
- "rimraf": "^2.6.3"
+ "node_modules/dedent": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz",
+ "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==",
+ "dev": true,
+ "peerDependencies": {
+ "babel-plugin-macros": "^3.1.0"
},
- "engines": {
- "node": ">=6"
+ "peerDependenciesMeta": {
+ "babel-plugin-macros": {
+ "optional": true
+ }
}
},
- "node_modules/electron-packager/node_modules/tmp-promise": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-1.1.0.tgz",
- "integrity": "sha512-8+Ah9aB1IRXCnIOxXZ0uFozV1nMU5xiu7hhFVUSxZ3bYu+psD4TzagCzVbexUCgNNGJnsmNDQlS4nG3mTyoNkw==",
+ "node_modules/deep-assign": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/deep-assign/-/deep-assign-2.0.0.tgz",
+ "integrity": "sha512-2QhG3Kxulu4XIF3WL5C5x0sc/S17JLgm1SfvDfIRsR/5m7ZGmcejII7fZ2RyWhN0UWIJm0TNM/eKow6LAn3evQ==",
"dependencies": {
- "bluebird": "^3.5.0",
- "tmp": "0.1.0"
+ "is-obj": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "node_modules/electron-publish": {
- "version": "23.6.0",
- "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-23.6.0.tgz",
- "integrity": "sha512-jPj3y+eIZQJF/+t5SLvsI5eS4mazCbNYqatv5JihbqOstIM13k0d1Z3vAWntvtt13Itl61SO6seicWdioOU5dg==",
- "dev": true,
- "dependencies": {
- "@types/fs-extra": "^9.0.11",
- "builder-util": "23.6.0",
- "builder-util-runtime": "9.1.1",
- "chalk": "^4.1.1",
- "fs-extra": "^10.0.0",
- "lazy-val": "^1.0.5",
- "mime": "^2.5.2"
+ "node_modules/deep-assign/node_modules/is-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
+ "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==",
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "node_modules/electron-publish/node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "node_modules/deep-equal": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.2.tgz",
+ "integrity": "sha512-xjVyBf0w5vH0I42jdAZzOKVldmPgSulmiyPRywoyq7HXC9qdgo17kxJE+rdnif5Tz6+pIrpJI8dCpMNLIGkUiA==",
"dev": true,
"dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
+ "array-buffer-byte-length": "^1.0.0",
+ "call-bind": "^1.0.2",
+ "es-get-iterator": "^1.1.3",
+ "get-intrinsic": "^1.2.1",
+ "is-arguments": "^1.1.1",
+ "is-array-buffer": "^3.0.2",
+ "is-date-object": "^1.0.5",
+ "is-regex": "^1.1.4",
+ "is-shared-array-buffer": "^1.0.2",
+ "isarray": "^2.0.5",
+ "object-is": "^1.1.5",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.4",
+ "regexp.prototype.flags": "^1.5.0",
+ "side-channel": "^1.0.4",
+ "which-boxed-primitive": "^1.0.2",
+ "which-collection": "^1.0.1",
+ "which-typed-array": "^1.1.9"
},
"funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/electron-publish/node_modules/chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true
+ },
+ "node_modules/deepmerge": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
+ "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "node_modules/electron-publish/node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "node_modules/default-gateway": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz",
+ "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==",
"dev": true,
"dependencies": {
- "color-name": "~1.1.4"
+ "execa": "^5.0.0"
},
"engines": {
- "node": ">=7.0.0"
+ "node": ">= 10"
}
},
- "node_modules/electron-publish/node_modules/fs-extra": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
- "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
+ "node_modules/default-shell": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/default-shell/-/default-shell-1.0.1.tgz",
+ "integrity": "sha512-/Os8tTMPSriNHCsVj3VLjMZblIl1sIg8EXz3qg7C5K+y9calfTA/qzlfPvCQ+LEgLWmtZ9wCnzE1w+S6TPPFyQ==",
"engines": {
- "node": ">=12"
+ "node": ">=4"
}
},
- "node_modules/electron-publish/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "node_modules/defer-to-connect": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz",
+ "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/define-lazy-prop": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
+ "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==",
"dev": true,
"engines": {
"node": ">=8"
}
},
- "node_modules/electron-publish/node_modules/jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
- "dev": true,
+ "node_modules/define-properties": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz",
+ "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==",
+ "devOptional": true,
"dependencies": {
- "universalify": "^2.0.0"
+ "has-property-descriptors": "^1.0.0",
+ "object-keys": "^1.1.1"
},
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/electron-publish/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
+ "node_modules/delaunator": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz",
+ "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==",
"dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
+ "robust-predicates": "^3.0.0"
}
},
- "node_modules/electron-publish/node_modules/universalify": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
- "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+ "node_modules/delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
"dev": true,
"engines": {
- "node": ">= 10.0.0"
+ "node": ">=0.4.0"
}
},
- "node_modules/electron-react-devtools": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/electron-react-devtools/-/electron-react-devtools-0.5.3.tgz",
- "integrity": "sha512-SxrBqoev8x8IXQZib6YB0SI2kUfE6GaRPmXXgVUJdjz541GZbxYzzif0dlrbrbVPkFJOaRJ651wQE2/aJVCmMg==",
- "dev": true
+ "node_modules/delegates": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
+ "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ=="
},
- "node_modules/electron-reloader": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/electron-reloader/-/electron-reloader-1.2.3.tgz",
- "integrity": "sha512-aDnACAzNg0QvQhzw7LYOx/nVS10mEtbuG6M0QQvNQcLnJEwFs6is+EGRCnM+KQlQ4KcTbdwnt07nd7ZjHpY4iw==",
- "dependencies": {
- "chalk": "^4.1.0",
- "chokidar": "^3.5.0",
- "date-time": "^3.1.0",
- "electron-is-dev": "^1.2.0",
- "find-up": "^5.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node_modules/denque": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz",
+ "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==",
+ "engines": {
+ "node": ">=0.10"
}
},
- "node_modules/electron-reloader/node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
+ "node_modules/depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "devOptional": true,
"engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ "node": ">= 0.8"
}
},
- "node_modules/electron-reloader/node_modules/chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
+ "node_modules/dequal": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
+ "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
+ "dev": true,
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
+ "node": ">=6"
}
},
- "node_modules/electron-reloader/node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dependencies": {
- "color-name": "~1.1.4"
- },
+ "node_modules/destroy": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
+ "dev": true,
"engines": {
- "node": ">=7.0.0"
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
}
},
- "node_modules/electron-reloader/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "node_modules/detect-libc": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz",
+ "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==",
"engines": {
"node": ">=8"
}
},
- "node_modules/electron-reloader/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
+ "node_modules/detect-newline": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz",
+ "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==",
+ "dev": true,
"engines": {
"node": ">=8"
}
},
- "node_modules/electron-store": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/electron-store/-/electron-store-6.0.1.tgz",
- "integrity": "sha512-8rdM0XEmDGsLuZM2oRABzsLX+XmD5x3rwxPMEPv0MrN9/BWanyy3ilb2v+tCrKtIZVF3MxUiZ9Bfqe8e0popKQ==",
- "dependencies": {
- "conf": "^7.1.2",
- "type-fest": "^0.16.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
+ "node_modules/detect-node": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz",
+ "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==",
+ "devOptional": true
},
- "node_modules/electron-store/node_modules/type-fest": {
- "version": "0.16.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz",
- "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==",
+ "node_modules/diff": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
+ "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
+ "dev": true,
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=0.3.1"
}
},
- "node_modules/electron-to-chromium": {
- "version": "1.4.440",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.440.tgz",
- "integrity": "sha512-r6dCgNpRhPwiWlxbHzZQ/d9swfPaEJGi8ekqRBwQYaR3WmA5VkqQfBWSDDjuJU1ntO+W9tHx8OHV/96Q8e0dVw=="
- },
- "node_modules/electron/node_modules/@types/node": {
- "version": "12.20.55",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz",
- "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ=="
- },
- "node_modules/emittery": {
- "version": "0.7.2",
- "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz",
- "integrity": "sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==",
+ "node_modules/diff-sequences": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz",
+ "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==",
"dev": true,
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/emittery?sponsor=1"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "node_modules/emoji-regex": {
- "version": "9.2.2",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
- "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
- "dev": true
- },
- "node_modules/emojis-list": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
- "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
+ "node_modules/dir-compare": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-3.3.0.tgz",
+ "integrity": "sha512-J7/et3WlGUCxjdnD3HAAzQ6nsnc0WL6DD7WcwJb7c39iH1+AWfg+9OqzJNaI6PkBwBvm1mhZNL9iY/nRiZXlPg==",
"dev": true,
- "engines": {
- "node": ">= 4"
+ "dependencies": {
+ "buffer-equal": "^1.0.0",
+ "minimatch": "^3.0.4"
}
},
- "node_modules/encodeurl": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
- "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
- "devOptional": true,
+ "node_modules/dir-glob": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
+ "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
+ "dev": true,
+ "dependencies": {
+ "path-type": "^4.0.0"
+ },
"engines": {
- "node": ">= 0.8"
+ "node": ">=8"
}
},
- "node_modules/encoding": {
- "version": "0.1.13",
- "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz",
- "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
- "optional": true,
+ "node_modules/discontinuous-range": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz",
+ "integrity": "sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ=="
+ },
+ "node_modules/dmg-builder": {
+ "version": "24.6.3",
+ "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-24.6.3.tgz",
+ "integrity": "sha512-O7KNT7OKqtV54fMYUpdlyTOCP5DoPuRMLqMTgxxV2PO8Hj/so6zOl5o8GTs8pdDkeAhJzCFOUNB3BDhgXbUbJg==",
+ "dev": true,
"dependencies": {
- "iconv-lite": "^0.6.2"
+ "app-builder-lib": "24.6.3",
+ "builder-util": "24.5.0",
+ "builder-util-runtime": "9.2.1",
+ "fs-extra": "^10.1.0",
+ "iconv-lite": "^0.6.2",
+ "js-yaml": "^4.1.0"
+ },
+ "optionalDependencies": {
+ "dmg-license": "^1.0.11"
}
},
- "node_modules/end-of-stream": {
- "version": "1.4.4",
- "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
- "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
+ "node_modules/dmg-builder/node_modules/fs-extra": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
+ "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
+ "dev": true,
"dependencies": {
- "once": "^1.4.0"
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=12"
}
},
- "node_modules/enhanced-resolve": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz",
- "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==",
+ "node_modules/dmg-builder/node_modules/jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
"dev": true,
"dependencies": {
- "graceful-fs": "^4.1.2",
- "memory-fs": "^0.5.0",
- "tapable": "^1.0.0"
+ "universalify": "^2.0.0"
},
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/dmg-builder/node_modules/universalify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+ "dev": true,
"engines": {
- "node": ">=6.9.0"
+ "node": ">= 10.0.0"
}
},
- "node_modules/enquirer": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz",
- "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==",
+ "node_modules/dmg-license": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/dmg-license/-/dmg-license-1.0.11.tgz",
+ "integrity": "sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q==",
"dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
"dependencies": {
- "ansi-colors": "^4.1.1"
+ "@types/plist": "^3.0.1",
+ "@types/verror": "^1.10.3",
+ "ajv": "^6.10.0",
+ "crc": "^3.8.0",
+ "iconv-corefoundation": "^1.1.7",
+ "plist": "^3.0.4",
+ "smart-buffer": "^4.0.2",
+ "verror": "^1.10.0"
+ },
+ "bin": {
+ "dmg-license": "bin/dmg-license.js"
},
"engines": {
- "node": ">=8.6"
+ "node": ">=8"
}
},
- "node_modules/entities": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
- "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "node_modules/dns-equal": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz",
+ "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==",
+ "dev": true
+ },
+ "node_modules/dns-packet": {
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.0.tgz",
+ "integrity": "sha512-rza3UH1LwdHh9qyPXp8lkwpjSNk/AMD3dPytUoRoqnypDUhY0xvbdmVhWOfxO68frEfV9BU8V12Ez7ZsHGZpCQ==",
"dev": true,
- "engines": {
- "node": ">=0.12"
+ "dependencies": {
+ "@leichtgewicht/ip-codec": "^2.0.1"
},
- "funding": {
- "url": "https://github.com/fb55/entities?sponsor=1"
- }
- },
- "node_modules/env-paths": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
- "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
"engines": {
"node": ">=6"
}
},
- "node_modules/envinfo": {
- "version": "7.9.0",
- "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.9.0.tgz",
- "integrity": "sha512-RODB4txU+xImYDemN5DqaKC0CHk05XSVkOX4pq0hK26Qx+1LChkuOyUDlGEjYb3ACr0n9qBhFjg37hQuJvpkRQ==",
+ "node_modules/doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
"dev": true,
- "bin": {
- "envinfo": "dist/cli.js"
+ "dependencies": {
+ "esutils": "^2.0.2"
},
"engines": {
- "node": ">=4"
+ "node": ">=6.0.0"
}
},
- "node_modules/err-code": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz",
- "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==",
- "optional": true
+ "node_modules/dom-accessibility-api": {
+ "version": "0.5.16",
+ "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz",
+ "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==",
+ "dev": true
},
- "node_modules/errno": {
- "version": "0.1.8",
- "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz",
- "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==",
+ "node_modules/dom-converter": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz",
+ "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==",
"dev": true,
"dependencies": {
- "prr": "~1.0.1"
- },
- "bin": {
- "errno": "cli.js"
+ "utila": "~0.4"
}
},
- "node_modules/error-ex": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
- "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "node_modules/dom-helpers": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz",
+ "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==",
"dependencies": {
- "is-arrayish": "^0.2.1"
+ "@babel/runtime": "^7.8.7",
+ "csstype": "^3.0.2"
}
},
- "node_modules/error-stack-parser": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz",
- "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==",
+ "node_modules/dom-serializer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
+ "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
"dev": true,
"dependencies": {
- "stackframe": "^1.3.4"
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.2",
+ "entities": "^4.2.0"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
}
},
- "node_modules/es-abstract": {
- "version": "1.21.2",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz",
- "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==",
+ "node_modules/dom-walk": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz",
+ "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w=="
+ },
+ "node_modules/domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ]
+ },
+ "node_modules/domexception": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz",
+ "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==",
"dev": true,
"dependencies": {
- "array-buffer-byte-length": "^1.0.0",
- "available-typed-arrays": "^1.0.5",
- "call-bind": "^1.0.2",
- "es-set-tostringtag": "^2.0.1",
- "es-to-primitive": "^1.2.1",
- "function.prototype.name": "^1.1.5",
- "get-intrinsic": "^1.2.0",
- "get-symbol-description": "^1.0.0",
- "globalthis": "^1.0.3",
- "gopd": "^1.0.1",
- "has": "^1.0.3",
- "has-property-descriptors": "^1.0.0",
- "has-proto": "^1.0.1",
- "has-symbols": "^1.0.3",
- "internal-slot": "^1.0.5",
- "is-array-buffer": "^3.0.2",
- "is-callable": "^1.2.7",
- "is-negative-zero": "^2.0.2",
- "is-regex": "^1.1.4",
- "is-shared-array-buffer": "^1.0.2",
- "is-string": "^1.0.7",
- "is-typed-array": "^1.1.10",
- "is-weakref": "^1.0.2",
- "object-inspect": "^1.12.3",
- "object-keys": "^1.1.1",
- "object.assign": "^4.1.4",
- "regexp.prototype.flags": "^1.4.3",
- "safe-regex-test": "^1.0.0",
- "string.prototype.trim": "^1.2.7",
- "string.prototype.trimend": "^1.0.6",
- "string.prototype.trimstart": "^1.0.6",
- "typed-array-length": "^1.0.4",
- "unbox-primitive": "^1.0.2",
- "which-typed-array": "^1.1.9"
+ "webidl-conversions": "^7.0.0"
},
"engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "node": ">=12"
}
},
- "node_modules/es-array-method-boxes-properly": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz",
- "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==",
+ "node_modules/domhandler": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
+ "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
"dev": true,
- "optional": true
+ "dependencies": {
+ "domelementtype": "^2.3.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domhandler?sponsor=1"
+ }
},
- "node_modules/es-get-iterator": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz",
- "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==",
+ "node_modules/domutils": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz",
+ "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.1.3",
- "has-symbols": "^1.0.3",
- "is-arguments": "^1.1.1",
- "is-map": "^2.0.2",
- "is-set": "^2.0.2",
- "is-string": "^1.0.7",
- "isarray": "^2.0.5",
- "stop-iteration-iterator": "^1.0.0"
+ "dom-serializer": "^2.0.0",
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3"
},
"funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "url": "https://github.com/fb55/domutils?sponsor=1"
}
},
- "node_modules/es-get-iterator/node_modules/isarray": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
- "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+ "node_modules/dot-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz",
+ "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==",
+ "dev": true,
+ "dependencies": {
+ "no-case": "^3.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/dotenv": {
+ "version": "9.0.2",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-9.0.2.tgz",
+ "integrity": "sha512-I9OvvrHp4pIARv4+x9iuewrWycX6CcZtoAu1XrzPxc5UygMJXJZYmBsynku8IkrJwgypE5DGNjDPmPRhDCptUg==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/dotenv-expand": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz",
+ "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==",
"dev": true
},
- "node_modules/es-module-lexer": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz",
- "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==",
+ "node_modules/dtype": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/dtype/-/dtype-2.0.0.tgz",
+ "integrity": "sha512-s2YVcLKdFGS0hpFqJaTwscsyt0E8nNFdmo73Ocd81xNPj4URI4rj6D60A+vFMIw7BXWlb4yRkEwfBqcZzPGiZg==",
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/duplexer": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz",
+ "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==",
"dev": true
},
- "node_modules/es-set-tostringtag": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz",
- "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==",
+ "node_modules/ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
+ "dev": true
+ },
+ "node_modules/ejs": {
+ "version": "3.1.9",
+ "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz",
+ "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==",
"dev": true,
"dependencies": {
- "get-intrinsic": "^1.1.3",
- "has": "^1.0.3",
- "has-tostringtag": "^1.0.0"
+ "jake": "^10.8.5"
+ },
+ "bin": {
+ "ejs": "bin/cli.js"
},
"engines": {
- "node": ">= 0.4"
+ "node": ">=0.10.0"
}
},
- "node_modules/es-shim-unscopables": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz",
- "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==",
- "dev": true,
+ "node_modules/electron": {
+ "version": "25.6.0",
+ "resolved": "https://registry.npmjs.org/electron/-/electron-25.6.0.tgz",
+ "integrity": "sha512-MYScf2Pwc2IzpIQ7+IpmxSrNb38B4nra67J+XN41gX1I5PNvD7iJEQ5qQ4qlEu+aPvRU+8fDaB02JteEYeAyzA==",
+ "hasInstallScript": true,
"dependencies": {
- "has": "^1.0.3"
+ "@electron/get": "^2.0.0",
+ "@types/node": "^18.11.18",
+ "extract-zip": "^2.0.1"
+ },
+ "bin": {
+ "electron": "cli.js"
+ },
+ "engines": {
+ "node": ">= 12.20.55"
}
},
- "node_modules/es-to-primitive": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
- "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+ "node_modules/electron-builder": {
+ "version": "24.6.3",
+ "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-24.6.3.tgz",
+ "integrity": "sha512-O6PqhRXwfxCNTXI4BlhELSeYYO6/tqlxRuy+4+xKBokQvwDDjDgZMMoSgAmanVSCuzjE7MZldI9XYrKFk+EQDw==",
"dev": true,
"dependencies": {
- "is-callable": "^1.1.4",
- "is-date-object": "^1.0.1",
- "is-symbol": "^1.0.2"
+ "app-builder-lib": "24.6.3",
+ "builder-util": "24.5.0",
+ "builder-util-runtime": "9.2.1",
+ "chalk": "^4.1.2",
+ "dmg-builder": "24.6.3",
+ "fs-extra": "^10.1.0",
+ "is-ci": "^3.0.0",
+ "lazy-val": "^1.0.5",
+ "read-config-file": "6.3.2",
+ "simple-update-notifier": "2.0.0",
+ "yargs": "^17.6.2"
},
- "engines": {
- "node": ">= 0.4"
+ "bin": {
+ "electron-builder": "cli.js",
+ "install-app-deps": "install-app-deps.js"
},
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "engines": {
+ "node": ">=14.0.0"
}
},
- "node_modules/es6-error": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz",
- "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==",
- "optional": true
- },
- "node_modules/escalade": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "node_modules/electron-builder/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
"engines": {
- "node": ">=6"
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/escape-html": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
- "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
- "dev": true
- },
- "node_modules/escape-string-regexp": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
- "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "node_modules/electron-builder/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
"engines": {
"node": ">=10"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/escodegen": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz",
- "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==",
+ "node_modules/electron-builder/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"dependencies": {
- "esprima": "^4.0.1",
- "estraverse": "^5.2.0",
- "esutils": "^2.0.2",
- "optionator": "^0.8.1"
- },
- "bin": {
- "escodegen": "bin/escodegen.js",
- "esgenerate": "bin/esgenerate.js"
+ "color-name": "~1.1.4"
},
"engines": {
- "node": ">=6.0"
- },
- "optionalDependencies": {
- "source-map": "~0.6.1"
+ "node": ">=7.0.0"
}
},
- "node_modules/escodegen/node_modules/levn": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
- "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==",
+ "node_modules/electron-builder/node_modules/fs-extra": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
+ "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
"dev": true,
"dependencies": {
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2"
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
},
"engines": {
- "node": ">= 0.8.0"
+ "node": ">=12"
}
},
- "node_modules/escodegen/node_modules/optionator": {
- "version": "0.8.3",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
- "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
+ "node_modules/electron-builder/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/electron-builder/node_modules/jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
"dev": true,
"dependencies": {
- "deep-is": "~0.1.3",
- "fast-levenshtein": "~2.0.6",
- "levn": "~0.3.0",
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2",
- "word-wrap": "~1.2.3"
+ "universalify": "^2.0.0"
},
- "engines": {
- "node": ">= 0.8.0"
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
}
},
- "node_modules/escodegen/node_modules/prelude-ls": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
- "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==",
+ "node_modules/electron-builder/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
"engines": {
- "node": ">= 0.8.0"
+ "node": ">=8"
}
},
- "node_modules/escodegen/node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "node_modules/electron-builder/node_modules/universalify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
"dev": true,
- "optional": true,
"engines": {
- "node": ">=0.10.0"
+ "node": ">= 10.0.0"
}
},
- "node_modules/escodegen/node_modules/type-check": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
- "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==",
+ "node_modules/electron-publish": {
+ "version": "24.5.0",
+ "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-24.5.0.tgz",
+ "integrity": "sha512-zwo70suH15L15B4ZWNDoEg27HIYoPsGJUF7xevLJLSI7JUPC8l2yLBdLGwqueJ5XkDL7ucYyRZzxJVR8ElV9BA==",
+ "dev": true,
+ "dependencies": {
+ "@types/fs-extra": "^9.0.11",
+ "builder-util": "24.5.0",
+ "builder-util-runtime": "9.2.1",
+ "chalk": "^4.1.2",
+ "fs-extra": "^10.1.0",
+ "lazy-val": "^1.0.5",
+ "mime": "^2.5.2"
+ }
+ },
+ "node_modules/electron-publish/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"dependencies": {
- "prelude-ls": "~1.1.2"
+ "color-convert": "^2.0.1"
},
"engines": {
- "node": ">= 0.8.0"
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/eslint": {
- "version": "7.32.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz",
- "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==",
+ "node_modules/electron-publish/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
"dependencies": {
- "@babel/code-frame": "7.12.11",
- "@eslint/eslintrc": "^0.4.3",
- "@humanwhocodes/config-array": "^0.5.0",
- "ajv": "^6.10.0",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.0.1",
- "doctrine": "^3.0.0",
- "enquirer": "^2.3.5",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^5.1.1",
- "eslint-utils": "^2.1.0",
- "eslint-visitor-keys": "^2.0.0",
- "espree": "^7.3.1",
- "esquery": "^1.4.0",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "functional-red-black-tree": "^1.0.1",
- "glob-parent": "^5.1.2",
- "globals": "^13.6.0",
- "ignore": "^4.0.6",
- "import-fresh": "^3.0.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "js-yaml": "^3.13.1",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.0.4",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
- "progress": "^2.0.0",
- "regexpp": "^3.1.0",
- "semver": "^7.2.1",
- "strip-ansi": "^6.0.0",
- "strip-json-comments": "^3.1.0",
- "table": "^6.0.9",
- "text-table": "^0.2.0",
- "v8-compile-cache": "^2.0.3"
- },
- "bin": {
- "eslint": "bin/eslint.js"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
},
"engines": {
- "node": "^10.12.0 || >=12.0.0"
+ "node": ">=10"
},
"funding": {
- "url": "https://opencollective.com/eslint"
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/eslint-config-airbnb": {
- "version": "18.2.1",
- "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-18.2.1.tgz",
- "integrity": "sha512-glZNDEZ36VdlZWoxn/bUR1r/sdFKPd1mHPbqUtkctgNG4yT2DLLtJ3D+yCV+jzZCc2V1nBVkmdknOJBZ5Hc0fg==",
+ "node_modules/electron-publish/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"dependencies": {
- "eslint-config-airbnb-base": "^14.2.1",
- "object.assign": "^4.1.2",
- "object.entries": "^1.1.2"
+ "color-name": "~1.1.4"
},
"engines": {
- "node": ">= 6"
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/electron-publish/node_modules/fs-extra": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
+ "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
},
- "peerDependencies": {
- "eslint": "^5.16.0 || ^6.8.0 || ^7.2.0",
- "eslint-plugin-import": "^2.22.1",
- "eslint-plugin-jsx-a11y": "^6.4.1",
- "eslint-plugin-react": "^7.21.5",
- "eslint-plugin-react-hooks": "^4 || ^3 || ^2.3.0 || ^1.7.0"
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/electron-publish/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
}
},
- "node_modules/eslint-config-airbnb-base": {
- "version": "14.2.1",
- "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.1.tgz",
- "integrity": "sha512-GOrQyDtVEc1Xy20U7vsB2yAoB4nBlfH5HZJeatRXHleO+OS5Ot+MWij4Dpltw4/DyIkqUfqz1epfhVR5XWWQPA==",
+ "node_modules/electron-publish/node_modules/jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
"dev": true,
"dependencies": {
- "confusing-browser-globals": "^1.0.10",
- "object.assign": "^4.1.2",
- "object.entries": "^1.1.2"
- },
- "engines": {
- "node": ">= 6"
+ "universalify": "^2.0.0"
},
- "peerDependencies": {
- "eslint": "^5.16.0 || ^6.8.0 || ^7.2.0",
- "eslint-plugin-import": "^2.22.1"
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
}
},
- "node_modules/eslint-config-prettier": {
+ "node_modules/electron-publish/node_modules/supports-color": {
"version": "7.2.0",
- "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-7.2.0.tgz",
- "integrity": "sha512-rV4Qu0C3nfJKPOAhFujFxB7RMP+URFyQqqOZW9DMRD7ZDTFyjaIlETU3xzHELt++4ugC0+Jm084HQYkkJe+Ivg==",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
- "bin": {
- "eslint-config-prettier": "bin/cli.js"
+ "dependencies": {
+ "has-flag": "^4.0.0"
},
- "peerDependencies": {
- "eslint": ">=7.0.0"
+ "engines": {
+ "node": ">=8"
}
},
- "node_modules/eslint-import-resolver-node": {
- "version": "0.3.7",
- "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz",
- "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==",
+ "node_modules/electron-publish/node_modules/universalify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
"dev": true,
- "dependencies": {
- "debug": "^3.2.7",
- "is-core-module": "^2.11.0",
- "resolve": "^1.22.1"
+ "engines": {
+ "node": ">= 10.0.0"
}
},
- "node_modules/eslint-import-resolver-node/node_modules/debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
- "dev": true,
- "dependencies": {
- "ms": "^2.1.1"
- }
+ "node_modules/electron-to-chromium": {
+ "version": "1.4.480",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.480.tgz",
+ "integrity": "sha512-IXTgg+bITkQv/FLP9FjX6f9KFCs5hQWeh5uNSKxB9mqYj/JXhHDbu+ekS43LVvbkL3eW6/oZy4+r9Om6lan1Uw=="
},
- "node_modules/eslint-module-utils": {
- "version": "2.8.0",
- "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz",
- "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==",
+ "node_modules/electron/node_modules/@types/node": {
+ "version": "18.17.1",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.17.1.tgz",
+ "integrity": "sha512-xlR1jahfizdplZYRU59JlUx9uzF1ARa8jbhM11ccpCJya8kvos5jwdm2ZAgxSCwOl0fq21svP18EVwPBXMQudw=="
+ },
+ "node_modules/emittery": {
+ "version": "0.13.1",
+ "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz",
+ "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==",
"dev": true,
- "dependencies": {
- "debug": "^3.2.7"
- },
"engines": {
- "node": ">=4"
+ "node": ">=12"
},
- "peerDependenciesMeta": {
- "eslint": {
- "optional": true
- }
+ "funding": {
+ "url": "https://github.com/sindresorhus/emittery?sponsor=1"
}
},
- "node_modules/eslint-module-utils/node_modules/debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "node_modules/emoji-regex": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+ "dev": true
+ },
+ "node_modules/emojis-list": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
+ "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
"dev": true,
- "dependencies": {
- "ms": "^2.1.1"
+ "engines": {
+ "node": ">= 4"
}
},
- "node_modules/eslint-plugin-import": {
- "version": "2.27.5",
- "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz",
- "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==",
+ "node_modules/encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
"dev": true,
- "dependencies": {
- "array-includes": "^3.1.6",
- "array.prototype.flat": "^1.3.1",
- "array.prototype.flatmap": "^1.3.1",
- "debug": "^3.2.7",
- "doctrine": "^2.1.0",
- "eslint-import-resolver-node": "^0.3.7",
- "eslint-module-utils": "^2.7.4",
- "has": "^1.0.3",
- "is-core-module": "^2.11.0",
- "is-glob": "^4.0.3",
- "minimatch": "^3.1.2",
- "object.values": "^1.1.6",
- "resolve": "^1.22.1",
- "semver": "^6.3.0",
- "tsconfig-paths": "^3.14.1"
- },
"engines": {
- "node": ">=4"
- },
- "peerDependencies": {
- "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8"
+ "node": ">= 0.8"
}
},
- "node_modules/eslint-plugin-import/node_modules/debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
- "dev": true,
+ "node_modules/encoding": {
+ "version": "0.1.13",
+ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz",
+ "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
+ "optional": true,
"dependencies": {
- "ms": "^2.1.1"
+ "iconv-lite": "^0.6.2"
}
},
- "node_modules/eslint-plugin-import/node_modules/doctrine": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
- "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
- "dev": true,
+ "node_modules/end-of-stream": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
+ "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
"dependencies": {
- "esutils": "^2.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
+ "once": "^1.4.0"
}
},
- "node_modules/eslint-plugin-jsx-a11y": {
- "version": "6.7.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz",
- "integrity": "sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==",
+ "node_modules/enhanced-resolve": {
+ "version": "5.15.0",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz",
+ "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==",
"dev": true,
"dependencies": {
- "@babel/runtime": "^7.20.7",
- "aria-query": "^5.1.3",
- "array-includes": "^3.1.6",
- "array.prototype.flatmap": "^1.3.1",
- "ast-types-flow": "^0.0.7",
- "axe-core": "^4.6.2",
- "axobject-query": "^3.1.1",
- "damerau-levenshtein": "^1.0.8",
- "emoji-regex": "^9.2.2",
- "has": "^1.0.3",
- "jsx-ast-utils": "^3.3.3",
- "language-tags": "=1.0.5",
- "minimatch": "^3.1.2",
- "object.entries": "^1.1.6",
- "object.fromentries": "^2.0.6",
- "semver": "^6.3.0"
+ "graceful-fs": "^4.2.4",
+ "tapable": "^2.2.0"
},
"engines": {
- "node": ">=4.0"
- },
- "peerDependencies": {
- "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8"
+ "node": ">=10.13.0"
}
},
- "node_modules/eslint-plugin-react": {
- "version": "7.32.2",
- "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz",
- "integrity": "sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==",
+ "node_modules/entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
"dev": true,
- "dependencies": {
- "array-includes": "^3.1.6",
- "array.prototype.flatmap": "^1.3.1",
- "array.prototype.tosorted": "^1.1.1",
- "doctrine": "^2.1.0",
- "estraverse": "^5.3.0",
- "jsx-ast-utils": "^2.4.1 || ^3.0.0",
- "minimatch": "^3.1.2",
- "object.entries": "^1.1.6",
- "object.fromentries": "^2.0.6",
- "object.hasown": "^1.1.2",
- "object.values": "^1.1.6",
- "prop-types": "^15.8.1",
- "resolve": "^2.0.0-next.4",
- "semver": "^6.3.0",
- "string.prototype.matchall": "^4.0.8"
- },
"engines": {
- "node": ">=4"
+ "node": ">=0.12"
},
- "peerDependencies": {
- "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8"
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
}
},
- "node_modules/eslint-plugin-react-hooks": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz",
- "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==",
- "dev": true,
+ "node_modules/env-paths": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
+ "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
"engines": {
- "node": ">=10"
- },
- "peerDependencies": {
- "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0"
+ "node": ">=6"
}
},
- "node_modules/eslint-plugin-react/node_modules/doctrine": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
- "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "node_modules/envinfo": {
+ "version": "7.10.0",
+ "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.10.0.tgz",
+ "integrity": "sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw==",
"dev": true,
- "dependencies": {
- "esutils": "^2.0.2"
+ "bin": {
+ "envinfo": "dist/cli.js"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=4"
}
},
- "node_modules/eslint-plugin-react/node_modules/resolve": {
- "version": "2.0.0-next.4",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz",
- "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==",
+ "node_modules/enzyme": {
+ "version": "3.11.0",
+ "resolved": "https://registry.npmjs.org/enzyme/-/enzyme-3.11.0.tgz",
+ "integrity": "sha512-Dw8/Gs4vRjxY6/6i9wU0V+utmQO9kvh9XLnz3LIudviOnVYDEe2ec+0k+NQoMamn1VrjKgCUOWj5jG/5M5M0Qw==",
"dev": true,
"dependencies": {
- "is-core-module": "^2.9.0",
- "path-parse": "^1.0.7",
- "supports-preserve-symlinks-flag": "^1.0.0"
- },
- "bin": {
- "resolve": "bin/resolve"
+ "array.prototype.flat": "^1.2.3",
+ "cheerio": "^1.0.0-rc.3",
+ "enzyme-shallow-equal": "^1.0.1",
+ "function.prototype.name": "^1.1.2",
+ "has": "^1.0.3",
+ "html-element-map": "^1.2.0",
+ "is-boolean-object": "^1.0.1",
+ "is-callable": "^1.1.5",
+ "is-number-object": "^1.0.4",
+ "is-regex": "^1.0.5",
+ "is-string": "^1.0.5",
+ "is-subset": "^0.1.1",
+ "lodash.escape": "^4.0.1",
+ "lodash.isequal": "^4.5.0",
+ "object-inspect": "^1.7.0",
+ "object-is": "^1.0.2",
+ "object.assign": "^4.1.0",
+ "object.entries": "^1.1.1",
+ "object.values": "^1.1.1",
+ "raf": "^3.4.1",
+ "rst-selector-parser": "^2.2.3",
+ "string.prototype.trim": "^1.2.1"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/eslint-scope": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
- "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
- "dev": true,
- "dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- },
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/eslint-scope/node_modules/estraverse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
- "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
- "dev": true,
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/eslint-utils": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
- "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
+ "node_modules/enzyme-shallow-equal": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.5.tgz",
+ "integrity": "sha512-i6cwm7hN630JXenxxJFBKzgLC3hMTafFQXflvzHgPmDhOBhxUWDe8AeRv1qp2/uWJ2Y8z5yLWMzmAfkTOiOCZg==",
"dev": true,
"dependencies": {
- "eslint-visitor-keys": "^2.0.0"
- },
- "engines": {
- "node": "^10.0.0 || ^12.0.0 || >= 14.0.0"
+ "has": "^1.0.3",
+ "object-is": "^1.1.5"
},
"funding": {
- "url": "https://github.com/sponsors/mysticatea"
- },
- "peerDependencies": {
- "eslint": ">=5"
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/eslint-visitor-keys": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
- "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
- "dev": true,
- "engines": {
- "node": ">=10"
+ "node_modules/err-code": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz",
+ "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==",
+ "optional": true
+ },
+ "node_modules/error-ex": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "dependencies": {
+ "is-arrayish": "^0.2.1"
}
},
- "node_modules/eslint/node_modules/@babel/code-frame": {
- "version": "7.12.11",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz",
- "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==",
+ "node_modules/error-stack-parser": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz",
+ "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==",
"dev": true,
"dependencies": {
- "@babel/highlight": "^7.10.4"
+ "stackframe": "^1.3.4"
}
},
- "node_modules/eslint/node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "node_modules/es-abstract": {
+ "version": "1.22.1",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.1.tgz",
+ "integrity": "sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==",
"dev": true,
"dependencies": {
- "color-convert": "^2.0.1"
+ "array-buffer-byte-length": "^1.0.0",
+ "arraybuffer.prototype.slice": "^1.0.1",
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.2",
+ "es-set-tostringtag": "^2.0.1",
+ "es-to-primitive": "^1.2.1",
+ "function.prototype.name": "^1.1.5",
+ "get-intrinsic": "^1.2.1",
+ "get-symbol-description": "^1.0.0",
+ "globalthis": "^1.0.3",
+ "gopd": "^1.0.1",
+ "has": "^1.0.3",
+ "has-property-descriptors": "^1.0.0",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "internal-slot": "^1.0.5",
+ "is-array-buffer": "^3.0.2",
+ "is-callable": "^1.2.7",
+ "is-negative-zero": "^2.0.2",
+ "is-regex": "^1.1.4",
+ "is-shared-array-buffer": "^1.0.2",
+ "is-string": "^1.0.7",
+ "is-typed-array": "^1.1.10",
+ "is-weakref": "^1.0.2",
+ "object-inspect": "^1.12.3",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.4",
+ "regexp.prototype.flags": "^1.5.0",
+ "safe-array-concat": "^1.0.0",
+ "safe-regex-test": "^1.0.0",
+ "string.prototype.trim": "^1.2.7",
+ "string.prototype.trimend": "^1.0.6",
+ "string.prototype.trimstart": "^1.0.6",
+ "typed-array-buffer": "^1.0.0",
+ "typed-array-byte-length": "^1.0.0",
+ "typed-array-byte-offset": "^1.0.0",
+ "typed-array-length": "^1.0.4",
+ "unbox-primitive": "^1.0.2",
+ "which-typed-array": "^1.1.10"
},
"engines": {
- "node": ">=8"
+ "node": ">= 0.4"
},
"funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/eslint/node_modules/argparse": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
- "dev": true,
- "dependencies": {
- "sprintf-js": "~1.0.2"
- }
+ "node_modules/es-array-method-boxes-properly": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz",
+ "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==",
+ "dev": true
},
- "node_modules/eslint/node_modules/chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "node_modules/es-get-iterator": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz",
+ "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==",
"dev": true,
"dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.3",
+ "has-symbols": "^1.0.3",
+ "is-arguments": "^1.1.1",
+ "is-map": "^2.0.2",
+ "is-set": "^2.0.2",
+ "is-string": "^1.0.7",
+ "isarray": "^2.0.5",
+ "stop-iteration-iterator": "^1.0.0"
},
"funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/eslint/node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "node_modules/es-iterator-helpers": {
+ "version": "1.0.13",
+ "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.13.tgz",
+ "integrity": "sha512-LK3VGwzvaPWobO8xzXXGRUOGw8Dcjyfk62CsY/wfHN75CwsJPbuypOYJxK6g5RyEL8YDjIWcl6jgd8foO6mmrA==",
"dev": true,
"dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
+ "asynciterator.prototype": "^1.0.0",
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.21.3",
+ "es-set-tostringtag": "^2.0.1",
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.2.1",
+ "globalthis": "^1.0.3",
+ "has-property-descriptors": "^1.0.0",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "internal-slot": "^1.0.5",
+ "iterator.prototype": "^1.1.0",
+ "safe-array-concat": "^1.0.0"
}
},
- "node_modules/eslint/node_modules/eslint-utils": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz",
- "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==",
+ "node_modules/es-module-lexer": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz",
+ "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==",
+ "dev": true
+ },
+ "node_modules/es-set-tostringtag": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz",
+ "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==",
"dev": true,
"dependencies": {
- "eslint-visitor-keys": "^1.1.0"
+ "get-intrinsic": "^1.1.3",
+ "has": "^1.0.3",
+ "has-tostringtag": "^1.0.0"
},
"engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/mysticatea"
+ "node": ">= 0.4"
}
},
- "node_modules/eslint/node_modules/eslint-utils/node_modules/eslint-visitor-keys": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
- "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
+ "node_modules/es-shim-unscopables": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz",
+ "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==",
"dev": true,
- "engines": {
- "node": ">=4"
+ "dependencies": {
+ "has": "^1.0.3"
}
},
- "node_modules/eslint/node_modules/globals": {
- "version": "13.20.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz",
- "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==",
+ "node_modules/es-to-primitive": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
+ "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
"dev": true,
"dependencies": {
- "type-fest": "^0.20.2"
+ "is-callable": "^1.1.4",
+ "is-date-object": "^1.0.1",
+ "is-symbol": "^1.0.2"
},
"engines": {
- "node": ">=8"
+ "node": ">= 0.4"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/eslint/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
+ "node_modules/es6-error": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz",
+ "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==",
+ "optional": true
+ },
+ "node_modules/escalade": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
"engines": {
- "node": ">=8"
+ "node": ">=6"
}
},
- "node_modules/eslint/node_modules/ignore": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
- "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
- "dev": true,
+ "node_modules/escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
+ "dev": true
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
"engines": {
- "node": ">= 4"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/eslint/node_modules/js-yaml": {
- "version": "3.14.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
- "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+ "node_modules/escodegen": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz",
+ "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==",
"dev": true,
"dependencies": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
+ "esprima": "^4.0.1",
+ "estraverse": "^5.2.0",
+ "esutils": "^2.0.2"
},
"bin": {
- "js-yaml": "bin/js-yaml.js"
+ "escodegen": "bin/escodegen.js",
+ "esgenerate": "bin/esgenerate.js"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "optionalDependencies": {
+ "source-map": "~0.6.1"
}
},
- "node_modules/eslint/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "node_modules/escodegen/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
+ "optional": true,
"engines": {
- "node": ">=10"
+ "node": ">=0.10.0"
}
},
- "node_modules/eslint/node_modules/semver": {
- "version": "7.5.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz",
- "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==",
- "dev": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
+ "node_modules/eslint": {
+ "version": "8.47.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.47.0.tgz",
+ "integrity": "sha512-spUQWrdPt+pRVP1TTJLmfRNJJHHZryFmptzcafwSvHsceV81djHOdnEeDmkdotZyLNjDhrOasNK8nikkoG1O8Q==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.2.0",
+ "@eslint-community/regexpp": "^4.6.1",
+ "@eslint/eslintrc": "^2.1.2",
+ "@eslint/js": "^8.47.0",
+ "@humanwhocodes/config-array": "^0.11.10",
+ "@humanwhocodes/module-importer": "^1.0.1",
+ "@nodelib/fs.walk": "^1.2.8",
+ "ajv": "^6.12.4",
+ "chalk": "^4.0.0",
+ "cross-spawn": "^7.0.2",
+ "debug": "^4.3.2",
+ "doctrine": "^3.0.0",
+ "escape-string-regexp": "^4.0.0",
+ "eslint-scope": "^7.2.2",
+ "eslint-visitor-keys": "^3.4.3",
+ "espree": "^9.6.1",
+ "esquery": "^1.4.2",
+ "esutils": "^2.0.2",
+ "fast-deep-equal": "^3.1.3",
+ "file-entry-cache": "^6.0.1",
+ "find-up": "^5.0.0",
+ "glob-parent": "^6.0.2",
+ "globals": "^13.19.0",
+ "graphemer": "^1.4.0",
+ "ignore": "^5.2.0",
+ "imurmurhash": "^0.1.4",
+ "is-glob": "^4.0.0",
+ "is-path-inside": "^3.0.3",
+ "js-yaml": "^4.1.0",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.4.1",
+ "lodash.merge": "^4.6.2",
+ "minimatch": "^3.1.2",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.9.3",
+ "strip-ansi": "^6.0.1",
+ "text-table": "^0.2.0"
},
"bin": {
- "semver": "bin/semver.js"
+ "eslint": "bin/eslint.js"
},
"engines": {
- "node": ">=10"
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
- "node_modules/eslint/node_modules/sprintf-js": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
- "dev": true
- },
- "node_modules/eslint/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "node_modules/eslint-config-airbnb": {
+ "version": "19.0.4",
+ "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-19.0.4.tgz",
+ "integrity": "sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==",
"dev": true,
"dependencies": {
- "has-flag": "^4.0.0"
+ "eslint-config-airbnb-base": "^15.0.0",
+ "object.assign": "^4.1.2",
+ "object.entries": "^1.1.5"
},
"engines": {
- "node": ">=8"
- }
- },
- "node_modules/eslint/node_modules/type-fest": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
- "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
- "dev": true,
- "engines": {
- "node": ">=10"
+ "node": "^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "peerDependencies": {
+ "eslint": "^7.32.0 || ^8.2.0",
+ "eslint-plugin-import": "^2.25.3",
+ "eslint-plugin-jsx-a11y": "^6.5.1",
+ "eslint-plugin-react": "^7.28.0",
+ "eslint-plugin-react-hooks": "^4.3.0"
}
},
- "node_modules/eslint/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
- "node_modules/espree": {
- "version": "7.3.1",
- "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz",
- "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==",
+ "node_modules/eslint-config-airbnb-base": {
+ "version": "15.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz",
+ "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==",
"dev": true,
"dependencies": {
- "acorn": "^7.4.0",
- "acorn-jsx": "^5.3.1",
- "eslint-visitor-keys": "^1.3.0"
+ "confusing-browser-globals": "^1.0.10",
+ "object.assign": "^4.1.2",
+ "object.entries": "^1.1.5",
+ "semver": "^6.3.0"
},
"engines": {
"node": "^10.12.0 || >=12.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^7.32.0 || ^8.2.0",
+ "eslint-plugin-import": "^2.25.2"
}
},
- "node_modules/espree/node_modules/eslint-visitor-keys": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
- "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/esprima": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
- "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "node_modules/eslint-config-prettier": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz",
+ "integrity": "sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==",
"dev": true,
"bin": {
- "esparse": "bin/esparse.js",
- "esvalidate": "bin/esvalidate.js"
+ "eslint-config-prettier": "bin/cli.js"
},
- "engines": {
- "node": ">=4"
+ "peerDependencies": {
+ "eslint": ">=7.0.0"
}
},
- "node_modules/esquery": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
- "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
+ "node_modules/eslint-import-resolver-node": {
+ "version": "0.3.7",
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz",
+ "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==",
"dev": true,
"dependencies": {
- "estraverse": "^5.1.0"
- },
- "engines": {
- "node": ">=0.10"
+ "debug": "^3.2.7",
+ "is-core-module": "^2.11.0",
+ "resolve": "^1.22.1"
}
},
- "node_modules/esrecurse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
- "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "node_modules/eslint-import-resolver-node/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
"dev": true,
"dependencies": {
- "estraverse": "^5.2.0"
- },
- "engines": {
- "node": ">=4.0"
+ "ms": "^2.1.1"
}
},
- "node_modules/estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "node_modules/eslint-import-resolver-typescript": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.0.tgz",
+ "integrity": "sha512-QTHR9ddNnn35RTxlaEnx2gCxqFlF2SEN0SE2d17SqwyM7YOSI2GHWRYp5BiRkObTUNYPupC/3Fq2a0PpT+EKpg==",
"dev": true,
+ "dependencies": {
+ "debug": "^4.3.4",
+ "enhanced-resolve": "^5.12.0",
+ "eslint-module-utils": "^2.7.4",
+ "fast-glob": "^3.3.1",
+ "get-tsconfig": "^4.5.0",
+ "is-core-module": "^2.11.0",
+ "is-glob": "^4.0.3"
+ },
"engines": {
- "node": ">=4.0"
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts"
+ },
+ "peerDependencies": {
+ "eslint": "*",
+ "eslint-plugin-import": "*"
}
},
- "node_modules/esutils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "node_modules/eslint-module-utils": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz",
+ "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==",
"dev": true,
+ "dependencies": {
+ "debug": "^3.2.7"
+ },
"engines": {
- "node": ">=0.10.0"
+ "node": ">=4"
+ },
+ "peerDependenciesMeta": {
+ "eslint": {
+ "optional": true
+ }
}
},
- "node_modules/etag": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
- "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+ "node_modules/eslint-module-utils/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
"dev": true,
- "engines": {
- "node": ">= 0.6"
+ "dependencies": {
+ "ms": "^2.1.1"
}
},
- "node_modules/eventemitter3": {
- "version": "4.0.7",
- "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
- "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==",
- "dev": true
- },
- "node_modules/events": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
- "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
+ "node_modules/eslint-plugin-import": {
+ "version": "2.28.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz",
+ "integrity": "sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==",
"dev": true,
+ "dependencies": {
+ "array-includes": "^3.1.6",
+ "array.prototype.findlastindex": "^1.2.2",
+ "array.prototype.flat": "^1.3.1",
+ "array.prototype.flatmap": "^1.3.1",
+ "debug": "^3.2.7",
+ "doctrine": "^2.1.0",
+ "eslint-import-resolver-node": "^0.3.7",
+ "eslint-module-utils": "^2.8.0",
+ "has": "^1.0.3",
+ "is-core-module": "^2.13.0",
+ "is-glob": "^4.0.3",
+ "minimatch": "^3.1.2",
+ "object.fromentries": "^2.0.6",
+ "object.groupby": "^1.0.0",
+ "object.values": "^1.1.6",
+ "semver": "^6.3.1",
+ "tsconfig-paths": "^3.14.2"
+ },
"engines": {
- "node": ">=0.8.x"
+ "node": ">=4"
+ },
+ "peerDependencies": {
+ "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8"
}
},
- "node_modules/eventsource": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-2.0.2.tgz",
- "integrity": "sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==",
+ "node_modules/eslint-plugin-import/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
"dev": true,
- "engines": {
- "node": ">=12.0.0"
+ "dependencies": {
+ "ms": "^2.1.1"
}
},
- "node_modules/exec-buffer": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/exec-buffer/-/exec-buffer-3.2.0.tgz",
- "integrity": "sha512-wsiD+2Tp6BWHoVv3B+5Dcx6E7u5zky+hUwOHjuH2hKSLR3dvRmX8fk8UD8uqQixHs4Wk6eDmiegVrMPjKj7wpA==",
+ "node_modules/eslint-plugin-import/node_modules/doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
"dev": true,
- "optional": true,
"dependencies": {
- "execa": "^0.7.0",
- "p-finally": "^1.0.0",
- "pify": "^3.0.0",
- "rimraf": "^2.5.4",
- "tempfile": "^2.0.0"
+ "esutils": "^2.0.2"
},
"engines": {
- "node": ">=4"
+ "node": ">=0.10.0"
}
},
- "node_modules/exec-buffer/node_modules/cross-spawn": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
- "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==",
+ "node_modules/eslint-plugin-jsx-a11y": {
+ "version": "6.7.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz",
+ "integrity": "sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==",
"dev": true,
- "optional": true,
"dependencies": {
- "lru-cache": "^4.0.1",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
+ "@babel/runtime": "^7.20.7",
+ "aria-query": "^5.1.3",
+ "array-includes": "^3.1.6",
+ "array.prototype.flatmap": "^1.3.1",
+ "ast-types-flow": "^0.0.7",
+ "axe-core": "^4.6.2",
+ "axobject-query": "^3.1.1",
+ "damerau-levenshtein": "^1.0.8",
+ "emoji-regex": "^9.2.2",
+ "has": "^1.0.3",
+ "jsx-ast-utils": "^3.3.3",
+ "language-tags": "=1.0.5",
+ "minimatch": "^3.1.2",
+ "object.entries": "^1.1.6",
+ "object.fromentries": "^2.0.6",
+ "semver": "^6.3.0"
+ },
+ "engines": {
+ "node": ">=4.0"
+ },
+ "peerDependencies": {
+ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8"
}
},
- "node_modules/exec-buffer/node_modules/execa": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
- "integrity": "sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==",
+ "node_modules/eslint-plugin-react": {
+ "version": "7.33.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz",
+ "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==",
"dev": true,
- "optional": true,
"dependencies": {
- "cross-spawn": "^5.0.1",
- "get-stream": "^3.0.0",
- "is-stream": "^1.1.0",
- "npm-run-path": "^2.0.0",
- "p-finally": "^1.0.0",
- "signal-exit": "^3.0.0",
- "strip-eof": "^1.0.0"
+ "array-includes": "^3.1.6",
+ "array.prototype.flatmap": "^1.3.1",
+ "array.prototype.tosorted": "^1.1.1",
+ "doctrine": "^2.1.0",
+ "es-iterator-helpers": "^1.0.12",
+ "estraverse": "^5.3.0",
+ "jsx-ast-utils": "^2.4.1 || ^3.0.0",
+ "minimatch": "^3.1.2",
+ "object.entries": "^1.1.6",
+ "object.fromentries": "^2.0.6",
+ "object.hasown": "^1.1.2",
+ "object.values": "^1.1.6",
+ "prop-types": "^15.8.1",
+ "resolve": "^2.0.0-next.4",
+ "semver": "^6.3.1",
+ "string.prototype.matchall": "^4.0.8"
},
"engines": {
"node": ">=4"
+ },
+ "peerDependencies": {
+ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8"
}
},
- "node_modules/exec-buffer/node_modules/get-stream": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
- "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==",
+ "node_modules/eslint-plugin-react-hooks": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz",
+ "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==",
"dev": true,
- "optional": true,
"engines": {
- "node": ">=4"
- }
- },
- "node_modules/exec-buffer/node_modules/lru-cache": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
- "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "pseudomap": "^1.0.2",
- "yallist": "^2.1.2"
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0"
}
},
- "node_modules/exec-buffer/node_modules/pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
+ "node_modules/eslint-plugin-react/node_modules/doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
"dev": true,
- "optional": true,
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
"engines": {
- "node": ">=4"
+ "node": ">=0.10.0"
}
},
- "node_modules/exec-buffer/node_modules/rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+ "node_modules/eslint-plugin-react/node_modules/resolve": {
+ "version": "2.0.0-next.4",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz",
+ "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==",
"dev": true,
- "optional": true,
"dependencies": {
- "glob": "^7.1.3"
+ "is-core-module": "^2.9.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
},
"bin": {
- "rimraf": "bin.js"
+ "resolve": "bin/resolve"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/exec-buffer/node_modules/shebang-command": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
- "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
+ "node_modules/eslint-scope": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
+ "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
"dev": true,
- "optional": true,
"dependencies": {
- "shebang-regex": "^1.0.0"
+ "esrecurse": "^4.3.0",
+ "estraverse": "^4.1.1"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=8.0.0"
}
},
- "node_modules/exec-buffer/node_modules/shebang-regex": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
- "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
+ "node_modules/eslint-scope/node_modules/estraverse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
"dev": true,
- "optional": true,
"engines": {
- "node": ">=0.10.0"
+ "node": ">=4.0"
}
},
- "node_modules/exec-buffer/node_modules/which": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "node_modules/eslint-visitor-keys": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
"dev": true,
- "optional": true,
- "dependencies": {
- "isexe": "^2.0.0"
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
- "bin": {
- "which": "bin/which"
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
- "node_modules/exec-buffer/node_modules/yallist": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
- "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==",
- "dev": true,
- "optional": true
- },
- "node_modules/exec-sh": {
- "version": "0.3.6",
- "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz",
- "integrity": "sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==",
- "dev": true
- },
- "node_modules/execa": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
- "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
+ "node_modules/eslint/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"dependencies": {
- "cross-spawn": "^6.0.0",
- "get-stream": "^4.0.0",
- "is-stream": "^1.1.0",
- "npm-run-path": "^2.0.0",
- "p-finally": "^1.0.0",
- "signal-exit": "^3.0.0",
- "strip-eof": "^1.0.0"
+ "color-convert": "^2.0.1"
},
"engines": {
- "node": ">=6"
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/execa/node_modules/cross-spawn": {
- "version": "6.0.5",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
- "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "node_modules/eslint/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
"dependencies": {
- "nice-try": "^1.0.4",
- "path-key": "^2.0.1",
- "semver": "^5.5.0",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
},
"engines": {
- "node": ">=4.8"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/execa/node_modules/path-key": {
+ "node_modules/eslint/node_modules/color-convert": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
- "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
"engines": {
- "node": ">=4"
- }
- },
- "node_modules/execa/node_modules/semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true,
- "bin": {
- "semver": "bin/semver"
+ "node": ">=7.0.0"
}
},
- "node_modules/execa/node_modules/shebang-command": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
- "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
+ "node_modules/eslint/node_modules/eslint-scope": {
+ "version": "7.2.2",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
+ "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
"dev": true,
"dependencies": {
- "shebang-regex": "^1.0.0"
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
},
"engines": {
- "node": ">=0.10.0"
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
- "node_modules/execa/node_modules/shebang-regex": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
- "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
+ "node_modules/eslint/node_modules/glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
"dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.3"
+ },
"engines": {
- "node": ">=0.10.0"
+ "node": ">=10.13.0"
}
},
- "node_modules/execa/node_modules/which": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "node_modules/eslint/node_modules/globals": {
+ "version": "13.20.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz",
+ "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==",
"dev": true,
"dependencies": {
- "isexe": "^2.0.0"
+ "type-fest": "^0.20.2"
},
- "bin": {
- "which": "bin/which"
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/executable": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz",
- "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==",
+ "node_modules/eslint/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
- "optional": true,
- "dependencies": {
- "pify": "^2.2.0"
- },
"engines": {
- "node": ">=4"
+ "node": ">=8"
}
},
- "node_modules/executable/node_modules/pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+ "node_modules/eslint/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
- "optional": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
"engines": {
- "node": ">=0.10.0"
+ "node": ">=8"
}
},
- "node_modules/exit": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
- "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==",
+ "node_modules/eslint/node_modules/type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
"dev": true,
"engines": {
- "node": ">= 0.8.0"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/expand-brackets": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
- "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==",
+ "node_modules/espree": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
+ "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
"dev": true,
"dependencies": {
- "debug": "^2.3.3",
- "define-property": "^0.2.5",
- "extend-shallow": "^2.0.1",
- "posix-character-classes": "^0.1.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
+ "acorn": "^8.9.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^3.4.1"
},
"engines": {
- "node": ">=0.10.0"
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
- "node_modules/expand-brackets/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "node_modules/esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
"dev": true,
- "dependencies": {
- "ms": "2.0.0"
+ "bin": {
+ "esparse": "bin/esparse.js",
+ "esvalidate": "bin/esvalidate.js"
+ },
+ "engines": {
+ "node": ">=4"
}
},
- "node_modules/expand-brackets/node_modules/define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
+ "node_modules/esquery": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
+ "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
"dev": true,
"dependencies": {
- "is-descriptor": "^0.1.0"
+ "estraverse": "^5.1.0"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=0.10"
}
},
- "node_modules/expand-brackets/node_modules/extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+ "node_modules/esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
"dev": true,
"dependencies": {
- "is-extendable": "^0.1.0"
+ "estraverse": "^5.2.0"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=4.0"
}
},
- "node_modules/expand-brackets/node_modules/is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
+ "node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
"dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
"engines": {
- "node": ">=0.10.0"
+ "node": ">=4.0"
}
},
- "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
"engines": {
"node": ">=0.10.0"
}
},
- "node_modules/expand-brackets/node_modules/is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
+ "node_modules/etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
"dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
"engines": {
- "node": ">=0.10.0"
+ "node": ">= 0.6"
}
},
- "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "node_modules/eventemitter3": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
+ "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==",
+ "dev": true
+ },
+ "node_modules/events": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
+ "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
"dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
"engines": {
- "node": ">=0.10.0"
+ "node": ">=0.8.x"
}
},
- "node_modules/expand-brackets/node_modules/is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "node_modules/execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
"dev": true,
"dependencies": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.0",
+ "human-signals": "^2.1.0",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^4.0.1",
+ "onetime": "^5.1.2",
+ "signal-exit": "^3.0.3",
+ "strip-final-newline": "^2.0.0"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
}
},
- "node_modules/expand-brackets/node_modules/is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
+ "node_modules/execa/node_modules/get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
"dev": true,
"engines": {
- "node": ">=0.10.0"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/expand-brackets/node_modules/kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "node_modules/execa/node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
"dev": true,
"engines": {
- "node": ">=0.10.0"
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/expand-brackets/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "dev": true
- },
- "node_modules/expect": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz",
- "integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==",
+ "node_modules/execa/node_modules/npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
"dev": true,
"dependencies": {
- "@jest/types": "^26.6.2",
- "ansi-styles": "^4.0.0",
- "jest-get-type": "^26.3.0",
- "jest-matcher-utils": "^26.6.2",
- "jest-message-util": "^26.6.2",
- "jest-regex-util": "^26.0.0"
+ "path-key": "^3.0.0"
},
"engines": {
- "node": ">= 10.14.2"
+ "node": ">=8"
}
},
- "node_modules/expect/node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "node_modules/exit": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
+ "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==",
"dev": true,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
"engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ "node": ">= 0.8.0"
}
},
- "node_modules/expect/node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "node_modules/expect": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/expect/-/expect-29.6.3.tgz",
+ "integrity": "sha512-x1vY4LlEMWUYVZQrFi4ZANXFwqYbJ/JNQspLVvzhW2BNY28aNcXMQH6imBbt+RBf5sVRTodYHXtSP/TLEU0Dxw==",
"dev": true,
"dependencies": {
- "color-name": "~1.1.4"
+ "@jest/expect-utils": "^29.6.3",
+ "jest-get-type": "^29.6.3",
+ "jest-matcher-utils": "^29.6.3",
+ "jest-message-util": "^29.6.3",
+ "jest-util": "^29.6.3"
},
"engines": {
- "node": ">=7.0.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/express": {
@@ -12427,125 +10699,25 @@
"integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==",
"dev": true
},
- "node_modules/ext-list": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz",
- "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "mime-db": "^1.28.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/ext-name": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz",
- "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "ext-list": "^2.0.0",
- "sort-keys-length": "^1.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/extend-shallow": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
- "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
- "dev": true,
- "dependencies": {
- "assign-symbols": "^1.0.0",
- "is-extendable": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/extglob": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
- "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
- "dev": true,
- "dependencies": {
- "array-unique": "^0.3.2",
- "define-property": "^1.0.0",
- "expand-brackets": "^2.1.4",
- "extend-shallow": "^2.0.1",
- "fragment-cache": "^0.2.1",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/extglob/node_modules/define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
- "dev": true,
- "dependencies": {
- "is-descriptor": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/extglob/node_modules/extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
- "dev": true,
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/extglob/node_modules/is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/extract-zip": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz",
- "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
+ "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==",
"dependencies": {
- "concat-stream": "^1.6.2",
- "debug": "^2.6.9",
- "mkdirp": "^0.5.4",
+ "debug": "^4.1.1",
+ "get-stream": "^5.1.0",
"yauzl": "^2.10.0"
},
"bin": {
"extract-zip": "cli.js"
+ },
+ "engines": {
+ "node": ">= 10.17.0"
+ },
+ "optionalDependencies": {
+ "@types/yauzl": "^2.9.1"
}
},
- "node_modules/extract-zip/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/extract-zip/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
- },
"node_modules/extsprintf": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz",
@@ -12556,20 +10728,16 @@
],
"optional": true
},
- "node_modules/faker": {
- "version": "5.5.3",
- "resolved": "https://registry.npmjs.org/faker/-/faker-5.5.3.tgz",
- "integrity": "sha512-wLTv2a28wjUyWkbnX7u/ABZBkUkIF2fCd73V6P2oFqEGEktDfzWx4UxrSqtPRw0xPRAcjeAOIiJWqZm3pP4u3g=="
- },
"node_modules/fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "dev": true
},
"node_modules/fast-glob": {
- "version": "3.2.12",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
- "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz",
+ "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==",
"dev": true,
"dependencies": {
"@nodelib/fs.stat": "^2.0.2",
@@ -12585,7 +10753,8 @@
"node_modules/fast-json-stable-stringify": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
- "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "dev": true
},
"node_modules/fast-levenshtein": {
"version": "2.0.6",
@@ -12593,29 +10762,6 @@
"integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
"dev": true
},
- "node_modules/fast-xml-parser": {
- "version": "4.2.5",
- "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz",
- "integrity": "sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==",
- "dev": true,
- "funding": [
- {
- "type": "paypal",
- "url": "https://paypal.me/naturalintelligence"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/NaturalIntelligence"
- }
- ],
- "optional": true,
- "dependencies": {
- "strnum": "^1.0.5"
- },
- "bin": {
- "fxparser": "src/cli/cli.js"
- }
- },
"node_modules/fastest-levenshtein": {
"version": "1.0.16",
"resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz",
@@ -12719,22 +10865,6 @@
"url": "https://opencollective.com/webpack"
}
},
- "node_modules/file-type": {
- "version": "12.4.2",
- "resolved": "https://registry.npmjs.org/file-type/-/file-type-12.4.2.tgz",
- "integrity": "sha512-UssQP5ZgIOKelfsaB5CuGAL+Y+q7EmONuiwF3N5HAH0t27rvrttgi6Ra9k/+DVaY9UF6+ybxu5pOXLUdA8N7Vg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/file-uri-to-path": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
- "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
- "dev": true,
- "optional": true
- },
"node_modules/filelist": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz",
@@ -12765,35 +10895,11 @@
"node": ">=10"
}
},
- "node_modules/filename-reserved-regex": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz",
- "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==",
- "dev": true,
- "optional": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/filenamify": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-2.1.0.tgz",
- "integrity": "sha512-ICw7NTT6RsDp2rnYKVd8Fu4cr6ITzGy3+u4vUujPkabyaz+03F24NWEX7fs5fp+kBonlaqPH8fAO2NM+SXt/JA==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "filename-reserved-regex": "^2.0.0",
- "strip-outer": "^1.0.0",
- "trim-repeated": "^1.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/fill-range": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "devOptional": true,
"dependencies": {
"to-regex-range": "^5.0.1"
},
@@ -12835,20 +10941,116 @@
"dev": true
},
"node_modules/find-cache-dir": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz",
- "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz",
+ "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==",
+ "dev": true,
+ "dependencies": {
+ "common-path-prefix": "^3.0.0",
+ "pkg-dir": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/find-cache-dir/node_modules/find-up": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz",
+ "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^7.1.0",
+ "path-exists": "^5.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/find-cache-dir/node_modules/locate-path": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz",
+ "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^6.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/find-cache-dir/node_modules/p-limit": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz",
+ "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==",
+ "dev": true,
+ "dependencies": {
+ "yocto-queue": "^1.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/find-cache-dir/node_modules/p-locate": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz",
+ "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^4.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/find-cache-dir/node_modules/path-exists": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz",
+ "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==",
+ "dev": true,
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ }
+ },
+ "node_modules/find-cache-dir/node_modules/pkg-dir": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz",
+ "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==",
"dev": true,
"dependencies": {
- "commondir": "^1.0.1",
- "make-dir": "^3.0.2",
- "pkg-dir": "^4.1.0"
+ "find-up": "^6.3.0"
},
"engines": {
- "node": ">=8"
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/find-cache-dir/node_modules/yocto-queue": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz",
+ "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.20"
},
"funding": {
- "url": "https://github.com/avajs/find-cache-dir?sponsor=1"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/find-root": {
@@ -12860,6 +11062,7 @@
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
"integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "dev": true,
"dependencies": {
"locate-path": "^6.0.0",
"path-exists": "^4.0.0"
@@ -12871,19 +11074,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/find-versions": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-3.2.0.tgz",
- "integrity": "sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "semver-regex": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/fix-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/fix-path/-/fix-path-3.0.0.tgz",
@@ -12925,31 +11115,6 @@
"dtype": "^2.0.0"
}
},
- "node_modules/flora-colossus": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/flora-colossus/-/flora-colossus-1.0.1.tgz",
- "integrity": "sha512-d+9na7t9FyH8gBJoNDSi28mE4NgQVGGvxQ4aHtFRetjyh5SXjuus+V5EZaxFmFdXVemSOrx0lsgEl/ZMjnOWJA==",
- "dependencies": {
- "debug": "^4.1.1",
- "fs-extra": "^7.0.0"
- },
- "engines": {
- "node": ">= 6.0.0"
- }
- },
- "node_modules/flora-colossus/node_modules/fs-extra": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
- "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
- "dependencies": {
- "graceful-fs": "^4.1.2",
- "jsonfile": "^4.0.0",
- "universalify": "^0.1.0"
- },
- "engines": {
- "node": ">=6 <7 || >=8"
- }
- },
"node_modules/follow-redirects": {
"version": "1.15.2",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
@@ -12985,21 +11150,12 @@
"is-callable": "^1.1.3"
}
},
- "node_modules/for-in": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
- "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/force-graph": {
- "version": "1.43.1",
- "resolved": "https://registry.npmjs.org/force-graph/-/force-graph-1.43.1.tgz",
- "integrity": "sha512-JOrmhMYr3uF6zzCXTauEo0KIiSp9OB2fAYYXkOGs6z0GQNSLIpcjCY3lhod4kAbkQCOup+u8JE9mmw7ojQaxTQ==",
+ "version": "1.43.2",
+ "resolved": "https://registry.npmjs.org/force-graph/-/force-graph-1.43.2.tgz",
+ "integrity": "sha512-Yla3FMdxMTDUK0tJM3ip+NBfZQWQRtYCZSZppJANAyRbh3xCCCETpch1IYuKlYWFCeTnpIV6cGw5j8Y1Pekdgw==",
"dependencies": {
- "@tweenjs/tween.js": "19",
+ "@tweenjs/tween.js": "18 - 21",
"accessor-fn": "1",
"bezier-js": "3 - 6",
"canvas-color-tracker": "1",
@@ -13018,48 +11174,32 @@
"node": ">=12"
}
},
- "node_modules/force-graph/node_modules/@tweenjs/tween.js": {
- "version": "19.0.0",
- "resolved": "https://registry.npmjs.org/@tweenjs/tween.js/-/tween.js-19.0.0.tgz",
- "integrity": "sha512-QVbvSlnP7FcjKr1edg460BbUlpdGzmIOfvpsvHCj3JPIVZ9S9KeQLk9mB24VlDzPIl/a/ehAZPE95xFsmqm+pQ=="
- },
"node_modules/fork-ts-checker-webpack-plugin": {
- "version": "6.5.3",
- "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz",
- "integrity": "sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==",
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-8.0.0.tgz",
+ "integrity": "sha512-mX3qW3idpueT2klaQXBzrIM/pHw+T0B/V9KHEvNrqijTq9NFnMZU6oreVxDYcf33P8a5cW+67PjodNHthGnNVg==",
"dev": true,
"dependencies": {
- "@babel/code-frame": "^7.8.3",
- "@types/json-schema": "^7.0.5",
- "chalk": "^4.1.0",
- "chokidar": "^3.4.2",
- "cosmiconfig": "^6.0.0",
+ "@babel/code-frame": "^7.16.7",
+ "chalk": "^4.1.2",
+ "chokidar": "^3.5.3",
+ "cosmiconfig": "^7.0.1",
"deepmerge": "^4.2.2",
- "fs-extra": "^9.0.0",
- "glob": "^7.1.6",
- "memfs": "^3.1.2",
+ "fs-extra": "^10.0.0",
+ "memfs": "^3.4.1",
"minimatch": "^3.0.4",
- "schema-utils": "2.7.0",
- "semver": "^7.3.2",
- "tapable": "^1.0.0"
+ "node-abort-controller": "^3.0.1",
+ "schema-utils": "^3.1.1",
+ "semver": "^7.3.5",
+ "tapable": "^2.2.1"
},
"engines": {
- "node": ">=10",
+ "node": ">=12.13.0",
"yarn": ">=1.0.0"
},
"peerDependencies": {
- "eslint": ">= 6",
- "typescript": ">= 2.7",
- "vue-template-compiler": "*",
- "webpack": ">= 4"
- },
- "peerDependenciesMeta": {
- "eslint": {
- "optional": true
- },
- "vue-template-compiler": {
- "optional": true
- }
+ "typescript": ">3.6.0",
+ "webpack": "^5.11.0"
}
},
"node_modules/fork-ts-checker-webpack-plugin/node_modules/ansi-styles": {
@@ -13105,35 +11245,18 @@
"node": ">=7.0.0"
}
},
- "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz",
- "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==",
- "dev": true,
- "dependencies": {
- "@types/parse-json": "^4.0.0",
- "import-fresh": "^3.1.0",
- "parse-json": "^5.0.0",
- "path-type": "^4.0.0",
- "yaml": "^1.7.2"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
- "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
+ "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
"dev": true,
"dependencies": {
- "at-least-node": "^1.0.0",
"graceful-fs": "^4.2.0",
"jsonfile": "^6.0.1",
"universalify": "^2.0.0"
},
"engines": {
- "node": ">=10"
+ "node": ">=12"
}
},
"node_modules/fork-ts-checker-webpack-plugin/node_modules/has-flag": {
@@ -13170,17 +11293,17 @@
}
},
"node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz",
- "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==",
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz",
+ "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==",
"dev": true,
"dependencies": {
- "@types/json-schema": "^7.0.4",
- "ajv": "^6.12.2",
- "ajv-keywords": "^3.4.1"
+ "@types/json-schema": "^7.0.8",
+ "ajv": "^6.12.5",
+ "ajv-keywords": "^3.5.2"
},
"engines": {
- "node": ">= 8.9.0"
+ "node": ">= 10.13.0"
},
"funding": {
"type": "opencollective",
@@ -13188,9 +11311,9 @@
}
},
"node_modules/fork-ts-checker-webpack-plugin/node_modules/semver": {
- "version": "7.5.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz",
- "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==",
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
"dev": true,
"dependencies": {
"lru-cache": "^6.0.0"
@@ -13252,31 +11375,6 @@
"node": ">= 0.6"
}
},
- "node_modules/fraction.js": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz",
- "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==",
- "dev": true,
- "engines": {
- "node": "*"
- },
- "funding": {
- "type": "patreon",
- "url": "https://www.patreon.com/infusion"
- }
- },
- "node_modules/fragment-cache": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
- "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==",
- "dev": true,
- "dependencies": {
- "map-cache": "^0.2.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/fresh": {
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
@@ -13286,17 +11384,6 @@
"node": ">= 0.6"
}
},
- "node_modules/from2": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
- "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "inherits": "^2.0.1",
- "readable-stream": "^2.0.0"
- }
- },
"node_modules/fromentries": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz",
@@ -13316,18 +11403,6 @@
}
]
},
- "node_modules/fs": {
- "version": "0.0.1-security",
- "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz",
- "integrity": "sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w=="
- },
- "node_modules/fs-constants": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
- "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
- "dev": true,
- "optional": true
- },
"node_modules/fs-extra": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
@@ -13358,6 +11433,11 @@
"integrity": "sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ==",
"dev": true
},
+ "node_modules/fs-readdir-recursive": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz",
+ "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA=="
+ },
"node_modules/fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
@@ -13367,6 +11447,7 @@
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
"integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "dev": true,
"hasInstallScript": true,
"optional": true,
"os": [
@@ -13399,12 +11480,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/functional-red-black-tree": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
- "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==",
- "dev": true
- },
"node_modules/functions-have-names": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
@@ -13414,34 +11489,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/galactus": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/galactus/-/galactus-0.2.1.tgz",
- "integrity": "sha512-mDc8EQJKtxjp9PMYS3PbpjjbX3oXhBTxoGaPahw620XZBIHJ4+nvw5KN/tRtmmSDR9dypstGNvqQ3C29QGoGHQ==",
- "dependencies": {
- "debug": "^3.1.0",
- "flora-colossus": "^1.0.0",
- "fs-extra": "^4.0.0"
- }
- },
- "node_modules/galactus/node_modules/debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
- "dependencies": {
- "ms": "^2.1.1"
- }
- },
- "node_modules/galactus/node_modules/fs-extra": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz",
- "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==",
- "dependencies": {
- "graceful-fs": "^4.1.2",
- "jsonfile": "^4.0.0",
- "universalify": "^0.1.0"
- }
- },
"node_modules/gauge": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz",
@@ -13481,6 +11528,7 @@
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "dev": true,
"engines": {
"node": "6.* || 8.* || >= 10.*"
}
@@ -13500,33 +11548,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/get-package-info": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/get-package-info/-/get-package-info-1.0.0.tgz",
- "integrity": "sha512-SCbprXGAPdIhKAXiG+Mk6yeoFH61JlYunqdFQFHDtLjJlDjFf6x07dsS8acO+xWt52jpdVo49AlVDnUVK1sDNw==",
- "dependencies": {
- "bluebird": "^3.1.1",
- "debug": "^2.2.0",
- "lodash.get": "^4.0.0",
- "read-pkg-up": "^2.0.0"
- },
- "engines": {
- "node": ">= 4.0"
- }
- },
- "node_modules/get-package-info/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/get-package-info/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
- },
"node_modules/get-package-type": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
@@ -13536,107 +11557,10 @@
"node": ">=8.0.0"
}
},
- "node_modules/get-proxy": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/get-proxy/-/get-proxy-2.1.0.tgz",
- "integrity": "sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "npm-conf": "^1.1.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/get-stream": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
- "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
- "dependencies": {
- "pump": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/get-symbol-description": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
- "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/get-value": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
- "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/gifsicle": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/gifsicle/-/gifsicle-5.3.0.tgz",
- "integrity": "sha512-FJTpgdj1Ow/FITB7SVza5HlzXa+/lqEY0tHQazAJbuAdvyJtkH4wIdsR2K414oaTwRXHFLLF+tYbipj+OpYg+Q==",
- "dev": true,
- "hasInstallScript": true,
- "optional": true,
- "dependencies": {
- "bin-build": "^3.0.0",
- "bin-wrapper": "^4.0.0",
- "execa": "^5.0.0"
- },
- "bin": {
- "gifsicle": "cli.js"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/imagemin/gisicle-bin?sponsor=1"
- }
- },
- "node_modules/gifsicle/node_modules/execa": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
- "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "cross-spawn": "^7.0.3",
- "get-stream": "^6.0.0",
- "human-signals": "^2.1.0",
- "is-stream": "^2.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^4.0.1",
- "onetime": "^5.1.2",
- "signal-exit": "^3.0.3",
- "strip-final-newline": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/execa?sponsor=1"
- }
- },
- "node_modules/gifsicle/node_modules/get-stream": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
- "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
- "dev": true,
- "optional": true,
+ "node_modules/get-stdin": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz",
+ "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==",
"engines": {
"node": ">=10"
},
@@ -13644,12 +11568,13 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/gifsicle/node_modules/is-stream": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
- "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
- "dev": true,
- "optional": true,
+ "node_modules/get-stream": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
+ "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+ "dependencies": {
+ "pump": "^3.0.0"
+ },
"engines": {
"node": ">=8"
},
@@ -13657,25 +11582,32 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/gifsicle/node_modules/npm-run-path": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
- "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "node_modules/get-symbol-description": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
+ "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
"dev": true,
- "optional": true,
"dependencies": {
- "path-key": "^3.0.0"
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.1"
},
"engines": {
- "node": ">=8"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/github-url-to-object": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/github-url-to-object/-/github-url-to-object-4.0.6.tgz",
- "integrity": "sha512-NaqbYHMUAlPcmWFdrAB7bcxrNIiiJWJe8s/2+iOc9vlcHlwHqSGrPk+Yi3nu6ebTwgsZEa7igz+NH2vEq3gYwQ==",
+ "node_modules/get-tsconfig": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.6.2.tgz",
+ "integrity": "sha512-E5XrT4CbbXcXWy+1jChlZmrmCwd5KGx502kDCXJJ7y898TtWW9FwoG5HfOLVRKmlmDGkWN2HM9Ho+/Y8F0sJDg==",
+ "dev": true,
"dependencies": {
- "is-url": "^1.1.0"
+ "resolve-pkg-maps": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1"
}
},
"node_modules/gl-preserve-state": {
@@ -13706,6 +11638,7 @@
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "devOptional": true,
"dependencies": {
"is-glob": "^4.0.1"
},
@@ -13758,9 +11691,9 @@
}
},
"node_modules/global-agent/node_modules/semver": {
- "version": "7.5.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz",
- "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==",
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
"optional": true,
"dependencies": {
"lru-cache": "^6.0.0"
@@ -13778,21 +11711,6 @@
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"optional": true
},
- "node_modules/global-tunnel-ng": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz",
- "integrity": "sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg==",
- "optional": true,
- "dependencies": {
- "encodeurl": "^1.0.2",
- "lodash": "^4.17.10",
- "npm-conf": "^1.1.3",
- "tunnel": "^0.0.6"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
"node_modules/globals": {
"version": "11.12.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
@@ -13836,15 +11754,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/globby/node_modules/slash": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
- "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/gopd": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
@@ -13858,24 +11767,27 @@
}
},
"node_modules/got": {
- "version": "9.6.0",
- "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz",
- "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==",
- "dependencies": {
- "@sindresorhus/is": "^0.14.0",
- "@szmarczak/http-timer": "^1.1.2",
- "cacheable-request": "^6.0.0",
- "decompress-response": "^3.3.0",
- "duplexer3": "^0.1.4",
- "get-stream": "^4.1.0",
- "lowercase-keys": "^1.0.1",
- "mimic-response": "^1.0.1",
- "p-cancelable": "^1.0.0",
- "to-readable-stream": "^1.0.0",
- "url-parse-lax": "^3.0.0"
+ "version": "11.8.6",
+ "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz",
+ "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==",
+ "dependencies": {
+ "@sindresorhus/is": "^4.0.0",
+ "@szmarczak/http-timer": "^4.0.5",
+ "@types/cacheable-request": "^6.0.1",
+ "@types/responselike": "^1.0.0",
+ "cacheable-lookup": "^5.0.3",
+ "cacheable-request": "^7.0.2",
+ "decompress-response": "^6.0.0",
+ "http2-wrapper": "^1.0.0-beta.5.2",
+ "lowercase-keys": "^2.0.0",
+ "p-cancelable": "^2.0.0",
+ "responselike": "^2.0.0"
},
"engines": {
- "node": ">=8.6"
+ "node": ">=10.19.0"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/got?sponsor=1"
}
},
"node_modules/graceful-fs": {
@@ -13883,10 +11795,10 @@
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
},
- "node_modules/graceful-readlink": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
- "integrity": "sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w==",
+ "node_modules/graphemer": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
+ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
"dev": true
},
"node_modules/graphlib": {
@@ -13897,12 +11809,20 @@
"lodash": "^4.17.15"
}
},
- "node_modules/growly": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz",
- "integrity": "sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==",
+ "node_modules/gzip-size": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz",
+ "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==",
"dev": true,
- "optional": true
+ "dependencies": {
+ "duplexer": "^0.1.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
},
"node_modules/handle-thing": {
"version": "2.0.1",
@@ -13962,16 +11882,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/has-symbol-support-x": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz",
- "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==",
- "dev": true,
- "optional": true,
- "engines": {
- "node": "*"
- }
- },
"node_modules/has-symbols": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
@@ -13984,19 +11894,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/has-to-string-tag-x": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz",
- "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "has-symbol-support-x": "^1.4.1"
- },
- "engines": {
- "node": "*"
- }
- },
"node_modules/has-tostringtag": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
@@ -14017,69 +11914,6 @@
"resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
"integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ=="
},
- "node_modules/has-value": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
- "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==",
- "dev": true,
- "dependencies": {
- "get-value": "^2.0.6",
- "has-values": "^1.0.0",
- "isobject": "^3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/has-values": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
- "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==",
- "dev": true,
- "dependencies": {
- "is-number": "^3.0.0",
- "kind-of": "^4.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/has-values/node_modules/is-number": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
- "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/has-values/node_modules/is-number/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/has-values/node_modules/kind-of": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
- "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/he": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
@@ -14089,19 +11923,6 @@
"he": "bin/he"
}
},
- "node_modules/history": {
- "version": "4.10.1",
- "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz",
- "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==",
- "dependencies": {
- "@babel/runtime": "^7.1.2",
- "loose-envify": "^1.2.0",
- "resolve-pathname": "^3.0.0",
- "tiny-invariant": "^1.0.2",
- "tiny-warning": "^1.0.0",
- "value-equal": "^1.0.1"
- }
- },
"node_modules/hoist-non-react-statics": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
@@ -14157,23 +11978,82 @@
"wbuf": "^1.1.0"
}
},
+ "node_modules/hpack.js/node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+ "dev": true
+ },
+ "node_modules/hpack.js/node_modules/readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "dev": true,
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "node_modules/hpack.js/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true
+ },
+ "node_modules/hpack.js/node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "node_modules/html-element-map": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/html-element-map/-/html-element-map-1.3.1.tgz",
+ "integrity": "sha512-6XMlxrAFX4UEEGxctfFnmrFaaZFNf9i5fNuV5wZ3WWQ4FVaNP1aX1LkX9j2mfEx1NpjeE/rL3nmgEn23GdFmrg==",
+ "dev": true,
+ "dependencies": {
+ "array.prototype.filter": "^1.0.0",
+ "call-bind": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/html-encoding-sniffer": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz",
- "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz",
+ "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==",
"dev": true,
"dependencies": {
- "whatwg-encoding": "^1.0.5"
+ "whatwg-encoding": "^2.0.0"
},
"engines": {
- "node": ">=10"
+ "node": ">=12"
}
},
"node_modules/html-entities": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz",
- "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==",
- "dev": true
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.4.0.tgz",
+ "integrity": "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/mdevils"
+ },
+ {
+ "type": "patreon",
+ "url": "https://patreon.com/mdevils"
+ }
+ ]
},
"node_modules/html-escaper": {
"version": "2.0.2",
@@ -14234,15 +12114,6 @@
"webpack": "^5.20.0"
}
},
- "node_modules/html-webpack-plugin/node_modules/tapable": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
- "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/htmlparser2": {
"version": "8.0.2",
"resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz",
@@ -14295,177 +12166,68 @@
"integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==",
"dev": true
},
- "node_modules/http-proxy": {
- "version": "1.18.1",
- "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz",
- "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
- "dev": true,
- "dependencies": {
- "eventemitter3": "^4.0.0",
- "follow-redirects": "^1.0.0",
- "requires-port": "^1.0.0"
- },
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/http-proxy-agent": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz",
- "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==",
- "dev": true,
- "dependencies": {
- "@tootallnate/once": "2",
- "agent-base": "6",
- "debug": "4"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/http-proxy-middleware": {
- "version": "0.19.1",
- "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz",
- "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==",
- "dev": true,
- "dependencies": {
- "http-proxy": "^1.17.0",
- "is-glob": "^4.0.0",
- "lodash": "^4.17.11",
- "micromatch": "^3.1.10"
- },
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/http-proxy-middleware/node_modules/braces": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
- "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
- "dev": true,
- "dependencies": {
- "arr-flatten": "^1.1.0",
- "array-unique": "^0.3.2",
- "extend-shallow": "^2.0.1",
- "fill-range": "^4.0.0",
- "isobject": "^3.0.1",
- "repeat-element": "^1.1.2",
- "snapdragon": "^0.8.1",
- "snapdragon-node": "^2.0.1",
- "split-string": "^3.0.2",
- "to-regex": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/http-proxy-middleware/node_modules/braces/node_modules/extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
- "dev": true,
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/http-proxy-middleware/node_modules/fill-range": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
- "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
- "dev": true,
- "dependencies": {
- "extend-shallow": "^2.0.1",
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1",
- "to-regex-range": "^2.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/http-proxy-middleware/node_modules/fill-range/node_modules/extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
- "dev": true,
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/http-proxy-middleware/node_modules/is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/http-proxy-middleware/node_modules/is-number": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
- "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
+ "node_modules/http-proxy": {
+ "version": "1.18.1",
+ "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz",
+ "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
"dev": true,
"dependencies": {
- "kind-of": "^3.0.2"
+ "eventemitter3": "^4.0.0",
+ "follow-redirects": "^1.0.0",
+ "requires-port": "^1.0.0"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=8.0.0"
}
},
- "node_modules/http-proxy-middleware/node_modules/is-number/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "node_modules/http-proxy-agent": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz",
+ "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==",
"dev": true,
"dependencies": {
- "is-buffer": "^1.1.5"
+ "@tootallnate/once": "2",
+ "agent-base": "6",
+ "debug": "4"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">= 6"
}
},
- "node_modules/http-proxy-middleware/node_modules/micromatch": {
- "version": "3.1.10",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
- "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "node_modules/http-proxy-middleware": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz",
+ "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==",
"dev": true,
"dependencies": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "braces": "^2.3.1",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "extglob": "^2.0.4",
- "fragment-cache": "^0.2.1",
- "kind-of": "^6.0.2",
- "nanomatch": "^1.2.9",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.2"
+ "@types/http-proxy": "^1.17.8",
+ "http-proxy": "^1.18.1",
+ "is-glob": "^4.0.1",
+ "is-plain-obj": "^3.0.0",
+ "micromatch": "^4.0.2"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=12.0.0"
+ },
+ "peerDependencies": {
+ "@types/express": "^4.17.13"
+ },
+ "peerDependenciesMeta": {
+ "@types/express": {
+ "optional": true
+ }
}
},
- "node_modules/http-proxy-middleware/node_modules/to-regex-range": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
- "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
- "dev": true,
+ "node_modules/http2-wrapper": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz",
+ "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==",
"dependencies": {
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1"
+ "quick-lru": "^5.1.1",
+ "resolve-alpn": "^1.0.0"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=10.19.0"
}
},
"node_modules/https-proxy-agent": {
@@ -14485,7 +12247,6 @@
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
"integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
"dev": true,
- "optional": true,
"engines": {
"node": ">=10.17.0"
}
@@ -14551,338 +12312,32 @@
{
"type": "patreon",
"url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/ignore": {
- "version": "5.2.4",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
- "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==",
- "dev": true,
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/ignore-by-default": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz",
- "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==",
- "dev": true
- },
- "node_modules/image-webpack-loader": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/image-webpack-loader/-/image-webpack-loader-7.0.1.tgz",
- "integrity": "sha512-Y6/lRqMGMhZayIx4AONjU1FIljNb9AfiA2SUZ2o65bN4xPcfHmI3MmhrcmphxK/hiwShK/Q7/9/JkPqQMX8HPw==",
- "dev": true,
- "dependencies": {
- "imagemin": "^7.0.1",
- "loader-utils": "^2.0.0",
- "object-assign": "^4.1.1",
- "schema-utils": "^2.7.1"
- },
- "optionalDependencies": {
- "imagemin-gifsicle": "^7.0.0",
- "imagemin-mozjpeg": "^9.0.0",
- "imagemin-optipng": "^8.0.0",
- "imagemin-pngquant": "^9.0.1",
- "imagemin-svgo": "^8.0.0",
- "imagemin-webp": "^6.0.0"
- }
- },
- "node_modules/imagemin": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/imagemin/-/imagemin-7.0.1.tgz",
- "integrity": "sha512-33AmZ+xjZhg2JMCe+vDf6a9mzWukE7l+wAtesjE7KyteqqKjzxv7aVQeWnul1Ve26mWvEQqyPwl0OctNBfSR9w==",
- "dev": true,
- "dependencies": {
- "file-type": "^12.0.0",
- "globby": "^10.0.0",
- "graceful-fs": "^4.2.2",
- "junk": "^3.1.0",
- "make-dir": "^3.0.0",
- "p-pipe": "^3.0.0",
- "replace-ext": "^1.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/imagemin-gifsicle": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/imagemin-gifsicle/-/imagemin-gifsicle-7.0.0.tgz",
- "integrity": "sha512-LaP38xhxAwS3W8PFh4y5iQ6feoTSF+dTAXFRUEYQWYst6Xd+9L/iPk34QGgK/VO/objmIlmq9TStGfVY2IcHIA==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "execa": "^1.0.0",
- "gifsicle": "^5.0.0",
- "is-gif": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/imagemin/imagemin-gifsicle?sponsor=1"
- }
- },
- "node_modules/imagemin-mozjpeg": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/imagemin-mozjpeg/-/imagemin-mozjpeg-9.0.0.tgz",
- "integrity": "sha512-TwOjTzYqCFRgROTWpVSt5UTT0JeCuzF1jswPLKALDd89+PmrJ2PdMMYeDLYZ1fs9cTovI9GJd68mRSnuVt691w==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "execa": "^4.0.0",
- "is-jpg": "^2.0.0",
- "mozjpeg": "^7.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/imagemin-mozjpeg/node_modules/execa": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz",
- "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "cross-spawn": "^7.0.0",
- "get-stream": "^5.0.0",
- "human-signals": "^1.1.1",
- "is-stream": "^2.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^4.0.0",
- "onetime": "^5.1.0",
- "signal-exit": "^3.0.2",
- "strip-final-newline": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/execa?sponsor=1"
- }
- },
- "node_modules/imagemin-mozjpeg/node_modules/get-stream": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
- "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "pump": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/imagemin-mozjpeg/node_modules/human-signals": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz",
- "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==",
- "dev": true,
- "optional": true,
- "engines": {
- "node": ">=8.12.0"
- }
- },
- "node_modules/imagemin-mozjpeg/node_modules/is-stream": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
- "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
- "dev": true,
- "optional": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/imagemin-mozjpeg/node_modules/npm-run-path": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
- "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "path-key": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/imagemin-optipng": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/imagemin-optipng/-/imagemin-optipng-8.0.0.tgz",
- "integrity": "sha512-CUGfhfwqlPjAC0rm8Fy+R2DJDBGjzy2SkfyT09L8rasnF9jSoHFqJ1xxSZWK6HVPZBMhGPMxCTL70OgTHlLF5A==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "exec-buffer": "^3.0.0",
- "is-png": "^2.0.0",
- "optipng-bin": "^7.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/imagemin-pngquant": {
- "version": "9.0.2",
- "resolved": "https://registry.npmjs.org/imagemin-pngquant/-/imagemin-pngquant-9.0.2.tgz",
- "integrity": "sha512-cj//bKo8+Frd/DM8l6Pg9pws1pnDUjgb7ae++sUX1kUVdv2nrngPykhiUOgFeE0LGY/LmUbCf4egCHC4YUcZSg==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "execa": "^4.0.0",
- "is-png": "^2.0.0",
- "is-stream": "^2.0.0",
- "ow": "^0.17.0",
- "pngquant-bin": "^6.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/imagemin-pngquant/node_modules/execa": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz",
- "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "cross-spawn": "^7.0.0",
- "get-stream": "^5.0.0",
- "human-signals": "^1.1.1",
- "is-stream": "^2.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^4.0.0",
- "onetime": "^5.1.0",
- "signal-exit": "^3.0.2",
- "strip-final-newline": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/execa?sponsor=1"
- }
- },
- "node_modules/imagemin-pngquant/node_modules/get-stream": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
- "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "pump": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/imagemin-pngquant/node_modules/human-signals": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz",
- "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==",
- "dev": true,
- "optional": true,
- "engines": {
- "node": ">=8.12.0"
- }
- },
- "node_modules/imagemin-pngquant/node_modules/is-stream": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
- "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
- "dev": true,
- "optional": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/imagemin-pngquant/node_modules/npm-run-path": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
- "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "path-key": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/imagemin-svgo": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/imagemin-svgo/-/imagemin-svgo-8.0.0.tgz",
- "integrity": "sha512-++fDnnxsLT+4rpt8babwiIbzapgBzeS2Kgcy+CwgBvgSRFltBFhX2WnpCziMtxhRCzqJcCE9EcHWZP/sj+G3rQ==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "is-svg": "^4.2.1",
- "svgo": "^1.3.2"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/imagemin-svgo?sponsor=1"
- }
- },
- "node_modules/imagemin-webp": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/imagemin-webp/-/imagemin-webp-6.1.0.tgz",
- "integrity": "sha512-i8ZluZV1pfQX9aVzmZ/VZh9KBSdPwUlp5VruAa9c30GZnX/nMl5n7h+oUMnI7Mg7+SUpu9mYBsw2nsYGUEllWQ==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "cwebp-bin": "^6.0.0",
- "exec-buffer": "^3.0.0",
- "is-cwebp-readable": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- }
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
},
- "node_modules/imagemin/node_modules/globby": {
- "version": "10.0.2",
- "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz",
- "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==",
+ "node_modules/ignore": {
+ "version": "5.2.4",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
+ "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==",
"dev": true,
- "dependencies": {
- "@types/glob": "^7.1.1",
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.0.3",
- "glob": "^7.1.3",
- "ignore": "^5.1.1",
- "merge2": "^1.2.3",
- "slash": "^3.0.0"
- },
"engines": {
- "node": ">=8"
+ "node": ">= 4"
}
},
+ "node_modules/ignore-by-default": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz",
+ "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==",
+ "dev": true
+ },
"node_modules/immutable": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz",
- "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==",
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.1.tgz",
+ "integrity": "sha512-lj9cnmB/kVS0QHsJnYKD1uo3o39nrbKxszjnqS9Fr6NB7bZzW45U6WSGBPKXDL/CvDKqDNPA4r3DoDQ8GTxo2A==",
"dev": true
},
"node_modules/import-fresh": {
@@ -14900,16 +12355,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/import-lazy": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-3.1.0.tgz",
- "integrity": "sha512-8/gvXvX2JMn0F+CDlSC4l6kOmVaLOO3XLkksI7CI3Ud95KDYJuYur2b9P/PUt/i/pDAMd/DulQsNbbbmRRsDIQ==",
- "dev": true,
- "optional": true,
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/import-local": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz",
@@ -14975,25 +12420,6 @@
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
},
- "node_modules/ini": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
- "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
- "optional": true
- },
- "node_modules/internal-ip": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz",
- "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==",
- "dev": true,
- "dependencies": {
- "default-gateway": "^4.2.0",
- "ipaddr.js": "^1.9.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/internal-slot": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz",
@@ -15017,26 +12443,12 @@
}
},
"node_modules/interpret": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz",
- "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==",
- "dev": true,
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/into-stream": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz",
- "integrity": "sha512-TcdjPibTksa1NQximqep2r17ISRiNE9fwlfbg3F8ANdvP5/yrFTew86VcO//jk4QTaMlbjypPBq76HN2zaKfZQ==",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz",
+ "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==",
"dev": true,
- "optional": true,
- "dependencies": {
- "from2": "^2.1.1",
- "p-is-promise": "^1.1.0"
- },
"engines": {
- "node": ">=4"
+ "node": ">=10.13.0"
}
},
"node_modules/ip": {
@@ -15045,15 +12457,6 @@
"integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==",
"optional": true
},
- "node_modules/ip-regex": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz",
- "integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/ipaddr.js": {
"version": "1.9.1",
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
@@ -15063,27 +12466,6 @@
"node": ">= 0.10"
}
},
- "node_modules/is-absolute-url": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz",
- "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "dev": true,
- "dependencies": {
- "kind-of": "^6.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/is-arguments": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
@@ -15119,6 +12501,21 @@
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
"integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="
},
+ "node_modules/is-async-function": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz",
+ "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==",
+ "dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/is-bigint": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
@@ -15135,6 +12532,7 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
"integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "devOptional": true,
"dependencies": {
"binary-extensions": "^2.0.0"
},
@@ -15188,9 +12586,9 @@
}
},
"node_modules/is-core-module": {
- "version": "2.12.1",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz",
- "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==",
+ "version": "2.13.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz",
+ "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==",
"dependencies": {
"has": "^1.0.3"
},
@@ -15198,38 +12596,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/is-cwebp-readable": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-cwebp-readable/-/is-cwebp-readable-3.0.0.tgz",
- "integrity": "sha512-bpELc7/Q1/U5MWHn4NdHI44R3jxk0h9ew9ljzabiRl70/UIjL/ZAqRMb52F5+eke/VC8yTiv4Ewryo1fPWidvA==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "file-type": "^10.5.0"
- }
- },
- "node_modules/is-cwebp-readable/node_modules/file-type": {
- "version": "10.11.0",
- "resolved": "https://registry.npmjs.org/file-type/-/file-type-10.11.0.tgz",
- "integrity": "sha512-uzk64HRpUZyTGZtVuvrjP0FYxzQrBf4rojot6J65YMEbwBLB0CWm0CLojVpwpmFmxcE/lkvYICgfcGozbBq6rw==",
- "dev": true,
- "optional": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "dev": true,
- "dependencies": {
- "kind-of": "^6.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/is-date-object": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
@@ -15245,26 +12611,11 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
- "dev": true,
- "dependencies": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/is-docker": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
"integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
"dev": true,
- "optional": true,
"bin": {
"is-docker": "cli.js"
},
@@ -15275,26 +12626,27 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/is-extendable": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
- "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
- "dev": true,
- "dependencies": {
- "is-plain-object": "^2.0.4"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/is-extglob": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
"integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "devOptional": true,
"engines": {
"node": ">=0.10.0"
}
},
+ "node_modules/is-finalizationregistry": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz",
+ "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/is-fullwidth-code-point": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
@@ -15317,33 +12669,26 @@
"node": ">=6"
}
},
- "node_modules/is-gif": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-gif/-/is-gif-3.0.0.tgz",
- "integrity": "sha512-IqJ/jlbw5WJSNfwQ/lHEDXF8rxhRgF6ythk2oiEvhpG29F704eX9NO6TvPfMiq9DrbwgcEDnETYNcZDPewQoVw==",
+ "node_modules/is-generator-function": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz",
+ "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==",
"dev": true,
- "optional": true,
"dependencies": {
- "file-type": "^10.4.0"
+ "has-tostringtag": "^1.0.0"
},
"engines": {
- "node": ">=6"
- }
- },
- "node_modules/is-gif/node_modules/file-type": {
- "version": "10.11.0",
- "resolved": "https://registry.npmjs.org/file-type/-/file-type-10.11.0.tgz",
- "integrity": "sha512-uzk64HRpUZyTGZtVuvrjP0FYxzQrBf4rojot6J65YMEbwBLB0CWm0CLojVpwpmFmxcE/lkvYICgfcGozbBq6rw==",
- "dev": true,
- "optional": true,
- "engines": {
- "node": ">=6"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/is-glob": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "devOptional": true,
"dependencies": {
"is-extglob": "^2.1.1"
},
@@ -15351,16 +12696,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/is-jpg": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-jpg/-/is-jpg-2.0.0.tgz",
- "integrity": "sha512-ODlO0ruzhkzD3sdynIainVP5eoOFNN85rxA1+cwwnPe4dKyX0r5+hxNO5XpCrxlHcmb9vkOit9mhRD2JVuimHg==",
- "dev": true,
- "optional": true,
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/is-lambda": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz",
@@ -15376,13 +12711,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/is-natural-number": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz",
- "integrity": "sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==",
- "dev": true,
- "optional": true
- },
"node_modules/is-negative-zero": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
@@ -15399,6 +12727,7 @@
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "devOptional": true,
"engines": {
"node": ">=0.12.0"
}
@@ -15418,65 +12747,25 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/is-obj": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
- "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-object": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz",
- "integrity": "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==",
- "dev": true,
- "optional": true,
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-path-cwd": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz",
- "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/is-path-in-cwd": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz",
- "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==",
- "dev": true,
- "dependencies": {
- "is-path-inside": "^2.1.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/is-path-inside": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz",
- "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==",
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
+ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
"dev": true,
- "dependencies": {
- "path-is-inside": "^1.0.2"
- },
"engines": {
- "node": ">=6"
+ "node": ">=8"
}
},
"node_modules/is-plain-obj": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
- "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz",
+ "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==",
"dev": true,
- "optional": true,
"engines": {
- "node": ">=0.10.0"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/is-plain-object": {
@@ -15491,16 +12780,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/is-png": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-png/-/is-png-2.0.0.tgz",
- "integrity": "sha512-4KPGizaVGj2LK7xwJIz8o5B2ubu1D/vcQsgOGFEDlpcvgZHto4gBnyd0ig7Ws+67ixmwKoNmu0hYnpo6AaKb5g==",
- "dev": true,
- "optional": true,
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/is-potential-custom-element-name": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
@@ -15528,16 +12807,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/is-retry-allowed": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz",
- "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==",
- "dev": true,
- "optional": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/is-set": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz",
@@ -15582,21 +12851,11 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/is-svg": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-4.4.0.tgz",
- "integrity": "sha512-v+AgVwiK5DsGtT9ng+m4mClp6zDAmwrW8nZi6Gg15qzvBnRWWdfWA1TGaXyCDnWq5g5asofIgMVl3PjKxvk1ug==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "fast-xml-parser": "^4.1.3"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
+ "node_modules/is-subset": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz",
+ "integrity": "sha512-6Ybun0IkarhmEqxXCNw/C0bna6Zb/TkfUX9UbwJtK6ObwAVCxmAP308WWTHviM/zAqXk05cdhYsUsZeGQh99iw==",
+ "dev": true
},
"node_modules/is-symbol": {
"version": "1.0.4",
@@ -15614,16 +12873,12 @@
}
},
"node_modules/is-typed-array": {
- "version": "1.1.10",
- "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz",
- "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==",
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz",
+ "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==",
"dev": true,
"dependencies": {
- "available-typed-arrays": "^1.0.5",
- "call-bind": "^1.0.2",
- "for-each": "^0.3.3",
- "gopd": "^1.0.1",
- "has-tostringtag": "^1.0.0"
+ "which-typed-array": "^1.1.11"
},
"engines": {
"node": ">= 0.4"
@@ -15632,17 +12887,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/is-typedarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
- "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==",
- "dev": true
- },
- "node_modules/is-url": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz",
- "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww=="
- },
"node_modules/is-weakmap": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz",
@@ -15677,21 +12921,11 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/is-windows": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
- "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/is-wsl": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
"integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
"dev": true,
- "optional": true,
"dependencies": {
"is-docker": "^2.0.0"
},
@@ -15700,17 +12934,18 @@
}
},
"node_modules/isarray": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ=="
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+ "dev": true
},
"node_modules/isbinaryfile": {
- "version": "4.0.10",
- "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz",
- "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-5.0.0.tgz",
+ "integrity": "sha512-UDdnyGvMajJUWCkib7Cei/dvyJrrvo4FIrsvSFWdPpXSUorzXrDJ0S+X5Q4ZlasfPjca4yqCNNsjbCeiy8FFeg==",
"dev": true,
"engines": {
- "node": ">= 8.0.0"
+ "node": ">= 14.0.0"
},
"funding": {
"url": "https://github.com/sponsors/gjtorikian/"
@@ -15740,14 +12975,15 @@
}
},
"node_modules/istanbul-lib-instrument": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz",
- "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==",
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz",
+ "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==",
"dev": true,
"dependencies": {
- "@babel/core": "^7.7.5",
+ "@babel/core": "^7.12.3",
+ "@babel/parser": "^7.14.7",
"@istanbuljs/schema": "^0.1.2",
- "istanbul-lib-coverage": "^3.0.0",
+ "istanbul-lib-coverage": "^3.2.0",
"semver": "^6.3.0"
},
"engines": {
@@ -15755,17 +12991,17 @@
}
},
"node_modules/istanbul-lib-report": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
- "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz",
+ "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==",
"dev": true,
"dependencies": {
"istanbul-lib-coverage": "^3.0.0",
- "make-dir": "^3.0.0",
+ "make-dir": "^4.0.0",
"supports-color": "^7.1.0"
},
"engines": {
- "node": ">=8"
+ "node": ">=10"
}
},
"node_modules/istanbul-lib-report/node_modules/has-flag": {
@@ -15777,6 +13013,48 @@
"node": ">=8"
}
},
+ "node_modules/istanbul-lib-report/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/istanbul-lib-report/node_modules/make-dir": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz",
+ "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==",
+ "dev": true,
+ "dependencies": {
+ "semver": "^7.5.3"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/istanbul-lib-report/node_modules/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/istanbul-lib-report/node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -15789,6 +13067,12 @@
"node": ">=8"
}
},
+ "node_modules/istanbul-lib-report/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
"node_modules/istanbul-lib-source-maps": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz",
@@ -15813,9 +13097,9 @@
}
},
"node_modules/istanbul-reports": {
- "version": "3.1.5",
- "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz",
- "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==",
+ "version": "3.1.6",
+ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz",
+ "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==",
"dev": true,
"dependencies": {
"html-escaper": "^2.0.0",
@@ -15825,18 +13109,17 @@
"node": ">=8"
}
},
- "node_modules/isurl": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz",
- "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==",
+ "node_modules/iterator.prototype": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.0.tgz",
+ "integrity": "sha512-rjuhAk1AJ1fssphHD0IFV6TWL40CwRZ53FrztKx43yk2v6rguBYsY4Bj1VU4HmoMmKwZUlx7mfnhDf9cOp4YTw==",
"dev": true,
- "optional": true,
"dependencies": {
- "has-to-string-tag-x": "^1.2.0",
- "is-object": "^1.0.1"
- },
- "engines": {
- "node": ">= 4"
+ "define-properties": "^1.1.4",
+ "get-intrinsic": "^1.1.3",
+ "has-symbols": "^1.0.3",
+ "has-tostringtag": "^1.0.0",
+ "reflect.getprototypeof": "^1.0.3"
}
},
"node_modules/jake": {
@@ -15930,132 +13213,198 @@
}
},
"node_modules/jest": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/jest/-/jest-26.6.3.tgz",
- "integrity": "sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/jest/-/jest-29.6.3.tgz",
+ "integrity": "sha512-alueLuoPCDNHFcFGmgETR4KpQ+0ff3qVaiJwxQM4B5sC0CvXcgg4PEi7xrDkxuItDmdz/FVc7SSit4KEu8GRvw==",
"dev": true,
"dependencies": {
- "@jest/core": "^26.6.3",
+ "@jest/core": "^29.6.3",
+ "@jest/types": "^29.6.3",
"import-local": "^3.0.2",
- "jest-cli": "^26.6.3"
+ "jest-cli": "^29.6.3"
},
"bin": {
"jest": "bin/jest.js"
},
"engines": {
- "node": ">= 10.14.2"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ },
+ "peerDependencies": {
+ "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+ },
+ "peerDependenciesMeta": {
+ "node-notifier": {
+ "optional": true
+ }
}
},
"node_modules/jest-changed-files": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-26.6.2.tgz",
- "integrity": "sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.6.3.tgz",
+ "integrity": "sha512-G5wDnElqLa4/c66ma5PG9eRjE342lIbF6SUnTJi26C3J28Fv2TVY2rOyKB9YGbSA5ogwevgmxc4j4aVjrEK6Yg==",
"dev": true,
"dependencies": {
- "@jest/types": "^26.6.2",
- "execa": "^4.0.0",
- "throat": "^5.0.0"
+ "execa": "^5.0.0",
+ "jest-util": "^29.6.3",
+ "p-limit": "^3.1.0"
},
"engines": {
- "node": ">= 10.14.2"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "node_modules/jest-changed-files/node_modules/execa": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz",
- "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==",
+ "node_modules/jest-circus": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.6.3.tgz",
+ "integrity": "sha512-p0R5YqZEMnOpHqHLWRSjm2z/0p6RNsrNE/GRRT3eli8QGOAozj6Ys/3Tv+Ej+IfltJoSPwcQ6/hOCRkNlxLLCw==",
"dev": true,
"dependencies": {
- "cross-spawn": "^7.0.0",
- "get-stream": "^5.0.0",
- "human-signals": "^1.1.1",
- "is-stream": "^2.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^4.0.0",
- "onetime": "^5.1.0",
- "signal-exit": "^3.0.2",
- "strip-final-newline": "^2.0.0"
+ "@jest/environment": "^29.6.3",
+ "@jest/expect": "^29.6.3",
+ "@jest/test-result": "^29.6.3",
+ "@jest/types": "^29.6.3",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "co": "^4.6.0",
+ "dedent": "^1.0.0",
+ "is-generator-fn": "^2.0.0",
+ "jest-each": "^29.6.3",
+ "jest-matcher-utils": "^29.6.3",
+ "jest-message-util": "^29.6.3",
+ "jest-runtime": "^29.6.3",
+ "jest-snapshot": "^29.6.3",
+ "jest-util": "^29.6.3",
+ "p-limit": "^3.1.0",
+ "pretty-format": "^29.6.3",
+ "pure-rand": "^6.0.0",
+ "slash": "^3.0.0",
+ "stack-utils": "^2.0.3"
},
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "node_modules/jest-changed-files/node_modules/get-stream": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
- "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+ "node_modules/jest-circus/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"dependencies": {
- "pump": "^3.0.0"
+ "color-convert": "^2.0.1"
},
"engines": {
"node": ">=8"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/jest-changed-files/node_modules/human-signals": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz",
- "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==",
+ "node_modules/jest-circus/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
"engines": {
- "node": ">=8.12.0"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/jest-changed-files/node_modules/is-stream": {
+ "node_modules/jest-circus/node_modules/color-convert": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
- "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-circus/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
"engines": {
"node": ">=8"
+ }
+ },
+ "node_modules/jest-circus/node_modules/pretty-format": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.3.tgz",
+ "integrity": "sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/schemas": "^29.6.3",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^18.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-circus/node_modules/pretty-format/node_modules/ansi-styles": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/jest-changed-files/node_modules/npm-run-path": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
- "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "node_modules/jest-circus/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"dependencies": {
- "path-key": "^3.0.0"
+ "has-flag": "^4.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/jest-cli": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-26.6.3.tgz",
- "integrity": "sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.6.3.tgz",
+ "integrity": "sha512-KuPdXUPXQIf0t6DvmG8MV4QyhcjR1a6ruKl3YL7aGn/AQ8JkROwFkWzEpDIpt11Qy188dHbRm8WjwMsV/4nmnQ==",
"dev": true,
"dependencies": {
- "@jest/core": "^26.6.3",
- "@jest/test-result": "^26.6.2",
- "@jest/types": "^26.6.2",
+ "@jest/core": "^29.6.3",
+ "@jest/test-result": "^29.6.3",
+ "@jest/types": "^29.6.3",
"chalk": "^4.0.0",
"exit": "^0.1.2",
- "graceful-fs": "^4.2.4",
+ "graceful-fs": "^4.2.9",
"import-local": "^3.0.2",
- "is-ci": "^2.0.0",
- "jest-config": "^26.6.3",
- "jest-util": "^26.6.2",
- "jest-validate": "^26.6.2",
+ "jest-config": "^29.6.3",
+ "jest-util": "^29.6.3",
+ "jest-validate": "^29.6.3",
"prompts": "^2.0.1",
- "yargs": "^15.4.1"
+ "yargs": "^17.3.1"
},
"bin": {
"jest": "bin/jest.js"
},
"engines": {
- "node": ">= 10.14.2"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ },
+ "peerDependencies": {
+ "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+ },
+ "peerDependenciesMeta": {
+ "node-notifier": {
+ "optional": true
+ }
}
},
"node_modules/jest-cli/node_modules/ansi-styles": {
@@ -16089,23 +13438,6 @@
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/jest-cli/node_modules/ci-info": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
- "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
- "dev": true
- },
- "node_modules/jest-cli/node_modules/cliui": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
- "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
- "dev": true,
- "dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^6.2.0"
- }
- },
"node_modules/jest-cli/node_modules/color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
@@ -16118,19 +13450,6 @@
"node": ">=7.0.0"
}
},
- "node_modules/jest-cli/node_modules/find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
- "dev": true,
- "dependencies": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/jest-cli/node_modules/has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -16140,57 +13459,6 @@
"node": ">=8"
}
},
- "node_modules/jest-cli/node_modules/is-ci": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
- "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
- "dev": true,
- "dependencies": {
- "ci-info": "^2.0.0"
- },
- "bin": {
- "is-ci": "bin.js"
- }
- },
- "node_modules/jest-cli/node_modules/locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
- "dev": true,
- "dependencies": {
- "p-locate": "^4.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-cli/node_modules/p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
- "dev": true,
- "dependencies": {
- "p-try": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/jest-cli/node_modules/p-locate": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
- "dev": true,
- "dependencies": {
- "p-limit": "^2.2.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/jest-cli/node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -16203,87 +13471,46 @@
"node": ">=8"
}
},
- "node_modules/jest-cli/node_modules/wrap-ansi": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
- "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-cli/node_modules/yargs": {
- "version": "15.4.1",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
- "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
- "dev": true,
- "dependencies": {
- "cliui": "^6.0.0",
- "decamelize": "^1.2.0",
- "find-up": "^4.1.0",
- "get-caller-file": "^2.0.1",
- "require-directory": "^2.1.1",
- "require-main-filename": "^2.0.0",
- "set-blocking": "^2.0.0",
- "string-width": "^4.2.0",
- "which-module": "^2.0.0",
- "y18n": "^4.0.0",
- "yargs-parser": "^18.1.2"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-cli/node_modules/yargs-parser": {
- "version": "18.1.3",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
- "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
- "dev": true,
- "dependencies": {
- "camelcase": "^5.0.0",
- "decamelize": "^1.2.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/jest-config": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-26.6.3.tgz",
- "integrity": "sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.6.3.tgz",
+ "integrity": "sha512-nb9bOq2aEqogbyL4F9mLkAeQGAgNt7Uz6U59YtQDIxFPiL7Ejgq0YIrp78oyEHD6H4CIV/k7mFrK7eFDzUJ69w==",
"dev": true,
"dependencies": {
- "@babel/core": "^7.1.0",
- "@jest/test-sequencer": "^26.6.3",
- "@jest/types": "^26.6.2",
- "babel-jest": "^26.6.3",
+ "@babel/core": "^7.11.6",
+ "@jest/test-sequencer": "^29.6.3",
+ "@jest/types": "^29.6.3",
+ "babel-jest": "^29.6.3",
"chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
"deepmerge": "^4.2.2",
- "glob": "^7.1.1",
- "graceful-fs": "^4.2.4",
- "jest-environment-jsdom": "^26.6.2",
- "jest-environment-node": "^26.6.2",
- "jest-get-type": "^26.3.0",
- "jest-jasmine2": "^26.6.3",
- "jest-regex-util": "^26.0.0",
- "jest-resolve": "^26.6.2",
- "jest-util": "^26.6.2",
- "jest-validate": "^26.6.2",
- "micromatch": "^4.0.2",
- "pretty-format": "^26.6.2"
+ "glob": "^7.1.3",
+ "graceful-fs": "^4.2.9",
+ "jest-circus": "^29.6.3",
+ "jest-environment-node": "^29.6.3",
+ "jest-get-type": "^29.6.3",
+ "jest-regex-util": "^29.6.3",
+ "jest-resolve": "^29.6.3",
+ "jest-runner": "^29.6.3",
+ "jest-util": "^29.6.3",
+ "jest-validate": "^29.6.3",
+ "micromatch": "^4.0.4",
+ "parse-json": "^5.2.0",
+ "pretty-format": "^29.6.3",
+ "slash": "^3.0.0",
+ "strip-json-comments": "^3.1.1"
},
"engines": {
- "node": ">= 10.14.2"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
},
"peerDependencies": {
+ "@types/node": "*",
"ts-node": ">=9.0.0"
},
"peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ },
"ts-node": {
"optional": true
}
@@ -16341,6 +13568,32 @@
"node": ">=8"
}
},
+ "node_modules/jest-config/node_modules/pretty-format": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.3.tgz",
+ "integrity": "sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/schemas": "^29.6.3",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^18.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-config/node_modules/pretty-format/node_modules/ansi-styles": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
"node_modules/jest-config/node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -16354,18 +13607,18 @@
}
},
"node_modules/jest-diff": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz",
- "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.6.3.tgz",
+ "integrity": "sha512-3sw+AdWnwH9sSNohMRKA7JiYUJSRr/WS6+sEFfBuhxU5V5GlEVKfvUn8JuMHE0wqKowemR1C2aHy8VtXbaV8dQ==",
"dev": true,
"dependencies": {
"chalk": "^4.0.0",
- "diff-sequences": "^26.6.2",
- "jest-get-type": "^26.3.0",
- "pretty-format": "^26.6.2"
+ "diff-sequences": "^29.6.3",
+ "jest-get-type": "^29.6.3",
+ "pretty-format": "^29.6.3"
},
"engines": {
- "node": ">= 10.14.2"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-diff/node_modules/ansi-styles": {
@@ -16420,6 +13673,32 @@
"node": ">=8"
}
},
+ "node_modules/jest-diff/node_modules/pretty-format": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.3.tgz",
+ "integrity": "sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/schemas": "^29.6.3",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^18.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-diff/node_modules/pretty-format/node_modules/ansi-styles": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
"node_modules/jest-diff/node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -16433,31 +13712,31 @@
}
},
"node_modules/jest-docblock": {
- "version": "26.0.0",
- "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz",
- "integrity": "sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.6.3.tgz",
+ "integrity": "sha512-2+H+GOTQBEm2+qFSQ7Ma+BvyV+waiIFxmZF5LdpBsAEjWX8QYjSCa4FrkIYtbfXUJJJnFCYrOtt6TZ+IAiTjBQ==",
"dev": true,
"dependencies": {
"detect-newline": "^3.0.0"
},
"engines": {
- "node": ">= 10.14.2"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-each": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-26.6.2.tgz",
- "integrity": "sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.6.3.tgz",
+ "integrity": "sha512-KoXfJ42k8cqbkfshW7sSHcdfnv5agDdHCPA87ZBdmHP+zJstTJc0ttQaJ/x7zK6noAL76hOuTIJ6ZkQRS5dcyg==",
"dev": true,
"dependencies": {
- "@jest/types": "^26.6.2",
+ "@jest/types": "^29.6.3",
"chalk": "^4.0.0",
- "jest-get-type": "^26.3.0",
- "jest-util": "^26.6.2",
- "pretty-format": "^26.6.2"
+ "jest-get-type": "^29.6.3",
+ "jest-util": "^29.6.3",
+ "pretty-format": "^29.6.3"
},
"engines": {
- "node": ">= 10.14.2"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-each/node_modules/ansi-styles": {
@@ -16512,6 +13791,32 @@
"node": ">=8"
}
},
+ "node_modules/jest-each/node_modules/pretty-format": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.3.tgz",
+ "integrity": "sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/schemas": "^29.6.3",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^18.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-each/node_modules/pretty-format/node_modules/ansi-styles": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
"node_modules/jest-each/node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -16525,195 +13830,135 @@
}
},
"node_modules/jest-environment-jsdom": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz",
- "integrity": "sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.6.3.tgz",
+ "integrity": "sha512-nMJz/i27Moit9bv8Z323/13Melj4FEQH93yRu7GnilvBmPBMH4EGEkEfBTJXYuubyzhMO7w/VHzljIDV+Q/SeQ==",
"dev": true,
"dependencies": {
- "@jest/environment": "^26.6.2",
- "@jest/fake-timers": "^26.6.2",
- "@jest/types": "^26.6.2",
+ "@jest/environment": "^29.6.3",
+ "@jest/fake-timers": "^29.6.3",
+ "@jest/types": "^29.6.3",
+ "@types/jsdom": "^20.0.0",
"@types/node": "*",
- "jest-mock": "^26.6.2",
- "jest-util": "^26.6.2",
- "jsdom": "^16.4.0"
+ "jest-mock": "^29.6.3",
+ "jest-util": "^29.6.3",
+ "jsdom": "^20.0.0"
},
"engines": {
- "node": ">= 10.14.2"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ },
+ "peerDependencies": {
+ "canvas": "^2.5.0"
+ },
+ "peerDependenciesMeta": {
+ "canvas": {
+ "optional": true
+ }
}
},
"node_modules/jest-environment-node": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-26.6.2.tgz",
- "integrity": "sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.6.3.tgz",
+ "integrity": "sha512-PKl7upfPJXMYbWpD+60o4HP86KvFO2c9dZ+Zr6wUzsG5xcPx/65o3ArNgHW5M0RFvLYdW4/aieR4JSooD0a2ew==",
"dev": true,
"dependencies": {
- "@jest/environment": "^26.6.2",
- "@jest/fake-timers": "^26.6.2",
- "@jest/types": "^26.6.2",
+ "@jest/environment": "^29.6.3",
+ "@jest/fake-timers": "^29.6.3",
+ "@jest/types": "^29.6.3",
"@types/node": "*",
- "jest-mock": "^26.6.2",
- "jest-util": "^26.6.2"
+ "jest-mock": "^29.6.3",
+ "jest-util": "^29.6.3"
},
"engines": {
- "node": ">= 10.14.2"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-get-type": {
- "version": "26.3.0",
- "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz",
- "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz",
+ "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==",
"dev": true,
"engines": {
- "node": ">= 10.14.2"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-haste-map": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz",
- "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.6.3.tgz",
+ "integrity": "sha512-GecR5YavfjkhOytEFHAeI6aWWG3f/cOKNB1YJvj/B76xAmeVjy4zJUYobGF030cRmKaO1FBw3V8CZZ6KVh9ZSw==",
"dev": true,
"dependencies": {
- "@jest/types": "^26.6.2",
- "@types/graceful-fs": "^4.1.2",
+ "@jest/types": "^29.6.3",
+ "@types/graceful-fs": "^4.1.3",
"@types/node": "*",
"anymatch": "^3.0.3",
"fb-watchman": "^2.0.0",
- "graceful-fs": "^4.2.4",
- "jest-regex-util": "^26.0.0",
- "jest-serializer": "^26.6.2",
- "jest-util": "^26.6.2",
- "jest-worker": "^26.6.2",
- "micromatch": "^4.0.2",
- "sane": "^4.0.3",
- "walker": "^1.0.7"
+ "graceful-fs": "^4.2.9",
+ "jest-regex-util": "^29.6.3",
+ "jest-util": "^29.6.3",
+ "jest-worker": "^29.6.3",
+ "micromatch": "^4.0.4",
+ "walker": "^1.0.8"
},
"engines": {
- "node": ">= 10.14.2"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
},
"optionalDependencies": {
- "fsevents": "^2.1.2"
- }
- },
- "node_modules/jest-jasmine2": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz",
- "integrity": "sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==",
- "dev": true,
- "dependencies": {
- "@babel/traverse": "^7.1.0",
- "@jest/environment": "^26.6.2",
- "@jest/source-map": "^26.6.2",
- "@jest/test-result": "^26.6.2",
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "co": "^4.6.0",
- "expect": "^26.6.2",
- "is-generator-fn": "^2.0.0",
- "jest-each": "^26.6.2",
- "jest-matcher-utils": "^26.6.2",
- "jest-message-util": "^26.6.2",
- "jest-runtime": "^26.6.3",
- "jest-snapshot": "^26.6.2",
- "jest-util": "^26.6.2",
- "pretty-format": "^26.6.2",
- "throat": "^5.0.0"
- },
- "engines": {
- "node": ">= 10.14.2"
+ "fsevents": "^2.3.2"
}
},
- "node_modules/jest-jasmine2/node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "node_modules/jest-leak-detector": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.6.3.tgz",
+ "integrity": "sha512-0kfbESIHXYdhAdpLsW7xdwmYhLf1BRu4AA118/OxFm0Ho1b2RcTmO4oF6aAMaxpxdxnJ3zve2rgwzNBD4Zbm7Q==",
"dev": true,
"dependencies": {
- "color-convert": "^2.0.1"
+ "jest-get-type": "^29.6.3",
+ "pretty-format": "^29.6.3"
},
"engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "node_modules/jest-jasmine2/node_modules/chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "node_modules/jest-leak-detector/node_modules/ansi-styles": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
"dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
"engines": {
"node": ">=10"
},
"funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/jest-jasmine2/node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/jest-jasmine2/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-jasmine2/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/jest-leak-detector": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz",
- "integrity": "sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==",
+ "node_modules/jest-leak-detector/node_modules/pretty-format": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.3.tgz",
+ "integrity": "sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==",
"dev": true,
"dependencies": {
- "jest-get-type": "^26.3.0",
- "pretty-format": "^26.6.2"
+ "@jest/schemas": "^29.6.3",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^18.0.0"
},
"engines": {
- "node": ">= 10.14.2"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-matcher-utils": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz",
- "integrity": "sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.6.3.tgz",
+ "integrity": "sha512-6ZrMYINZdwduSt5Xu18/n49O1IgXdjsfG7NEZaQws9k69eTKWKcVbJBw/MZsjOZe2sSyJFmuzh8042XWwl54Zg==",
"dev": true,
"dependencies": {
"chalk": "^4.0.0",
- "jest-diff": "^26.6.2",
- "jest-get-type": "^26.3.0",
- "pretty-format": "^26.6.2"
+ "jest-diff": "^29.6.3",
+ "jest-get-type": "^29.6.3",
+ "pretty-format": "^29.6.3"
},
"engines": {
- "node": ">= 10.14.2"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-matcher-utils/node_modules/ansi-styles": {
@@ -16768,6 +14013,32 @@
"node": ">=8"
}
},
+ "node_modules/jest-matcher-utils/node_modules/pretty-format": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.3.tgz",
+ "integrity": "sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/schemas": "^29.6.3",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^18.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-matcher-utils/node_modules/pretty-format/node_modules/ansi-styles": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
"node_modules/jest-matcher-utils/node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -16781,23 +14052,23 @@
}
},
"node_modules/jest-message-util": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz",
- "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.6.3.tgz",
+ "integrity": "sha512-FtzaEEHzjDpQp51HX4UMkPZjy46ati4T5pEMyM6Ik48ztu4T9LQplZ6OsimHx7EuM9dfEh5HJa6D3trEftu3dA==",
"dev": true,
"dependencies": {
- "@babel/code-frame": "^7.0.0",
- "@jest/types": "^26.6.2",
+ "@babel/code-frame": "^7.12.13",
+ "@jest/types": "^29.6.3",
"@types/stack-utils": "^2.0.0",
"chalk": "^4.0.0",
- "graceful-fs": "^4.2.4",
- "micromatch": "^4.0.2",
- "pretty-format": "^26.6.2",
+ "graceful-fs": "^4.2.9",
+ "micromatch": "^4.0.4",
+ "pretty-format": "^29.6.3",
"slash": "^3.0.0",
- "stack-utils": "^2.0.2"
+ "stack-utils": "^2.0.3"
},
"engines": {
- "node": ">= 10.14.2"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-message-util/node_modules/ansi-styles": {
@@ -16852,6 +14123,32 @@
"node": ">=8"
}
},
+ "node_modules/jest-message-util/node_modules/pretty-format": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.3.tgz",
+ "integrity": "sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/schemas": "^29.6.3",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^18.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-message-util/node_modules/pretty-format/node_modules/ansi-styles": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
"node_modules/jest-message-util/node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -16865,16 +14162,17 @@
}
},
"node_modules/jest-mock": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-26.6.2.tgz",
- "integrity": "sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.6.3.tgz",
+ "integrity": "sha512-Z7Gs/mOyTSR4yPsaZ72a/MtuK6RnC3JYqWONe48oLaoEcYwEDxqvbXz85G4SJrm2Z5Ar9zp6MiHF4AlFlRM4Pg==",
"dev": true,
"dependencies": {
- "@jest/types": "^26.6.2",
- "@types/node": "*"
+ "@jest/types": "^29.6.3",
+ "@types/node": "*",
+ "jest-util": "^29.6.3"
},
"engines": {
- "node": ">= 10.14.2"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-pnp-resolver": {
@@ -16895,45 +14193,45 @@
}
},
"node_modules/jest-regex-util": {
- "version": "26.0.0",
- "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz",
- "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz",
+ "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==",
"dev": true,
"engines": {
- "node": ">= 10.14.2"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-resolve": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz",
- "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.6.3.tgz",
+ "integrity": "sha512-WMXwxhvzDeA/J+9jz1i8ZKGmbw/n+s988EiUvRI4egM+eTn31Hb5v10Re3slG3/qxntkBt2/6GkQVDGu6Bwyhw==",
"dev": true,
"dependencies": {
- "@jest/types": "^26.6.2",
"chalk": "^4.0.0",
- "graceful-fs": "^4.2.4",
+ "graceful-fs": "^4.2.9",
+ "jest-haste-map": "^29.6.3",
"jest-pnp-resolver": "^1.2.2",
- "jest-util": "^26.6.2",
- "read-pkg-up": "^7.0.1",
- "resolve": "^1.18.1",
+ "jest-util": "^29.6.3",
+ "jest-validate": "^29.6.3",
+ "resolve": "^1.20.0",
+ "resolve.exports": "^2.0.0",
"slash": "^3.0.0"
},
"engines": {
- "node": ">= 10.14.2"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-resolve-dependencies": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz",
- "integrity": "sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.6.3.tgz",
+ "integrity": "sha512-iah5nhSPTwtUV7yzpTc9xGg8gP3Ch2VNsuFMsKoCkNCrQSbFtx5KRPemmPJ32AUhTSDqJXB6djPN6zAaUGV53g==",
"dev": true,
"dependencies": {
- "@jest/types": "^26.6.2",
- "jest-regex-util": "^26.0.0",
- "jest-snapshot": "^26.6.2"
+ "jest-regex-util": "^29.6.3",
+ "jest-snapshot": "^29.6.3"
},
"engines": {
- "node": ">= 10.14.2"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-resolve/node_modules/ansi-styles": {
@@ -16979,19 +14277,6 @@
"node": ">=7.0.0"
}
},
- "node_modules/jest-resolve/node_modules/find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
- "dev": true,
- "dependencies": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/jest-resolve/node_modules/has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -17001,136 +14286,48 @@
"node": ">=8"
}
},
- "node_modules/jest-resolve/node_modules/locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
- "dev": true,
- "dependencies": {
- "p-locate": "^4.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-resolve/node_modules/p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
- "dev": true,
- "dependencies": {
- "p-try": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/jest-resolve/node_modules/p-locate": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
- "dev": true,
- "dependencies": {
- "p-limit": "^2.2.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-resolve/node_modules/read-pkg": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
- "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==",
- "dev": true,
- "dependencies": {
- "@types/normalize-package-data": "^2.4.0",
- "normalize-package-data": "^2.5.0",
- "parse-json": "^5.0.0",
- "type-fest": "^0.6.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-resolve/node_modules/read-pkg-up": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz",
- "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==",
- "dev": true,
- "dependencies": {
- "find-up": "^4.1.0",
- "read-pkg": "^5.2.0",
- "type-fest": "^0.8.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/jest-resolve/node_modules/read-pkg/node_modules/type-fest": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz",
- "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/jest-resolve/node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-resolve/node_modules/type-fest": {
- "version": "0.8.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
- "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
"engines": {
"node": ">=8"
}
},
"node_modules/jest-runner": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz",
- "integrity": "sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.6.3.tgz",
+ "integrity": "sha512-E4zsMhQnjhirFPhDTJgoLMWUrVCDij/KGzWlbslDHGuO8Hl2pVUfOiygMzVZtZq+BzmlqwEr7LYmW+WFLlmX8w==",
"dev": true,
"dependencies": {
- "@jest/console": "^26.6.2",
- "@jest/environment": "^26.6.2",
- "@jest/test-result": "^26.6.2",
- "@jest/types": "^26.6.2",
+ "@jest/console": "^29.6.3",
+ "@jest/environment": "^29.6.3",
+ "@jest/test-result": "^29.6.3",
+ "@jest/transform": "^29.6.3",
+ "@jest/types": "^29.6.3",
"@types/node": "*",
"chalk": "^4.0.0",
- "emittery": "^0.7.1",
- "exit": "^0.1.2",
- "graceful-fs": "^4.2.4",
- "jest-config": "^26.6.3",
- "jest-docblock": "^26.0.0",
- "jest-haste-map": "^26.6.2",
- "jest-leak-detector": "^26.6.2",
- "jest-message-util": "^26.6.2",
- "jest-resolve": "^26.6.2",
- "jest-runtime": "^26.6.3",
- "jest-util": "^26.6.2",
- "jest-worker": "^26.6.2",
- "source-map-support": "^0.5.6",
- "throat": "^5.0.0"
+ "emittery": "^0.13.1",
+ "graceful-fs": "^4.2.9",
+ "jest-docblock": "^29.6.3",
+ "jest-environment-node": "^29.6.3",
+ "jest-haste-map": "^29.6.3",
+ "jest-leak-detector": "^29.6.3",
+ "jest-message-util": "^29.6.3",
+ "jest-resolve": "^29.6.3",
+ "jest-runtime": "^29.6.3",
+ "jest-util": "^29.6.3",
+ "jest-watcher": "^29.6.3",
+ "jest-worker": "^29.6.3",
+ "p-limit": "^3.1.0",
+ "source-map-support": "0.5.13"
},
"engines": {
- "node": ">= 10.14.2"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-runner/node_modules/ansi-styles": {
@@ -17185,6 +14382,25 @@
"node": ">=8"
}
},
+ "node_modules/jest-runner/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/jest-runner/node_modules/source-map-support": {
+ "version": "0.5.13",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz",
+ "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==",
+ "dev": true,
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
"node_modules/jest-runner/node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -17198,53 +14414,36 @@
}
},
"node_modules/jest-runtime": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.6.3.tgz",
- "integrity": "sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==",
- "dev": true,
- "dependencies": {
- "@jest/console": "^26.6.2",
- "@jest/environment": "^26.6.2",
- "@jest/fake-timers": "^26.6.2",
- "@jest/globals": "^26.6.2",
- "@jest/source-map": "^26.6.2",
- "@jest/test-result": "^26.6.2",
- "@jest/transform": "^26.6.2",
- "@jest/types": "^26.6.2",
- "@types/yargs": "^15.0.0",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.6.3.tgz",
+ "integrity": "sha512-VM0Z3a9xaqizGpEKwCOIhImkrINYzxgwk8oQAvrmAiXX8LNrJrRjyva30RkuRY0ETAotHLlUcd2moviCA1hgsQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/environment": "^29.6.3",
+ "@jest/fake-timers": "^29.6.3",
+ "@jest/globals": "^29.6.3",
+ "@jest/source-map": "^29.6.3",
+ "@jest/test-result": "^29.6.3",
+ "@jest/transform": "^29.6.3",
+ "@jest/types": "^29.6.3",
+ "@types/node": "*",
"chalk": "^4.0.0",
- "cjs-module-lexer": "^0.6.0",
+ "cjs-module-lexer": "^1.0.0",
"collect-v8-coverage": "^1.0.0",
- "exit": "^0.1.2",
"glob": "^7.1.3",
- "graceful-fs": "^4.2.4",
- "jest-config": "^26.6.3",
- "jest-haste-map": "^26.6.2",
- "jest-message-util": "^26.6.2",
- "jest-mock": "^26.6.2",
- "jest-regex-util": "^26.0.0",
- "jest-resolve": "^26.6.2",
- "jest-snapshot": "^26.6.2",
- "jest-util": "^26.6.2",
- "jest-validate": "^26.6.2",
+ "graceful-fs": "^4.2.9",
+ "jest-haste-map": "^29.6.3",
+ "jest-message-util": "^29.6.3",
+ "jest-mock": "^29.6.3",
+ "jest-regex-util": "^29.6.3",
+ "jest-resolve": "^29.6.3",
+ "jest-snapshot": "^29.6.3",
+ "jest-util": "^29.6.3",
"slash": "^3.0.0",
- "strip-bom": "^4.0.0",
- "yargs": "^15.4.1"
- },
- "bin": {
- "jest-runtime": "bin/jest-runtime.js"
+ "strip-bom": "^4.0.0"
},
"engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/jest-runtime/node_modules/@types/yargs": {
- "version": "15.0.15",
- "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.15.tgz",
- "integrity": "sha512-IziEYMU9XoVj8hWg7k+UJrXALkGFjWJhn5QFEv9q4p+v40oZhSuC135M38st8XPjICL7Ey4TV64ferBGUoJhBg==",
- "dev": true,
- "dependencies": {
- "@types/yargs-parser": "*"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-runtime/node_modules/ansi-styles": {
@@ -17278,17 +14477,6 @@
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/jest-runtime/node_modules/cliui": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
- "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
- "dev": true,
- "dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^6.2.0"
- }
- },
"node_modules/jest-runtime/node_modules/color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
@@ -17301,19 +14489,6 @@
"node": ">=7.0.0"
}
},
- "node_modules/jest-runtime/node_modules/find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
- "dev": true,
- "dependencies": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/jest-runtime/node_modules/has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -17323,45 +14498,6 @@
"node": ">=8"
}
},
- "node_modules/jest-runtime/node_modules/locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
- "dev": true,
- "dependencies": {
- "p-locate": "^4.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-runtime/node_modules/p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
- "dev": true,
- "dependencies": {
- "p-try": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/jest-runtime/node_modules/p-locate": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
- "dev": true,
- "dependencies": {
- "p-limit": "^2.2.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/jest-runtime/node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -17374,93 +14510,35 @@
"node": ">=8"
}
},
- "node_modules/jest-runtime/node_modules/wrap-ansi": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
- "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-runtime/node_modules/yargs": {
- "version": "15.4.1",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
- "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
- "dev": true,
- "dependencies": {
- "cliui": "^6.0.0",
- "decamelize": "^1.2.0",
- "find-up": "^4.1.0",
- "get-caller-file": "^2.0.1",
- "require-directory": "^2.1.1",
- "require-main-filename": "^2.0.0",
- "set-blocking": "^2.0.0",
- "string-width": "^4.2.0",
- "which-module": "^2.0.0",
- "y18n": "^4.0.0",
- "yargs-parser": "^18.1.2"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-runtime/node_modules/yargs-parser": {
- "version": "18.1.3",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
- "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
- "dev": true,
- "dependencies": {
- "camelcase": "^5.0.0",
- "decamelize": "^1.2.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/jest-serializer": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz",
- "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==",
- "dev": true,
- "dependencies": {
- "@types/node": "*",
- "graceful-fs": "^4.2.4"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
"node_modules/jest-snapshot": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz",
- "integrity": "sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.6.3.tgz",
+ "integrity": "sha512-66Iu7H1ojiveQMGFnKecHIZPPPBjZwfQEnF6wxqpxGf57sV3YSUtAb5/sTKM5TPa3OndyxZp1wxHFbmgVhc53w==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.0.0",
- "@jest/types": "^26.6.2",
- "@types/babel__traverse": "^7.0.4",
- "@types/prettier": "^2.0.0",
+ "@babel/core": "^7.11.6",
+ "@babel/generator": "^7.7.2",
+ "@babel/plugin-syntax-jsx": "^7.7.2",
+ "@babel/plugin-syntax-typescript": "^7.7.2",
+ "@babel/types": "^7.3.3",
+ "@jest/expect-utils": "^29.6.3",
+ "@jest/transform": "^29.6.3",
+ "@jest/types": "^29.6.3",
+ "babel-preset-current-node-syntax": "^1.0.0",
"chalk": "^4.0.0",
- "expect": "^26.6.2",
- "graceful-fs": "^4.2.4",
- "jest-diff": "^26.6.2",
- "jest-get-type": "^26.3.0",
- "jest-haste-map": "^26.6.2",
- "jest-matcher-utils": "^26.6.2",
- "jest-message-util": "^26.6.2",
- "jest-resolve": "^26.6.2",
+ "expect": "^29.6.3",
+ "graceful-fs": "^4.2.9",
+ "jest-diff": "^29.6.3",
+ "jest-get-type": "^29.6.3",
+ "jest-matcher-utils": "^29.6.3",
+ "jest-message-util": "^29.6.3",
+ "jest-util": "^29.6.3",
"natural-compare": "^1.4.0",
- "pretty-format": "^26.6.2",
- "semver": "^7.3.2"
+ "pretty-format": "^29.6.3",
+ "semver": "^7.5.3"
},
"engines": {
- "node": ">= 10.14.2"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-snapshot/node_modules/ansi-styles": {
@@ -17527,10 +14605,36 @@
"node": ">=10"
}
},
+ "node_modules/jest-snapshot/node_modules/pretty-format": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.3.tgz",
+ "integrity": "sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/schemas": "^29.6.3",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^18.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/pretty-format/node_modules/ansi-styles": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
"node_modules/jest-snapshot/node_modules/semver": {
- "version": "7.5.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz",
- "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==",
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
"dev": true,
"dependencies": {
"lru-cache": "^6.0.0"
@@ -17561,20 +14665,20 @@
"dev": true
},
"node_modules/jest-util": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz",
- "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.6.3.tgz",
+ "integrity": "sha512-QUjna/xSy4B32fzcKTSz1w7YYzgiHrjjJjevdRf61HYk998R5vVMMNmrHESYZVDS5DSWs+1srPLPKxXPkeSDOA==",
"dev": true,
"dependencies": {
- "@jest/types": "^26.6.2",
+ "@jest/types": "^29.6.3",
"@types/node": "*",
"chalk": "^4.0.0",
- "graceful-fs": "^4.2.4",
- "is-ci": "^2.0.0",
- "micromatch": "^4.0.2"
+ "ci-info": "^3.2.0",
+ "graceful-fs": "^4.2.9",
+ "picomatch": "^2.2.3"
},
"engines": {
- "node": ">= 10.14.2"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-util/node_modules/ansi-styles": {
@@ -17608,12 +14712,6 @@
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/jest-util/node_modules/ci-info": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
- "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
- "dev": true
- },
"node_modules/jest-util/node_modules/color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
@@ -17635,18 +14733,6 @@
"node": ">=8"
}
},
- "node_modules/jest-util/node_modules/is-ci": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
- "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
- "dev": true,
- "dependencies": {
- "ci-info": "^2.0.0"
- },
- "bin": {
- "is-ci": "bin.js"
- }
- },
"node_modules/jest-util/node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -17660,20 +14746,20 @@
}
},
"node_modules/jest-validate": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz",
- "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.6.3.tgz",
+ "integrity": "sha512-e7KWZcAIX+2W1o3cHfnqpGajdCs1jSM3DkXjGeLSNmCazv1EeI1ggTeK5wdZhF+7N+g44JI2Od3veojoaumlfg==",
"dev": true,
"dependencies": {
- "@jest/types": "^26.6.2",
- "camelcase": "^6.0.0",
+ "@jest/types": "^29.6.3",
+ "camelcase": "^6.2.0",
"chalk": "^4.0.0",
- "jest-get-type": "^26.3.0",
+ "jest-get-type": "^29.6.3",
"leven": "^3.1.0",
- "pretty-format": "^26.6.2"
+ "pretty-format": "^29.6.3"
},
"engines": {
- "node": ">= 10.14.2"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-validate/node_modules/ansi-styles": {
@@ -17740,6 +14826,32 @@
"node": ">=8"
}
},
+ "node_modules/jest-validate/node_modules/pretty-format": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.3.tgz",
+ "integrity": "sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/schemas": "^29.6.3",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^18.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-validate/node_modules/pretty-format/node_modules/ansi-styles": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
"node_modules/jest-validate/node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -17753,21 +14865,22 @@
}
},
"node_modules/jest-watcher": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.6.2.tgz",
- "integrity": "sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.6.3.tgz",
+ "integrity": "sha512-NgpFjZ2U2MKusjidbi4Oiu7tfs+nrgdIxIEVROvH1cFmOei9Uj25lwkMsakqLnH/s0nEcvxO1ck77FiRlcnpZg==",
"dev": true,
"dependencies": {
- "@jest/test-result": "^26.6.2",
- "@jest/types": "^26.6.2",
+ "@jest/test-result": "^29.6.3",
+ "@jest/types": "^29.6.3",
"@types/node": "*",
"ansi-escapes": "^4.2.1",
"chalk": "^4.0.0",
- "jest-util": "^26.6.2",
+ "emittery": "^0.13.1",
+ "jest-util": "^29.6.3",
"string-length": "^4.0.1"
},
"engines": {
- "node": ">= 10.14.2"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-watcher/node_modules/ansi-styles": {
@@ -17835,17 +14948,18 @@
}
},
"node_modules/jest-worker": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz",
- "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.6.3.tgz",
+ "integrity": "sha512-wacANXecZ/GbQakpf2CClrqrlwsYYDSXFd4fIGdL+dXpM2GWoJ+6bhQ7vR3TKi3+gkSfBkjy1/khH/WrYS4Q6g==",
"dev": true,
"dependencies": {
"@types/node": "*",
+ "jest-util": "^29.6.3",
"merge-stream": "^2.0.0",
- "supports-color": "^7.0.0"
+ "supports-color": "^8.0.0"
},
"engines": {
- "node": ">= 10.13.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-worker/node_modules/has-flag": {
@@ -17858,15 +14972,27 @@
}
},
"node_modules/jest-worker/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
"dev": true,
"dependencies": {
"has-flag": "^4.0.0"
},
"engines": {
- "node": ">=8"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
+ }
+ },
+ "node_modules/jiti": {
+ "version": "1.19.1",
+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.19.1.tgz",
+ "integrity": "sha512-oVhqoRDaBXf7sjkll95LHVS6Myyyb1zaunVwk4Z0+WPSW4gjS0pl01zYKHScTuyEhQsFxV5L4DR5r+YqSyqyyg==",
+ "dev": true,
+ "bin": {
+ "jiti": "bin/jiti.js"
}
},
"node_modules/js-tokens": {
@@ -17887,41 +15013,40 @@
}
},
"node_modules/jsdom": {
- "version": "16.7.0",
- "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz",
- "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==",
+ "version": "20.0.3",
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz",
+ "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==",
"dev": true,
"dependencies": {
- "abab": "^2.0.5",
- "acorn": "^8.2.4",
- "acorn-globals": "^6.0.0",
- "cssom": "^0.4.4",
+ "abab": "^2.0.6",
+ "acorn": "^8.8.1",
+ "acorn-globals": "^7.0.0",
+ "cssom": "^0.5.0",
"cssstyle": "^2.3.0",
- "data-urls": "^2.0.0",
- "decimal.js": "^10.2.1",
- "domexception": "^2.0.1",
+ "data-urls": "^3.0.2",
+ "decimal.js": "^10.4.2",
+ "domexception": "^4.0.0",
"escodegen": "^2.0.0",
- "form-data": "^3.0.0",
- "html-encoding-sniffer": "^2.0.1",
- "http-proxy-agent": "^4.0.1",
- "https-proxy-agent": "^5.0.0",
+ "form-data": "^4.0.0",
+ "html-encoding-sniffer": "^3.0.0",
+ "http-proxy-agent": "^5.0.0",
+ "https-proxy-agent": "^5.0.1",
"is-potential-custom-element-name": "^1.0.1",
- "nwsapi": "^2.2.0",
- "parse5": "6.0.1",
- "saxes": "^5.0.1",
+ "nwsapi": "^2.2.2",
+ "parse5": "^7.1.1",
+ "saxes": "^6.0.0",
"symbol-tree": "^3.2.4",
- "tough-cookie": "^4.0.0",
- "w3c-hr-time": "^1.0.2",
- "w3c-xmlserializer": "^2.0.0",
- "webidl-conversions": "^6.1.0",
- "whatwg-encoding": "^1.0.5",
- "whatwg-mimetype": "^2.3.0",
- "whatwg-url": "^8.5.0",
- "ws": "^7.4.6",
- "xml-name-validator": "^3.0.0"
+ "tough-cookie": "^4.1.2",
+ "w3c-xmlserializer": "^4.0.0",
+ "webidl-conversions": "^7.0.0",
+ "whatwg-encoding": "^2.0.0",
+ "whatwg-mimetype": "^3.0.0",
+ "whatwg-url": "^11.0.0",
+ "ws": "^8.11.0",
+ "xml-name-validator": "^4.0.0"
},
"engines": {
- "node": ">=10"
+ "node": ">=14"
},
"peerDependencies": {
"canvas": "^2.5.0"
@@ -17932,61 +15057,6 @@
}
}
},
- "node_modules/jsdom/node_modules/@tootallnate/once": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
- "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==",
- "dev": true,
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/jsdom/node_modules/acorn": {
- "version": "8.9.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.9.0.tgz",
- "integrity": "sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==",
- "dev": true,
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/jsdom/node_modules/form-data": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz",
- "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==",
- "dev": true,
- "dependencies": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.8",
- "mime-types": "^2.1.12"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/jsdom/node_modules/http-proxy-agent": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
- "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
- "dev": true,
- "dependencies": {
- "@tootallnate/once": "1",
- "agent-base": "6",
- "debug": "4"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/jsdom/node_modules/parse5": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
- "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==",
- "dev": true
- },
"node_modules/jsesc": {
"version": "2.5.2",
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
@@ -17999,14 +15069,15 @@
}
},
"node_modules/json-buffer": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz",
- "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ=="
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="
},
"node_modules/json-parse-better-errors": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
- "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw=="
+ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
+ "dev": true
},
"node_modules/json-parse-even-better-errors": {
"version": "2.3.1",
@@ -18016,12 +15087,8 @@
"node_modules/json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
- },
- "node_modules/json-schema-typed": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-7.0.3.tgz",
- "integrity": "sha512-7DE8mpG+/fVw+dTpjbxnx47TaMnDfOI1jwft9g1VybltZCduyRQPJPvc+zzKY9WPHxhPWczyFuYa6I8Mw4iU5A=="
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
},
"node_modules/json-stable-stringify-without-jsonify": {
"version": "1.0.1",
@@ -18055,26 +15122,20 @@
}
},
"node_modules/jsx-ast-utils": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz",
- "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==",
+ "version": "3.3.5",
+ "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz",
+ "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==",
"dev": true,
"dependencies": {
- "array-includes": "^3.1.5",
- "object.assign": "^4.1.3"
+ "array-includes": "^3.1.6",
+ "array.prototype.flat": "^1.3.1",
+ "object.assign": "^4.1.4",
+ "object.values": "^1.1.6"
},
"engines": {
"node": ">=4.0"
}
},
- "node_modules/junk": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz",
- "integrity": "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==",
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/kapsule": {
"version": "1.14.4",
"resolved": "https://registry.npmjs.org/kapsule/-/kapsule-1.14.4.tgz",
@@ -18087,19 +15148,13 @@
}
},
"node_modules/keyv": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz",
- "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==",
+ "version": "4.5.3",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz",
+ "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==",
"dependencies": {
- "json-buffer": "3.0.0"
+ "json-buffer": "3.0.1"
}
},
- "node_modules/killable": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz",
- "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==",
- "dev": true
- },
"node_modules/kind-of": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
@@ -18118,15 +15173,6 @@
"node": ">=6"
}
},
- "node_modules/klona": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz",
- "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==",
- "dev": true,
- "engines": {
- "node": ">= 8"
- }
- },
"node_modules/language-subtag-registry": {
"version": "0.3.22",
"resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz",
@@ -18142,6 +15188,16 @@
"language-subtag-registry": "~0.3.2"
}
},
+ "node_modules/launch-editor": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.0.tgz",
+ "integrity": "sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==",
+ "dev": true,
+ "dependencies": {
+ "picocolors": "^1.0.0",
+ "shell-quote": "^1.7.3"
+ }
+ },
"node_modules/layout-bmfont-text": {
"version": "1.3.4",
"resolved": "https://registry.npmjs.org/layout-bmfont-text/-/layout-bmfont-text-1.3.4.tgz",
@@ -18298,6 +15354,7 @@
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
"integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "dev": true,
"dependencies": {
"p-locate": "^5.0.0"
},
@@ -18321,13 +15378,31 @@
"node_modules/lodash.debounce": {
"version": "4.0.8",
"resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
- "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
+ "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow=="
+ },
+ "node_modules/lodash.escape": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz",
+ "integrity": "sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw==",
+ "dev": true
+ },
+ "node_modules/lodash.flattendeep": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz",
+ "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==",
+ "dev": true
+ },
+ "node_modules/lodash.isequal": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
+ "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==",
"dev": true
},
- "node_modules/lodash.get": {
- "version": "4.4.2",
- "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
- "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ=="
+ "node_modules/lodash.memoize": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
+ "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==",
+ "dev": true
},
"node_modules/lodash.merge": {
"version": "4.6.2",
@@ -18335,29 +15410,10 @@
"integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
"dev": true
},
- "node_modules/lodash.truncate": {
- "version": "4.4.2",
- "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz",
- "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==",
- "dev": true
- },
- "node_modules/loglevel": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.1.tgz",
- "integrity": "sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==",
- "dev": true,
- "engines": {
- "node": ">= 0.6.0"
- },
- "funding": {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/loglevel"
- }
- },
"node_modules/long": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
- "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
+ "version": "5.2.3",
+ "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz",
+ "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q=="
},
"node_modules/loose-envify": {
"version": "1.4.0",
@@ -18380,11 +15436,11 @@
}
},
"node_modules/lowercase-keys": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
- "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
+ "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
"engines": {
- "node": ">=0.10.0"
+ "node": ">=8"
}
},
"node_modules/lru-cache": {
@@ -18501,15 +15557,6 @@
"tmpl": "1.0.5"
}
},
- "node_modules/map-cache": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
- "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/map-limit": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/map-limit/-/map-limit-0.0.1.tgz",
@@ -18526,18 +15573,6 @@
"wrappy": "1"
}
},
- "node_modules/map-visit": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
- "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==",
- "dev": true,
- "dependencies": {
- "object-visit": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/matcher": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz",
@@ -18550,13 +15585,6 @@
"node": ">=10"
}
},
- "node_modules/mdn-data": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz",
- "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==",
- "dev": true,
- "optional": true
- },
"node_modules/media-typer": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
@@ -18578,19 +15606,6 @@
"node": ">= 4.0.0"
}
},
- "node_modules/memory-fs": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz",
- "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==",
- "dev": true,
- "dependencies": {
- "errno": "^0.1.3",
- "readable-stream": "^2.0.1"
- },
- "engines": {
- "node": ">=4.3.0 <5.0.0 || >=5.10"
- }
- },
"node_modules/memorystream": {
"version": "0.3.1",
"resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz",
@@ -18621,6 +15636,12 @@
"node": ">= 8"
}
},
+ "node_modules/meshoptimizer": {
+ "version": "0.18.1",
+ "resolved": "https://registry.npmjs.org/meshoptimizer/-/meshoptimizer-0.18.1.tgz",
+ "integrity": "sha512-ZhoIoL7TNV4s5B6+rx5mC//fw8/POGyNxS/DZyCJeiZ12ScLfVwRE/GfsxwiTkMYYD5DmK2/JXnEVXqL4rF+Sw==",
+ "dev": true
+ },
"node_modules/methods": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
@@ -18676,14 +15697,6 @@
"node": ">= 0.6"
}
},
- "node_modules/mimic-fn": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz",
- "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==",
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/mimic-response": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
@@ -18700,45 +15713,6 @@
"dom-walk": "^0.1.0"
}
},
- "node_modules/mini-css-extract-plugin": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-1.6.2.tgz",
- "integrity": "sha512-WhDvO3SjGm40oV5y26GjMJYjd2UMqrLAGKy5YS2/3QKJy2F7jgynuHTir/tgUUOiNQu5saXHdc8reo7YuhhT4Q==",
- "dev": true,
- "dependencies": {
- "loader-utils": "^2.0.0",
- "schema-utils": "^3.0.0",
- "webpack-sources": "^1.1.0"
- },
- "engines": {
- "node": ">= 10.13.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
- },
- "peerDependencies": {
- "webpack": "^4.4.0 || ^5.0.0"
- }
- },
- "node_modules/mini-css-extract-plugin/node_modules/schema-utils": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz",
- "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==",
- "dev": true,
- "dependencies": {
- "@types/json-schema": "^7.0.8",
- "ajv": "^6.12.5",
- "ajv-keywords": "^3.5.2"
- },
- "engines": {
- "node": ">= 10.13.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
- }
- },
"node_modules/minimalistic-assert": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
@@ -18862,52 +15836,36 @@
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
},
- "node_modules/mixin-deep": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
- "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
- "dev": true,
- "dependencies": {
- "for-in": "^1.0.2",
- "is-extendable": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/mkdirp": {
- "version": "0.5.6",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
- "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
- "dependencies": {
- "minimist": "^1.2.6"
- },
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
"bin": {
"mkdirp": "bin/cmd.js"
+ },
+ "engines": {
+ "node": ">=10"
}
},
"node_modules/moment": {
"version": "2.29.4",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz",
"integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==",
+ "dev": true,
"engines": {
"node": "*"
}
},
- "node_modules/mozjpeg": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/mozjpeg/-/mozjpeg-7.1.1.tgz",
- "integrity": "sha512-iIDxWvzhWvLC9mcRJ1uSkiKaj4drF58oCqK2bITm5c2Jt6cJ8qQjSSru2PCaysG+hLIinryj8mgz5ZJzOYTv1A==",
+ "node_modules/moo": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.2.tgz",
+ "integrity": "sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q=="
+ },
+ "node_modules/mrmime": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz",
+ "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==",
"dev": true,
- "hasInstallScript": true,
- "optional": true,
- "dependencies": {
- "bin-build": "^3.0.0",
- "bin-wrapper": "^4.0.0"
- },
- "bin": {
- "mozjpeg": "cli.js"
- },
"engines": {
"node": ">=10"
}
@@ -18918,35 +15876,29 @@
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
},
"node_modules/multicast-dns": {
- "version": "6.2.3",
- "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz",
- "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==",
+ "version": "7.2.5",
+ "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz",
+ "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==",
"dev": true,
"dependencies": {
- "dns-packet": "^1.3.1",
+ "dns-packet": "^5.2.2",
"thunky": "^1.0.2"
},
"bin": {
"multicast-dns": "cli.js"
}
},
- "node_modules/multicast-dns-service-types": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz",
- "integrity": "sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==",
- "dev": true
- },
"node_modules/mysql2": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-2.3.3.tgz",
- "integrity": "sha512-wxJUev6LgMSgACDkb/InIFxDprRa6T95+VEoR+xPvtngtccNH2dGjEB/fVZ8yg1gWv1510c9CvXuJHi5zUm0ZA==",
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.6.0.tgz",
+ "integrity": "sha512-EWUGAhv6SphezurlfI2Fpt0uJEWLmirrtQR7SkbTHFC+4/mJBrPiSzHESHKAWKG7ALVD6xaG/NBjjd1DGJGQQQ==",
"dependencies": {
- "denque": "^2.0.1",
+ "denque": "^2.1.0",
"generate-function": "^2.3.1",
"iconv-lite": "^0.6.3",
- "long": "^4.0.0",
- "lru-cache": "^6.0.0",
- "named-placeholders": "^1.1.2",
+ "long": "^5.2.1",
+ "lru-cache": "^8.0.0",
+ "named-placeholders": "^1.1.3",
"seq-queue": "^0.0.5",
"sqlstring": "^2.3.2"
},
@@ -18955,21 +15907,13 @@
}
},
"node_modules/mysql2/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dependencies": {
- "yallist": "^4.0.0"
- },
+ "version": "8.0.5",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.5.tgz",
+ "integrity": "sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==",
"engines": {
- "node": ">=10"
+ "node": ">=16.14"
}
},
- "node_modules/mysql2/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- },
"node_modules/named-placeholders": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.3.tgz",
@@ -18989,18 +15933,10 @@
"node": ">=12"
}
},
- "node_modules/nan": {
- "version": "2.17.0",
- "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz",
- "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==",
- "dev": true,
- "optional": true
- },
"node_modules/nanoid": {
"version": "3.3.6",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
"integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
- "dev": true,
"funding": [
{
"type": "github",
@@ -19014,43 +15950,38 @@
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
},
- "node_modules/nanomatch": {
- "version": "1.2.13",
- "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
- "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
- "dev": true,
- "dependencies": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "fragment-cache": "^0.2.1",
- "is-windows": "^1.0.2",
- "kind-of": "^6.0.2",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/native-url": {
- "version": "0.2.6",
- "resolved": "https://registry.npmjs.org/native-url/-/native-url-0.2.6.tgz",
- "integrity": "sha512-k4bDC87WtgrdD362gZz6zoiXQrl40kYlBmpfmSjwRO1VU0V5ccwJTlxuE72F6m3V0vc1xOf6n3UCP9QyerRqmA==",
- "dev": true,
- "dependencies": {
- "querystring": "^0.2.0"
- }
- },
"node_modules/natural-compare": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
"integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
"dev": true
},
+ "node_modules/nearley": {
+ "version": "2.20.1",
+ "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.20.1.tgz",
+ "integrity": "sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==",
+ "dependencies": {
+ "commander": "^2.19.0",
+ "moo": "^0.5.0",
+ "railroad-diagrams": "^1.0.0",
+ "randexp": "0.4.6"
+ },
+ "bin": {
+ "nearley-railroad": "bin/nearley-railroad.js",
+ "nearley-test": "bin/nearley-test.js",
+ "nearley-unparse": "bin/nearley-unparse.js",
+ "nearleyc": "bin/nearleyc.js"
+ },
+ "funding": {
+ "type": "individual",
+ "url": "https://nearley.js.org/#give-to-nearley"
+ }
+ },
+ "node_modules/nearley/node_modules/commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
+ },
"node_modules/negotiator": {
"version": "0.6.3",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
@@ -19134,6 +16065,12 @@
"tslib": "^2.0.3"
}
},
+ "node_modules/node-abort-controller": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz",
+ "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==",
+ "dev": true
+ },
"node_modules/node-addon-api": {
"version": "1.7.2",
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz",
@@ -19142,9 +16079,9 @@
"optional": true
},
"node_modules/node-fetch": {
- "version": "2.6.11",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz",
- "integrity": "sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==",
+ "version": "2.6.12",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz",
+ "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==",
"dependencies": {
"whatwg-url": "^5.0.0"
},
@@ -19180,12 +16117,12 @@
}
},
"node_modules/node-forge": {
- "version": "0.10.0",
- "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz",
- "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==",
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz",
+ "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==",
"dev": true,
"engines": {
- "node": ">= 6.0.0"
+ "node": ">= 6.13.0"
}
},
"node_modules/node-gyp": {
@@ -19256,95 +16193,25 @@
"node": ">=10"
}
},
- "node_modules/node-gyp/node_modules/npmlog": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz",
- "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==",
- "optional": true,
- "dependencies": {
- "are-we-there-yet": "^3.0.0",
- "console-control-strings": "^1.1.0",
- "gauge": "^4.0.3",
- "set-blocking": "^2.0.0"
- },
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/node-gyp/node_modules/readable-stream": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
- "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
- "optional": true,
- "dependencies": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/node-gyp/node_modules/semver": {
- "version": "7.5.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz",
- "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==",
- "optional": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/node-gyp/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "optional": true
- },
- "node_modules/node-int64": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
- "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==",
- "dev": true
- },
- "node_modules/node-notifier": {
- "version": "8.0.2",
- "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.2.tgz",
- "integrity": "sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "growly": "^1.3.0",
- "is-wsl": "^2.2.0",
- "semver": "^7.3.2",
- "shellwords": "^0.1.1",
- "uuid": "^8.3.0",
- "which": "^2.0.2"
- }
- },
- "node_modules/node-notifier/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/node-notifier/node_modules/semver": {
- "version": "7.5.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz",
- "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==",
- "dev": true,
+ "node_modules/node-gyp/node_modules/npmlog": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz",
+ "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==",
+ "optional": true,
+ "dependencies": {
+ "are-we-there-yet": "^3.0.0",
+ "console-control-strings": "^1.1.0",
+ "gauge": "^4.0.3",
+ "set-blocking": "^2.0.0"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/node-gyp/node_modules/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
"optional": true,
"dependencies": {
"lru-cache": "^6.0.0"
@@ -19356,22 +16223,27 @@
"node": ">=10"
}
},
- "node_modules/node-notifier/node_modules/yallist": {
+ "node_modules/node-gyp/node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true,
"optional": true
},
+ "node_modules/node-int64": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
+ "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==",
+ "dev": true
+ },
"node_modules/node-releases": {
- "version": "2.0.12",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz",
- "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ=="
+ "version": "2.0.13",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz",
+ "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ=="
},
"node_modules/nodemon": {
- "version": "2.0.22",
- "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz",
- "integrity": "sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.0.1.tgz",
+ "integrity": "sha512-g9AZ7HmkhQkqXkRc20w+ZfQ73cHLbE8hnPbtaFbFtCumZsjyMhKk9LajQ07U5Ux28lvFjZ5X7HvWR1xzU8jHVw==",
"dev": true,
"dependencies": {
"chokidar": "^3.5.2",
@@ -19379,8 +16251,8 @@
"ignore-by-default": "^1.0.1",
"minimatch": "^3.1.2",
"pstree.remy": "^1.1.8",
- "semver": "^5.7.1",
- "simple-update-notifier": "^1.0.7",
+ "semver": "^7.5.3",
+ "simple-update-notifier": "^2.0.0",
"supports-color": "^5.5.0",
"touch": "^3.1.0",
"undefsafe": "^2.0.5"
@@ -19389,7 +16261,7 @@
"nodemon": "bin/nodemon.js"
},
"engines": {
- "node": ">=8.10.0"
+ "node": ">=10"
},
"funding": {
"type": "opencollective",
@@ -19405,15 +16277,39 @@
"ms": "^2.1.1"
}
},
+ "node_modules/nodemon/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/nodemon/node_modules/semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
"dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
"bin": {
- "semver": "bin/semver"
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
}
},
+ "node_modules/nodemon/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
"node_modules/nopt": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz",
@@ -19432,6 +16328,7 @@
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
"integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
+ "dev": true,
"dependencies": {
"hosted-git-info": "^2.1.4",
"resolve": "^1.10.0",
@@ -19442,12 +16339,14 @@
"node_modules/normalize-package-data/node_modules/hosted-git-info": {
"version": "2.8.9",
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
- "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw=="
+ "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
+ "dev": true
},
"node_modules/normalize-package-data/node_modules/semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "dev": true,
"bin": {
"semver": "bin/semver"
}
@@ -19456,25 +16355,20 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/normalize-range": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
- "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
- "dev": true,
+ "devOptional": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/normalize-url": {
- "version": "4.5.1",
- "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz",
- "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==",
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz",
+ "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==",
"engines": {
- "node": ">=8"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/nosleep.js": {
@@ -19483,23 +16377,23 @@
"integrity": "sha512-Z4B1HgvzR+en62ghwZf6BwAR6x4/pjezsiMcbF9KMLh7xoscpoYhaSXfY3lLkqC68AtW+/qLJ1lzvBIj0FGaTA=="
},
"node_modules/npm": {
- "version": "8.19.4",
- "resolved": "https://registry.npmjs.org/npm/-/npm-8.19.4.tgz",
- "integrity": "sha512-3HANl8i9DKnUA89P4KEgVNN28EjSeDCmvEqbzOAuxCFDzdBZzjUl99zgnGpOUumvW5lvJo2HKcjrsc+tfyv1Hw==",
+ "version": "9.8.1",
+ "resolved": "https://registry.npmjs.org/npm/-/npm-9.8.1.tgz",
+ "integrity": "sha512-AfDvThQzsIXhYgk9zhbk5R+lh811lKkLAeQMMhSypf1BM7zUafeIIBzMzespeuVEJ0+LvY36oRQYf7IKLzU3rw==",
"bundleDependencies": [
"@isaacs/string-locale-compare",
"@npmcli/arborist",
- "@npmcli/ci-detect",
"@npmcli/config",
"@npmcli/fs",
"@npmcli/map-workspaces",
"@npmcli/package-json",
+ "@npmcli/promise-spawn",
"@npmcli/run-script",
"abbrev",
"archy",
"cacache",
"chalk",
- "chownr",
+ "ci-info",
"cli-columns",
"cli-table3",
"columnify",
@@ -19527,8 +16421,6 @@
"minimatch",
"minipass",
"minipass-pipeline",
- "mkdirp",
- "mkdirp-infer-owner",
"ms",
"node-gyp",
"nopt",
@@ -19540,19 +16432,16 @@
"npm-registry-fetch",
"npm-user-validate",
"npmlog",
- "opener",
"p-map",
"pacote",
"parse-conflict-json",
"proc-log",
"qrcode-terminal",
"read",
- "read-package-json",
- "read-package-json-fast",
- "readdir-scoped-modules",
- "rimraf",
"semver",
+ "sigstore",
"ssri",
+ "supports-color",
"tar",
"text-table",
"tiny-relative-date",
@@ -19561,109 +16450,83 @@
"which",
"write-file-atomic"
],
+ "dev": true,
"dependencies": {
"@isaacs/string-locale-compare": "^1.1.0",
- "@npmcli/arborist": "^5.6.3",
- "@npmcli/ci-detect": "^2.0.0",
- "@npmcli/config": "^4.2.1",
- "@npmcli/fs": "^2.1.0",
- "@npmcli/map-workspaces": "^2.0.3",
- "@npmcli/package-json": "^2.0.0",
- "@npmcli/run-script": "^4.2.1",
- "abbrev": "~1.1.1",
+ "@npmcli/arborist": "^6.3.0",
+ "@npmcli/config": "^6.2.1",
+ "@npmcli/fs": "^3.1.0",
+ "@npmcli/map-workspaces": "^3.0.4",
+ "@npmcli/package-json": "^4.0.1",
+ "@npmcli/promise-spawn": "^6.0.2",
+ "@npmcli/run-script": "^6.0.2",
+ "abbrev": "^2.0.0",
"archy": "~1.0.0",
- "cacache": "^16.1.3",
- "chalk": "^4.1.2",
- "chownr": "^2.0.0",
+ "cacache": "^17.1.3",
+ "chalk": "^5.3.0",
+ "ci-info": "^3.8.0",
"cli-columns": "^4.0.0",
- "cli-table3": "^0.6.2",
+ "cli-table3": "^0.6.3",
"columnify": "^1.6.0",
- "fastest-levenshtein": "^1.0.12",
- "fs-minipass": "^2.1.0",
- "glob": "^8.0.1",
- "graceful-fs": "^4.2.10",
- "hosted-git-info": "^5.2.1",
- "ini": "^3.0.1",
- "init-package-json": "^3.0.2",
+ "fastest-levenshtein": "^1.0.16",
+ "fs-minipass": "^3.0.2",
+ "glob": "^10.2.7",
+ "graceful-fs": "^4.2.11",
+ "hosted-git-info": "^6.1.1",
+ "ini": "^4.1.1",
+ "init-package-json": "^5.0.0",
"is-cidr": "^4.0.2",
- "json-parse-even-better-errors": "^2.3.1",
- "libnpmaccess": "^6.0.4",
- "libnpmdiff": "^4.0.5",
- "libnpmexec": "^4.0.14",
- "libnpmfund": "^3.0.5",
- "libnpmhook": "^8.0.4",
- "libnpmorg": "^4.0.4",
- "libnpmpack": "^4.1.3",
- "libnpmpublish": "^6.0.5",
- "libnpmsearch": "^5.0.4",
- "libnpmteam": "^4.0.4",
- "libnpmversion": "^3.0.7",
- "make-fetch-happen": "^10.2.0",
- "minimatch": "^5.1.0",
- "minipass": "^3.1.6",
+ "json-parse-even-better-errors": "^3.0.0",
+ "libnpmaccess": "^7.0.2",
+ "libnpmdiff": "^5.0.19",
+ "libnpmexec": "^6.0.3",
+ "libnpmfund": "^4.0.19",
+ "libnpmhook": "^9.0.3",
+ "libnpmorg": "^5.0.4",
+ "libnpmpack": "^5.0.19",
+ "libnpmpublish": "^7.5.0",
+ "libnpmsearch": "^6.0.2",
+ "libnpmteam": "^5.0.3",
+ "libnpmversion": "^4.0.2",
+ "make-fetch-happen": "^11.1.1",
+ "minimatch": "^9.0.3",
+ "minipass": "^5.0.0",
"minipass-pipeline": "^1.2.4",
- "mkdirp": "^1.0.4",
- "mkdirp-infer-owner": "^2.0.0",
"ms": "^2.1.2",
- "node-gyp": "^9.1.0",
- "nopt": "^6.0.0",
- "npm-audit-report": "^3.0.0",
- "npm-install-checks": "^5.0.0",
- "npm-package-arg": "^9.1.0",
- "npm-pick-manifest": "^7.0.2",
- "npm-profile": "^6.2.0",
- "npm-registry-fetch": "^13.3.1",
- "npm-user-validate": "^1.0.1",
- "npmlog": "^6.0.2",
- "opener": "^1.5.2",
+ "node-gyp": "^9.4.0",
+ "nopt": "^7.2.0",
+ "npm-audit-report": "^5.0.0",
+ "npm-install-checks": "^6.1.1",
+ "npm-package-arg": "^10.1.0",
+ "npm-pick-manifest": "^8.0.1",
+ "npm-profile": "^7.0.1",
+ "npm-registry-fetch": "^14.0.5",
+ "npm-user-validate": "^2.0.0",
+ "npmlog": "^7.0.1",
"p-map": "^4.0.0",
- "pacote": "^13.6.2",
- "parse-conflict-json": "^2.0.2",
- "proc-log": "^2.0.1",
+ "pacote": "^15.2.0",
+ "parse-conflict-json": "^3.0.1",
+ "proc-log": "^3.0.0",
"qrcode-terminal": "^0.12.0",
- "read": "~1.0.7",
- "read-package-json": "^5.0.2",
- "read-package-json-fast": "^2.0.3",
- "readdir-scoped-modules": "^1.1.0",
- "rimraf": "^3.0.2",
- "semver": "^7.3.7",
- "ssri": "^9.0.1",
- "tar": "^6.1.11",
+ "read": "^2.1.0",
+ "semver": "^7.5.4",
+ "sigstore": "^1.7.0",
+ "ssri": "^10.0.4",
+ "supports-color": "^9.4.0",
+ "tar": "^6.1.15",
"text-table": "~0.2.0",
"tiny-relative-date": "^1.3.0",
- "treeverse": "^2.0.0",
- "validate-npm-package-name": "^4.0.0",
- "which": "^2.0.2",
- "write-file-atomic": "^4.0.1"
+ "treeverse": "^3.0.0",
+ "validate-npm-package-name": "^5.0.0",
+ "which": "^3.0.1",
+ "write-file-atomic": "^5.0.1"
},
"bin": {
"npm": "bin/npm-cli.js",
"npx": "bin/npx-cli.js"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/npm-conf": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz",
- "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==",
- "optional": true,
- "dependencies": {
- "config-chain": "^1.1.11",
- "pify": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/npm-conf/node_modules/pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
- "optional": true,
- "engines": {
- "node": ">=4"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm-run-all": {
@@ -19752,9 +16615,9 @@
}
},
"node_modules/npm-run-all/node_modules/semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
"dev": true,
"bin": {
"semver": "bin/semver"
@@ -19821,273 +16684,366 @@
"node": ">=0.1.90"
}
},
- "node_modules/npm/node_modules/@gar/promisify": {
- "version": "1.1.3",
+ "node_modules/npm/node_modules/@isaacs/cliui": {
+ "version": "8.0.2",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^5.1.2",
+ "string-width-cjs": "npm:string-width@^4.2.0",
+ "strip-ansi": "^7.0.1",
+ "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
+ "wrap-ansi": "^8.1.0",
+ "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/npm/node_modules/@isaacs/cliui/node_modules/ansi-regex": {
+ "version": "6.0.1",
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/npm/node_modules/@isaacs/cliui/node_modules/emoji-regex": {
+ "version": "9.2.2",
"inBundle": true,
"license": "MIT"
},
+ "node_modules/npm/node_modules/@isaacs/cliui/node_modules/string-width": {
+ "version": "5.1.2",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/npm/node_modules/@isaacs/cliui/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
"node_modules/npm/node_modules/@isaacs/string-locale-compare": {
"version": "1.1.0",
"inBundle": true,
"license": "ISC"
},
"node_modules/npm/node_modules/@npmcli/arborist": {
- "version": "5.6.3",
+ "version": "6.3.0",
"inBundle": true,
"license": "ISC",
"dependencies": {
"@isaacs/string-locale-compare": "^1.1.0",
- "@npmcli/installed-package-contents": "^1.0.7",
- "@npmcli/map-workspaces": "^2.0.3",
- "@npmcli/metavuln-calculator": "^3.0.1",
- "@npmcli/move-file": "^2.0.0",
- "@npmcli/name-from-folder": "^1.0.1",
- "@npmcli/node-gyp": "^2.0.0",
- "@npmcli/package-json": "^2.0.0",
- "@npmcli/query": "^1.2.0",
- "@npmcli/run-script": "^4.1.3",
- "bin-links": "^3.0.3",
- "cacache": "^16.1.3",
+ "@npmcli/fs": "^3.1.0",
+ "@npmcli/installed-package-contents": "^2.0.2",
+ "@npmcli/map-workspaces": "^3.0.2",
+ "@npmcli/metavuln-calculator": "^5.0.0",
+ "@npmcli/name-from-folder": "^2.0.0",
+ "@npmcli/node-gyp": "^3.0.0",
+ "@npmcli/package-json": "^4.0.0",
+ "@npmcli/query": "^3.0.0",
+ "@npmcli/run-script": "^6.0.0",
+ "bin-links": "^4.0.1",
+ "cacache": "^17.0.4",
"common-ancestor-path": "^1.0.1",
- "hosted-git-info": "^5.2.1",
- "json-parse-even-better-errors": "^2.3.1",
+ "hosted-git-info": "^6.1.1",
+ "json-parse-even-better-errors": "^3.0.0",
"json-stringify-nice": "^1.1.4",
- "minimatch": "^5.1.0",
- "mkdirp": "^1.0.4",
- "mkdirp-infer-owner": "^2.0.0",
- "nopt": "^6.0.0",
- "npm-install-checks": "^5.0.0",
- "npm-package-arg": "^9.0.0",
- "npm-pick-manifest": "^7.0.2",
- "npm-registry-fetch": "^13.0.0",
- "npmlog": "^6.0.2",
- "pacote": "^13.6.1",
- "parse-conflict-json": "^2.0.1",
- "proc-log": "^2.0.0",
+ "minimatch": "^9.0.0",
+ "nopt": "^7.0.0",
+ "npm-install-checks": "^6.0.0",
+ "npm-package-arg": "^10.1.0",
+ "npm-pick-manifest": "^8.0.1",
+ "npm-registry-fetch": "^14.0.3",
+ "npmlog": "^7.0.1",
+ "pacote": "^15.0.8",
+ "parse-conflict-json": "^3.0.0",
+ "proc-log": "^3.0.0",
"promise-all-reject-late": "^1.0.0",
- "promise-call-limit": "^1.0.1",
- "read-package-json-fast": "^2.0.2",
- "readdir-scoped-modules": "^1.1.0",
- "rimraf": "^3.0.2",
+ "promise-call-limit": "^1.0.2",
+ "read-package-json-fast": "^3.0.2",
"semver": "^7.3.7",
- "ssri": "^9.0.0",
- "treeverse": "^2.0.0",
- "walk-up-path": "^1.0.0"
+ "ssri": "^10.0.1",
+ "treeverse": "^3.0.0",
+ "walk-up-path": "^3.0.1"
},
"bin": {
"arborist": "bin/index.js"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/npm/node_modules/@npmcli/ci-detect": {
- "version": "2.0.0",
- "inBundle": true,
- "license": "ISC",
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/@npmcli/config": {
- "version": "4.2.2",
+ "version": "6.2.1",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "@npmcli/map-workspaces": "^2.0.2",
- "ini": "^3.0.0",
- "mkdirp-infer-owner": "^2.0.0",
- "nopt": "^6.0.0",
- "proc-log": "^2.0.0",
- "read-package-json-fast": "^2.0.3",
+ "@npmcli/map-workspaces": "^3.0.2",
+ "ci-info": "^3.8.0",
+ "ini": "^4.1.0",
+ "nopt": "^7.0.0",
+ "proc-log": "^3.0.0",
+ "read-package-json-fast": "^3.0.2",
"semver": "^7.3.5",
- "walk-up-path": "^1.0.0"
+ "walk-up-path": "^3.0.1"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/@npmcli/disparity-colors": {
- "version": "2.0.0",
+ "version": "3.0.0",
"inBundle": true,
"license": "ISC",
"dependencies": {
"ansi-styles": "^4.3.0"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/@npmcli/fs": {
- "version": "2.1.2",
+ "version": "3.1.0",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "@gar/promisify": "^1.1.3",
"semver": "^7.3.5"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/@npmcli/git": {
- "version": "3.0.2",
+ "version": "4.1.0",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "@npmcli/promise-spawn": "^3.0.0",
+ "@npmcli/promise-spawn": "^6.0.0",
"lru-cache": "^7.4.4",
- "mkdirp": "^1.0.4",
- "npm-pick-manifest": "^7.0.0",
- "proc-log": "^2.0.0",
+ "npm-pick-manifest": "^8.0.0",
+ "proc-log": "^3.0.0",
"promise-inflight": "^1.0.1",
"promise-retry": "^2.0.1",
"semver": "^7.3.5",
- "which": "^2.0.2"
+ "which": "^3.0.0"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/@npmcli/installed-package-contents": {
- "version": "1.0.7",
+ "version": "2.0.2",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "npm-bundled": "^1.1.1",
- "npm-normalize-package-bin": "^1.0.1"
+ "npm-bundled": "^3.0.0",
+ "npm-normalize-package-bin": "^3.0.0"
},
"bin": {
- "installed-package-contents": "index.js"
+ "installed-package-contents": "lib/index.js"
},
"engines": {
- "node": ">= 10"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
- "node_modules/npm/node_modules/@npmcli/installed-package-contents/node_modules/npm-bundled": {
- "version": "1.1.2",
+ "node_modules/npm/node_modules/@npmcli/map-workspaces": {
+ "version": "3.0.4",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "npm-normalize-package-bin": "^1.0.1"
+ "@npmcli/name-from-folder": "^2.0.0",
+ "glob": "^10.2.2",
+ "minimatch": "^9.0.0",
+ "read-package-json-fast": "^3.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
- "node_modules/npm/node_modules/@npmcli/map-workspaces": {
- "version": "2.0.4",
+ "node_modules/npm/node_modules/@npmcli/metavuln-calculator": {
+ "version": "5.0.1",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "@npmcli/name-from-folder": "^1.0.1",
- "glob": "^8.0.1",
- "minimatch": "^5.0.1",
- "read-package-json-fast": "^2.0.3"
+ "cacache": "^17.0.0",
+ "json-parse-even-better-errors": "^3.0.0",
+ "pacote": "^15.0.0",
+ "semver": "^7.3.5"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
- "node_modules/npm/node_modules/@npmcli/metavuln-calculator": {
- "version": "3.1.1",
+ "node_modules/npm/node_modules/@npmcli/name-from-folder": {
+ "version": "2.0.0",
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/@npmcli/node-gyp": {
+ "version": "3.0.0",
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/@npmcli/package-json": {
+ "version": "4.0.1",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "cacache": "^16.0.0",
- "json-parse-even-better-errors": "^2.3.1",
- "pacote": "^13.0.3",
- "semver": "^7.3.5"
+ "@npmcli/git": "^4.1.0",
+ "glob": "^10.2.2",
+ "hosted-git-info": "^6.1.1",
+ "json-parse-even-better-errors": "^3.0.0",
+ "normalize-package-data": "^5.0.0",
+ "proc-log": "^3.0.0",
+ "semver": "^7.5.3"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
- "node_modules/npm/node_modules/@npmcli/move-file": {
- "version": "2.0.1",
+ "node_modules/npm/node_modules/@npmcli/promise-spawn": {
+ "version": "6.0.2",
"inBundle": true,
- "license": "MIT",
+ "license": "ISC",
"dependencies": {
- "mkdirp": "^1.0.4",
- "rimraf": "^3.0.2"
+ "which": "^3.0.0"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
- "node_modules/npm/node_modules/@npmcli/name-from-folder": {
- "version": "1.0.1",
+ "node_modules/npm/node_modules/@npmcli/query": {
+ "version": "3.0.0",
"inBundle": true,
- "license": "ISC"
+ "license": "ISC",
+ "dependencies": {
+ "postcss-selector-parser": "^6.0.10"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
},
- "node_modules/npm/node_modules/@npmcli/node-gyp": {
- "version": "2.0.0",
+ "node_modules/npm/node_modules/@npmcli/run-script": {
+ "version": "6.0.2",
"inBundle": true,
"license": "ISC",
+ "dependencies": {
+ "@npmcli/node-gyp": "^3.0.0",
+ "@npmcli/promise-spawn": "^6.0.0",
+ "node-gyp": "^9.0.0",
+ "read-package-json-fast": "^3.0.0",
+ "which": "^3.0.0"
+ },
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
- "node_modules/npm/node_modules/@npmcli/package-json": {
- "version": "2.0.0",
+ "node_modules/npm/node_modules/@pkgjs/parseargs": {
+ "version": "0.11.0",
"inBundle": true,
- "license": "ISC",
+ "license": "MIT",
+ "optional": true,
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/npm/node_modules/@sigstore/protobuf-specs": {
+ "version": "0.1.0",
+ "inBundle": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/@sigstore/tuf": {
+ "version": "1.0.2",
+ "inBundle": true,
+ "license": "Apache-2.0",
"dependencies": {
- "json-parse-even-better-errors": "^2.3.1"
+ "@sigstore/protobuf-specs": "^0.1.0",
+ "tuf-js": "^1.1.7"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/@tootallnate/once": {
+ "version": "2.0.0",
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10"
}
},
- "node_modules/npm/node_modules/@npmcli/promise-spawn": {
- "version": "3.0.0",
+ "node_modules/npm/node_modules/@tufjs/canonical-json": {
+ "version": "1.0.0",
"inBundle": true,
- "license": "ISC",
- "dependencies": {
- "infer-owner": "^1.0.4"
- },
+ "license": "MIT",
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
- "node_modules/npm/node_modules/@npmcli/query": {
- "version": "1.2.0",
+ "node_modules/npm/node_modules/@tufjs/models": {
+ "version": "1.0.4",
"inBundle": true,
- "license": "ISC",
+ "license": "MIT",
"dependencies": {
- "npm-package-arg": "^9.1.0",
- "postcss-selector-parser": "^6.0.10",
- "semver": "^7.3.7"
+ "@tufjs/canonical-json": "1.0.0",
+ "minimatch": "^9.0.0"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
- "node_modules/npm/node_modules/@npmcli/run-script": {
- "version": "4.2.1",
+ "node_modules/npm/node_modules/abbrev": {
+ "version": "2.0.0",
"inBundle": true,
"license": "ISC",
- "dependencies": {
- "@npmcli/node-gyp": "^2.0.0",
- "@npmcli/promise-spawn": "^3.0.0",
- "node-gyp": "^9.0.0",
- "read-package-json-fast": "^2.0.3",
- "which": "^2.0.2"
- },
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
- "node_modules/npm/node_modules/@tootallnate/once": {
- "version": "2.0.0",
+ "node_modules/npm/node_modules/abort-controller": {
+ "version": "3.0.0",
"inBundle": true,
"license": "MIT",
+ "dependencies": {
+ "event-target-shim": "^5.0.0"
+ },
"engines": {
- "node": ">= 10"
+ "node": ">=6.5"
}
},
- "node_modules/npm/node_modules/abbrev": {
- "version": "1.1.1",
- "inBundle": true,
- "license": "ISC"
- },
"node_modules/npm/node_modules/agent-base": {
"version": "6.0.2",
"inBundle": true,
@@ -20100,12 +17056,12 @@
}
},
"node_modules/npm/node_modules/agentkeepalive": {
- "version": "4.2.1",
+ "version": "4.3.0",
"inBundle": true,
"license": "MIT",
"dependencies": {
"debug": "^4.1.0",
- "depd": "^1.1.2",
+ "depd": "^2.0.0",
"humanize-ms": "^1.2.1"
},
"engines": {
@@ -20157,49 +17113,53 @@
"license": "MIT"
},
"node_modules/npm/node_modules/are-we-there-yet": {
- "version": "3.0.1",
+ "version": "4.0.0",
"inBundle": true,
"license": "ISC",
"dependencies": {
"delegates": "^1.0.0",
- "readable-stream": "^3.6.0"
+ "readable-stream": "^4.1.0"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
- "node_modules/npm/node_modules/asap": {
- "version": "2.0.6",
+ "node_modules/npm/node_modules/balanced-match": {
+ "version": "1.0.2",
"inBundle": true,
"license": "MIT"
},
- "node_modules/npm/node_modules/balanced-match": {
- "version": "1.0.2",
+ "node_modules/npm/node_modules/base64-js": {
+ "version": "1.5.1",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
"inBundle": true,
"license": "MIT"
},
"node_modules/npm/node_modules/bin-links": {
- "version": "3.0.3",
+ "version": "4.0.2",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "cmd-shim": "^5.0.0",
- "mkdirp-infer-owner": "^2.0.0",
- "npm-normalize-package-bin": "^2.0.0",
- "read-cmd-shim": "^3.0.0",
- "rimraf": "^3.0.0",
- "write-file-atomic": "^4.0.0"
+ "cmd-shim": "^6.0.0",
+ "npm-normalize-package-bin": "^3.0.0",
+ "read-cmd-shim": "^4.0.0",
+ "write-file-atomic": "^5.0.0"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/npm/node_modules/bin-links/node_modules/npm-normalize-package-bin": {
- "version": "2.0.0",
- "inBundle": true,
- "license": "ISC",
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/binary-extensions": {
@@ -20218,6 +17178,29 @@
"balanced-match": "^1.0.0"
}
},
+ "node_modules/npm/node_modules/buffer": {
+ "version": "6.0.3",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.2.1"
+ }
+ },
"node_modules/npm/node_modules/builtins": {
"version": "5.0.1",
"inBundle": true,
@@ -20227,43 +17210,33 @@
}
},
"node_modules/npm/node_modules/cacache": {
- "version": "16.1.3",
+ "version": "17.1.3",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "@npmcli/fs": "^2.1.0",
- "@npmcli/move-file": "^2.0.0",
- "chownr": "^2.0.0",
- "fs-minipass": "^2.1.0",
- "glob": "^8.0.1",
- "infer-owner": "^1.0.4",
+ "@npmcli/fs": "^3.1.0",
+ "fs-minipass": "^3.0.0",
+ "glob": "^10.2.2",
"lru-cache": "^7.7.1",
- "minipass": "^3.1.6",
+ "minipass": "^5.0.0",
"minipass-collect": "^1.0.2",
"minipass-flush": "^1.0.5",
"minipass-pipeline": "^1.2.4",
- "mkdirp": "^1.0.4",
"p-map": "^4.0.0",
- "promise-inflight": "^1.0.1",
- "rimraf": "^3.0.2",
- "ssri": "^9.0.0",
+ "ssri": "^10.0.0",
"tar": "^6.1.11",
- "unique-filename": "^2.0.0"
+ "unique-filename": "^3.0.0"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/chalk": {
- "version": "4.1.2",
+ "version": "5.3.0",
"inBundle": true,
"license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
"engines": {
- "node": ">=10"
+ "node": "^12.17.0 || ^14.13 || >=16.0.0"
},
"funding": {
"url": "https://github.com/chalk/chalk?sponsor=1"
@@ -20277,6 +17250,20 @@
"node": ">=10"
}
},
+ "node_modules/npm/node_modules/ci-info": {
+ "version": "3.8.0",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/sibiraj-s"
+ }
+ ],
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/npm/node_modules/cidr-regex": {
"version": "3.1.1",
"inBundle": true,
@@ -20309,7 +17296,7 @@
}
},
"node_modules/npm/node_modules/cli-table3": {
- "version": "0.6.2",
+ "version": "0.6.3",
"inBundle": true,
"license": "MIT",
"dependencies": {
@@ -20331,14 +17318,11 @@
}
},
"node_modules/npm/node_modules/cmd-shim": {
- "version": "5.0.0",
+ "version": "6.0.1",
"inBundle": true,
"license": "ISC",
- "dependencies": {
- "mkdirp-infer-owner": "^2.0.0"
- },
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/color-convert": {
@@ -20392,6 +17376,33 @@
"inBundle": true,
"license": "ISC"
},
+ "node_modules/npm/node_modules/cross-spawn": {
+ "version": "7.0.3",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/npm/node_modules/cross-spawn/node_modules/which": {
+ "version": "2.0.2",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
"node_modules/npm/node_modules/cssesc": {
"version": "3.0.0",
"inBundle": true,
@@ -20424,20 +17435,15 @@
"inBundle": true,
"license": "MIT"
},
- "node_modules/npm/node_modules/debuglog": {
- "version": "1.0.1",
- "inBundle": true,
- "license": "MIT",
- "engines": {
- "node": "*"
- }
- },
"node_modules/npm/node_modules/defaults": {
- "version": "1.0.3",
+ "version": "1.0.4",
"inBundle": true,
"license": "MIT",
"dependencies": {
"clone": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/npm/node_modules/delegates": {
@@ -20446,20 +17452,11 @@
"license": "MIT"
},
"node_modules/npm/node_modules/depd": {
- "version": "1.1.2",
+ "version": "2.0.0",
"inBundle": true,
"license": "MIT",
"engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/npm/node_modules/dezalgo": {
- "version": "1.0.4",
- "inBundle": true,
- "license": "ISC",
- "dependencies": {
- "asap": "^2.0.0",
- "wrappy": "1"
+ "node": ">= 0.8"
}
},
"node_modules/npm/node_modules/diff": {
@@ -20470,6 +17467,11 @@
"node": ">=0.3.1"
}
},
+ "node_modules/npm/node_modules/eastasianwidth": {
+ "version": "0.2.0",
+ "inBundle": true,
+ "license": "MIT"
+ },
"node_modules/npm/node_modules/emoji-regex": {
"version": "8.0.0",
"inBundle": true,
@@ -20497,20 +17499,59 @@
"inBundle": true,
"license": "MIT"
},
+ "node_modules/npm/node_modules/event-target-shim": {
+ "version": "5.0.1",
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/npm/node_modules/events": {
+ "version": "3.3.0",
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.x"
+ }
+ },
+ "node_modules/npm/node_modules/exponential-backoff": {
+ "version": "3.1.1",
+ "inBundle": true,
+ "license": "Apache-2.0"
+ },
"node_modules/npm/node_modules/fastest-levenshtein": {
- "version": "1.0.12",
+ "version": "1.0.16",
"inBundle": true,
- "license": "MIT"
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4.9.1"
+ }
+ },
+ "node_modules/npm/node_modules/foreground-child": {
+ "version": "3.1.1",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "cross-spawn": "^7.0.0",
+ "signal-exit": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
},
"node_modules/npm/node_modules/fs-minipass": {
- "version": "2.1.0",
+ "version": "3.0.2",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "minipass": "^3.0.0"
+ "minipass": "^5.0.0"
},
"engines": {
- "node": ">= 8"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/fs.realpath": {
@@ -20524,7 +17565,7 @@
"license": "MIT"
},
"node_modules/npm/node_modules/gauge": {
- "version": "4.0.4",
+ "version": "5.0.1",
"inBundle": true,
"license": "ISC",
"dependencies": {
@@ -20532,35 +17573,38 @@
"color-support": "^1.1.3",
"console-control-strings": "^1.1.0",
"has-unicode": "^2.0.1",
- "signal-exit": "^3.0.7",
+ "signal-exit": "^4.0.1",
"string-width": "^4.2.3",
"strip-ansi": "^6.0.1",
"wide-align": "^1.1.5"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/glob": {
- "version": "8.0.3",
+ "version": "10.2.7",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^5.0.1",
- "once": "^1.3.0"
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^2.0.3",
+ "minimatch": "^9.0.1",
+ "minipass": "^5.0.0 || ^6.0.2",
+ "path-scurry": "^1.7.0"
+ },
+ "bin": {
+ "glob": "dist/cjs/src/bin.js"
},
"engines": {
- "node": ">=12"
+ "node": ">=16 || 14 >=14.17"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/npm/node_modules/graceful-fs": {
- "version": "4.2.10",
+ "version": "4.2.11",
"inBundle": true,
"license": "ISC"
},
@@ -20575,28 +17619,20 @@
"node": ">= 0.4.0"
}
},
- "node_modules/npm/node_modules/has-flag": {
- "version": "4.0.0",
- "inBundle": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/npm/node_modules/has-unicode": {
"version": "2.0.1",
"inBundle": true,
"license": "ISC"
},
"node_modules/npm/node_modules/hosted-git-info": {
- "version": "5.2.1",
+ "version": "6.1.1",
"inBundle": true,
"license": "ISC",
"dependencies": {
"lru-cache": "^7.5.1"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/http-cache-semantics": {
@@ -20649,15 +17685,34 @@
"node": ">=0.10.0"
}
},
+ "node_modules/npm/node_modules/ieee754": {
+ "version": "1.2.1",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "inBundle": true,
+ "license": "BSD-3-Clause"
+ },
"node_modules/npm/node_modules/ignore-walk": {
- "version": "5.0.1",
+ "version": "6.0.3",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "minimatch": "^5.0.1"
+ "minimatch": "^9.0.0"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/imurmurhash": {
@@ -20676,11 +17731,6 @@
"node": ">=8"
}
},
- "node_modules/npm/node_modules/infer-owner": {
- "version": "1.0.4",
- "inBundle": true,
- "license": "ISC"
- },
"node_modules/npm/node_modules/inflight": {
"version": "1.0.6",
"inBundle": true,
@@ -20696,28 +17746,28 @@
"license": "ISC"
},
"node_modules/npm/node_modules/ini": {
- "version": "3.0.1",
+ "version": "4.1.1",
"inBundle": true,
"license": "ISC",
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/init-package-json": {
- "version": "3.0.2",
+ "version": "5.0.0",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "npm-package-arg": "^9.0.1",
- "promzard": "^0.3.0",
- "read": "^1.0.7",
- "read-package-json": "^5.0.0",
+ "npm-package-arg": "^10.0.0",
+ "promzard": "^1.0.0",
+ "read": "^2.0.0",
+ "read-package-json": "^6.0.0",
"semver": "^7.3.5",
"validate-npm-package-license": "^3.0.4",
- "validate-npm-package-name": "^4.0.0"
+ "validate-npm-package-name": "^5.0.0"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/ip": {
@@ -20745,7 +17795,7 @@
}
},
"node_modules/npm/node_modules/is-core-module": {
- "version": "2.10.0",
+ "version": "2.12.1",
"inBundle": true,
"license": "MIT",
"dependencies": {
@@ -20773,10 +17823,30 @@
"inBundle": true,
"license": "ISC"
},
+ "node_modules/npm/node_modules/jackspeak": {
+ "version": "2.2.1",
+ "inBundle": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
"node_modules/npm/node_modules/json-parse-even-better-errors": {
- "version": "2.3.1",
+ "version": "3.0.0",
"inBundle": true,
- "license": "MIT"
+ "license": "MIT",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
},
"node_modules/npm/node_modules/json-stringify-nice": {
"version": "1.1.4",
@@ -20795,174 +17865,174 @@
"license": "MIT"
},
"node_modules/npm/node_modules/just-diff": {
- "version": "5.1.1",
+ "version": "6.0.2",
"inBundle": true,
"license": "MIT"
},
"node_modules/npm/node_modules/just-diff-apply": {
- "version": "5.4.1",
+ "version": "5.5.0",
"inBundle": true,
"license": "MIT"
},
"node_modules/npm/node_modules/libnpmaccess": {
- "version": "6.0.4",
+ "version": "7.0.2",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "aproba": "^2.0.0",
- "minipass": "^3.1.1",
- "npm-package-arg": "^9.0.1",
- "npm-registry-fetch": "^13.0.0"
+ "npm-package-arg": "^10.1.0",
+ "npm-registry-fetch": "^14.0.3"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/libnpmdiff": {
- "version": "4.0.5",
+ "version": "5.0.19",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "@npmcli/disparity-colors": "^2.0.0",
- "@npmcli/installed-package-contents": "^1.0.7",
+ "@npmcli/arborist": "^6.3.0",
+ "@npmcli/disparity-colors": "^3.0.0",
+ "@npmcli/installed-package-contents": "^2.0.2",
"binary-extensions": "^2.2.0",
"diff": "^5.1.0",
- "minimatch": "^5.0.1",
- "npm-package-arg": "^9.0.1",
- "pacote": "^13.6.1",
- "tar": "^6.1.0"
+ "minimatch": "^9.0.0",
+ "npm-package-arg": "^10.1.0",
+ "pacote": "^15.0.8",
+ "tar": "^6.1.13"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/libnpmexec": {
- "version": "4.0.14",
+ "version": "6.0.3",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "@npmcli/arborist": "^5.6.3",
- "@npmcli/ci-detect": "^2.0.0",
- "@npmcli/fs": "^2.1.1",
- "@npmcli/run-script": "^4.2.0",
- "chalk": "^4.1.0",
- "mkdirp-infer-owner": "^2.0.0",
- "npm-package-arg": "^9.0.1",
- "npmlog": "^6.0.2",
- "pacote": "^13.6.1",
- "proc-log": "^2.0.0",
- "read": "^1.0.7",
- "read-package-json-fast": "^2.0.2",
+ "@npmcli/arborist": "^6.3.0",
+ "@npmcli/run-script": "^6.0.0",
+ "ci-info": "^3.7.1",
+ "npm-package-arg": "^10.1.0",
+ "npmlog": "^7.0.1",
+ "pacote": "^15.0.8",
+ "proc-log": "^3.0.0",
+ "read": "^2.0.0",
+ "read-package-json-fast": "^3.0.2",
"semver": "^7.3.7",
- "walk-up-path": "^1.0.0"
+ "walk-up-path": "^3.0.1"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/libnpmfund": {
- "version": "3.0.5",
+ "version": "4.0.19",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "@npmcli/arborist": "^5.6.3"
+ "@npmcli/arborist": "^6.3.0"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/libnpmhook": {
- "version": "8.0.4",
+ "version": "9.0.3",
"inBundle": true,
"license": "ISC",
"dependencies": {
"aproba": "^2.0.0",
- "npm-registry-fetch": "^13.0.0"
+ "npm-registry-fetch": "^14.0.3"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/libnpmorg": {
- "version": "4.0.4",
+ "version": "5.0.4",
"inBundle": true,
"license": "ISC",
"dependencies": {
"aproba": "^2.0.0",
- "npm-registry-fetch": "^13.0.0"
+ "npm-registry-fetch": "^14.0.3"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/libnpmpack": {
- "version": "4.1.3",
+ "version": "5.0.19",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "@npmcli/run-script": "^4.1.3",
- "npm-package-arg": "^9.0.1",
- "pacote": "^13.6.1"
+ "@npmcli/arborist": "^6.3.0",
+ "@npmcli/run-script": "^6.0.0",
+ "npm-package-arg": "^10.1.0",
+ "pacote": "^15.0.8"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/libnpmpublish": {
- "version": "6.0.5",
+ "version": "7.5.0",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "normalize-package-data": "^4.0.0",
- "npm-package-arg": "^9.0.1",
- "npm-registry-fetch": "^13.0.0",
+ "ci-info": "^3.6.1",
+ "normalize-package-data": "^5.0.0",
+ "npm-package-arg": "^10.1.0",
+ "npm-registry-fetch": "^14.0.3",
+ "proc-log": "^3.0.0",
"semver": "^7.3.7",
- "ssri": "^9.0.0"
+ "sigstore": "^1.4.0",
+ "ssri": "^10.0.1"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/libnpmsearch": {
- "version": "5.0.4",
+ "version": "6.0.2",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "npm-registry-fetch": "^13.0.0"
+ "npm-registry-fetch": "^14.0.3"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/libnpmteam": {
- "version": "4.0.4",
+ "version": "5.0.3",
"inBundle": true,
"license": "ISC",
"dependencies": {
"aproba": "^2.0.0",
- "npm-registry-fetch": "^13.0.0"
+ "npm-registry-fetch": "^14.0.3"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/libnpmversion": {
- "version": "3.0.7",
+ "version": "4.0.2",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "@npmcli/git": "^3.0.0",
- "@npmcli/run-script": "^4.1.3",
- "json-parse-even-better-errors": "^2.3.1",
- "proc-log": "^2.0.0",
+ "@npmcli/git": "^4.0.1",
+ "@npmcli/run-script": "^6.0.0",
+ "json-parse-even-better-errors": "^3.0.0",
+ "proc-log": "^3.0.0",
"semver": "^7.3.7"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/lru-cache": {
- "version": "7.13.2",
+ "version": "7.18.3",
"inBundle": true,
"license": "ISC",
"engines": {
@@ -20970,49 +18040,48 @@
}
},
"node_modules/npm/node_modules/make-fetch-happen": {
- "version": "10.2.1",
+ "version": "11.1.1",
"inBundle": true,
"license": "ISC",
"dependencies": {
"agentkeepalive": "^4.2.1",
- "cacache": "^16.1.0",
- "http-cache-semantics": "^4.1.0",
+ "cacache": "^17.0.0",
+ "http-cache-semantics": "^4.1.1",
"http-proxy-agent": "^5.0.0",
"https-proxy-agent": "^5.0.0",
"is-lambda": "^1.0.1",
"lru-cache": "^7.7.1",
- "minipass": "^3.1.6",
- "minipass-collect": "^1.0.2",
- "minipass-fetch": "^2.0.3",
+ "minipass": "^5.0.0",
+ "minipass-fetch": "^3.0.0",
"minipass-flush": "^1.0.5",
"minipass-pipeline": "^1.2.4",
"negotiator": "^0.6.3",
"promise-retry": "^2.0.1",
"socks-proxy-agent": "^7.0.0",
- "ssri": "^9.0.0"
+ "ssri": "^10.0.0"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/minimatch": {
- "version": "5.1.0",
+ "version": "9.0.3",
"inBundle": true,
"license": "ISC",
"dependencies": {
"brace-expansion": "^2.0.1"
},
"engines": {
- "node": ">=10"
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/npm/node_modules/minipass": {
- "version": "3.3.4",
+ "version": "5.0.0",
"inBundle": true,
"license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
"engines": {
"node": ">=8"
}
@@ -21028,17 +18097,28 @@
"node": ">= 8"
}
},
+ "node_modules/npm/node_modules/minipass-collect/node_modules/minipass": {
+ "version": "3.3.6",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/npm/node_modules/minipass-fetch": {
- "version": "2.1.1",
+ "version": "3.0.3",
"inBundle": true,
"license": "MIT",
"dependencies": {
- "minipass": "^3.1.6",
+ "minipass": "^5.0.0",
"minipass-sized": "^1.0.3",
"minizlib": "^2.1.2"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
},
"optionalDependencies": {
"encoding": "^0.1.13"
@@ -21055,6 +18135,17 @@
"node": ">= 8"
}
},
+ "node_modules/npm/node_modules/minipass-flush/node_modules/minipass": {
+ "version": "3.3.6",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/npm/node_modules/minipass-json-stream": {
"version": "1.0.1",
"inBundle": true,
@@ -21064,6 +18155,17 @@
"minipass": "^3.0.0"
}
},
+ "node_modules/npm/node_modules/minipass-json-stream/node_modules/minipass": {
+ "version": "3.3.6",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/npm/node_modules/minipass-pipeline": {
"version": "1.2.4",
"inBundle": true,
@@ -21075,6 +18177,17 @@
"node": ">=8"
}
},
+ "node_modules/npm/node_modules/minipass-pipeline/node_modules/minipass": {
+ "version": "3.3.6",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/npm/node_modules/minipass-sized": {
"version": "1.0.3",
"inBundle": true,
@@ -21086,6 +18199,17 @@
"node": ">=8"
}
},
+ "node_modules/npm/node_modules/minipass-sized/node_modules/minipass": {
+ "version": "3.3.6",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/npm/node_modules/minizlib": {
"version": "2.1.2",
"inBundle": true,
@@ -21098,25 +18222,23 @@
"node": ">= 8"
}
},
- "node_modules/npm/node_modules/mkdirp": {
- "version": "1.0.4",
+ "node_modules/npm/node_modules/minizlib/node_modules/minipass": {
+ "version": "3.3.6",
"inBundle": true,
- "license": "MIT",
- "bin": {
- "mkdirp": "bin/cmd.js"
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
},
"engines": {
- "node": ">=10"
+ "node": ">=8"
}
},
- "node_modules/npm/node_modules/mkdirp-infer-owner": {
- "version": "2.0.0",
+ "node_modules/npm/node_modules/mkdirp": {
+ "version": "1.0.4",
"inBundle": true,
- "license": "ISC",
- "dependencies": {
- "chownr": "^2.0.0",
- "infer-owner": "^1.0.4",
- "mkdirp": "^1.0.3"
+ "license": "MIT",
+ "bin": {
+ "mkdirp": "bin/cmd.js"
},
"engines": {
"node": ">=10"
@@ -21128,9 +18250,12 @@
"license": "MIT"
},
"node_modules/npm/node_modules/mute-stream": {
- "version": "0.0.8",
+ "version": "1.0.0",
"inBundle": true,
- "license": "ISC"
+ "license": "ISC",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
},
"node_modules/npm/node_modules/negotiator": {
"version": "0.6.3",
@@ -21141,15 +18266,16 @@
}
},
"node_modules/npm/node_modules/node-gyp": {
- "version": "9.1.0",
+ "version": "9.4.0",
"inBundle": true,
"license": "MIT",
"dependencies": {
"env-paths": "^2.2.0",
+ "exponential-backoff": "^3.1.1",
"glob": "^7.1.4",
"graceful-fs": "^4.2.6",
- "make-fetch-happen": "^10.0.3",
- "nopt": "^5.0.0",
+ "make-fetch-happen": "^11.0.3",
+ "nopt": "^6.0.0",
"npmlog": "^6.0.0",
"rimraf": "^3.0.2",
"semver": "^7.3.5",
@@ -21160,7 +18286,24 @@
"node-gyp": "bin/node-gyp.js"
},
"engines": {
- "node": "^12.22 || ^14.13 || >=16"
+ "node": "^12.13 || ^14.13 || >=16"
+ }
+ },
+ "node_modules/npm/node_modules/node-gyp/node_modules/abbrev": {
+ "version": "1.1.1",
+ "inBundle": true,
+ "license": "ISC"
+ },
+ "node_modules/npm/node_modules/node-gyp/node_modules/are-we-there-yet": {
+ "version": "3.0.1",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "delegates": "^1.0.0",
+ "readable-stream": "^3.6.0"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
"node_modules/npm/node_modules/node-gyp/node_modules/brace-expansion": {
@@ -21172,6 +18315,24 @@
"concat-map": "0.0.1"
}
},
+ "node_modules/npm/node_modules/node-gyp/node_modules/gauge": {
+ "version": "4.0.4",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "aproba": "^1.0.3 || ^2.0.0",
+ "color-support": "^1.1.3",
+ "console-control-strings": "^1.1.0",
+ "has-unicode": "^2.0.1",
+ "signal-exit": "^3.0.7",
+ "string-width": "^4.2.3",
+ "strip-ansi": "^6.0.1",
+ "wide-align": "^1.1.5"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
"node_modules/npm/node_modules/node-gyp/node_modules/glob": {
"version": "7.2.3",
"inBundle": true,
@@ -21203,200 +18364,219 @@
}
},
"node_modules/npm/node_modules/node-gyp/node_modules/nopt": {
- "version": "5.0.0",
+ "version": "6.0.0",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "abbrev": "1"
+ "abbrev": "^1.0.0"
},
"bin": {
"nopt": "bin/nopt.js"
},
"engines": {
- "node": ">=6"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/node-gyp/node_modules/npmlog": {
+ "version": "6.0.2",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "are-we-there-yet": "^3.0.0",
+ "console-control-strings": "^1.1.0",
+ "gauge": "^4.0.3",
+ "set-blocking": "^2.0.0"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/node-gyp/node_modules/readable-stream": {
+ "version": "3.6.2",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/npm/node_modules/node-gyp/node_modules/signal-exit": {
+ "version": "3.0.7",
+ "inBundle": true,
+ "license": "ISC"
+ },
+ "node_modules/npm/node_modules/node-gyp/node_modules/which": {
+ "version": "2.0.2",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
}
},
"node_modules/npm/node_modules/nopt": {
- "version": "6.0.0",
+ "version": "7.2.0",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "abbrev": "^1.0.0"
+ "abbrev": "^2.0.0"
},
"bin": {
"nopt": "bin/nopt.js"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/normalize-package-data": {
- "version": "4.0.1",
+ "version": "5.0.0",
"inBundle": true,
"license": "BSD-2-Clause",
"dependencies": {
- "hosted-git-info": "^5.0.0",
+ "hosted-git-info": "^6.0.0",
"is-core-module": "^2.8.1",
"semver": "^7.3.5",
"validate-npm-package-license": "^3.0.4"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/npm-audit-report": {
- "version": "3.0.0",
+ "version": "5.0.0",
"inBundle": true,
"license": "ISC",
- "dependencies": {
- "chalk": "^4.0.0"
- },
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/npm-bundled": {
- "version": "2.0.1",
+ "version": "3.0.0",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "npm-normalize-package-bin": "^2.0.0"
+ "npm-normalize-package-bin": "^3.0.0"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/npm/node_modules/npm-bundled/node_modules/npm-normalize-package-bin": {
- "version": "2.0.0",
- "inBundle": true,
- "license": "ISC",
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/npm-install-checks": {
- "version": "5.0.0",
+ "version": "6.1.1",
"inBundle": true,
"license": "BSD-2-Clause",
"dependencies": {
"semver": "^7.1.1"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/npm-normalize-package-bin": {
- "version": "1.0.1",
+ "version": "3.0.1",
"inBundle": true,
- "license": "ISC"
+ "license": "ISC",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
},
"node_modules/npm/node_modules/npm-package-arg": {
- "version": "9.1.0",
+ "version": "10.1.0",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "hosted-git-info": "^5.0.0",
- "proc-log": "^2.0.1",
+ "hosted-git-info": "^6.0.0",
+ "proc-log": "^3.0.0",
"semver": "^7.3.5",
- "validate-npm-package-name": "^4.0.0"
+ "validate-npm-package-name": "^5.0.0"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/npm-packlist": {
- "version": "5.1.3",
+ "version": "7.0.4",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "glob": "^8.0.1",
- "ignore-walk": "^5.0.1",
- "npm-bundled": "^2.0.0",
- "npm-normalize-package-bin": "^2.0.0"
- },
- "bin": {
- "npm-packlist": "bin/index.js"
+ "ignore-walk": "^6.0.0"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/npm/node_modules/npm-packlist/node_modules/npm-normalize-package-bin": {
- "version": "2.0.0",
- "inBundle": true,
- "license": "ISC",
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/npm-pick-manifest": {
- "version": "7.0.2",
+ "version": "8.0.1",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "npm-install-checks": "^5.0.0",
- "npm-normalize-package-bin": "^2.0.0",
- "npm-package-arg": "^9.0.0",
+ "npm-install-checks": "^6.0.0",
+ "npm-normalize-package-bin": "^3.0.0",
+ "npm-package-arg": "^10.0.0",
"semver": "^7.3.5"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/npm/node_modules/npm-pick-manifest/node_modules/npm-normalize-package-bin": {
- "version": "2.0.0",
- "inBundle": true,
- "license": "ISC",
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/npm-profile": {
- "version": "6.2.1",
+ "version": "7.0.1",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "npm-registry-fetch": "^13.0.1",
- "proc-log": "^2.0.0"
+ "npm-registry-fetch": "^14.0.0",
+ "proc-log": "^3.0.0"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/npm-registry-fetch": {
- "version": "13.3.1",
+ "version": "14.0.5",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "make-fetch-happen": "^10.0.6",
- "minipass": "^3.1.6",
- "minipass-fetch": "^2.0.3",
+ "make-fetch-happen": "^11.0.0",
+ "minipass": "^5.0.0",
+ "minipass-fetch": "^3.0.0",
"minipass-json-stream": "^1.0.1",
"minizlib": "^2.1.2",
- "npm-package-arg": "^9.0.1",
- "proc-log": "^2.0.0"
+ "npm-package-arg": "^10.0.0",
+ "proc-log": "^3.0.0"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/npm-user-validate": {
- "version": "1.0.1",
+ "version": "2.0.0",
"inBundle": true,
- "license": "BSD-2-Clause"
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
},
"node_modules/npm/node_modules/npmlog": {
- "version": "6.0.2",
+ "version": "7.0.1",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "are-we-there-yet": "^3.0.0",
+ "are-we-there-yet": "^4.0.0",
"console-control-strings": "^1.1.0",
- "gauge": "^4.0.3",
+ "gauge": "^5.0.0",
"set-blocking": "^2.0.0"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/once": {
@@ -21407,14 +18587,6 @@
"wrappy": "1"
}
},
- "node_modules/npm/node_modules/opener": {
- "version": "1.5.2",
- "inBundle": true,
- "license": "(WTFPL OR MIT)",
- "bin": {
- "opener": "bin/opener-bin.js"
- }
- },
"node_modules/npm/node_modules/p-map": {
"version": "4.0.0",
"inBundle": true,
@@ -21430,50 +18602,47 @@
}
},
"node_modules/npm/node_modules/pacote": {
- "version": "13.6.2",
+ "version": "15.2.0",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "@npmcli/git": "^3.0.0",
- "@npmcli/installed-package-contents": "^1.0.7",
- "@npmcli/promise-spawn": "^3.0.0",
- "@npmcli/run-script": "^4.1.0",
- "cacache": "^16.0.0",
- "chownr": "^2.0.0",
- "fs-minipass": "^2.1.0",
- "infer-owner": "^1.0.4",
- "minipass": "^3.1.6",
- "mkdirp": "^1.0.4",
- "npm-package-arg": "^9.0.0",
- "npm-packlist": "^5.1.0",
- "npm-pick-manifest": "^7.0.0",
- "npm-registry-fetch": "^13.0.1",
- "proc-log": "^2.0.0",
+ "@npmcli/git": "^4.0.0",
+ "@npmcli/installed-package-contents": "^2.0.1",
+ "@npmcli/promise-spawn": "^6.0.1",
+ "@npmcli/run-script": "^6.0.0",
+ "cacache": "^17.0.0",
+ "fs-minipass": "^3.0.0",
+ "minipass": "^5.0.0",
+ "npm-package-arg": "^10.0.0",
+ "npm-packlist": "^7.0.0",
+ "npm-pick-manifest": "^8.0.0",
+ "npm-registry-fetch": "^14.0.0",
+ "proc-log": "^3.0.0",
"promise-retry": "^2.0.1",
- "read-package-json": "^5.0.0",
- "read-package-json-fast": "^2.0.3",
- "rimraf": "^3.0.2",
- "ssri": "^9.0.0",
+ "read-package-json": "^6.0.0",
+ "read-package-json-fast": "^3.0.0",
+ "sigstore": "^1.3.0",
+ "ssri": "^10.0.0",
"tar": "^6.1.11"
},
"bin": {
"pacote": "lib/bin.js"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/parse-conflict-json": {
- "version": "2.0.2",
+ "version": "3.0.1",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "json-parse-even-better-errors": "^2.3.1",
- "just-diff": "^5.0.1",
+ "json-parse-even-better-errors": "^3.0.0",
+ "just-diff": "^6.0.0",
"just-diff-apply": "^5.2.0"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/path-is-absolute": {
@@ -21484,8 +18653,39 @@
"node": ">=0.10.0"
}
},
+ "node_modules/npm/node_modules/path-key": {
+ "version": "3.1.1",
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/path-scurry": {
+ "version": "1.9.2",
+ "inBundle": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "lru-cache": "^9.1.1",
+ "minipass": "^5.0.0 || ^6.0.2"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/npm/node_modules/path-scurry/node_modules/lru-cache": {
+ "version": "9.1.1",
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": "14 || >=16.14"
+ }
+ },
"node_modules/npm/node_modules/postcss-selector-parser": {
- "version": "6.0.10",
+ "version": "6.0.13",
"inBundle": true,
"license": "MIT",
"dependencies": {
@@ -21497,11 +18697,19 @@
}
},
"node_modules/npm/node_modules/proc-log": {
- "version": "2.0.1",
+ "version": "3.0.0",
"inBundle": true,
"license": "ISC",
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/process": {
+ "version": "0.11.10",
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6.0"
}
},
"node_modules/npm/node_modules/promise-all-reject-late": {
@@ -21513,7 +18721,7 @@
}
},
"node_modules/npm/node_modules/promise-call-limit": {
- "version": "1.0.1",
+ "version": "1.0.2",
"inBundle": true,
"license": "ISC",
"funding": {
@@ -21538,11 +18746,14 @@
}
},
"node_modules/npm/node_modules/promzard": {
- "version": "0.3.0",
+ "version": "1.0.0",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "read": "1"
+ "read": "^2.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/qrcode-terminal": {
@@ -21553,80 +18764,62 @@
}
},
"node_modules/npm/node_modules/read": {
- "version": "1.0.7",
+ "version": "2.1.0",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "mute-stream": "~0.0.4"
+ "mute-stream": "~1.0.0"
},
"engines": {
- "node": ">=0.8"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/read-cmd-shim": {
- "version": "3.0.0",
+ "version": "4.0.0",
"inBundle": true,
"license": "ISC",
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/read-package-json": {
- "version": "5.0.2",
+ "version": "6.0.4",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "glob": "^8.0.1",
- "json-parse-even-better-errors": "^2.3.1",
- "normalize-package-data": "^4.0.0",
- "npm-normalize-package-bin": "^2.0.0"
+ "glob": "^10.2.2",
+ "json-parse-even-better-errors": "^3.0.0",
+ "normalize-package-data": "^5.0.0",
+ "npm-normalize-package-bin": "^3.0.0"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/read-package-json-fast": {
- "version": "2.0.3",
+ "version": "3.0.2",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "json-parse-even-better-errors": "^2.3.0",
- "npm-normalize-package-bin": "^1.0.1"
+ "json-parse-even-better-errors": "^3.0.0",
+ "npm-normalize-package-bin": "^3.0.0"
},
"engines": {
- "node": ">=10"
- }
- },
- "node_modules/npm/node_modules/read-package-json/node_modules/npm-normalize-package-bin": {
- "version": "2.0.0",
- "inBundle": true,
- "license": "ISC",
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/readable-stream": {
- "version": "3.6.0",
+ "version": "4.4.0",
"inBundle": true,
"license": "MIT",
"dependencies": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
+ "abort-controller": "^3.0.0",
+ "buffer": "^6.0.3",
+ "events": "^3.3.0",
+ "process": "^0.11.10"
},
"engines": {
- "node": ">= 6"
- }
- },
- "node_modules/npm/node_modules/readdir-scoped-modules": {
- "version": "1.1.0",
- "inBundle": true,
- "license": "ISC",
- "dependencies": {
- "debuglog": "^1.0.1",
- "dezalgo": "^1.0.0",
- "graceful-fs": "^4.1.2",
- "once": "^1.3.0"
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}
},
"node_modules/npm/node_modules/retry": {
@@ -21716,7 +18909,7 @@
"optional": true
},
"node_modules/npm/node_modules/semver": {
- "version": "7.3.7",
+ "version": "7.5.4",
"inBundle": true,
"license": "ISC",
"dependencies": {
@@ -21745,10 +18938,51 @@
"inBundle": true,
"license": "ISC"
},
+ "node_modules/npm/node_modules/shebang-command": {
+ "version": "2.0.0",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/npm/node_modules/signal-exit": {
- "version": "3.0.7",
+ "version": "4.0.2",
"inBundle": true,
- "license": "ISC"
+ "license": "ISC",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/npm/node_modules/sigstore": {
+ "version": "1.7.0",
+ "inBundle": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@sigstore/protobuf-specs": "^0.1.0",
+ "@sigstore/tuf": "^1.0.1",
+ "make-fetch-happen": "^11.0.1"
+ },
+ "bin": {
+ "sigstore": "bin/sigstore.js"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
},
"node_modules/npm/node_modules/smart-buffer": {
"version": "4.2.0",
@@ -21760,7 +18994,7 @@
}
},
"node_modules/npm/node_modules/socks": {
- "version": "2.7.0",
+ "version": "2.7.1",
"inBundle": true,
"license": "MIT",
"dependencies": {
@@ -21786,7 +19020,7 @@
}
},
"node_modules/npm/node_modules/spdx-correct": {
- "version": "3.1.1",
+ "version": "3.2.0",
"inBundle": true,
"license": "Apache-2.0",
"dependencies": {
@@ -21809,19 +19043,19 @@
}
},
"node_modules/npm/node_modules/spdx-license-ids": {
- "version": "3.0.11",
+ "version": "3.0.13",
"inBundle": true,
"license": "CC0-1.0"
},
"node_modules/npm/node_modules/ssri": {
- "version": "9.0.1",
+ "version": "10.0.4",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "minipass": "^3.1.1"
+ "minipass": "^5.0.0"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/string_decoder": {
@@ -21845,6 +19079,20 @@
"node": ">=8"
}
},
+ "node_modules/npm/node_modules/string-width-cjs": {
+ "name": "string-width",
+ "version": "4.2.3",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/npm/node_modules/strip-ansi": {
"version": "6.0.1",
"inBundle": true,
@@ -21856,31 +19104,65 @@
"node": ">=8"
}
},
- "node_modules/npm/node_modules/supports-color": {
- "version": "7.2.0",
+ "node_modules/npm/node_modules/strip-ansi-cjs": {
+ "name": "strip-ansi",
+ "version": "6.0.1",
"inBundle": true,
"license": "MIT",
"dependencies": {
- "has-flag": "^4.0.0"
+ "ansi-regex": "^5.0.1"
},
"engines": {
"node": ">=8"
}
},
+ "node_modules/npm/node_modules/supports-color": {
+ "version": "9.4.0",
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
+ }
+ },
"node_modules/npm/node_modules/tar": {
- "version": "6.1.11",
+ "version": "6.1.15",
"inBundle": true,
"license": "ISC",
"dependencies": {
"chownr": "^2.0.0",
"fs-minipass": "^2.0.0",
- "minipass": "^3.0.0",
+ "minipass": "^5.0.0",
"minizlib": "^2.1.1",
"mkdirp": "^1.0.3",
"yallist": "^4.0.0"
},
"engines": {
- "node": ">= 10"
+ "node": ">=10"
+ }
+ },
+ "node_modules/npm/node_modules/tar/node_modules/fs-minipass": {
+ "version": "2.1.0",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/npm/node_modules/tar/node_modules/fs-minipass/node_modules/minipass": {
+ "version": "3.3.6",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
"node_modules/npm/node_modules/text-table": {
@@ -21893,34 +19175,47 @@
"inBundle": true,
"license": "MIT"
},
- "node_modules/npm/node_modules/treeverse": {
- "version": "2.0.0",
+ "node_modules/npm/node_modules/treeverse": {
+ "version": "3.0.0",
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/tuf-js": {
+ "version": "1.1.7",
"inBundle": true,
- "license": "ISC",
+ "license": "MIT",
+ "dependencies": {
+ "@tufjs/models": "1.0.4",
+ "debug": "^4.3.4",
+ "make-fetch-happen": "^11.1.1"
+ },
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/unique-filename": {
- "version": "2.0.1",
+ "version": "3.0.0",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "unique-slug": "^3.0.0"
+ "unique-slug": "^4.0.0"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/unique-slug": {
- "version": "3.0.0",
+ "version": "4.0.0",
"inBundle": true,
"license": "ISC",
"dependencies": {
"imurmurhash": "^0.1.4"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/util-deprecate": {
@@ -21938,18 +19233,18 @@
}
},
"node_modules/npm/node_modules/validate-npm-package-name": {
- "version": "4.0.0",
+ "version": "5.0.0",
"inBundle": true,
"license": "ISC",
"dependencies": {
"builtins": "^5.0.0"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/walk-up-path": {
- "version": "1.0.0",
+ "version": "3.0.1",
"inBundle": true,
"license": "ISC"
},
@@ -21962,17 +19257,17 @@
}
},
"node_modules/npm/node_modules/which": {
- "version": "2.0.2",
+ "version": "3.0.1",
"inBundle": true,
"license": "ISC",
"dependencies": {
"isexe": "^2.0.0"
},
"bin": {
- "node-which": "bin/node-which"
+ "node-which": "bin/which.js"
},
"engines": {
- "node": ">= 8"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/wide-align": {
@@ -21983,21 +19278,111 @@
"string-width": "^1.0.2 || 2 || 3 || 4"
}
},
+ "node_modules/npm/node_modules/wrap-ansi": {
+ "version": "8.1.0",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^6.1.0",
+ "string-width": "^5.0.1",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/npm/node_modules/wrap-ansi-cjs": {
+ "name": "wrap-ansi",
+ "version": "7.0.0",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-regex": {
+ "version": "6.0.1",
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-styles": {
+ "version": "6.2.1",
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/npm/node_modules/wrap-ansi/node_modules/emoji-regex": {
+ "version": "9.2.2",
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/wrap-ansi/node_modules/string-width": {
+ "version": "5.1.2",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/npm/node_modules/wrap-ansi/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
"node_modules/npm/node_modules/wrappy": {
"version": "1.0.2",
"inBundle": true,
"license": "ISC"
},
"node_modules/npm/node_modules/write-file-atomic": {
- "version": "4.0.2",
+ "version": "5.0.1",
"inBundle": true,
"license": "ISC",
"dependencies": {
"imurmurhash": "^0.1.4",
- "signal-exit": "^3.0.7"
+ "signal-exit": "^4.0.1"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/yallist": {
@@ -22029,9 +19414,9 @@
}
},
"node_modules/nwsapi": {
- "version": "2.2.5",
- "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.5.tgz",
- "integrity": "sha512-6xpotnECFy/og7tKSBVmUNft7J3jyXAka4XvG6AUhFWRz+Q/Ljus7znJAA3bxColfQLdS+XsjoodtJfCgeTEFQ==",
+ "version": "2.2.7",
+ "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz",
+ "integrity": "sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==",
"dev": true
},
"node_modules/object-assign": {
@@ -22042,91 +19427,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/object-copy": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
- "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==",
- "dev": true,
- "dependencies": {
- "copy-descriptor": "^0.1.0",
- "define-property": "^0.2.5",
- "kind-of": "^3.0.3"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy/node_modules/define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
- "dev": true,
- "dependencies": {
- "is-descriptor": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy/node_modules/is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy/node_modules/is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy/node_modules/is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dev": true,
- "dependencies": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/object-inspect": {
"version": "1.12.3",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
@@ -22161,18 +19461,6 @@
"node": ">= 0.4"
}
},
- "node_modules/object-visit": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
- "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==",
- "dev": true,
- "dependencies": {
- "isobject": "^3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/object.assign": {
"version": "4.1.4",
"resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz",
@@ -22222,24 +19510,16 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/object.getownpropertydescriptors": {
- "version": "2.1.6",
- "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.6.tgz",
- "integrity": "sha512-lq+61g26E/BgHv0ZTFgRvi7NMEPuAxLkFU7rukXjc/AlwH4Am5xXVnIXy3un1bg/JPbXHrixRkK1itUzzPiIjQ==",
+ "node_modules/object.groupby": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.0.tgz",
+ "integrity": "sha512-70MWG6NfRH9GnbZOikuhPPYzpUpof9iW2J9E4dW7FXTqPNb6rllE6u39SKwwiNh8lCwX3DDb5OgcKGiEBrTTyw==",
"dev": true,
- "optional": true,
"dependencies": {
- "array.prototype.reduce": "^1.0.5",
"call-bind": "^1.0.2",
"define-properties": "^1.2.0",
"es-abstract": "^1.21.2",
- "safe-array-concat": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "get-intrinsic": "^1.2.1"
}
},
"node_modules/object.hasown": {
@@ -22255,18 +19535,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/object.pick": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
- "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==",
- "dev": true,
- "dependencies": {
- "isobject": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/object.values": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz",
@@ -22323,6 +19591,7 @@
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
"integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "dev": true,
"dependencies": {
"mimic-fn": "^2.1.0"
},
@@ -22337,139 +19606,60 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
"integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "dev": true,
"engines": {
"node": ">=6"
}
},
- "node_modules/opn": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz",
- "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==",
+ "node_modules/open": {
+ "version": "8.4.2",
+ "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz",
+ "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==",
"dev": true,
"dependencies": {
- "is-wsl": "^1.1.0"
+ "define-lazy-prop": "^2.0.0",
+ "is-docker": "^2.1.1",
+ "is-wsl": "^2.2.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/opn/node_modules/is-wsl": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
- "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==",
+ "node_modules/opener": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz",
+ "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==",
"dev": true,
- "engines": {
- "node": ">=4"
+ "bin": {
+ "opener": "bin/opener-bin.js"
}
},
"node_modules/optionator": {
- "version": "0.9.1",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
- "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
+ "version": "0.9.3",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
+ "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
"dev": true,
"dependencies": {
+ "@aashutoshrathi/word-wrap": "^1.2.3",
"deep-is": "^0.1.3",
"fast-levenshtein": "^2.0.6",
"levn": "^0.4.1",
"prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
+ "type-check": "^0.4.0"
},
"engines": {
"node": ">= 0.8.0"
}
},
- "node_modules/optipng-bin": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/optipng-bin/-/optipng-bin-7.0.1.tgz",
- "integrity": "sha512-W99mpdW7Nt2PpFiaO+74pkht7KEqkXkeRomdWXfEz3SALZ6hns81y/pm1dsGZ6ItUIfchiNIP6ORDr1zETU1jA==",
- "dev": true,
- "hasInstallScript": true,
- "optional": true,
- "dependencies": {
- "bin-build": "^3.0.0",
- "bin-wrapper": "^4.0.0"
- },
- "bin": {
- "optipng": "cli.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/os-filter-obj": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/os-filter-obj/-/os-filter-obj-2.0.0.tgz",
- "integrity": "sha512-uksVLsqG3pVdzzPvmAHpBK0wKxYItuzZr7SziusRPoz67tGV8rL1szZ6IdeUrbqLjGDwApBtN29eEE3IqGHOjg==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "arch": "^2.1.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/ow": {
- "version": "0.17.0",
- "resolved": "https://registry.npmjs.org/ow/-/ow-0.17.0.tgz",
- "integrity": "sha512-i3keDzDQP5lWIe4oODyDFey1qVrq2hXKTuTH2VpqwpYtzPiKZt2ziRI4NBQmgW40AnV5Euz17OyWweCb+bNEQA==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "type-fest": "^0.11.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/ow/node_modules/type-fest": {
- "version": "0.11.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz",
- "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==",
- "dev": true,
- "optional": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/p-cancelable": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz",
- "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/p-each-series": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz",
- "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==",
- "dev": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/p-event": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/p-event/-/p-event-1.3.0.tgz",
- "integrity": "sha512-hV1zbA7gwqPVFcapfeATaNjQ3J0NuzorHPyG8GPL9g/Y/TplWVBVoCKCXL6Ej2zscrCEv195QNWJXuBH6XZuzA==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "p-timeout": "^1.1.1"
- },
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz",
+ "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==",
"engines": {
- "node": ">=4"
+ "node": ">=8"
}
},
"node_modules/p-finally": {
@@ -22480,20 +19670,11 @@
"node": ">=4"
}
},
- "node_modules/p-is-promise": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz",
- "integrity": "sha512-zL7VE4JVS2IFSkR2GQKDSPEVxkoH43/p7oEnwpdCndKYJO0HVeRB7fA8TJwuLOTBREtK0ea8eHaxdwcpob5dmg==",
- "dev": true,
- "optional": true,
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/p-limit": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
"integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "dev": true,
"dependencies": {
"yocto-queue": "^0.1.0"
},
@@ -22508,6 +19689,7 @@
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
"integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "dev": true,
"dependencies": {
"p-limit": "^3.0.2"
},
@@ -22533,70 +19715,33 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/p-map-series": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-map-series/-/p-map-series-1.0.0.tgz",
- "integrity": "sha512-4k9LlvY6Bo/1FcIdV33wqZQES0Py+iKISU9Uc8p8AjWoZPnFKMpVIVD3s0EYn4jzLh1I+WeUZkJ0Yoa4Qfw3Kg==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "p-reduce": "^1.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/p-pipe": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-3.1.0.tgz",
- "integrity": "sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==",
- "dev": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/p-reduce": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz",
- "integrity": "sha512-3Tx1T3oM1xO/Y8Gj0sWyE78EIJZ+t+aEmXUdvQgvGmSMri7aPTHoovbXEreWKkL5j21Er60XAWLTzKbAKYOujQ==",
- "dev": true,
- "optional": true,
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/p-retry": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz",
- "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==",
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz",
+ "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==",
"dev": true,
"dependencies": {
- "retry": "^0.12.0"
+ "@types/retry": "0.12.0",
+ "retry": "^0.13.1"
},
"engines": {
- "node": ">=6"
+ "node": ">=8"
}
},
- "node_modules/p-timeout": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz",
- "integrity": "sha512-gb0ryzr+K2qFqFv6qi3khoeqMZF/+ajxQipEF6NteZVnvz9tzdsfAVj3lYtn1gAXvH5lfLwfxEII799gt/mRIA==",
+ "node_modules/p-retry/node_modules/retry": {
+ "version": "0.13.1",
+ "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz",
+ "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==",
"dev": true,
- "optional": true,
- "dependencies": {
- "p-finally": "^1.0.0"
- },
"engines": {
- "node": ">=4"
+ "node": ">= 4"
}
},
"node_modules/p-try": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
"integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "dev": true,
"engines": {
"node": ">=6"
}
@@ -22627,17 +19772,6 @@
"node": ">=6"
}
},
- "node_modules/parse-author": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/parse-author/-/parse-author-2.0.0.tgz",
- "integrity": "sha512-yx5DfvkN8JsHL2xk2Os9oTia467qnvRgey4ahSm2X8epehBLx/gWLcy5KI+Y36ful5DzGbCS6RazqZGgy1gHNw==",
- "dependencies": {
- "author-regex": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/parse-bmfont-ascii": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz",
@@ -22723,34 +19857,11 @@
"tslib": "^2.0.3"
}
},
- "node_modules/pascalcase": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
- "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/path": {
- "version": "0.12.7",
- "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz",
- "integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==",
- "dependencies": {
- "process": "^0.11.1",
- "util": "^0.10.3"
- }
- },
- "node_modules/path-dirname": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
- "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==",
- "dev": true
- },
"node_modules/path-exists": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true,
"engines": {
"node": ">=8"
}
@@ -22763,16 +19874,11 @@
"node": ">=0.10.0"
}
},
- "node_modules/path-is-inside": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
- "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==",
- "dev": true
- },
"node_modules/path-key": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
"engines": {
"node": ">=8"
}
@@ -22782,14 +19888,6 @@
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
},
- "node_modules/path-to-regexp": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz",
- "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==",
- "dependencies": {
- "isarray": "0.0.1"
- }
- },
"node_modules/path-type": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
@@ -22803,15 +19901,21 @@
"resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
"integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg=="
},
+ "node_modules/performance-now": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
+ "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==",
+ "dev": true
+ },
"node_modules/pg": {
- "version": "8.11.0",
- "resolved": "https://registry.npmjs.org/pg/-/pg-8.11.0.tgz",
- "integrity": "sha512-meLUVPn2TWgJyLmy7el3fQQVwft4gU5NGyvV0XbD41iU9Jbg8lCH4zexhIkihDzVHJStlt6r088G6/fWeNjhXA==",
+ "version": "8.11.3",
+ "resolved": "https://registry.npmjs.org/pg/-/pg-8.11.3.tgz",
+ "integrity": "sha512-+9iuvG8QfaaUrrph+kpF24cXkH1YOOUeArRNYIxq1viYHZagBxrTno7cecY1Fa44tJeZvaoG+Djpkc3JwehN5g==",
"dependencies": {
"buffer-writer": "2.0.0",
"packet-reader": "1.0.0",
- "pg-connection-string": "^2.6.0",
- "pg-pool": "^3.6.0",
+ "pg-connection-string": "^2.6.2",
+ "pg-pool": "^3.6.1",
"pg-protocol": "^1.6.0",
"pg-types": "^2.1.0",
"pgpass": "1.x"
@@ -22820,7 +19924,7 @@
"node": ">= 8.0.0"
},
"optionalDependencies": {
- "pg-cloudflare": "^1.1.0"
+ "pg-cloudflare": "^1.1.1"
},
"peerDependencies": {
"pg-native": ">=3.0.1"
@@ -22832,15 +19936,15 @@
}
},
"node_modules/pg-cloudflare": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.1.0.tgz",
- "integrity": "sha512-tGM8/s6frwuAIyRcJ6nWcIvd3+3NmUKIs6OjviIm1HPPFEt5MzQDOTBQyhPWg/m0kCl95M6gA1JaIXtS8KovOA==",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz",
+ "integrity": "sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==",
"optional": true
},
"node_modules/pg-connection-string": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.0.tgz",
- "integrity": "sha512-x14ibktcwlHKoHxx9X3uTVW9zIGR41ZB6QNhHb21OPNdCCO3NaRnpJuwKIQSR4u+Yqjx4HCvy7Hh7VSy1U4dGg=="
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.2.tgz",
+ "integrity": "sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA=="
},
"node_modules/pg-int8": {
"version": "1.0.1",
@@ -22850,10 +19954,19 @@
"node": ">=4.0.0"
}
},
+ "node_modules/pg-numeric": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/pg-numeric/-/pg-numeric-1.0.2.tgz",
+ "integrity": "sha512-BM/Thnrw5jm2kKLE5uJkXqqExRUY/toLHda65XgFTBTFYZyopbKjBe29Ii3RbkvlsMoFwD+tHeGaCjjv0gHlyw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/pg-pool": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.0.tgz",
- "integrity": "sha512-clFRf2ksqd+F497kWFyM21tMjeikn60oGDmqMT8UBrynEwVEX/5R5xd2sdvdo1cZCFlguORNpVuqxIj+aK4cfQ==",
+ "version": "3.6.1",
+ "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.1.tgz",
+ "integrity": "sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og==",
"peerDependencies": {
"pg": ">=8.0"
}
@@ -22900,6 +20013,7 @@
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "devOptional": true,
"engines": {
"node": ">=8.6"
},
@@ -22923,7 +20037,6 @@
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
"integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
- "dev": true,
"engines": {
"node": ">=6"
}
@@ -23020,178 +20133,18 @@
"node": ">=8"
}
},
- "node_modules/pkg-up": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz",
- "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==",
- "dependencies": {
- "find-up": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/pkg-up/node_modules/find-up": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
- "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
- "dependencies": {
- "locate-path": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/pkg-up/node_modules/locate-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
- "dependencies": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/pkg-up/node_modules/p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
- "dependencies": {
- "p-try": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/pkg-up/node_modules/p-locate": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
- "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
- "dependencies": {
- "p-limit": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/pkg-up/node_modules/path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/plist": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.6.tgz",
- "integrity": "sha512-WiIVYyrp8TD4w8yCvyeIr+lkmrGRd5u0VbRnU+tP/aRLxP/YadJUYOMZJ/6hIa3oUyVCsycXvtNRgd5XBJIbiA==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz",
+ "integrity": "sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==",
+ "dev": true,
"dependencies": {
+ "@xmldom/xmldom": "^0.8.8",
"base64-js": "^1.5.1",
"xmlbuilder": "^15.1.1"
},
"engines": {
- "node": ">=6"
- }
- },
- "node_modules/pngquant-bin": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/pngquant-bin/-/pngquant-bin-6.0.1.tgz",
- "integrity": "sha512-Q3PUyolfktf+hYio6wsg3SanQzEU/v8aICg/WpzxXcuCMRb7H2Q81okfpcEztbMvw25ILjd3a87doj2N9kvbpQ==",
- "dev": true,
- "hasInstallScript": true,
- "optional": true,
- "dependencies": {
- "bin-build": "^3.0.0",
- "bin-wrapper": "^4.0.1",
- "execa": "^4.0.0"
- },
- "bin": {
- "pngquant": "cli.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/pngquant-bin/node_modules/execa": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz",
- "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "cross-spawn": "^7.0.0",
- "get-stream": "^5.0.0",
- "human-signals": "^1.1.1",
- "is-stream": "^2.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^4.0.0",
- "onetime": "^5.1.0",
- "signal-exit": "^3.0.2",
- "strip-final-newline": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/execa?sponsor=1"
- }
- },
- "node_modules/pngquant-bin/node_modules/get-stream": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
- "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "pump": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/pngquant-bin/node_modules/human-signals": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz",
- "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==",
- "dev": true,
- "optional": true,
- "engines": {
- "node": ">=8.12.0"
- }
- },
- "node_modules/pngquant-bin/node_modules/is-stream": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
- "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
- "dev": true,
- "optional": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/pngquant-bin/node_modules/npm-run-path": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
- "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "path-key": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
+ "node": ">=10.4.0"
}
},
"node_modules/polished": {
@@ -23205,52 +20158,10 @@
"node": ">=10"
}
},
- "node_modules/portfinder": {
- "version": "1.0.32",
- "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz",
- "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==",
- "dev": true,
- "dependencies": {
- "async": "^2.6.4",
- "debug": "^3.2.7",
- "mkdirp": "^0.5.6"
- },
- "engines": {
- "node": ">= 0.12.0"
- }
- },
- "node_modules/portfinder/node_modules/async": {
- "version": "2.6.4",
- "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz",
- "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==",
- "dev": true,
- "dependencies": {
- "lodash": "^4.17.14"
- }
- },
- "node_modules/portfinder/node_modules/debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
- "dev": true,
- "dependencies": {
- "ms": "^2.1.1"
- }
- },
- "node_modules/posix-character-classes": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
- "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/postcss": {
- "version": "8.4.24",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.24.tgz",
- "integrity": "sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==",
- "dev": true,
+ "version": "8.4.28",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.28.tgz",
+ "integrity": "sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw==",
"funding": [
{
"type": "opencollective",
@@ -23275,17 +20186,17 @@
}
},
"node_modules/postcss-loader": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-5.3.0.tgz",
- "integrity": "sha512-/+Z1RAmssdiSLgIZwnJHwBMnlABPgF7giYzTN2NOfr9D21IJZ4mQC1R2miwp80zno9M4zMD/umGI8cR+2EL5zw==",
+ "version": "7.3.3",
+ "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.3.tgz",
+ "integrity": "sha512-YgO/yhtevGO/vJePCQmTxiaEwER94LABZN0ZMT4A0vsak9TpO+RvKRs7EmJ8peIlB9xfXCsS7M8LjqncsUZ5HA==",
"dev": true,
"dependencies": {
- "cosmiconfig": "^7.0.0",
- "klona": "^2.0.4",
- "semver": "^7.3.4"
+ "cosmiconfig": "^8.2.0",
+ "jiti": "^1.18.2",
+ "semver": "^7.3.8"
},
"engines": {
- "node": ">= 10.13.0"
+ "node": ">= 14.15.0"
},
"funding": {
"type": "opencollective",
@@ -23296,6 +20207,24 @@
"webpack": "^5.0.0"
}
},
+ "node_modules/postcss-loader/node_modules/cosmiconfig": {
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz",
+ "integrity": "sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==",
+ "dev": true,
+ "dependencies": {
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.0",
+ "parse-json": "^5.0.0",
+ "path-type": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/d-fischer"
+ }
+ },
"node_modules/postcss-loader/node_modules/lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
@@ -23309,9 +20238,9 @@
}
},
"node_modules/postcss-loader/node_modules/semver": {
- "version": "7.5.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz",
- "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==",
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
"dev": true,
"dependencies": {
"lru-cache": "^6.0.0"
@@ -23441,6 +20370,12 @@
"node": ">=0.10.0"
}
},
+ "node_modules/postgres-range": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/postgres-range/-/postgres-range-1.1.3.tgz",
+ "integrity": "sha512-VdlZoocy5lCP0c/t66xAfclglEapXPCIVhqqJRncYpvbCgImF0w67aPKfbqUMr72tO2k5q0TdTZwCLjPTI6C9g==",
+ "dev": true
+ },
"node_modules/prelude-ls": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
@@ -23450,34 +20385,11 @@
"node": ">= 0.8.0"
}
},
- "node_modules/prepend-http": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz",
- "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==",
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/present": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/present/-/present-0.0.6.tgz",
"integrity": "sha512-8HGGcsH0xefDkhtWzXhigzieKtervWPQgyX8RtQD3cKr4wU307j8XANVSaZLxbR0+1EBonCJNOdUrQ7hbk3Kiw=="
},
- "node_modules/prettier": {
- "version": "2.8.8",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz",
- "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
- "dev": true,
- "bin": {
- "prettier": "bin-prettier.js"
- },
- "engines": {
- "node": ">=10.13.0"
- },
- "funding": {
- "url": "https://github.com/prettier/prettier?sponsor=1"
- }
- },
"node_modules/pretty-error": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz",
@@ -23489,47 +20401,31 @@
}
},
"node_modules/pretty-format": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz",
- "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==",
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz",
+ "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==",
"dev": true,
"dependencies": {
- "@jest/types": "^26.6.2",
- "ansi-regex": "^5.0.0",
- "ansi-styles": "^4.0.0",
+ "ansi-regex": "^5.0.1",
+ "ansi-styles": "^5.0.0",
"react-is": "^17.0.1"
},
"engines": {
- "node": ">= 10"
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
}
},
"node_modules/pretty-format/node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
"dev": true,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
"engines": {
- "node": ">=8"
+ "node": ">=10"
},
"funding": {
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/pretty-format/node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
"node_modules/pretty-format/node_modules/react-is": {
"version": "17.0.2",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
@@ -23547,7 +20443,8 @@
"node_modules/process-nextick-args": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
+ "dev": true
},
"node_modules/progress": {
"version": "2.0.3",
@@ -23609,12 +20506,6 @@
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
},
- "node_modules/proto-list": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
- "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==",
- "optional": true
- },
"node_modules/proxy-addr": {
"version": "2.0.7",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
@@ -23628,12 +20519,6 @@
"node": ">= 0.10"
}
},
- "node_modules/prr": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
- "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==",
- "dev": true
- },
"node_modules/pseudomap": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
@@ -23664,20 +20549,26 @@
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
"integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
+ "dev": true,
"engines": {
"node": ">=6"
}
},
- "node_modules/q": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
- "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==",
+ "node_modules/pure-rand": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.2.tgz",
+ "integrity": "sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==",
"dev": true,
- "optional": true,
- "engines": {
- "node": ">=0.6.0",
- "teleport": ">=0.2.0"
- }
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/dubzzz"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/fast-check"
+ }
+ ]
},
"node_modules/qs": {
"version": "6.11.0",
@@ -23717,16 +20608,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/querystring": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz",
- "integrity": "sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==",
- "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.",
- "dev": true,
- "engines": {
- "node": ">=0.4.x"
- }
- },
"node_modules/querystringify": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
@@ -23753,6 +20634,43 @@
}
]
},
+ "node_modules/quick-lru": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
+ "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/raf": {
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz",
+ "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==",
+ "dev": true,
+ "dependencies": {
+ "performance-now": "^2.1.0"
+ }
+ },
+ "node_modules/railroad-diagrams": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz",
+ "integrity": "sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A=="
+ },
+ "node_modules/randexp": {
+ "version": "0.4.6",
+ "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz",
+ "integrity": "sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==",
+ "dependencies": {
+ "discontinuous-range": "1.0.0",
+ "ret": "~0.1.10"
+ },
+ "engines": {
+ "node": ">=0.12"
+ }
+ },
"node_modules/randombytes": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
@@ -23807,57 +20725,42 @@
"node": ">=0.10.0"
}
},
- "node_modules/rcedit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/rcedit/-/rcedit-2.3.0.tgz",
- "integrity": "sha512-h1gNEl9Oai1oijwyJ1WYqYSXTStHnOcv1KYljg/8WM4NAg3H1KBK3azIaKkQ1WQl+d7PoJpcBMscPfLXVKgCLQ==",
- "engines": {
- "node": ">= 8.0.0"
- }
- },
"node_modules/react": {
- "version": "17.0.2",
- "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz",
- "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==",
+ "version": "18.2.0",
+ "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
+ "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
"dependencies": {
- "loose-envify": "^1.1.0",
- "object-assign": "^4.1.1"
+ "loose-envify": "^1.1.0"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/react-chartjs-2": {
- "version": "2.11.2",
- "resolved": "https://registry.npmjs.org/react-chartjs-2/-/react-chartjs-2-2.11.2.tgz",
- "integrity": "sha512-hcPS9vmRJeAALPPf0uo02BiD8BDm0HNmneJYTZVR74UKprXOpql+Jy1rVuj93rKw0Jfx77mkcRfXPxTe5K83uw==",
- "dependencies": {
- "lodash": "^4.17.19",
- "prop-types": "^15.7.2"
- },
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/react-chartjs-2/-/react-chartjs-2-5.2.0.tgz",
+ "integrity": "sha512-98iN5aguJyVSxp5U3CblRLH67J8gkfyGNbiK3c+l1QI/G4irHMPQw44aEPmjVag+YKTyQ260NcF82GTQ3bdscA==",
"peerDependencies": {
- "chart.js": "^2.3",
- "react": "^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0",
- "react-dom": "^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
+ "chart.js": "^4.1.1",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
}
},
"node_modules/react-dom": {
- "version": "17.0.2",
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz",
- "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==",
+ "version": "18.2.0",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
+ "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
"dependencies": {
"loose-envify": "^1.1.0",
- "object-assign": "^4.1.1",
- "scheduler": "^0.20.2"
+ "scheduler": "^0.23.0"
},
"peerDependencies": {
- "react": "17.0.2"
+ "react": "^18.2.0"
}
},
"node_modules/react-force-graph": {
"version": "1.43.0",
- "resolved": "git+ssh://git@github.com/vasturiano/react-force-graph.git#36f4c43838db7f6fc8934795f74e5c619e116a94",
- "license": "MIT",
+ "resolved": "https://registry.npmjs.org/react-force-graph/-/react-force-graph-1.43.0.tgz",
+ "integrity": "sha512-g59ZWGrR6hkokY8RMO6FQHbltaIZ3+AGf9mrQs+s1+J26Sc2Wc6aro4cLW8PTHMIHgX/zml44yp60gRbzdFSMw==",
"dependencies": {
"3d-force-graph": "1",
"3d-force-graph-ar": "1",
@@ -23893,65 +20796,15 @@
"react": ">=16.13.1"
}
},
- "node_modules/react-loading": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/react-loading/-/react-loading-2.0.3.tgz",
- "integrity": "sha512-Vdqy79zq+bpeWJqC+xjltUjuGApyoItPgL0vgVfcJHhqwU7bAMKzysfGW/ADu6i0z0JiOCRJjo+IkFNkRNbA3A==",
- "peerDependencies": {
- "prop-types": "^15.6.0",
- "react": ">=0.14.0"
- }
- },
"node_modules/react-refresh": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.9.0.tgz",
- "integrity": "sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==",
+ "version": "0.14.0",
+ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz",
+ "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
},
- "node_modules/react-router": {
- "version": "5.3.4",
- "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz",
- "integrity": "sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==",
- "dependencies": {
- "@babel/runtime": "^7.12.13",
- "history": "^4.9.0",
- "hoist-non-react-statics": "^3.1.0",
- "loose-envify": "^1.3.1",
- "path-to-regexp": "^1.7.0",
- "prop-types": "^15.6.2",
- "react-is": "^16.6.0",
- "tiny-invariant": "^1.0.2",
- "tiny-warning": "^1.0.0"
- },
- "peerDependencies": {
- "react": ">=15"
- }
- },
- "node_modules/react-router-dom": {
- "version": "5.3.4",
- "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.4.tgz",
- "integrity": "sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==",
- "dependencies": {
- "@babel/runtime": "^7.12.13",
- "history": "^4.9.0",
- "loose-envify": "^1.3.1",
- "prop-types": "^15.6.2",
- "react-router": "5.3.4",
- "tiny-invariant": "^1.0.2",
- "tiny-warning": "^1.0.0"
- },
- "peerDependencies": {
- "react": ">=15"
- }
- },
- "node_modules/react-router/node_modules/react-is": {
- "version": "16.13.1",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
- "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
- },
"node_modules/react-transition-group": {
"version": "4.4.5",
"resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz",
@@ -23965,240 +20818,60 @@
"peerDependencies": {
"react": ">=16.6.0",
"react-dom": ">=16.6.0"
- }
- },
- "node_modules/reactflow": {
- "version": "11.7.4",
- "resolved": "https://registry.npmjs.org/reactflow/-/reactflow-11.7.4.tgz",
- "integrity": "sha512-QI6+oc1Ft6oFeLSdHlp+SmgymbI5Tm49wj5JyE84O4A54yN/ImfYaBhLit9Cmfzxn9Tz6tDqmGMGbk4bdtB8/w==",
- "dependencies": {
- "@reactflow/background": "11.2.4",
- "@reactflow/controls": "11.1.15",
- "@reactflow/core": "11.7.4",
- "@reactflow/minimap": "11.5.4",
- "@reactflow/node-resizer": "2.1.1",
- "@reactflow/node-toolbar": "1.2.3"
- },
- "peerDependencies": {
- "react": ">=17",
- "react-dom": ">=17"
- }
- },
- "node_modules/read-config-file": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-6.2.0.tgz",
- "integrity": "sha512-gx7Pgr5I56JtYz+WuqEbQHj/xWo+5Vwua2jhb1VwM4Wid5PqYmZ4i00ZB0YEGIfkVBsCv9UrjgyqCiQfS/Oosg==",
- "dev": true,
- "dependencies": {
- "dotenv": "^9.0.2",
- "dotenv-expand": "^5.1.0",
- "js-yaml": "^4.1.0",
- "json5": "^2.2.0",
- "lazy-val": "^1.0.4"
- },
- "engines": {
- "node": ">=12.0.0"
- }
- },
- "node_modules/read-pkg": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz",
- "integrity": "sha512-+UBirHHDm5J+3WDmLBZYSklRYg82nMlz+enn+GMZ22nSR2f4bzxmhso6rzQW/3mT2PVzpzDTiYIZahk8UmZ44w==",
- "dependencies": {
- "normalize-package-data": "^2.3.2",
- "parse-json": "^4.0.0",
- "pify": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/read-pkg-up": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
- "integrity": "sha512-1orxQfbWGUiTn9XsPlChs6rLie/AV9jwZTGmu2NZw/CUDJQchXJFYE0Fq5j7+n558T1JhDWLdhyd1Zj+wLY//w==",
- "dependencies": {
- "find-up": "^2.0.0",
- "read-pkg": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/read-pkg-up/node_modules/find-up": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
- "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==",
- "dependencies": {
- "locate-path": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/read-pkg-up/node_modules/load-json-file": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
- "integrity": "sha512-3p6ZOGNbiX4CdvEd1VcE6yi78UrGNpjHO33noGwHCnT/o2fyllJDepsm8+mFFv/DvtwFHht5HIHSyOy5a+ChVQ==",
- "dependencies": {
- "graceful-fs": "^4.1.2",
- "parse-json": "^2.2.0",
- "pify": "^2.0.0",
- "strip-bom": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/read-pkg-up/node_modules/locate-path": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
- "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==",
- "dependencies": {
- "p-locate": "^2.0.0",
- "path-exists": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/read-pkg-up/node_modules/p-limit": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
- "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
- "dependencies": {
- "p-try": "^1.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/read-pkg-up/node_modules/p-locate": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
- "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==",
- "dependencies": {
- "p-limit": "^1.1.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/read-pkg-up/node_modules/p-try": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
- "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/read-pkg-up/node_modules/parse-json": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
- "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==",
- "dependencies": {
- "error-ex": "^1.2.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/read-pkg-up/node_modules/path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/read-pkg-up/node_modules/path-type": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
- "integrity": "sha512-dUnb5dXUf+kzhC/W/F4e5/SkluXIFf5VUHolW1Eg1irn1hGWjPGdsRcvYJ1nD6lhk8Ir7VM0bHJKsYTx8Jx9OQ==",
- "dependencies": {
- "pify": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/read-pkg-up/node_modules/pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/read-pkg-up/node_modules/read-pkg": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
- "integrity": "sha512-eFIBOPW7FGjzBuk3hdXEuNSiTZS/xEMlH49HxMyzb0hyPfu4EhVjT2DH32K1hSSmVq4sebAWnZuuY5auISUTGA==",
- "dependencies": {
- "load-json-file": "^2.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/read-pkg-up/node_modules/strip-bom": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
- "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/read-pkg/node_modules/parse-json": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
- "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==",
+ }
+ },
+ "node_modules/reactflow": {
+ "version": "11.8.3",
+ "resolved": "https://registry.npmjs.org/reactflow/-/reactflow-11.8.3.tgz",
+ "integrity": "sha512-wuVxJOFqi1vhA4WAEJLK0JWx2TsTiWpxTXTRp/wvpqKInQgQcB49I2QNyNYsKJCQ6jjXektS7H+LXoaVK/pG4A==",
"dependencies": {
- "error-ex": "^1.3.1",
- "json-parse-better-errors": "^1.0.1"
+ "@reactflow/background": "11.2.8",
+ "@reactflow/controls": "11.1.19",
+ "@reactflow/core": "11.8.3",
+ "@reactflow/minimap": "11.6.3",
+ "@reactflow/node-resizer": "2.1.5",
+ "@reactflow/node-toolbar": "1.2.7"
},
- "engines": {
- "node": ">=4"
+ "peerDependencies": {
+ "react": ">=17",
+ "react-dom": ">=17"
}
},
- "node_modules/read-pkg/node_modules/pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
+ "node_modules/read-config-file": {
+ "version": "6.3.2",
+ "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-6.3.2.tgz",
+ "integrity": "sha512-M80lpCjnE6Wt6zb98DoW8WHR09nzMSpu8XHtPkiTHrJ5Az9CybfeQhTJ8D7saeBHpGhLPIVyA8lcL6ZmdKwY6Q==",
+ "dev": true,
+ "dependencies": {
+ "config-file-ts": "^0.2.4",
+ "dotenv": "^9.0.2",
+ "dotenv-expand": "^5.1.0",
+ "js-yaml": "^4.1.0",
+ "json5": "^2.2.0",
+ "lazy-val": "^1.0.4"
+ },
"engines": {
- "node": ">=4"
+ "node": ">=12.0.0"
}
},
"node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
"dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
}
},
- "node_modules/readable-stream/node_modules/isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
- },
- "node_modules/readable-stream/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
- },
"node_modules/readdirp": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
"integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "devOptional": true,
"dependencies": {
"picomatch": "^2.2.1"
},
@@ -24207,28 +20880,46 @@
}
},
"node_modules/rechoir": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz",
- "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==",
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz",
+ "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==",
"dev": true,
"dependencies": {
- "resolve": "^1.9.0"
+ "resolve": "^1.20.0"
},
"engines": {
- "node": ">= 0.10"
+ "node": ">= 10.13.0"
+ }
+ },
+ "node_modules/reflect.getprototypeof": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.3.tgz",
+ "integrity": "sha512-TTAOZpkJ2YLxl7mVHWrNo3iDMEkYlva/kgFcXndqMgbo/AZUmmavEkdXV+hXtE4P8xdyEKRzalaFqZVuwIk/Nw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.20.4",
+ "get-intrinsic": "^1.1.1",
+ "globalthis": "^1.0.3",
+ "which-builtin-type": "^1.1.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/regenerate": {
"version": "1.4.2",
"resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
- "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==",
- "dev": true
+ "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A=="
},
"node_modules/regenerate-unicode-properties": {
"version": "10.1.0",
"resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz",
"integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==",
- "dev": true,
"dependencies": {
"regenerate": "^1.4.2"
},
@@ -24242,27 +20933,13 @@
"integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="
},
"node_modules/regenerator-transform": {
- "version": "0.15.1",
- "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz",
- "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==",
- "dev": true,
+ "version": "0.15.2",
+ "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz",
+ "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==",
"dependencies": {
"@babel/runtime": "^7.8.4"
}
},
- "node_modules/regex-not": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
- "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
- "dev": true,
- "dependencies": {
- "extend-shallow": "^3.0.2",
- "safe-regex": "^1.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/regexp.prototype.flags": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz",
@@ -24280,23 +20957,10 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/regexpp": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
- "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/mysticatea"
- }
- },
"node_modules/regexpu-core": {
"version": "5.3.2",
"resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz",
"integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==",
- "dev": true,
"dependencies": {
"@babel/regjsgen": "^0.8.0",
"regenerate": "^1.4.2",
@@ -24313,7 +20977,6 @@
"version": "0.9.1",
"resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz",
"integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==",
- "dev": true,
"dependencies": {
"jsesc": "~0.5.0"
},
@@ -24325,7 +20988,6 @@
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
"integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==",
- "dev": true,
"bin": {
"jsesc": "bin/jsesc"
}
@@ -24339,12 +21001,6 @@
"node": ">= 0.10"
}
},
- "node_modules/remove-trailing-separator": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
- "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==",
- "dev": true
- },
"node_modules/renderkid": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz",
@@ -24445,37 +21101,11 @@
"entities": "^2.0.0"
}
},
- "node_modules/repeat-element": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz",
- "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/repeat-string": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
- "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==",
- "dev": true,
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/replace-ext": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz",
- "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==",
- "dev": true,
- "engines": {
- "node": ">= 0.10"
- }
- },
"node_modules/require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
"integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+ "dev": true,
"engines": {
"node": ">=0.10.0"
}
@@ -24489,11 +21119,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/require-main-filename": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
- "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
- },
"node_modules/requires-port": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
@@ -24516,6 +21141,11 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/resolve-alpn": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz",
+ "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g=="
+ },
"node_modules/resolve-cwd": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
@@ -24545,31 +21175,39 @@
"node": ">=4"
}
},
- "node_modules/resolve-pathname": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz",
- "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng=="
+ "node_modules/resolve-pkg-maps": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz",
+ "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1"
+ }
},
- "node_modules/resolve-url": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
- "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==",
- "deprecated": "https://github.com/lydell/resolve-url#deprecated",
- "dev": true
+ "node_modules/resolve.exports": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz",
+ "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
},
"node_modules/responselike": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz",
- "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz",
+ "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==",
"dependencies": {
- "lowercase-keys": "^1.0.0"
+ "lowercase-keys": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/ret": {
"version": "0.1.15",
"resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
"integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
- "dev": true,
"engines": {
"node": ">=0.12"
}
@@ -24578,7 +21216,7 @@
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
"integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==",
- "devOptional": true,
+ "optional": true,
"engines": {
"node": ">= 4"
}
@@ -24629,13 +21267,14 @@
"resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz",
"integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg=="
},
- "node_modules/rsvp": {
- "version": "4.8.5",
- "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz",
- "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==",
+ "node_modules/rst-selector-parser": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz",
+ "integrity": "sha512-nDG1rZeP6oFTLN6yNDV/uiAvs1+FS/KlrEwh7+y7dpuApDBy6bI2HTBcc0/V8lv9OTqfyD34eF7au2pm8aBbhA==",
"dev": true,
- "engines": {
- "node": "6.* || >= 7.*"
+ "dependencies": {
+ "lodash.flattendeep": "^4.4.0",
+ "nearley": "^2.7.10"
}
},
"node_modules/run-parallel": {
@@ -24667,27 +21306,19 @@
"integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ=="
},
"node_modules/rxjs": {
- "version": "6.6.7",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
- "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
+ "version": "7.8.1",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz",
+ "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==",
+ "dev": true,
"dependencies": {
- "tslib": "^1.9.0"
- },
- "engines": {
- "npm": ">=2.0.0"
+ "tslib": "^2.1.0"
}
},
- "node_modules/rxjs/node_modules/tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
- },
"node_modules/safe-array-concat": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz",
"integrity": "sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==",
"dev": true,
- "optional": true,
"dependencies": {
"call-bind": "^1.0.2",
"get-intrinsic": "^1.2.0",
@@ -24701,18 +21332,10 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/safe-array-concat/node_modules/isarray": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
- "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
- "dev": true,
- "optional": true
- },
"node_modules/safe-buffer": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "dev": true,
"funding": [
{
"type": "github",
@@ -24728,15 +21351,6 @@
}
]
},
- "node_modules/safe-regex": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
- "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==",
- "dev": true,
- "dependencies": {
- "ret": "~0.1.10"
- }
- },
"node_modules/safe-regex-test": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz",
@@ -24747,203 +21361,28 @@
"get-intrinsic": "^1.1.3",
"is-regex": "^1.1.4"
},
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
- },
- "node_modules/sane": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz",
- "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==",
- "deprecated": "some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added",
- "dev": true,
- "dependencies": {
- "@cnakazawa/watch": "^1.0.3",
- "anymatch": "^2.0.0",
- "capture-exit": "^2.0.0",
- "exec-sh": "^0.3.2",
- "execa": "^1.0.0",
- "fb-watchman": "^2.0.0",
- "micromatch": "^3.1.4",
- "minimist": "^1.1.1",
- "walker": "~1.0.5"
- },
- "bin": {
- "sane": "src/cli.js"
- },
- "engines": {
- "node": "6.* || 8.* || >= 10.*"
- }
- },
- "node_modules/sane/node_modules/anymatch": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
- "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
- "dev": true,
- "dependencies": {
- "micromatch": "^3.1.4",
- "normalize-path": "^2.1.1"
- }
- },
- "node_modules/sane/node_modules/braces": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
- "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
- "dev": true,
- "dependencies": {
- "arr-flatten": "^1.1.0",
- "array-unique": "^0.3.2",
- "extend-shallow": "^2.0.1",
- "fill-range": "^4.0.0",
- "isobject": "^3.0.1",
- "repeat-element": "^1.1.2",
- "snapdragon": "^0.8.1",
- "snapdragon-node": "^2.0.1",
- "split-string": "^3.0.2",
- "to-regex": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sane/node_modules/braces/node_modules/extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
- "dev": true,
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sane/node_modules/fill-range": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
- "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
- "dev": true,
- "dependencies": {
- "extend-shallow": "^2.0.1",
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1",
- "to-regex-range": "^2.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sane/node_modules/fill-range/node_modules/extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
- "dev": true,
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sane/node_modules/is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sane/node_modules/is-number": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
- "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sane/node_modules/is-number/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sane/node_modules/micromatch": {
- "version": "3.1.10",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
- "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
- "dev": true,
- "dependencies": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "braces": "^2.3.1",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "extglob": "^2.0.4",
- "fragment-cache": "^0.2.1",
- "kind-of": "^6.0.2",
- "nanomatch": "^1.2.9",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sane/node_modules/normalize-path": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
- "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==",
- "dev": true,
- "dependencies": {
- "remove-trailing-separator": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sane/node_modules/to-regex-range": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
- "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
- "dev": true,
- "dependencies": {
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1"
- },
- "engines": {
- "node": ">=0.10.0"
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+ },
"node_modules/sanitize-filename": {
"version": "1.6.3",
"resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz",
"integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==",
+ "dev": true,
"dependencies": {
"truncate-utf8-bytes": "^1.0.0"
}
},
"node_modules/sass": {
- "version": "1.63.6",
- "resolved": "https://registry.npmjs.org/sass/-/sass-1.63.6.tgz",
- "integrity": "sha512-MJuxGMHzaOW7ipp+1KdELtqKbfAWbH7OLIdoSMnVe3EXPMTmxTmlaZDCTsgIpPCs3w99lLo9/zDKkOrJuT5byw==",
+ "version": "1.66.1",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.66.1.tgz",
+ "integrity": "sha512-50c+zTsZOJVgFfTgwwEzkjA3/QACgdNsKueWPyAR0mRINIvLAStVQBbPg14iuqEQ74NPDbXzJARJ/O4SI1zftA==",
"dev": true,
"dependencies": {
"chokidar": ">=3.0.0 <4.0.0",
@@ -24958,16 +21397,15 @@
}
},
"node_modules/sass-loader": {
- "version": "11.1.1",
- "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-11.1.1.tgz",
- "integrity": "sha512-fOCp/zLmj1V1WHDZbUbPgrZhA7HKXHEqkslzB+05U5K9SbSbcmH91C7QLW31AsXikxUMaxXRhhcqWZAxUMLDyA==",
+ "version": "13.3.2",
+ "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.3.2.tgz",
+ "integrity": "sha512-CQbKl57kdEv+KDLquhC+gE3pXt74LEAzm+tzywcA0/aHZuub8wTErbjAoNI57rPUWRYRNC5WUnNl8eGJNbDdwg==",
"dev": true,
"dependencies": {
- "klona": "^2.0.4",
"neo-async": "^2.6.2"
},
"engines": {
- "node": ">= 10.13.0"
+ "node": ">= 14.15.0"
},
"funding": {
"type": "opencollective",
@@ -24975,8 +21413,9 @@
},
"peerDependencies": {
"fibers": ">= 3.1.0",
- "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0",
+ "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0",
"sass": "^1.3.0",
+ "sass-embedded": "*",
"webpack": "^5.0.0"
},
"peerDependenciesMeta": {
@@ -24988,6 +21427,9 @@
},
"sass": {
"optional": true
+ },
+ "sass-embedded": {
+ "optional": true
}
}
},
@@ -24997,65 +21439,25 @@
"integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
},
"node_modules/saxes": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz",
- "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz",
+ "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==",
"dev": true,
"dependencies": {
"xmlchars": "^2.2.0"
},
"engines": {
- "node": ">=10"
+ "node": ">=v12.22.7"
}
},
"node_modules/scheduler": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz",
- "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==",
- "dependencies": {
- "loose-envify": "^1.1.0",
- "object-assign": "^4.1.1"
- }
- },
- "node_modules/schema-utils": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz",
- "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==",
- "dev": true,
- "dependencies": {
- "@types/json-schema": "^7.0.5",
- "ajv": "^6.12.4",
- "ajv-keywords": "^3.5.2"
- },
- "engines": {
- "node": ">= 8.9.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
- }
- },
- "node_modules/seek-bzip": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz",
- "integrity": "sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==",
- "dev": true,
- "optional": true,
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
+ "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
"dependencies": {
- "commander": "^2.8.1"
- },
- "bin": {
- "seek-bunzip": "bin/seek-bunzip",
- "seek-table": "bin/seek-bzip-table"
+ "loose-envify": "^1.1.0"
}
},
- "node_modules/seek-bzip/node_modules/commander": {
- "version": "2.20.3",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
- "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
- "dev": true,
- "optional": true
- },
"node_modules/select-hose": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz",
@@ -25063,18 +21465,21 @@
"dev": true
},
"node_modules/selfsigned": {
- "version": "1.10.14",
- "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.14.tgz",
- "integrity": "sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz",
+ "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==",
"dev": true,
"dependencies": {
- "node-forge": "^0.10.0"
+ "node-forge": "^1"
+ },
+ "engines": {
+ "node": ">=10"
}
},
"node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"bin": {
"semver": "bin/semver.js"
}
@@ -25085,39 +21490,6 @@
"integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==",
"optional": true
},
- "node_modules/semver-regex": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-2.0.0.tgz",
- "integrity": "sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw==",
- "dev": true,
- "optional": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/semver-truncate": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/semver-truncate/-/semver-truncate-1.1.2.tgz",
- "integrity": "sha512-V1fGg9i4CL3qesB6U0L6XAm4xOJiHmt4QAacazumuasc03BvtFGIMCduv01JWQ69Nv+JST9TqhSCiJoxoY031w==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "semver": "^5.3.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/semver-truncate/node_modules/semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true,
- "optional": true,
- "bin": {
- "semver": "bin/semver"
- }
- },
"node_modules/send": {
"version": "0.18.0",
"resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
@@ -25189,6 +21561,18 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/serialize-error/node_modules/type-fest": {
+ "version": "0.13.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz",
+ "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==",
+ "optional": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/serialize-javascript": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz",
@@ -25296,42 +21680,6 @@
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
"integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
},
- "node_modules/set-value": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
- "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
- "dev": true,
- "dependencies": {
- "extend-shallow": "^2.0.1",
- "is-extendable": "^0.1.1",
- "is-plain-object": "^2.0.3",
- "split-string": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/set-value/node_modules/extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
- "dev": true,
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/set-value/node_modules/is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/setprototypeof": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
@@ -25359,6 +21707,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
"dependencies": {
"shebang-regex": "^3.0.0"
},
@@ -25370,6 +21719,7 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
"engines": {
"node": ">=8"
}
@@ -25489,13 +21839,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/shellwords": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz",
- "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==",
- "dev": true,
- "optional": true
- },
"node_modules/side-channel": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
@@ -25544,284 +21887,145 @@
"simple-concat": "^1.0.0"
}
},
- "node_modules/simple-update-notifier": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz",
- "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==",
- "dev": true,
- "dependencies": {
- "semver": "~7.0.0"
- },
- "engines": {
- "node": ">=8.10.0"
- }
- },
- "node_modules/simple-update-notifier/node_modules/semver": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz",
- "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/sisteransi": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
- "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
- "dev": true
- },
- "node_modules/slash": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
- "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/slice-ansi": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz",
- "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "astral-regex": "^2.0.0",
- "is-fullwidth-code-point": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/slice-ansi/node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/slice-ansi/node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/smart-buffer": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
- "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
- "optional": true,
- "engines": {
- "node": ">= 6.0.0",
- "npm": ">= 3.0.0"
- }
- },
- "node_modules/snapdragon": {
- "version": "0.8.2",
- "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
- "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
- "dev": true,
- "dependencies": {
- "base": "^0.11.1",
- "debug": "^2.2.0",
- "define-property": "^0.2.5",
- "extend-shallow": "^2.0.1",
- "map-cache": "^0.2.2",
- "source-map": "^0.5.6",
- "source-map-resolve": "^0.5.0",
- "use": "^3.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon-node": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
- "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
- "dev": true,
- "dependencies": {
- "define-property": "^1.0.0",
- "isobject": "^3.0.0",
- "snapdragon-util": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon-node/node_modules/define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
- "dev": true,
- "dependencies": {
- "is-descriptor": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon-util": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
- "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
- "dev": true,
+ "node_modules/simple-get/node_modules/decompress-response": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
+ "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==",
"dependencies": {
- "kind-of": "^3.2.0"
+ "mimic-response": "^1.0.0"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=4"
}
},
- "node_modules/snapdragon-util/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "node_modules/simple-update-notifier": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz",
+ "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==",
"dev": true,
"dependencies": {
- "is-buffer": "^1.1.5"
+ "semver": "^7.5.3"
},
"engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "dependencies": {
- "ms": "2.0.0"
+ "node": ">=10"
}
},
- "node_modules/snapdragon/node_modules/define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
+ "node_modules/simple-update-notifier/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dev": true,
"dependencies": {
- "is-descriptor": "^0.1.0"
+ "yallist": "^4.0.0"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=10"
}
},
- "node_modules/snapdragon/node_modules/extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+ "node_modules/simple-update-notifier/node_modules/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
"dev": true,
"dependencies": {
- "is-extendable": "^0.1.0"
+ "lru-cache": "^6.0.0"
},
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
+ "bin": {
+ "semver": "bin/semver.js"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=10"
}
},
- "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "node_modules/simple-update-notifier/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
+ "node_modules/sirv": {
+ "version": "1.0.19",
+ "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.19.tgz",
+ "integrity": "sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==",
"dev": true,
"dependencies": {
- "is-buffer": "^1.1.5"
+ "@polka/url": "^1.0.0-next.20",
+ "mrmime": "^1.0.0",
+ "totalist": "^1.0.0"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">= 10"
}
},
- "node_modules/snapdragon/node_modules/is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
+ "node_modules/sisteransi": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
+ "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
+ "dev": true
+ },
+ "node_modules/slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
"dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
"engines": {
- "node": ">=0.10.0"
+ "node": ">=8"
}
},
- "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "node_modules/slice-ansi": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz",
+ "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==",
"dev": true,
+ "optional": true,
"dependencies": {
- "is-buffer": "^1.1.5"
+ "ansi-styles": "^4.0.0",
+ "astral-regex": "^2.0.0",
+ "is-fullwidth-code-point": "^3.0.0"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=8"
}
},
- "node_modules/snapdragon/node_modules/is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "node_modules/slice-ansi/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
+ "optional": true,
"dependencies": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
+ "color-convert": "^2.0.1"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/snapdragon/node_modules/is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
+ "node_modules/slice-ansi/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
+ "optional": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
"engines": {
- "node": ">=0.10.0"
+ "node": ">=7.0.0"
}
},
- "node_modules/snapdragon/node_modules/kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true,
+ "node_modules/smart-buffer": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
+ "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
+ "optional": true,
"engines": {
- "node": ">=0.10.0"
+ "node": ">= 6.0.0",
+ "npm": ">= 3.0.0"
}
},
- "node_modules/snapdragon/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "dev": true
- },
"node_modules/sockjs": {
"version": "0.3.24",
"resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz",
@@ -25833,34 +22037,6 @@
"websocket-driver": "^0.7.4"
}
},
- "node_modules/sockjs-client": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.6.1.tgz",
- "integrity": "sha512-2g0tjOR+fRs0amxENLi/q5TiJTqY+WXFOzb5UwXndlK6TO3U/mirZznpx6w34HVMoc3g7cY24yC/ZMIYnDlfkw==",
- "dev": true,
- "dependencies": {
- "debug": "^3.2.7",
- "eventsource": "^2.0.2",
- "faye-websocket": "^0.11.4",
- "inherits": "^2.0.4",
- "url-parse": "^1.5.10"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://tidelift.com/funding/github/npm/sockjs-client"
- }
- },
- "node_modules/sockjs-client/node_modules/debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
- "dev": true,
- "dependencies": {
- "ms": "^2.1.1"
- }
- },
"node_modules/socks": {
"version": "2.7.1",
"resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz",
@@ -25889,38 +22065,6 @@
"node": ">= 10"
}
},
- "node_modules/sort-keys": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz",
- "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "is-plain-obj": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sort-keys-length": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz",
- "integrity": "sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "sort-keys": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/source-list-map": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz",
- "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==",
- "dev": true
- },
"node_modules/source-map": {
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
@@ -25933,76 +22077,10 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
"integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/source-map-loader": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-1.1.3.tgz",
- "integrity": "sha512-6YHeF+XzDOrT/ycFJNI53cgEsp/tHTMl37hi7uVyqFAlTXW109JazaQCkbc+jjoL2637qkH1amLi+JzrIpt5lA==",
- "dev": true,
- "dependencies": {
- "abab": "^2.0.5",
- "iconv-lite": "^0.6.2",
- "loader-utils": "^2.0.0",
- "schema-utils": "^3.0.0",
- "source-map": "^0.6.1",
- "whatwg-mimetype": "^2.3.0"
- },
- "engines": {
- "node": ">= 10.13.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
- },
- "peerDependencies": {
- "webpack": "^4.0.0 || ^5.0.0"
- }
- },
- "node_modules/source-map-loader/node_modules/schema-utils": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz",
- "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==",
- "dev": true,
- "dependencies": {
- "@types/json-schema": "^7.0.8",
- "ajv": "^6.12.5",
- "ajv-keywords": "^3.5.2"
- },
- "engines": {
- "node": ">= 10.13.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
- }
- },
- "node_modules/source-map-loader/node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
"engines": {
"node": ">=0.10.0"
}
},
- "node_modules/source-map-resolve": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz",
- "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==",
- "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated",
- "dev": true,
- "dependencies": {
- "atob": "^2.1.2",
- "decode-uri-component": "^0.2.0",
- "resolve-url": "^0.2.1",
- "source-map-url": "^0.4.0",
- "urix": "^0.1.0"
- }
- },
"node_modules/source-map-support": {
"version": "0.5.21",
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
@@ -26022,22 +22100,17 @@
"node": ">=0.10.0"
}
},
- "node_modules/source-map-url": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz",
- "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==",
- "deprecated": "See https://github.com/lydell/source-map-url#deprecated",
- "dev": true
- },
"node_modules/spawn-command": {
- "version": "0.0.2-1",
- "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz",
- "integrity": "sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg=="
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz",
+ "integrity": "sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==",
+ "dev": true
},
"node_modules/spdx-correct": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz",
"integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==",
+ "dev": true,
"dependencies": {
"spdx-expression-parse": "^3.0.0",
"spdx-license-ids": "^3.0.0"
@@ -26046,12 +22119,14 @@
"node_modules/spdx-exceptions": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
- "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A=="
+ "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
+ "dev": true
},
"node_modules/spdx-expression-parse": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
"integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
+ "dev": true,
"dependencies": {
"spdx-exceptions": "^2.1.0",
"spdx-license-ids": "^3.0.0"
@@ -26060,7 +22135,8 @@
"node_modules/spdx-license-ids": {
"version": "3.0.13",
"resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz",
- "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w=="
+ "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==",
+ "dev": true
},
"node_modules/spdy": {
"version": "4.0.2",
@@ -26092,32 +22168,6 @@
"wbuf": "^1.7.3"
}
},
- "node_modules/spdy-transport/node_modules/readable-stream": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
- "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
- "dev": true,
- "dependencies": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/split-string": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
- "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
- "dev": true,
- "dependencies": {
- "extend-shallow": "^3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/split2": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz",
@@ -26133,14 +22183,16 @@
"optional": true
},
"node_modules/sql-formatter": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/sql-formatter/-/sql-formatter-4.0.2.tgz",
- "integrity": "sha512-R6u9GJRiXZLr/lDo8p56L+OyyN2QFJPCDnsyEOsbdIpsnDKL8gubYFo7lNR7Zx7hfdWT80SfkoVS0CMaF/DE2w==",
+ "version": "12.2.4",
+ "resolved": "https://registry.npmjs.org/sql-formatter/-/sql-formatter-12.2.4.tgz",
+ "integrity": "sha512-Qj45LEHSfgrdYDOrAtIkR8SdS10SWcqCIM2WZwQwMKF2v9sM0K2dlThWPS7eYCUrhttZIrU1WwuIwHk7MjsWOw==",
"dependencies": {
- "argparse": "^2.0.1"
+ "argparse": "^2.0.1",
+ "get-stdin": "=8.0.0",
+ "nearley": "^2.20.1"
},
"bin": {
- "sql-formatter": "bin/sqlfmt.js"
+ "sql-formatter": "bin/sql-formatter-cli.cjs"
}
},
"node_modules/sqlite3": {
@@ -26190,14 +22242,6 @@
"node": ">= 8"
}
},
- "node_modules/stable": {
- "version": "0.1.8",
- "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz",
- "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==",
- "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility",
- "dev": true,
- "optional": true
- },
"node_modules/stack-utils": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz",
@@ -26225,109 +22269,13 @@
"integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==",
"dev": true
},
- "node_modules/stat-mode": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-1.0.0.tgz",
- "integrity": "sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg==",
- "dev": true,
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/static-extend": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
- "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==",
- "dev": true,
- "dependencies": {
- "define-property": "^0.2.5",
- "object-copy": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/static-extend/node_modules/define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
- "dev": true,
- "dependencies": {
- "is-descriptor": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/static-extend/node_modules/is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/static-extend/node_modules/is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/static-extend/node_modules/is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dev": true,
- "dependencies": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/static-extend/node_modules/kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "node_modules/stat-mode": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-1.0.0.tgz",
+ "integrity": "sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg==",
"dev": true,
"engines": {
- "node": ">=0.10.0"
+ "node": ">= 6"
}
},
"node_modules/statuses": {
@@ -26360,18 +22308,13 @@
}
},
"node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
"dependencies": {
- "safe-buffer": "~5.1.0"
+ "safe-buffer": "~5.2.0"
}
},
- "node_modules/string_decoder/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
- },
"node_modules/string-length": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz",
@@ -26504,443 +22447,162 @@
"node": ">=8"
}
},
- "node_modules/strip-dirs": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz",
- "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "is-natural-number": "^4.0.1"
- }
- },
"node_modules/strip-eof": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
"integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==",
"engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/strip-final-newline": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
- "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/strip-json-comments": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
- "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
- "dev": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/strip-outer": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz",
- "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "escape-string-regexp": "^1.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/strip-outer/node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true,
- "optional": true,
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/strnum": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz",
- "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==",
- "dev": true,
- "optional": true
- },
- "node_modules/style-loader": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.3.0.tgz",
- "integrity": "sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q==",
- "dev": true,
- "dependencies": {
- "loader-utils": "^2.0.0",
- "schema-utils": "^2.7.0"
- },
- "engines": {
- "node": ">= 8.9.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
- },
- "peerDependencies": {
- "webpack": "^4.0.0 || ^5.0.0"
- }
- },
- "node_modules/style-mod": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.0.3.tgz",
- "integrity": "sha512-78Jv8kYJdjbvRwwijtCevYADfsI0lGzYJe4mMFdceO8l75DFFDoqBhR1jVDicDRRaX4//g1u9wKeo+ztc2h1Rw=="
- },
- "node_modules/styled-components": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.3.11.tgz",
- "integrity": "sha512-uuzIIfnVkagcVHv9nE0VPlHPSCmXIUGKfJ42LNjxCCTDTL5sgnJ8Z7GZBq0EnLYGln77tPpEpExt2+qa+cZqSw==",
- "dependencies": {
- "@babel/helper-module-imports": "^7.0.0",
- "@babel/traverse": "^7.4.5",
- "@emotion/is-prop-valid": "^1.1.0",
- "@emotion/stylis": "^0.8.4",
- "@emotion/unitless": "^0.7.4",
- "babel-plugin-styled-components": ">= 1.12.0",
- "css-to-react-native": "^3.0.0",
- "hoist-non-react-statics": "^3.0.0",
- "shallowequal": "^1.1.0",
- "supports-color": "^5.5.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/styled-components"
- },
- "peerDependencies": {
- "react": ">= 16.8.0",
- "react-dom": ">= 16.8.0",
- "react-is": ">= 16.8.0"
- }
- },
- "node_modules/styled-components/node_modules/@emotion/unitless": {
- "version": "0.7.5",
- "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz",
- "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg=="
- },
- "node_modules/stylis": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz",
- "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw=="
- },
- "node_modules/sumchecker": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz",
- "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==",
- "dependencies": {
- "debug": "^4.1.0"
- },
- "engines": {
- "node": ">= 8.0"
- }
- },
- "node_modules/super-animejs": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/super-animejs/-/super-animejs-3.1.0.tgz",
- "integrity": "sha512-6MFAFJDRuvwkovxQZPruuyHinTa4rgj4hNLOndjcYYhZLckoXtVRY9rJPuq8p6c/tgZJrFYEAYAfJ2/hhNtUCA=="
- },
- "node_modules/super-three": {
- "version": "0.147.1",
- "resolved": "https://registry.npmjs.org/super-three/-/super-three-0.147.1.tgz",
- "integrity": "sha512-H8yhlXqjscWpqYLhPQ/h3EfElNBxe3Ktp1tGVp13vBjIxF5sMVkAo2NpIDXkY8+MVhuTrA0ZN42IMNPdOKwKLg=="
- },
- "node_modules/supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/supports-hyperlinks": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz",
- "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==",
- "dev": true,
- "dependencies": {
- "has-flag": "^4.0.0",
- "supports-color": "^7.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/supports-hyperlinks/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/supports-hyperlinks/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/supports-preserve-symlinks-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
- "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/svgo": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz",
- "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==",
- "deprecated": "This SVGO version is no longer supported. Upgrade to v2.x.x.",
- "dev": true,
- "optional": true,
- "dependencies": {
- "chalk": "^2.4.1",
- "coa": "^2.0.2",
- "css-select": "^2.0.0",
- "css-select-base-adapter": "^0.1.1",
- "css-tree": "1.0.0-alpha.37",
- "csso": "^4.0.2",
- "js-yaml": "^3.13.1",
- "mkdirp": "~0.5.1",
- "object.values": "^1.1.0",
- "sax": "~1.2.4",
- "stable": "^0.1.8",
- "unquote": "~1.1.1",
- "util.promisify": "~1.0.0"
- },
- "bin": {
- "svgo": "bin/svgo"
- },
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/svgo/node_modules/argparse": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "sprintf-js": "~1.0.2"
- }
- },
- "node_modules/svgo/node_modules/css-select": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz",
- "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "boolbase": "^1.0.0",
- "css-what": "^3.2.1",
- "domutils": "^1.7.0",
- "nth-check": "^1.0.2"
- }
- },
- "node_modules/svgo/node_modules/css-what": {
- "version": "3.4.2",
- "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz",
- "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==",
- "dev": true,
- "optional": true,
- "engines": {
- "node": ">= 6"
- },
- "funding": {
- "url": "https://github.com/sponsors/fb55"
- }
- },
- "node_modules/svgo/node_modules/dom-serializer": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz",
- "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "domelementtype": "^2.0.1",
- "entities": "^2.0.0"
- }
- },
- "node_modules/svgo/node_modules/domutils": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz",
- "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "dom-serializer": "0",
- "domelementtype": "1"
- }
- },
- "node_modules/svgo/node_modules/domutils/node_modules/domelementtype": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
- "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==",
- "dev": true,
- "optional": true
- },
- "node_modules/svgo/node_modules/entities": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
- "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
- "dev": true,
- "optional": true,
- "funding": {
- "url": "https://github.com/fb55/entities?sponsor=1"
- }
- },
- "node_modules/svgo/node_modules/js-yaml": {
- "version": "3.14.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
- "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
+ "node": ">=0.10.0"
}
},
- "node_modules/svgo/node_modules/nth-check": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz",
- "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==",
+ "node_modules/strip-final-newline": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
"dev": true,
- "optional": true,
- "dependencies": {
- "boolbase": "~1.0.0"
+ "engines": {
+ "node": ">=6"
}
},
- "node_modules/svgo/node_modules/sprintf-js": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
- "dev": true,
- "optional": true
- },
- "node_modules/symbol-tree": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
- "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
- "dev": true
- },
- "node_modules/table": {
- "version": "6.8.1",
- "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz",
- "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==",
+ "node_modules/strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
"dev": true,
- "dependencies": {
- "ajv": "^8.0.1",
- "lodash.truncate": "^4.4.2",
- "slice-ansi": "^4.0.0",
- "string-width": "^4.2.3",
- "strip-ansi": "^6.0.1"
- },
"engines": {
- "node": ">=10.0.0"
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/table/node_modules/ajv": {
- "version": "8.12.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
- "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+ "node_modules/style-loader": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.3.tgz",
+ "integrity": "sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw==",
"dev": true,
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "json-schema-traverse": "^1.0.0",
- "require-from-string": "^2.0.2",
- "uri-js": "^4.2.2"
+ "engines": {
+ "node": ">= 12.13.0"
},
"funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "webpack": "^5.0.0"
}
},
- "node_modules/table/node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "dependencies": {
- "color-convert": "^2.0.1"
+ "node_modules/style-mod": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.0.3.tgz",
+ "integrity": "sha512-78Jv8kYJdjbvRwwijtCevYADfsI0lGzYJe4mMFdceO8l75DFFDoqBhR1jVDicDRRaX4//g1u9wKeo+ztc2h1Rw=="
+ },
+ "node_modules/styled-components": {
+ "version": "6.0.7",
+ "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.0.7.tgz",
+ "integrity": "sha512-xIwWuiRMYR43mskVsW9MGTRjSo7ol4bcVjT595fGUp3OLBJOlOgaiKaxsHdC4a2HqWKqKnh0CmcRbk5ogyDjTg==",
+ "dependencies": {
+ "@babel/cli": "^7.21.0",
+ "@babel/core": "^7.21.0",
+ "@babel/helper-module-imports": "^7.18.6",
+ "@babel/plugin-external-helpers": "^7.18.6",
+ "@babel/plugin-proposal-class-properties": "^7.18.6",
+ "@babel/plugin-proposal-object-rest-spread": "^7.20.7",
+ "@babel/preset-env": "^7.20.2",
+ "@babel/preset-react": "^7.18.6",
+ "@babel/preset-typescript": "^7.21.0",
+ "@babel/traverse": "^7.21.2",
+ "@emotion/is-prop-valid": "^1.2.1",
+ "@emotion/unitless": "^0.8.0",
+ "@types/stylis": "^4.0.2",
+ "css-to-react-native": "^3.2.0",
+ "csstype": "^3.1.2",
+ "postcss": "^8.4.23",
+ "shallowequal": "^1.1.0",
+ "stylis": "^4.3.0",
+ "tslib": "^2.5.0"
},
"engines": {
- "node": ">=8"
+ "node": ">= 16"
},
"funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ "type": "opencollective",
+ "url": "https://opencollective.com/styled-components"
+ },
+ "peerDependencies": {
+ "babel-plugin-styled-components": ">= 2",
+ "react": ">= 16.8.0",
+ "react-dom": ">= 16.8.0"
+ },
+ "peerDependenciesMeta": {
+ "babel-plugin-styled-components": {
+ "optional": true
+ }
}
},
- "node_modules/table/node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
+ "node_modules/styled-components/node_modules/stylis": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.0.tgz",
+ "integrity": "sha512-E87pIogpwUsUwXw7dNyU4QDjdgVMy52m+XEOPEKUn161cCzWjjhPSQhByfd1CcNvrOLnXQ6OnnZDwnJrz/Z4YQ=="
+ },
+ "node_modules/stylis": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz",
+ "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw=="
+ },
+ "node_modules/sumchecker": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz",
+ "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==",
"dependencies": {
- "color-name": "~1.1.4"
+ "debug": "^4.1.0"
},
"engines": {
- "node": ">=7.0.0"
+ "node": ">= 8.0"
}
},
- "node_modules/table/node_modules/json-schema-traverse": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
- "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
- "dev": true
+ "node_modules/super-animejs": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/super-animejs/-/super-animejs-3.1.0.tgz",
+ "integrity": "sha512-6MFAFJDRuvwkovxQZPruuyHinTa4rgj4hNLOndjcYYhZLckoXtVRY9rJPuq8p6c/tgZJrFYEAYAfJ2/hhNtUCA=="
},
- "node_modules/table/node_modules/slice-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
- "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
- "dev": true,
+ "node_modules/super-three": {
+ "version": "0.147.1",
+ "resolved": "https://registry.npmjs.org/super-three/-/super-three-0.147.1.tgz",
+ "integrity": "sha512-H8yhlXqjscWpqYLhPQ/h3EfElNBxe3Ktp1tGVp13vBjIxF5sMVkAo2NpIDXkY8+MVhuTrA0ZN42IMNPdOKwKLg=="
+ },
+ "node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"dependencies": {
- "ansi-styles": "^4.0.0",
- "astral-regex": "^2.0.0",
- "is-fullwidth-code-point": "^3.0.0"
+ "has-flag": "^3.0.0"
},
"engines": {
- "node": ">=10"
+ "node": ">=4"
+ }
+ },
+ "node_modules/supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
- "url": "https://github.com/chalk/slice-ansi?sponsor=1"
+ "url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/symbol-tree": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
+ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
+ "dev": true
+ },
"node_modules/tapable": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz",
- "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==",
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
+ "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
"dev": true,
"engines": {
"node": ">=6"
@@ -26962,25 +22624,6 @@
"node": ">=10"
}
},
- "node_modules/tar-stream": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz",
- "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "bl": "^1.0.0",
- "buffer-alloc": "^1.2.0",
- "end-of-stream": "^1.0.0",
- "fs-constants": "^1.0.0",
- "readable-stream": "^2.3.0",
- "to-buffer": "^1.1.1",
- "xtend": "^4.0.0"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
"node_modules/tar/node_modules/minipass": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
@@ -26989,32 +22632,11 @@
"node": ">=8"
}
},
- "node_modules/tar/node_modules/mkdirp": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
- "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
- "bin": {
- "mkdirp": "bin/cmd.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/tar/node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
},
- "node_modules/temp-dir": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz",
- "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==",
- "dev": true,
- "optional": true,
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/temp-file": {
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/temp-file/-/temp-file-3.4.0.tgz",
@@ -27060,51 +22682,10 @@
"node": ">= 10.0.0"
}
},
- "node_modules/tempfile": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-2.0.0.tgz",
- "integrity": "sha512-ZOn6nJUgvgC09+doCEF3oB+r3ag7kUvlsXEGX069QRD60p+P3uP7XG9N2/at+EyIRGSN//ZY3LyEotA1YpmjuA==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "temp-dir": "^1.0.0",
- "uuid": "^3.0.1"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/tempfile/node_modules/uuid": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
- "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
- "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.",
- "dev": true,
- "optional": true,
- "bin": {
- "uuid": "bin/uuid"
- }
- },
- "node_modules/terminal-link": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz",
- "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==",
- "dev": true,
- "dependencies": {
- "ansi-escapes": "^4.2.1",
- "supports-hyperlinks": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/terser": {
- "version": "5.18.1",
- "resolved": "https://registry.npmjs.org/terser/-/terser-5.18.1.tgz",
- "integrity": "sha512-j1n0Ao919h/Ai5r43VAnfV/7azUYW43GPxK7qSATzrsERfW7+y2QW9Cp9ufnRF5CQUWbnLSo7UJokSWCqg4tsQ==",
+ "version": "5.19.2",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.2.tgz",
+ "integrity": "sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==",
"dev": true,
"dependencies": {
"@jridgewell/source-map": "^0.3.3",
@@ -27209,18 +22790,6 @@
"url": "https://github.com/chalk/supports-color?sponsor=1"
}
},
- "node_modules/terser/node_modules/acorn": {
- "version": "8.9.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.9.0.tgz",
- "integrity": "sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==",
- "dev": true,
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
"node_modules/terser/node_modules/commander": {
"version": "2.20.3",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
@@ -27248,9 +22817,9 @@
"dev": true
},
"node_modules/three": {
- "version": "0.153.0",
- "resolved": "https://registry.npmjs.org/three/-/three-0.153.0.tgz",
- "integrity": "sha512-OCP2/uQR6GcDpSLnJt/3a4mdS0kNWcbfUXIwLoEMgLzEUIVIYsSDwskpmOii/AkDM+BBwrl6+CKgrjX9+E2aWg=="
+ "version": "0.155.0",
+ "resolved": "https://registry.npmjs.org/three/-/three-0.155.0.tgz",
+ "integrity": "sha512-sNgCYmDijnIqkD/bMfk+1pHg3YzsxW7V2ChpuP6HCQ8NiZr3RufsXQr8M3SSUMjW4hG+sUk7YbyuY0DncaDTJQ=="
},
"node_modules/three-bmfont-text": {
"version": "2.4.0",
@@ -27305,11 +22874,11 @@
"integrity": "sha512-UwWvzgio1UFe81n5jKHNzB4B+AG3wfZ54OKp7bTb1MHuC3cy6RTtr0dbbiPQQoqxzr+DRArR2DUwQSEknw5+nw=="
},
"node_modules/three-render-objects": {
- "version": "1.28.4",
- "resolved": "https://registry.npmjs.org/three-render-objects/-/three-render-objects-1.28.4.tgz",
- "integrity": "sha512-ko4zvgKKvKoniV+PwlelVLU7h4hpZRtJyoxpdhR/ZpMAiOJTI7ZbY9l/ycktZgGqzdKFUIuDKpw9eJGo2GSKfw==",
+ "version": "1.28.6",
+ "resolved": "https://registry.npmjs.org/three-render-objects/-/three-render-objects-1.28.6.tgz",
+ "integrity": "sha512-e1Dls7NbT9XvKByueLRFRFKIAnNRL9sz7Ul318uXkP/f9uZjUFmelgloBAK3PSQ5xJd++FsKCf7ZIteSWNzTpA==",
"dependencies": {
- "@tweenjs/tween.js": "18 - 20",
+ "@tweenjs/tween.js": "18 - 21",
"accessor-fn": "1",
"kapsule": "1",
"polished": "4"
@@ -27332,33 +22901,12 @@
"three": ">=0.86.0"
}
},
- "node_modules/throat": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz",
- "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==",
- "dev": true
- },
- "node_modules/through": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
- "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
- "dev": true,
- "optional": true
- },
"node_modules/thunky": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz",
"integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==",
"dev": true
},
- "node_modules/time-zone": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/time-zone/-/time-zone-1.0.0.tgz",
- "integrity": "sha512-TIsDdtKo6+XrPtiTm1ssmMngN1sAhyKnTO2kunQWqNPWIVvCm15Wmw4SWInwTVgJ5u/Tr04+8Ei9TNcw4x4ONA==",
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/timed-out": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz",
@@ -27367,16 +22915,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/tiny-invariant": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz",
- "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw=="
- },
- "node_modules/tiny-warning": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz",
- "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA=="
- },
"node_modules/tinycolor2": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz",
@@ -27409,72 +22947,19 @@
"integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==",
"dev": true
},
- "node_modules/to-buffer": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz",
- "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==",
- "dev": true,
- "optional": true
- },
- "node_modules/to-fast-properties": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
- "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/to-object-path": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
- "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/to-object-path/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/to-readable-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz",
- "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/to-regex": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
- "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
- "dev": true,
- "dependencies": {
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "regex-not": "^1.0.2",
- "safe-regex": "^1.1.0"
- },
+ "node_modules/to-fast-properties": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
"engines": {
- "node": ">=0.10.0"
+ "node": ">=4"
}
},
"node_modules/to-regex-range": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "devOptional": true,
"dependencies": {
"is-number": "^7.0.0"
},
@@ -27491,6 +22976,15 @@
"node": ">=0.6"
}
},
+ "node_modules/totalist": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz",
+ "integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/touch": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz",
@@ -27543,82 +23037,88 @@
}
},
"node_modules/tr46": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz",
- "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz",
+ "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==",
"dev": true,
"dependencies": {
"punycode": "^2.1.1"
},
"engines": {
- "node": ">=8"
+ "node": ">=12"
}
},
"node_modules/tree-kill": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz",
"integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==",
+ "dev": true,
"bin": {
"tree-kill": "cli.js"
}
},
- "node_modules/trim-repeated": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz",
- "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "escape-string-regexp": "^1.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/trim-repeated/node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true,
- "optional": true,
- "engines": {
- "node": ">=0.8.0"
- }
- },
"node_modules/truncate-utf8-bytes": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz",
"integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==",
+ "dev": true,
"dependencies": {
"utf8-byte-length": "^1.0.1"
}
},
+ "node_modules/ts-api-utils": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.1.tgz",
+ "integrity": "sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==",
+ "dev": true,
+ "engines": {
+ "node": ">=16.13.0"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.2.0"
+ }
+ },
"node_modules/ts-jest": {
- "version": "26.5.6",
- "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-26.5.6.tgz",
- "integrity": "sha512-rua+rCP8DxpA8b4DQD/6X2HQS8Zy/xzViVYfEs2OQu68tkCuKLV0Md8pmX55+W24uRIyAsf/BajRfxOs+R2MKA==",
+ "version": "29.1.1",
+ "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz",
+ "integrity": "sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==",
"dev": true,
"dependencies": {
"bs-logger": "0.x",
- "buffer-from": "1.x",
"fast-json-stable-stringify": "2.x",
- "jest-util": "^26.1.0",
- "json5": "2.x",
- "lodash": "4.x",
+ "jest-util": "^29.0.0",
+ "json5": "^2.2.3",
+ "lodash.memoize": "4.x",
"make-error": "1.x",
- "mkdirp": "1.x",
- "semver": "7.x",
- "yargs-parser": "20.x"
+ "semver": "^7.5.3",
+ "yargs-parser": "^21.0.1"
},
"bin": {
"ts-jest": "cli.js"
},
"engines": {
- "node": ">= 10"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
},
"peerDependencies": {
- "jest": ">=26 <27",
- "typescript": ">=3.8 <5.0"
+ "@babel/core": ">=7.0.0-beta.0 <8",
+ "@jest/types": "^29.0.0",
+ "babel-jest": "^29.0.0",
+ "jest": "^29.0.0",
+ "typescript": ">=4.3 <6"
+ },
+ "peerDependenciesMeta": {
+ "@babel/core": {
+ "optional": true
+ },
+ "@jest/types": {
+ "optional": true
+ },
+ "babel-jest": {
+ "optional": true
+ },
+ "esbuild": {
+ "optional": true
+ }
}
},
"node_modules/ts-jest/node_modules/lru-cache": {
@@ -27633,22 +23133,10 @@
"node": ">=10"
}
},
- "node_modules/ts-jest/node_modules/mkdirp": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
- "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
- "dev": true,
- "bin": {
- "mkdirp": "bin/cmd.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/ts-jest/node_modules/semver": {
- "version": "7.5.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz",
- "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==",
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
"dev": true,
"dependencies": {
"lru-cache": "^6.0.0"
@@ -27666,33 +23154,23 @@
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"dev": true
},
- "node_modules/ts-jest/node_modules/yargs-parser": {
- "version": "20.2.9",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
- "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
- "dev": true,
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/ts-loader": {
- "version": "8.4.0",
- "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-8.4.0.tgz",
- "integrity": "sha512-6nFY3IZ2//mrPc+ImY3hNWx1vCHyEhl6V+wLmL4CZcm6g1CqX7UKrkc6y0i4FwcfOhxyMPCfaEvh20f4r9GNpw==",
+ "version": "9.4.4",
+ "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.4.tgz",
+ "integrity": "sha512-MLukxDHBl8OJ5Dk3y69IsKVFRA/6MwzEqBgh+OXMPB/OD01KQuWPFd1WAQP8a5PeSCAxfnkhiuWqfmFJzJQt9w==",
"dev": true,
"dependencies": {
"chalk": "^4.1.0",
- "enhanced-resolve": "^4.0.0",
- "loader-utils": "^2.0.0",
+ "enhanced-resolve": "^5.0.0",
"micromatch": "^4.0.0",
"semver": "^7.3.4"
},
"engines": {
- "node": ">=10.0.0"
+ "node": ">=12.0.0"
},
"peerDependencies": {
"typescript": "*",
- "webpack": "*"
+ "webpack": "^5.0.0"
}
},
"node_modules/ts-loader/node_modules/ansi-styles": {
@@ -27760,9 +23238,9 @@
}
},
"node_modules/ts-loader/node_modules/semver": {
- "version": "7.5.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz",
- "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==",
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
"dev": true,
"dependencies": {
"lru-cache": "^6.0.0"
@@ -27793,29 +23271,46 @@
"dev": true
},
"node_modules/ts-node": {
- "version": "9.1.1",
- "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz",
- "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==",
- "dev": true,
- "dependencies": {
+ "version": "10.9.1",
+ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz",
+ "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==",
+ "dev": true,
+ "dependencies": {
+ "@cspotcode/source-map-support": "^0.8.0",
+ "@tsconfig/node10": "^1.0.7",
+ "@tsconfig/node12": "^1.0.7",
+ "@tsconfig/node14": "^1.0.0",
+ "@tsconfig/node16": "^1.0.2",
+ "acorn": "^8.4.1",
+ "acorn-walk": "^8.1.1",
"arg": "^4.1.0",
"create-require": "^1.1.0",
"diff": "^4.0.1",
"make-error": "^1.1.1",
- "source-map-support": "^0.5.17",
+ "v8-compile-cache-lib": "^3.0.1",
"yn": "3.1.1"
},
"bin": {
"ts-node": "dist/bin.js",
+ "ts-node-cwd": "dist/bin-cwd.js",
+ "ts-node-esm": "dist/bin-esm.js",
"ts-node-script": "dist/bin-script.js",
"ts-node-transpile-only": "dist/bin-transpile.js",
"ts-script": "dist/bin-script-deprecated.js"
},
- "engines": {
- "node": ">=10.0.0"
- },
"peerDependencies": {
+ "@swc/core": ">=1.2.50",
+ "@swc/wasm": ">=1.2.50",
+ "@types/node": "*",
"typescript": ">=2.7"
+ },
+ "peerDependenciesMeta": {
+ "@swc/core": {
+ "optional": true
+ },
+ "@swc/wasm": {
+ "optional": true
+ }
}
},
"node_modules/tsconfig-paths": {
@@ -27852,53 +23347,9 @@
}
},
"node_modules/tslib": {
- "version": "2.5.3",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz",
- "integrity": "sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==",
- "dev": true
- },
- "node_modules/tsutils": {
- "version": "3.21.0",
- "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
- "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
- "dev": true,
- "dependencies": {
- "tslib": "^1.8.1"
- },
- "engines": {
- "node": ">= 6"
- },
- "peerDependencies": {
- "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta"
- }
- },
- "node_modules/tsutils/node_modules/tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
- "dev": true
- },
- "node_modules/tunnel": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
- "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==",
- "optional": true,
- "engines": {
- "node": ">=0.6.11 <=0.7.0 || >=0.7.3"
- }
- },
- "node_modules/tunnel-agent": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
- "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "safe-buffer": "^5.0.1"
- },
- "engines": {
- "node": "*"
- }
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz",
+ "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig=="
},
"node_modules/type-check": {
"version": "0.4.0",
@@ -27922,12 +23373,14 @@
}
},
"node_modules/type-fest": {
- "version": "0.13.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz",
- "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==",
+ "version": "3.13.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz",
+ "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==",
+ "dev": true,
"optional": true,
+ "peer": true,
"engines": {
- "node": ">=10"
+ "node": ">=14.16"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -27946,45 +23399,82 @@
"node": ">= 0.6"
}
},
- "node_modules/typed-array-length": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz",
- "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==",
+ "node_modules/typed-array-buffer": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz",
+ "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.2.1",
+ "is-typed-array": "^1.1.10"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/typed-array-byte-length": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz",
+ "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==",
"dev": true,
"dependencies": {
"call-bind": "^1.0.2",
"for-each": "^0.3.3",
- "is-typed-array": "^1.1.9"
+ "has-proto": "^1.0.1",
+ "is-typed-array": "^1.1.10"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/typedarray": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
- "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA=="
+ "node_modules/typed-array-byte-offset": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz",
+ "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==",
+ "dev": true,
+ "dependencies": {
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.2",
+ "for-each": "^0.3.3",
+ "has-proto": "^1.0.1",
+ "is-typed-array": "^1.1.10"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
},
- "node_modules/typedarray-to-buffer": {
- "version": "3.1.5",
- "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
- "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
+ "node_modules/typed-array-length": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz",
+ "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==",
"dev": true,
"dependencies": {
- "is-typedarray": "^1.0.0"
+ "call-bind": "^1.0.2",
+ "for-each": "^0.3.3",
+ "is-typed-array": "^1.1.9"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/typescript": {
- "version": "4.9.5",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
- "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz",
+ "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
},
"engines": {
- "node": ">=4.2.0"
+ "node": ">=14.17"
}
},
"node_modules/unbox-primitive": {
@@ -28002,17 +23492,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/unbzip2-stream": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz",
- "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "buffer": "^5.2.1",
- "through": "^2.3.8"
- }
- },
"node_modules/undefsafe": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz",
@@ -28023,7 +23502,6 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
"integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==",
- "dev": true,
"engines": {
"node": ">=4"
}
@@ -28032,7 +23510,6 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz",
"integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==",
- "dev": true,
"dependencies": {
"unicode-canonical-property-names-ecmascript": "^2.0.0",
"unicode-property-aliases-ecmascript": "^2.0.0"
@@ -28045,7 +23522,6 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz",
"integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==",
- "dev": true,
"engines": {
"node": ">=4"
}
@@ -28054,35 +23530,10 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz",
"integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==",
- "dev": true,
"engines": {
"node": ">=4"
}
},
- "node_modules/union-value": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
- "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
- "dev": true,
- "dependencies": {
- "arr-union": "^3.1.0",
- "get-value": "^2.0.6",
- "is-extendable": "^0.1.1",
- "set-value": "^2.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/union-value/node_modules/is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/unique-filename": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
@@ -28118,77 +23569,6 @@
"node": ">= 0.8"
}
},
- "node_modules/unquote": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz",
- "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==",
- "dev": true,
- "optional": true
- },
- "node_modules/unset-value": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
- "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==",
- "dev": true,
- "dependencies": {
- "has-value": "^0.3.1",
- "isobject": "^3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/unset-value/node_modules/has-value": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
- "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==",
- "dev": true,
- "dependencies": {
- "get-value": "^2.0.3",
- "has-values": "^0.1.4",
- "isobject": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/unset-value/node_modules/has-value/node_modules/isobject": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
- "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==",
- "dev": true,
- "dependencies": {
- "isarray": "1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/unset-value/node_modules/has-values": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
- "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/unset-value/node_modules/isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
- "dev": true
- },
- "node_modules/upath": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
- "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
- "dev": true,
- "engines": {
- "node": ">=4",
- "yarn": "*"
- }
- },
"node_modules/update-browserslist-db": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz",
@@ -28218,48 +23598,13 @@
"browserslist": ">= 4.21.0"
}
},
- "node_modules/update-electron-app": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/update-electron-app/-/update-electron-app-2.0.1.tgz",
- "integrity": "sha512-e4xEner89UZZaBGYJbYlMdL1uUrC0VjOsTAL2N4opPjzFtn+j7mdsJJsnyXZzUVeLY+8tuCX4XEsUM98oBHmZg==",
- "dependencies": {
- "electron-is-dev": "^0.3.0",
- "github-url-to-object": "^4.0.4",
- "is-url": "^1.2.4",
- "ms": "^2.1.1"
- },
- "peerDependencies": {
- "electron": ">= 6.0.0"
- }
- },
- "node_modules/update-electron-app/node_modules/electron-is-dev": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/electron-is-dev/-/electron-is-dev-0.3.0.tgz",
- "integrity": "sha512-jLttuuq8QK67n3mXmIe9pkrO7IH3LGIk12xJkhTmc852U2sCJaRAOpRGPSh+1Xnzck5v9escd9YXzuze9nGejg=="
- },
"node_modules/uri-js": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
"integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
- "dependencies": {
- "punycode": "^2.1.0"
- }
- },
- "node_modules/urix": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
- "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==",
- "deprecated": "Please see https://github.com/lydell/urix#deprecated",
- "dev": true
- },
- "node_modules/url": {
- "version": "0.11.1",
- "resolved": "https://registry.npmjs.org/url/-/url-0.11.1.tgz",
- "integrity": "sha512-rWS3H04/+mzzJkv0eZ7vEDGiQbgquI1fGfOad6zKvgYQi1SzMmhl7c/DdRGxhaWrVH6z0qWITo8rpnxK/RfEhA==",
"dev": true,
"dependencies": {
- "punycode": "^1.4.1",
- "qs": "^6.11.0"
+ "punycode": "^2.1.0"
}
},
"node_modules/url-parse": {
@@ -28272,47 +23617,11 @@
"requires-port": "^1.0.0"
}
},
- "node_modules/url-parse-lax": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz",
- "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==",
- "dependencies": {
- "prepend-http": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/url-set-query": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/url-set-query/-/url-set-query-1.0.0.tgz",
"integrity": "sha512-3AChu4NiXquPfeckE5R5cGdiHCMWJx1dwCWOmWIL4KHAziJNOFIYJlpGFeKDvwLPHovZRCxK3cYlwzqI9Vp+Gg=="
},
- "node_modules/url-to-options": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz",
- "integrity": "sha512-0kQLIzG4fdk/G5NONku64rSH/x32NOA39LVQqlK8Le6lvTF6GGRJpqaQFGgU+CLwySIqBSMdwYM0sYcW9f6P4A==",
- "dev": true,
- "optional": true,
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/url/node_modules/punycode": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
- "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==",
- "dev": true
- },
- "node_modules/use": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
- "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/use-sync-external-store": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz",
@@ -28324,42 +23633,14 @@
"node_modules/utf8-byte-length": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz",
- "integrity": "sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA=="
- },
- "node_modules/util": {
- "version": "0.10.4",
- "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz",
- "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==",
- "dependencies": {
- "inherits": "2.0.3"
- }
+ "integrity": "sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==",
+ "dev": true
},
"node_modules/util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
},
- "node_modules/util.promisify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz",
- "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "define-properties": "^1.1.3",
- "es-abstract": "^1.17.2",
- "has-symbols": "^1.0.1",
- "object.getownpropertydescriptors": "^2.1.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/util/node_modules/inherits": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
- "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw=="
- },
"node_modules/utila": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz",
@@ -28384,49 +23665,36 @@
"uuid": "dist/bin/uuid"
}
},
- "node_modules/v8-compile-cache": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
- "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
+ "node_modules/v8-compile-cache-lib": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz",
+ "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==",
"dev": true
},
"node_modules/v8-to-istanbul": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz",
- "integrity": "sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow==",
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz",
+ "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==",
"dev": true,
"dependencies": {
+ "@jridgewell/trace-mapping": "^0.3.12",
"@types/istanbul-lib-coverage": "^2.0.1",
- "convert-source-map": "^1.6.0",
- "source-map": "^0.7.3"
+ "convert-source-map": "^1.6.0"
},
"engines": {
- "node": ">=10.10.0"
- }
- },
- "node_modules/v8-to-istanbul/node_modules/source-map": {
- "version": "0.7.4",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
- "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
- "dev": true,
- "engines": {
- "node": ">= 8"
+ "node": ">=10.12.0"
}
},
"node_modules/validate-npm-package-license": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
"integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
+ "dev": true,
"dependencies": {
"spdx-correct": "^3.0.0",
"spdx-expression-parse": "^3.0.0"
}
},
- "node_modules/value-equal": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz",
- "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw=="
- },
"node_modules/vary": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
@@ -28451,38 +23719,21 @@
"node": ">=0.6.0"
}
},
- "node_modules/verror/node_modules/core-util-is": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
- "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==",
- "dev": true,
- "optional": true
- },
- "node_modules/w3c-hr-time": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz",
- "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==",
- "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.",
- "dev": true,
- "dependencies": {
- "browser-process-hrtime": "^1.0.0"
- }
- },
"node_modules/w3c-keyname": {
"version": "2.2.8",
"resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz",
"integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ=="
},
"node_modules/w3c-xmlserializer": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz",
- "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz",
+ "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==",
"dev": true,
"dependencies": {
- "xml-name-validator": "^3.0.0"
+ "xml-name-validator": "^4.0.0"
},
"engines": {
- "node": ">=10"
+ "node": ">=14"
}
},
"node_modules/walker": {
@@ -28517,18 +23768,18 @@
}
},
"node_modules/webidl-conversions": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz",
- "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
+ "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
"dev": true,
"engines": {
- "node": ">=10.4"
+ "node": ">=12"
}
},
"node_modules/webpack": {
- "version": "5.88.0",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.0.tgz",
- "integrity": "sha512-O3jDhG5e44qIBSi/P6KpcCcH7HD+nYIHVBhdWFxcLOcIGN8zGo5nqF3BjyNCxIh4p1vFdNnreZv2h2KkoAw3lw==",
+ "version": "5.88.2",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz",
+ "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==",
"dev": true,
"dependencies": {
"@types/eslint-scope": "^3.7.3",
@@ -28560,611 +23811,376 @@
"webpack": "bin/webpack.js"
},
"engines": {
- "node": ">=10.13.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
- },
- "peerDependenciesMeta": {
- "webpack-cli": {
- "optional": true
- }
- }
- },
- "node_modules/webpack-cli": {
- "version": "4.10.0",
- "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz",
- "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==",
- "dev": true,
- "dependencies": {
- "@discoveryjs/json-ext": "^0.5.0",
- "@webpack-cli/configtest": "^1.2.0",
- "@webpack-cli/info": "^1.5.0",
- "@webpack-cli/serve": "^1.7.0",
- "colorette": "^2.0.14",
- "commander": "^7.0.0",
- "cross-spawn": "^7.0.3",
- "fastest-levenshtein": "^1.0.12",
- "import-local": "^3.0.2",
- "interpret": "^2.2.0",
- "rechoir": "^0.7.0",
- "webpack-merge": "^5.7.3"
- },
- "bin": {
- "webpack-cli": "bin/cli.js"
- },
- "engines": {
- "node": ">=10.13.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
- },
- "peerDependencies": {
- "webpack": "4.x.x || 5.x.x"
- },
- "peerDependenciesMeta": {
- "@webpack-cli/generators": {
- "optional": true
- },
- "@webpack-cli/migrate": {
- "optional": true
- },
- "webpack-bundle-analyzer": {
- "optional": true
- },
- "webpack-dev-server": {
- "optional": true
- }
- }
- },
- "node_modules/webpack-cli/node_modules/commander": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
- "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
- "dev": true,
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/webpack-dev-middleware": {
- "version": "3.7.3",
- "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz",
- "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==",
- "dev": true,
- "dependencies": {
- "memory-fs": "^0.4.1",
- "mime": "^2.4.4",
- "mkdirp": "^0.5.1",
- "range-parser": "^1.2.1",
- "webpack-log": "^2.0.0"
- },
- "engines": {
- "node": ">= 6"
- },
- "peerDependencies": {
- "webpack": "^4.0.0 || ^5.0.0"
- }
- },
- "node_modules/webpack-dev-middleware/node_modules/memory-fs": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
- "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==",
- "dev": true,
- "dependencies": {
- "errno": "^0.1.3",
- "readable-stream": "^2.0.1"
- }
- },
- "node_modules/webpack-dev-server": {
- "version": "3.11.3",
- "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.3.tgz",
- "integrity": "sha512-3x31rjbEQWKMNzacUZRE6wXvUFuGpH7vr0lIEbYpMAG9BOxi0928QU1BBswOAP3kg3H1O4hiS+sq4YyAn6ANnA==",
- "dev": true,
- "dependencies": {
- "ansi-html-community": "0.0.8",
- "bonjour": "^3.5.0",
- "chokidar": "^2.1.8",
- "compression": "^1.7.4",
- "connect-history-api-fallback": "^1.6.0",
- "debug": "^4.1.1",
- "del": "^4.1.1",
- "express": "^4.17.1",
- "html-entities": "^1.3.1",
- "http-proxy-middleware": "0.19.1",
- "import-local": "^2.0.0",
- "internal-ip": "^4.3.0",
- "ip": "^1.1.5",
- "is-absolute-url": "^3.0.3",
- "killable": "^1.0.1",
- "loglevel": "^1.6.8",
- "opn": "^5.5.0",
- "p-retry": "^3.0.1",
- "portfinder": "^1.0.26",
- "schema-utils": "^1.0.0",
- "selfsigned": "^1.10.8",
- "semver": "^6.3.0",
- "serve-index": "^1.9.1",
- "sockjs": "^0.3.21",
- "sockjs-client": "^1.5.0",
- "spdy": "^4.0.2",
- "strip-ansi": "^3.0.1",
- "supports-color": "^6.1.0",
- "url": "^0.11.0",
- "webpack-dev-middleware": "^3.7.2",
- "webpack-log": "^2.0.0",
- "ws": "^6.2.1",
- "yargs": "^13.3.2"
- },
- "bin": {
- "webpack-dev-server": "bin/webpack-dev-server.js"
- },
- "engines": {
- "node": ">= 6.11.5"
- },
- "peerDependencies": {
- "webpack": "^4.0.0 || ^5.0.0"
- },
- "peerDependenciesMeta": {
- "webpack-cli": {
- "optional": true
- }
- }
- },
- "node_modules/webpack-dev-server/node_modules/ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/webpack-dev-server/node_modules/anymatch": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
- "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
- "dev": true,
- "dependencies": {
- "micromatch": "^3.1.4",
- "normalize-path": "^2.1.1"
- }
- },
- "node_modules/webpack-dev-server/node_modules/anymatch/node_modules/normalize-path": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
- "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==",
- "dev": true,
- "dependencies": {
- "remove-trailing-separator": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/webpack-dev-server/node_modules/binary-extensions": {
- "version": "1.13.1",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
- "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/webpack-dev-server/node_modules/braces": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
- "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
- "dev": true,
- "dependencies": {
- "arr-flatten": "^1.1.0",
- "array-unique": "^0.3.2",
- "extend-shallow": "^2.0.1",
- "fill-range": "^4.0.0",
- "isobject": "^3.0.1",
- "repeat-element": "^1.1.2",
- "snapdragon": "^0.8.1",
- "snapdragon-node": "^2.0.1",
- "split-string": "^3.0.2",
- "to-regex": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/webpack-dev-server/node_modules/braces/node_modules/extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
- "dev": true,
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/webpack-dev-server/node_modules/chokidar": {
- "version": "2.1.8",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
- "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
- "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies",
- "dev": true,
- "dependencies": {
- "anymatch": "^2.0.0",
- "async-each": "^1.0.1",
- "braces": "^2.3.2",
- "glob-parent": "^3.1.0",
- "inherits": "^2.0.3",
- "is-binary-path": "^1.0.0",
- "is-glob": "^4.0.0",
- "normalize-path": "^3.0.0",
- "path-is-absolute": "^1.0.0",
- "readdirp": "^2.2.1",
- "upath": "^1.1.1"
- },
- "optionalDependencies": {
- "fsevents": "^1.2.7"
- }
- },
- "node_modules/webpack-dev-server/node_modules/fill-range": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
- "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
- "dev": true,
- "dependencies": {
- "extend-shallow": "^2.0.1",
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1",
- "to-regex-range": "^2.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/webpack-dev-server/node_modules/fill-range/node_modules/extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
- "dev": true,
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/webpack-dev-server/node_modules/find-up": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
- "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
- "dev": true,
- "dependencies": {
- "locate-path": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/webpack-dev-server/node_modules/fsevents": {
- "version": "1.2.13",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
- "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
- "deprecated": "The v1 package contains DANGEROUS / INSECURE binaries. Upgrade to safe fsevents v2",
- "dev": true,
- "hasInstallScript": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "dependencies": {
- "bindings": "^1.5.0",
- "nan": "^2.12.1"
- },
- "engines": {
- "node": ">= 4.0"
- }
- },
- "node_modules/webpack-dev-server/node_modules/glob-parent": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
- "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
- "dev": true,
- "dependencies": {
- "is-glob": "^3.1.0",
- "path-dirname": "^1.0.0"
- }
- },
- "node_modules/webpack-dev-server/node_modules/glob-parent/node_modules/is-glob": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
- "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
- "dev": true,
- "dependencies": {
- "is-extglob": "^2.1.0"
+ "node": ">=10.13.0"
},
- "engines": {
- "node": ">=0.10.0"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependenciesMeta": {
+ "webpack-cli": {
+ "optional": true
+ }
}
},
- "node_modules/webpack-dev-server/node_modules/import-local": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz",
- "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==",
+ "node_modules/webpack-bundle-analyzer": {
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.9.0.tgz",
+ "integrity": "sha512-+bXGmO1LyiNx0i9enBu3H8mv42sj/BJWhZNFwjz92tVnBa9J3JMGo2an2IXlEleoDOPn/Hofl5hr/xCpObUDtw==",
"dev": true,
"dependencies": {
- "pkg-dir": "^3.0.0",
- "resolve-cwd": "^2.0.0"
+ "@discoveryjs/json-ext": "0.5.7",
+ "acorn": "^8.0.4",
+ "acorn-walk": "^8.0.0",
+ "chalk": "^4.1.0",
+ "commander": "^7.2.0",
+ "gzip-size": "^6.0.0",
+ "lodash": "^4.17.20",
+ "opener": "^1.5.2",
+ "sirv": "^1.0.7",
+ "ws": "^7.3.1"
},
"bin": {
- "import-local-fixture": "fixtures/cli.js"
+ "webpack-bundle-analyzer": "lib/bin/analyzer.js"
},
"engines": {
- "node": ">=6"
+ "node": ">= 10.13.0"
}
},
- "node_modules/webpack-dev-server/node_modules/ip": {
- "version": "1.1.8",
- "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz",
- "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==",
- "dev": true
- },
- "node_modules/webpack-dev-server/node_modules/is-binary-path": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
- "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==",
+ "node_modules/webpack-bundle-analyzer/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"dependencies": {
- "binary-extensions": "^1.0.0"
+ "color-convert": "^2.0.1"
},
"engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/webpack-dev-server/node_modules/is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/webpack-dev-server/node_modules/is-number": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
- "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
+ "node_modules/webpack-bundle-analyzer/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
"dependencies": {
- "kind-of": "^3.0.2"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/webpack-dev-server/node_modules/is-number/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "node_modules/webpack-bundle-analyzer/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"dependencies": {
- "is-buffer": "^1.1.5"
+ "color-name": "~1.1.4"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=7.0.0"
}
},
- "node_modules/webpack-dev-server/node_modules/locate-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "node_modules/webpack-bundle-analyzer/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
- "dependencies": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
- },
"engines": {
- "node": ">=6"
+ "node": ">=8"
}
},
- "node_modules/webpack-dev-server/node_modules/micromatch": {
- "version": "3.1.10",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
- "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "node_modules/webpack-bundle-analyzer/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"dependencies": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "braces": "^2.3.1",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "extglob": "^2.0.4",
- "fragment-cache": "^0.2.1",
- "kind-of": "^6.0.2",
- "nanomatch": "^1.2.9",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.2"
+ "has-flag": "^4.0.0"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=8"
}
},
- "node_modules/webpack-dev-server/node_modules/p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "node_modules/webpack-bundle-analyzer/node_modules/ws": {
+ "version": "7.5.9",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz",
+ "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==",
"dev": true,
- "dependencies": {
- "p-try": "^2.0.0"
- },
"engines": {
- "node": ">=6"
+ "node": ">=8.3.0"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": "^5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
}
},
- "node_modules/webpack-dev-server/node_modules/p-locate": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
- "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "node_modules/webpack-cli": {
+ "version": "5.1.4",
+ "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz",
+ "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==",
"dev": true,
"dependencies": {
- "p-limit": "^2.0.0"
+ "@discoveryjs/json-ext": "^0.5.0",
+ "@webpack-cli/configtest": "^2.1.1",
+ "@webpack-cli/info": "^2.0.2",
+ "@webpack-cli/serve": "^2.0.5",
+ "colorette": "^2.0.14",
+ "commander": "^10.0.1",
+ "cross-spawn": "^7.0.3",
+ "envinfo": "^7.7.3",
+ "fastest-levenshtein": "^1.0.12",
+ "import-local": "^3.0.2",
+ "interpret": "^3.1.1",
+ "rechoir": "^0.8.0",
+ "webpack-merge": "^5.7.3"
+ },
+ "bin": {
+ "webpack-cli": "bin/cli.js"
},
"engines": {
- "node": ">=6"
+ "node": ">=14.15.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "webpack": "5.x.x"
+ },
+ "peerDependenciesMeta": {
+ "@webpack-cli/generators": {
+ "optional": true
+ },
+ "webpack-bundle-analyzer": {
+ "optional": true
+ },
+ "webpack-dev-server": {
+ "optional": true
+ }
}
},
- "node_modules/webpack-dev-server/node_modules/path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
+ "node_modules/webpack-cli/node_modules/commander": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz",
+ "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==",
"dev": true,
"engines": {
- "node": ">=4"
+ "node": ">=14"
}
},
- "node_modules/webpack-dev-server/node_modules/pkg-dir": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
- "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
+ "node_modules/webpack-dev-middleware": {
+ "version": "5.3.3",
+ "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz",
+ "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==",
"dev": true,
"dependencies": {
- "find-up": "^3.0.0"
+ "colorette": "^2.0.10",
+ "memfs": "^3.4.3",
+ "mime-types": "^2.1.31",
+ "range-parser": "^1.2.1",
+ "schema-utils": "^4.0.0"
},
"engines": {
- "node": ">=6"
+ "node": ">= 12.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "webpack": "^4.0.0 || ^5.0.0"
}
},
- "node_modules/webpack-dev-server/node_modules/readdirp": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
- "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
+ "node_modules/webpack-dev-middleware/node_modules/ajv": {
+ "version": "8.12.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
+ "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
"dev": true,
"dependencies": {
- "graceful-fs": "^4.1.11",
- "micromatch": "^3.1.10",
- "readable-stream": "^2.0.2"
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
},
- "engines": {
- "node": ">=0.10"
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
}
},
- "node_modules/webpack-dev-server/node_modules/resolve-cwd": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz",
- "integrity": "sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==",
+ "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
+ "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
"dev": true,
"dependencies": {
- "resolve-from": "^3.0.0"
+ "fast-deep-equal": "^3.1.3"
},
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/webpack-dev-server/node_modules/resolve-from": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
- "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==",
- "dev": true,
- "engines": {
- "node": ">=4"
+ "peerDependencies": {
+ "ajv": "^8.8.2"
}
},
- "node_modules/webpack-dev-server/node_modules/schema-utils": {
+ "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
- "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "dev": true
+ },
+ "node_modules/webpack-dev-middleware/node_modules/schema-utils": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz",
+ "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==",
"dev": true,
"dependencies": {
- "ajv": "^6.1.0",
- "ajv-errors": "^1.0.0",
- "ajv-keywords": "^3.1.0"
+ "@types/json-schema": "^7.0.9",
+ "ajv": "^8.9.0",
+ "ajv-formats": "^2.1.1",
+ "ajv-keywords": "^5.1.0"
},
"engines": {
- "node": ">= 4"
+ "node": ">= 12.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
}
},
- "node_modules/webpack-dev-server/node_modules/strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
- "dev": true,
- "dependencies": {
- "ansi-regex": "^2.0.0"
+ "node_modules/webpack-dev-server": {
+ "version": "4.15.1",
+ "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz",
+ "integrity": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==",
+ "dev": true,
+ "dependencies": {
+ "@types/bonjour": "^3.5.9",
+ "@types/connect-history-api-fallback": "^1.3.5",
+ "@types/express": "^4.17.13",
+ "@types/serve-index": "^1.9.1",
+ "@types/serve-static": "^1.13.10",
+ "@types/sockjs": "^0.3.33",
+ "@types/ws": "^8.5.5",
+ "ansi-html-community": "^0.0.8",
+ "bonjour-service": "^1.0.11",
+ "chokidar": "^3.5.3",
+ "colorette": "^2.0.10",
+ "compression": "^1.7.4",
+ "connect-history-api-fallback": "^2.0.0",
+ "default-gateway": "^6.0.3",
+ "express": "^4.17.3",
+ "graceful-fs": "^4.2.6",
+ "html-entities": "^2.3.2",
+ "http-proxy-middleware": "^2.0.3",
+ "ipaddr.js": "^2.0.1",
+ "launch-editor": "^2.6.0",
+ "open": "^8.0.9",
+ "p-retry": "^4.5.0",
+ "rimraf": "^3.0.2",
+ "schema-utils": "^4.0.0",
+ "selfsigned": "^2.1.1",
+ "serve-index": "^1.9.1",
+ "sockjs": "^0.3.24",
+ "spdy": "^4.0.2",
+ "webpack-dev-middleware": "^5.3.1",
+ "ws": "^8.13.0"
+ },
+ "bin": {
+ "webpack-dev-server": "bin/webpack-dev-server.js"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">= 12.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "webpack": "^4.37.0 || ^5.0.0"
+ },
+ "peerDependenciesMeta": {
+ "webpack": {
+ "optional": true
+ },
+ "webpack-cli": {
+ "optional": true
+ }
}
},
- "node_modules/webpack-dev-server/node_modules/supports-color": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
- "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+ "node_modules/webpack-dev-server/node_modules/ajv": {
+ "version": "8.12.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
+ "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
"dev": true,
"dependencies": {
- "has-flag": "^3.0.0"
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
},
- "engines": {
- "node": ">=6"
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
}
},
- "node_modules/webpack-dev-server/node_modules/to-regex-range": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
- "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
+ "node_modules/webpack-dev-server/node_modules/ajv-keywords": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
+ "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
"dev": true,
"dependencies": {
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1"
+ "fast-deep-equal": "^3.1.3"
},
- "engines": {
- "node": ">=0.10.0"
+ "peerDependencies": {
+ "ajv": "^8.8.2"
}
},
- "node_modules/webpack-dev-server/node_modules/ws": {
- "version": "6.2.2",
- "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz",
- "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==",
+ "node_modules/webpack-dev-server/node_modules/ipaddr.js": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz",
+ "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==",
"dev": true,
- "dependencies": {
- "async-limiter": "~1.0.0"
+ "engines": {
+ "node": ">= 10"
}
},
- "node_modules/webpack-log": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz",
- "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==",
+ "node_modules/webpack-dev-server/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "dev": true
+ },
+ "node_modules/webpack-dev-server/node_modules/schema-utils": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz",
+ "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==",
"dev": true,
"dependencies": {
- "ansi-colors": "^3.0.0",
- "uuid": "^3.3.2"
+ "@types/json-schema": "^7.0.9",
+ "ajv": "^8.9.0",
+ "ajv-formats": "^2.1.1",
+ "ajv-keywords": "^5.1.0"
},
"engines": {
- "node": ">= 6"
- }
- },
- "node_modules/webpack-log/node_modules/ansi-colors": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz",
- "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/webpack-log/node_modules/uuid": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
- "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
- "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.",
- "dev": true,
- "bin": {
- "uuid": "bin/uuid"
+ "node": ">= 12.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
}
},
"node_modules/webpack-merge": {
@@ -29180,37 +24196,6 @@
"node": ">=10.0.0"
}
},
- "node_modules/webpack-sources": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz",
- "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==",
- "dev": true,
- "dependencies": {
- "source-list-map": "^2.0.0",
- "source-map": "~0.6.1"
- }
- },
- "node_modules/webpack-sources/node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/webpack/node_modules/acorn": {
- "version": "8.9.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.9.0.tgz",
- "integrity": "sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==",
- "dev": true,
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
"node_modules/webpack/node_modules/acorn-import-assertions": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz",
@@ -29220,19 +24205,6 @@
"acorn": "^8"
}
},
- "node_modules/webpack/node_modules/enhanced-resolve": {
- "version": "5.15.0",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz",
- "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.2.4",
- "tapable": "^2.2.0"
- },
- "engines": {
- "node": ">=10.13.0"
- }
- },
"node_modules/webpack/node_modules/schema-utils": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz",
@@ -29251,15 +24223,6 @@
"url": "https://opencollective.com/webpack"
}
},
- "node_modules/webpack/node_modules/tapable": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
- "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/webpack/node_modules/webpack-sources": {
"version": "3.2.3",
"resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
@@ -29306,50 +24269,44 @@
"integrity": "sha512-O0S1ZGEWyPvyZEkS2VbyV7mtir/NM9MNK3EuhbHPoJ8EHTky2pTXehjIl+IiDPr+Lldgx129QGt3NGly7rwRPw=="
},
"node_modules/whatwg-encoding": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz",
- "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==",
- "dev": true,
- "dependencies": {
- "iconv-lite": "0.4.24"
- }
- },
- "node_modules/whatwg-encoding/node_modules/iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz",
+ "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==",
"dev": true,
"dependencies": {
- "safer-buffer": ">= 2.1.2 < 3"
+ "iconv-lite": "0.6.3"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=12"
}
},
"node_modules/whatwg-mimetype": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz",
- "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==",
- "dev": true
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz",
+ "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
},
"node_modules/whatwg-url": {
- "version": "8.7.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz",
- "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==",
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz",
+ "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==",
"dev": true,
"dependencies": {
- "lodash": "^4.7.0",
- "tr46": "^2.1.0",
- "webidl-conversions": "^6.1.0"
+ "tr46": "^3.0.0",
+ "webidl-conversions": "^7.0.0"
},
"engines": {
- "node": ">=10"
+ "node": ">=12"
}
},
"node_modules/which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "devOptional": true,
"dependencies": {
"isexe": "^2.0.0"
},
@@ -29376,6 +24333,32 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/which-builtin-type": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz",
+ "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==",
+ "dev": true,
+ "dependencies": {
+ "function.prototype.name": "^1.1.5",
+ "has-tostringtag": "^1.0.0",
+ "is-async-function": "^2.0.0",
+ "is-date-object": "^1.0.5",
+ "is-finalizationregistry": "^1.0.2",
+ "is-generator-function": "^1.0.10",
+ "is-regex": "^1.1.4",
+ "is-weakref": "^1.0.2",
+ "isarray": "^2.0.5",
+ "which-boxed-primitive": "^1.0.2",
+ "which-collection": "^1.0.1",
+ "which-typed-array": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/which-collection": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz",
@@ -29391,23 +24374,17 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/which-module": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz",
- "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ=="
- },
"node_modules/which-typed-array": {
- "version": "1.1.9",
- "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz",
- "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==",
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz",
+ "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==",
"dev": true,
"dependencies": {
"available-typed-arrays": "^1.0.5",
"call-bind": "^1.0.2",
"for-each": "^0.3.3",
"gopd": "^1.0.1",
- "has-tostringtag": "^1.0.0",
- "is-typed-array": "^1.1.10"
+ "has-tostringtag": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
@@ -29430,76 +24407,53 @@
"integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==",
"dev": true
},
- "node_modules/word-wrap": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
- "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/word-wrapper": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/word-wrapper/-/word-wrapper-1.0.7.tgz",
"integrity": "sha512-VOPBFCm9b6FyYKQYfn9AVn2dQvdR/YOVFV6IBRA1TBMJWKffvhEX1af6FMGrttILs2Q9ikCRhLqkbY2weW6dOQ=="
},
"node_modules/wrap-ansi": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
- "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
"dependencies": {
- "ansi-styles": "^3.2.0",
- "string-width": "^3.0.0",
- "strip-ansi": "^5.0.0"
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
},
"engines": {
- "node": ">=6"
- }
- },
- "node_modules/wrap-ansi/node_modules/ansi-regex": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
- "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/wrap-ansi/node_modules/emoji-regex": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
- "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA=="
- },
- "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
- "engines": {
- "node": ">=4"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
- "node_modules/wrap-ansi/node_modules/string-width": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
- "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "node_modules/wrap-ansi/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
"dependencies": {
- "emoji-regex": "^7.0.1",
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^5.1.0"
+ "color-convert": "^2.0.1"
},
"engines": {
- "node": ">=6"
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/wrap-ansi/node_modules/strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "node_modules/wrap-ansi/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
"dependencies": {
- "ansi-regex": "^4.1.0"
+ "color-name": "~1.1.4"
},
"engines": {
- "node": ">=6"
+ "node": ">=7.0.0"
}
},
"node_modules/wrappy": {
@@ -29508,28 +24462,29 @@
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
},
"node_modules/write-file-atomic": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
- "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz",
+ "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==",
"dev": true,
"dependencies": {
"imurmurhash": "^0.1.4",
- "is-typedarray": "^1.0.0",
- "signal-exit": "^3.0.2",
- "typedarray-to-buffer": "^3.1.5"
+ "signal-exit": "^3.0.7"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
"node_modules/ws": {
- "version": "7.5.9",
- "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz",
- "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==",
+ "version": "8.13.0",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz",
+ "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==",
"dev": true,
"engines": {
- "node": ">=8.3.0"
+ "node": ">=10.0.0"
},
"peerDependencies": {
"bufferutil": "^4.0.1",
- "utf-8-validate": "^5.0.2"
+ "utf-8-validate": ">=5.0.2"
},
"peerDependenciesMeta": {
"bufferutil": {
@@ -29566,10 +24521,13 @@
}
},
"node_modules/xml-name-validator": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
- "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==",
- "dev": true
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz",
+ "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
},
"node_modules/xml-parse-from-string": {
"version": "1.0.1",
@@ -29600,6 +24558,7 @@
"version": "15.1.1",
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz",
"integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==",
+ "dev": true,
"engines": {
"node": ">=8.0"
}
@@ -29618,11 +24577,6 @@
"node": ">=0.4"
}
},
- "node_modules/y18n": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
- "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ=="
- },
"node_modules/yallist": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
@@ -29637,139 +24591,39 @@
}
},
"node_modules/yargs": {
- "version": "13.3.2",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
- "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
+ "version": "17.7.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
+ "dev": true,
"dependencies": {
- "cliui": "^5.0.0",
- "find-up": "^3.0.0",
- "get-caller-file": "^2.0.1",
+ "cliui": "^8.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
"require-directory": "^2.1.1",
- "require-main-filename": "^2.0.0",
- "set-blocking": "^2.0.0",
- "string-width": "^3.0.0",
- "which-module": "^2.0.0",
- "y18n": "^4.0.0",
- "yargs-parser": "^13.1.2"
- }
- },
- "node_modules/yargs-parser": {
- "version": "16.1.0",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-16.1.0.tgz",
- "integrity": "sha512-H/V41UNZQPkUMIT5h5hiwg4QKIY1RPvoBV4XcjUbRM8Bk2oKqqyZ0DIEbTFZB0XjbtSPG8SAa/0DxCQmiRgzKg==",
- "dependencies": {
- "camelcase": "^5.0.0",
- "decamelize": "^1.2.0"
- }
- },
- "node_modules/yargs/node_modules/ansi-regex": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
- "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/yargs/node_modules/emoji-regex": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
- "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA=="
- },
- "node_modules/yargs/node_modules/find-up": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
- "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
- "dependencies": {
- "locate-path": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/yargs/node_modules/is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/yargs/node_modules/locate-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
- "dependencies": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/yargs/node_modules/p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
- "dependencies": {
- "p-try": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/yargs/node_modules/p-locate": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
- "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
- "dependencies": {
- "p-limit": "^2.0.0"
+ "string-width": "^4.2.3",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^21.1.1"
},
"engines": {
- "node": ">=6"
- }
- },
- "node_modules/yargs/node_modules/path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
- "engines": {
- "node": ">=4"
+ "node": ">=12"
}
},
- "node_modules/yargs/node_modules/string-width": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
- "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
- "dependencies": {
- "emoji-regex": "^7.0.1",
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^5.1.0"
- },
+ "node_modules/yargs-parser": {
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+ "dev": true,
"engines": {
- "node": ">=6"
+ "node": ">=12"
}
},
- "node_modules/yargs/node_modules/strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
- "dependencies": {
- "ansi-regex": "^4.1.0"
- },
+ "node_modules/yargs/node_modules/y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "dev": true,
"engines": {
- "node": ">=6"
- }
- },
- "node_modules/yargs/node_modules/yargs-parser": {
- "version": "13.1.2",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
- "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
- "dependencies": {
- "camelcase": "^5.0.0",
- "decamelize": "^1.2.0"
+ "node": ">=10"
}
},
"node_modules/yauzl": {
@@ -29794,6 +24648,7 @@
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
"integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+ "dev": true,
"engines": {
"node": ">=10"
},
@@ -29802,9 +24657,9 @@
}
},
"node_modules/zustand": {
- "version": "4.3.8",
- "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.3.8.tgz",
- "integrity": "sha512-4h28KCkHg5ii/wcFFJ5Fp+k1J3gJoasaIbppdgZFO4BPJnsNxL0mQXBSFgOgAdCdBj35aDTPvdAJReTMntFPGg==",
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.4.1.tgz",
+ "integrity": "sha512-QCPfstAS4EBiTQzlaGP1gmorkh/UL1Leaj2tdj+zZCZ/9bm0WS7sI2wnfD5lpOszFqWJ1DcPnGoY8RDL61uokw==",
"dependencies": {
"use-sync-external-store": "1.2.0"
},
@@ -29812,10 +24667,14 @@
"node": ">=12.7.0"
},
"peerDependencies": {
+ "@types/react": ">=16.8",
"immer": ">=9.0",
"react": ">=16.8"
},
"peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
"immer": {
"optional": true
},
@@ -29825,4 +24684,4 @@
}
}
}
-}
\ No newline at end of file
+}
diff --git a/package.json b/package.json
index dd1dcd9d..aa3567d1 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "seeqr",
"productName": "SeeQR App",
- "version": "11.0.0",
+ "version": "12.0.0",
"description": "SQL Toolbox - Model Implementer, Execution Plan Visualizer and Query Comparison Tool",
"main": "./tsCompiled/backend/main.js",
"babel": {
@@ -13,10 +13,10 @@
"scripts": {
"postinstall": "electron-builder install-app-deps",
"build": "cross-env NODE_ENV=production tsc && cross-env NODE_ENV=production webpack",
- "start": "cross-env NODE_ENV=production electron --noDevServer .",
+ "start": "concurrently \"cross-env NODE_ENV=production\" \"electron --no-sandbox --noDevServer .\" ",
"dev": "run-p tsc-dev electron-dev webpack-dev",
"webpack-dev": "cross-env NODE_ENV=development webpack serve",
- "electron-dev": "nodemon --watch tsCompiled/backend --exec \"npx cross-env NODE_ENV=development electron .\"",
+ "electron-dev": "nodemon --watch tsCompiled/backend --exec \"npx cross-env NODE_ENV=development electron --no-sandbox .\"",
"tsc-dev": "tsc --watch",
"test": "jest --verbose",
"electron-build": "npm run build && electron-builder"
@@ -32,109 +32,97 @@
},
"license": "MIT",
"dependencies": {
- "@emotion/react": "^11.9.3",
- "@emotion/styled": "^11.9.3",
- "@mui/icons-material": "^5.4.2",
- "@mui/material": "^5.9.1",
- "@mui/styled-engine": "^5.4.2",
- "@types/react-router-dom": "^5.1.5",
- "@types/styled-components": "^5.1.7",
- "@uiw/codemirror-theme-dracula": "^4.21.4",
- "@uiw/react-codemirror": "^4.21.4",
- "chart.js": "^2.9.4",
+ "@emotion/react": "^11.11.1",
+ "@emotion/styled": "^11.11.0",
+ "@mui/icons-material": "^5.14.3",
+ "@mui/material": "^5.14.5",
+ "@uiw/codemirror-theme-dracula": "^4.21.9",
+ "@uiw/react-codemirror": "^4.21.9",
+ "chart.js": "^4.3.3",
"codemirror": "^6.0.1",
- "concurrently": "^5.3.0",
- "cross-env": "^7.0.3",
"d3": "^7.8.5",
"dagre": "^0.8.5",
- "debounce": "^1.2.0",
- "electron-packager": "^14.2.1",
- "electron-reloader": "^1.1.0",
- "electron-store": "^6.0.0",
- "faker": "^5.1.0",
+ "debounce": "^1.2.1",
+ "electron": "^25.5.0",
"fix-path": "^3.0.0",
"fontsource-roboto": "^4.0.0",
- "fs": "0.0.1-security",
"ms": "^2.1.3",
- "mysql2": "^2.3.3",
- "npm": "^8.5.5",
- "path": "^0.12.7",
- "pg": "^8.3.2",
- "react": "^17.0.2",
- "react-chartjs-2": "^2.11.1",
- "react-dom": "^17.0.2",
+ "mysql2": "^3.6.0",
+ "pg": "^8.11.3",
+ "react": "^18.2.0",
+ "react-chartjs-2": "^5.2.0",
+ "react-dom": "^18.2.0",
"react-force-graph": "^1.43.0",
- "react-loading": "^2.0.3",
- "react-router-dom": "^5.2.0",
- "reactflow": "^11.7.4",
- "sql-formatter": "^4.0.2",
+ "reactflow": "^11.8.3",
+ "sql-formatter": "^12.2.4",
"sqlite3": "^5.1.6",
- "styled-components": "^5.2.1",
- "three": "^0.153.0",
- "three-spritetext": "^1.8.1",
- "update-electron-app": "^2.0.1"
+ "styled-components": "^6.0.7",
+ "three": "^0.155.0",
+ "three-spritetext": "^1.8.1"
},
"devDependencies": {
- "@babel/core": "^7.10.5",
- "@babel/preset-env": "^7.10.4",
- "@babel/preset-react": "^7.10.4",
- "@pmmmwh/react-refresh-webpack-plugin": "^0.4.3",
- "@testing-library/react": "^12.1.5",
- "@types/chart.js": "^2.9.30",
- "@types/debounce": "^1.2.0",
+ "@babel/core": "^7.22.10",
+ "@babel/preset-env": "^7.22.10",
+ "@babel/preset-react": "^7.22.5",
+ "@babel/preset-typescript": "^7.22.5",
+ "@faker-js/faker": "^8.0.2",
+ "@pmmmwh/react-refresh-webpack-plugin": "^0.5.11",
+ "@testing-library/react": "^14.0.0",
+ "@types/chart.js": "^2.9.37",
+ "@types/debounce": "^1.2.1",
"@types/electron": "^1.6.10",
- "@types/enzyme": "^3.10.7",
+ "@types/enzyme": "^3.10.13",
"@types/enzyme-adapter-react-16": "^1.0.6",
- "@types/jest": "^26.0.14",
+ "@types/jest": "^29.5.3",
"@types/ms": "^0.7.31",
"@types/mysql2": "github:types/mysql2",
- "@types/node": "^14.14.22",
- "@types/react": "^18.2.13",
- "@types/react-dom": "^17.0.1",
- "@types/react-router-dom": "^5.1.5",
- "@types/three": "^0.152.1",
- "@typescript-eslint/eslint-plugin": "^4.14.2",
- "@typescript-eslint/parser": "^4.14.2",
- "autoprefixer": "^10.2.4",
- "babel-loader": "^8.1.0",
- "csp-html-webpack-plugin": "^5.1.0",
- "css-loader": "^5.2.7",
- "electron": "^11.5.0",
- "electron-builder": "^23.6.0",
- "electron-react-devtools": "^0.5.3",
- "eslint": "^7.19.0",
- "eslint-config-airbnb": "^18.2.1",
- "eslint-config-prettier": "^7.2.0",
- "eslint-plugin-import": "^2.22.1",
- "eslint-plugin-jsx-a11y": "^6.4.1",
- "eslint-plugin-react": "^7.22.0",
- "eslint-plugin-react-hooks": "^4.2.0",
+ "@types/node": "^20.5.2",
+ "@types/pg": "^8.10.2",
+ "@types/react": "^18.2.20",
+ "@types/react-dom": "^18.2.7",
+ "@types/styled-components": "^5.1.26",
+ "@types/three": "^0.155.0",
+ "@typescript-eslint/eslint-plugin": "^6.4.1",
+ "@typescript-eslint/parser": "^6.4.1",
+ "babel-loader": "^9.1.3",
+ "concurrently": "^8.2.1",
+ "cross-env": "^7.0.3",
+ "css-loader": "^6.8.1",
+ "electron-builder": "^24.6.3",
+ "enzyme": "^3.11.0",
+ "eslint": "^8.47.0",
+ "eslint-config-airbnb": "^19.0.4",
+ "eslint-config-prettier": "^9.0.0",
+ "eslint-import-resolver-typescript": "^3.6.0",
+ "eslint-plugin-import": "^2.28.1",
+ "eslint-plugin-jsx-a11y": "^6.7.1",
+ "eslint-plugin-react": "^7.33.2",
+ "eslint-plugin-react-hooks": "^4.6.0",
"file-loader": "^6.2.0",
- "fork-ts-checker-webpack-plugin": "^6.1.0",
- "html-webpack-plugin": "^5.2.0",
- "image-webpack-loader": "^7.0.1",
- "jest": "^26.4.2",
- "mini-css-extract-plugin": "^1.3.8",
- "nodemon": "^2.0.4",
+ "fork-ts-checker-webpack-plugin": "^8.0.0",
+ "html-webpack-plugin": "^5.5.3",
+ "jest": "^29.6.3",
+ "jest-environment-jsdom": "^29.6.3",
+ "nodemon": "^3.0.1",
+ "npm": "^9.8.1",
"npm-run-all": "^4.1.5",
- "postcss": "^8.2.6",
- "postcss-loader": "^5.0.0",
- "prettier": "^2.2.1",
- "react-refresh": "^0.9.0",
- "sass": "^1.32.8",
- "sass-loader": "^11.0.1",
- "source-map-loader": "^1.0.1",
- "style-loader": "^1.2.1",
- "ts-jest": "^26.4.0",
- "ts-loader": "^8.0.17",
- "ts-node": "^9.1.1",
- "typescript": "^4.1.3",
- "webpack": "^5.23.0",
- "webpack-cli": "^4.5.0",
- "webpack-dev-server": "^3.11.2"
+ "postcss": "^8.4.28",
+ "postcss-loader": "^7.3.3",
+ "react-refresh": "^0.14.0",
+ "sass": "^1.66.1",
+ "sass-loader": "^13.3.2",
+ "style-loader": "^3.3.3",
+ "ts-jest": "^29.1.1",
+ "ts-loader": "^9.4.4",
+ "ts-node": "^10.9.1",
+ "typescript": "^5.1.6",
+ "webpack": "^5.88.2",
+ "webpack-bundle-analyzer": "^4.9.0",
+ "webpack-cli": "^5.1.4",
+ "webpack-dev-server": "^4.15.1"
},
"bugs": {
"url": "https://github.com/open-source-labs/SeeQR/issues"
},
"homepage": "https://github.com/open-source-labs/SeeQR"
-}
\ No newline at end of file
+}
diff --git a/shared/resources/readme.txt b/shared/resources/readme.txt
new file mode 100644
index 00000000..e69de29b
diff --git a/shared/types/authTypes.ts b/shared/types/authTypes.ts
new file mode 100644
index 00000000..92defe4b
--- /dev/null
+++ b/shared/types/authTypes.ts
@@ -0,0 +1,8 @@
+export interface DocConfigFile {
+ mysql: { user: string; password: string; port: number };
+ pg: { user: string; password: string; port: number };
+ rds_mysql: { user: string; password: string; port: number; host: string };
+ rds_pg: { user: string; password: string; port: number; host: string };
+ sqlite: { path: '' };
+ directPGURI: { uri: '' };
+}
diff --git a/shared/types/backendTypes.ts b/shared/types/backendTypes.ts
new file mode 100644
index 00000000..df727ed5
--- /dev/null
+++ b/shared/types/backendTypes.ts
@@ -0,0 +1,129 @@
+/**
+ * This file contains common types that need to be used across the backend
+ */
+import { UpdatesObjType } from '../../frontend/types';
+
+export interface ColumnObj {
+ column_name: string;
+ data_type: string;
+ character_maximum_length: number | null;
+ is_nullable: string;
+ constraint_type: string | null;
+ foreign_table: string | null;
+ foreign_column: string | null;
+}
+export interface dbDetails {
+ db_name: string;
+ db_size: string;
+ db_type: DBType;
+}
+export interface TableDetails {
+ table_catalog: string;
+ table_schema: string;
+ table_name: string;
+ is_insertable_into: string;
+ columns?: ColumnObj[];
+}
+export interface DBList {
+ databaseConnected: {
+ PG: boolean;
+ MySQL: boolean;
+ RDSPG: boolean;
+ RDSMySQL: boolean;
+ SQLite: boolean;
+ directPGURI: boolean;
+ };
+ databaseList: dbDetails[];
+ tableList: TableDetails[];
+}
+
+export type DummyRecords = [string[], ...Array<(string | number)[]>];
+
+export type BackendObjType = {
+ database: string;
+ updates: UpdatesObjType;
+};
+
+export enum DBType {
+ Postgres = 'pg',
+ MySQL = 'mysql',
+ RDSPostgres = 'rds-pg',
+ RDSMySQL = 'rds-mysql',
+ CloudDB = 'cloud-database', // added for cloud dbs
+ SQLite = 'sqlite',
+ directPGURI = 'directPGURI',
+}
+
+export enum LogType {
+ SUCCESS = 'SUCCESS',
+ ERROR = 'ERROR',
+ WARNING = 'WARNING',
+ NORMAL = 'NORMAL',
+ SEND = 'SEND',
+ RECEIVE = 'RECEIVE',
+}
+
+export interface DocConfigFile {
+ mysql: { user: string; password: string; port: number };
+ pg: { user: string; password: string; port: number };
+ rds_mysql: { user: string; password: string; port: number; host: string };
+ rds_pg: { user: string; password: string; port: number; host: string };
+ sqlite: { path: '' };
+ directPGURI: { uri: '' };
+}
+
+type dbsInputted = {
+ pg: boolean;
+ msql: boolean;
+ rds_pg: boolean;
+ rds_msql: boolean;
+ sqlite: boolean;
+ directPGURI: boolean;
+};
+
+type configExists = {
+ pg: boolean;
+ msql: boolean;
+ rds_pg: boolean;
+ rds_msql: boolean;
+ sqlite: boolean;
+ directPGURI: boolean;
+};
+
+type combined = {
+ dbsInputted: dbsInputted;
+ configExists: configExists;
+};
+
+export interface DBFunctions {
+ pg_uri: string;
+ curPG_DB: string;
+ curMSQL_DB: string;
+ curRDS_MSQL_DB: any;
+ curRDS_PG_DB: {
+ user: string;
+ password: string;
+ host: string;
+ };
+ curSQLite_DB: { path: string };
+ curdirectPGURI_DB: string;
+ dbsInputted: dbsInputted;
+
+ setBaseConnections: () => Promise;
+ query: (text: string, params: (string | number)[], dbType: DBType) => void;
+ connectToDB: (db: string, dbType?: DBType) => Promise;
+ disconnectToDrop: (dbType: DBType) => Promise;
+ getLists: (dbName: string, dbType?: DBType) => Promise;
+ getTableInfo: (tableName: string, dbType: DBType) => Promise;
+ getDBNames: (dbType: DBType) => Promise;
+ getColumnObjects: (tableName: string, dbType: DBType) => Promise;
+ getDBLists: (dbType: DBType, dbName: string) => Promise;
+ sampler: (queryString: string) => Promise;
+}
+
+export interface QueryPayload {
+ targetDb: string;
+ sqlString: string;
+ selectedDb: string;
+ runQueryNumber: number;
+}
diff --git a/shared/types/dbTypes.ts b/shared/types/dbTypes.ts
new file mode 100644
index 00000000..7db10f8d
--- /dev/null
+++ b/shared/types/dbTypes.ts
@@ -0,0 +1,144 @@
+/**
+ * This file contains common types that need to be used across the backend
+ */
+import { PoolOptions } from 'mysql2';
+import { PoolConfig } from 'pg';
+import { UpdatesObjType } from '../../frontend/types';
+
+export enum DBType {
+ Postgres = 'pg',
+ MySQL = 'mysql',
+ RDSPostgres = 'rds-pg',
+ RDSMySQL = 'rds-mysql',
+ CloudDB = 'cloud-database', // added for cloud dbs
+ SQLite = 'sqlite',
+ directPGURI = 'directPGURI',
+}
+
+export interface ColumnObj {
+ column_name: string;
+ data_type: string;
+ character_maximum_length: number | null;
+ is_nullable: string;
+ constraint_type: string | null;
+ foreign_table: string | null;
+ foreign_column: string | null;
+}
+export interface dbDetails {
+ db_name: string;
+ db_size: string;
+ db_type: DBType;
+}
+export interface TableDetails {
+ table_catalog: string;
+ table_schema: string;
+ table_name: string;
+ is_insertable_into: string;
+ columns?: ColumnObj[];
+}
+export interface DBList {
+ databaseConnected: {
+ PG: boolean;
+ MySQL: boolean;
+ RDSPG: boolean;
+ RDSMySQL: boolean;
+ SQLite: boolean;
+ directPGURI: boolean;
+ };
+ databaseList: dbDetails[];
+ tableList: TableDetails[];
+}
+
+export type DummyRecords = [string[], ...Array<(string | number)[]>];
+
+export type BackendObjType = {
+ database: string;
+ updates: UpdatesObjType;
+};
+
+export enum LogType {
+ SUCCESS = 'SUCCESS',
+ ERROR = 'ERROR',
+ WARNING = 'WARNING',
+ NORMAL = 'NORMAL',
+ SEND = 'SEND',
+ RECEIVE = 'RECEIVE',
+}
+
+export interface DocConfigFile {
+ mysql_options: { user: string; password: string; port: number } & PoolOptions;
+ pg_options: { user: string; password: string; port: number } & PoolConfig;
+ rds_mysql_options: {
+ user: string;
+ password: string;
+ port: number;
+ host: string;
+ } & PoolOptions;
+ rds_pg_options: {
+ user: string;
+ password: string;
+ port: number;
+ host: string;
+ } & PoolConfig;
+ sqlite_options: { filename: string };
+ directPGURI_options: { connectionString: string } & PoolConfig;
+}
+
+export type dbsInputted = {
+ pg: boolean;
+ msql: boolean;
+ rds_pg: boolean;
+ rds_msql: boolean;
+ sqlite: boolean;
+ directPGURI: boolean;
+};
+
+type configExists = {
+ pg: boolean;
+ msql: boolean;
+ rds_pg: boolean;
+ rds_msql: boolean;
+ sqlite: boolean;
+ directPGURI: boolean;
+};
+
+type combined = {
+ dbsInputted: dbsInputted;
+ configExists: configExists;
+};
+
+export interface MysqlQueryResolve {}
+
+export interface DBFunctions extends DocConfigFile {
+ pg_uri: string;
+ dbsInputted: dbsInputted;
+}
+
+export interface QueryPayload {
+ targetDb: string;
+ sqlString: string;
+ selectedDb: string;
+ runQueryNumber: number;
+}
+
+// definition: for connection Models
+export interface connectionModelType {
+ setBaseConnections: () => Promise;
+ connectToDB: (db: string, dbType?: DBType) => Promise;
+ disconnectToDrop: (dbType: DBType) => Promise;
+}
+
+// definition: for query Models
+export interface queryModelType {
+ query: (text: string, params: (string | number)[], dbType: DBType) => any;
+ sampler: (queryString: string) => Promise;
+}
+
+// definition: for database Models
+export interface databaseModelType {
+ getLists: (dbName?: string, dbType?: DBType) => Promise;
+ getTableInfo: (tableName: string, dbType: DBType) => Promise;
+ getDBNames: (dbType: DBType) => Promise;
+ getColumnObjects: (tableName: string, dbType: DBType) => Promise;
+ getDBLists: (dbType: DBType, dbName: string) => Promise;
+}
diff --git a/shared/types/erTypes.ts b/shared/types/erTypes.ts
new file mode 100644
index 00000000..7c5a0dc1
--- /dev/null
+++ b/shared/types/erTypes.ts
@@ -0,0 +1,215 @@
+import { DBType } from './dbTypes';
+/**
+ * FRONTEND TABLE TYPES
+ */
+
+export type initialStateType = {
+ db_type: DBType;
+ guiTableArray: any[]; // for now any
+ updatesArray: ErdUpdatesType;
+};
+
+export interface ErdDBInfo {
+ db_name: string;
+ db_type: DBType; // table catalog
+ db_size_kb: number; // used to be string
+}
+
+export type ErdTables = TableType[];
+
+export type TableType = PsqlTable | MysqlTable | SqLiteTable;
+
+type BaseTable = {
+ table_name: string;
+ allows_insert?: boolean;
+ columns: ColumnType[];
+ // table_catalog: string; // name of the databse MOVE TO BE
+};
+
+interface PsqlTable extends BaseTable {
+ table_schema: string;
+}
+
+interface MysqlTable extends BaseTable {
+ information_schema: string;
+}
+
+interface SqLiteTable extends BaseTable {
+ sqlite_schema: string;
+}
+
+type ColumnType = PsqlColumn | MySqlColumn | SqLiteColumn;
+
+type BaseColumn = {
+ name: string;
+ data_type: PSqlDataType | MySqlDataType;
+ character_maximum_length?: number;
+ is_primary: boolean;
+ has_foreign: boolean;
+ is_nullable: boolean; // forgot to add this to backend
+ is_unique: boolean;
+ // need a constraint here
+};
+
+export type PSqlDataType =
+ | 'SMALLINT'
+ | 'INTEGER'
+ | 'BIGINT'
+ | 'CHAR'
+ | 'VARCHAR'
+ | 'TEXT'
+ | 'REAL'
+ | 'DOUBLE PRECISION'
+ | 'DATE'
+ | 'TIMESTAMP'
+ | 'BOOLEAN'
+ | 'BYTEA'
+ | 'UUID'
+ | 'JSON'
+ | 'JSONB';
+
+type MySqlDataType =
+ | 'TINYINT'
+ | 'SMALLINT'
+ | 'MEDIUMINT'
+ | 'INT'
+ | 'BIGINT'
+ | 'FLOAT'
+ | 'DOUBLE'
+ | 'DECIMAL'
+ | 'CHAR'
+ | 'VARCHAR'
+ | 'TINYTEXT'
+ | 'TEXT'
+ | 'MEDIUMTEXT'
+ | 'LONGTEXT'
+ | 'DATE'
+ | 'TIME'
+ | 'DATETIME'
+ | 'TIMESTAMP'
+ | 'YEAR'
+ | 'BINARY'
+ | 'VARBINARY'
+ | 'TINYBLOB'
+ | 'BLOB'
+ | 'MEDIUMBLOB'
+ | 'LONGBLOB'
+ | 'ENUM'
+ | 'SET'
+ | 'JSON';
+
+interface PsqlColumn extends BaseColumn {
+ is_identity: boolean;
+}
+
+interface MySqlColumn extends BaseColumn {
+ column_key: string;
+ extra: string[];
+}
+
+interface SqLiteColumn extends BaseColumn {}
+
+/**
+ * ERD TO BACKEND TYPES
+ */
+/*
+I am expecting an array of objects:
+
+erdObj = [{},{},{},{},{}]
+
+{
+ action: string; 'add' | 'drop' | 'alter' | ' column
+ tableName: string;
+ tableSchema: string; ????
+ newTableName?: string; // only with 'alter'
+ columnOperations?: {PsqlColumnOperations}; only with 'column'
+}
+
+PsqlColumnOperations object will have nique operations for changes in COLUMNS
+columnActions currently are: addColumn, dropColumn, alterColumnType( i need to add the text limit for Char later ), renameColumn, togglePrimary, toggleForeign(one for true, one for false), and toggle unique
+*/
+
+export type ErdUpdatesType = OperationType[];
+
+// SQL UNION
+export type OperationType =
+ | PsqlOperationType
+ | MySqlOperationType
+ | SqLiteOperationType;
+
+// @generic
+interface BaseOperation {
+ action: Action;
+ tableName: string;
+ tableSchema: string;
+ newTableName?: string;
+ columnOperations?: colOperation;
+}
+
+export enum TableOperationAction {
+ add = 'add',
+ drop = 'drop',
+ alter = 'alter',
+ column = 'column',
+}
+
+// PSQL
+export type PsqlOperationType =
+ | BaseOperation<'add'>
+ | BaseOperation<'drop'>
+ | BaseOperation<'alter'>
+ | BaseOperation<'column', PsqlColumnOperations>;
+
+export enum ColumnOperationAction {
+ add_column = 'addColumn',
+ drop_column = 'dropColumn',
+ alter_type = 'alterColumnType',
+ rename_column = 'renameColumn',
+ toggle_primary = 'togglePrimary',
+ toggle_foreign = 'toggleForeign',
+ toggle_unique = 'toggleUnique',
+}
+
+export type PsqlColumnOperations = (
+ | { columnAction: 'addColumn'; type?: PSqlDataType } // add column probably doesn't need type since we are adding each operation sequentially
+ | { columnAction: 'dropColumn' }
+ | { columnAction: 'alterColumnType'; type: PSqlDataType }
+ | { columnAction: 'renameColumn'; newColumnName: string }
+ | { columnAction: 'togglePrimary'; isPrimary: boolean }
+ | {
+ columnAction: 'toggleForeign';
+ hasForeign: true;
+ foreignTable: string;
+ foreignColumn: string;
+ foreignConstraint: string;
+ }
+ | {
+ columnAction: 'toggleForeign';
+ hasForeign: false;
+ foreignConstraint: string;
+ }
+ // missing action for nullable
+ | { columnAction: 'toggleUnique'; isUnique: boolean }
+) & { columnName: string };
+
+// MYSQL
+export type MySqlOperationType =
+ | BaseOperation<'add'>
+ | BaseOperation<'drop'>
+ | BaseOperation<'alter'>
+ | BaseOperation<'column', MySqlColumnOperations>;
+
+interface MySqlColumnOperations {
+ // tbd
+}
+
+// SQLITE
+export type SqLiteOperationType =
+ | BaseOperation<'add'>
+ | BaseOperation<'drop'>
+ | BaseOperation<'alter'>
+ | BaseOperation<'column', SqLiteColumnOperations>;
+
+interface SqLiteColumnOperations {
+ // tbd
+}
diff --git a/shared/types/frontendTypes.ts b/shared/types/frontendTypes.ts
new file mode 100644
index 00000000..d88fd7f6
--- /dev/null
+++ b/shared/types/frontendTypes.ts
@@ -0,0 +1,17 @@
+/**
+ * STATE TYPES
+ */
+
+/**
+ *
+ */
+export type ViewName =
+ | 'compareView'
+ | 'dbView'
+ | 'queryView'
+ | 'quickStartView'
+ | 'newSchemaView'
+ | 'threeDView';
+
+// TO-DO
+export type Dialogs = '';
diff --git a/shared/types/logTypes.ts b/shared/types/logTypes.ts
new file mode 100644
index 00000000..d59fe93d
--- /dev/null
+++ b/shared/types/logTypes.ts
@@ -0,0 +1,8 @@
+export enum LogType {
+ SUCCESS = 'SUCCESS',
+ ERROR = 'ERROR',
+ WARNING = 'WARNING',
+ NORMAL = 'NORMAL',
+ SEND = 'SEND',
+ RECEIVE = 'RECEIVE',
+}
diff --git a/shared/types/utilTypes.ts b/shared/types/utilTypes.ts
new file mode 100644
index 00000000..c43c8a26
--- /dev/null
+++ b/shared/types/utilTypes.ts
@@ -0,0 +1,4 @@
+export interface Feedback {
+ type: string;
+ message: string;
+}
diff --git a/tsconfig.json b/tsconfig.json
index 8ea321bb..869d1ec4 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -36,7 +36,7 @@
/* Strict Type-Checking Options */
"strict": true /* Enable all strict type-checking options. */,
"noImplicitAny": false /* Raise error on expressions and declarations with an implied 'any' type. */,
- "strictNullChecks": true /* Enable strict null checks. */,
+ // "strictNullChecks": true /* Enable strict null checks. */,
// "strictFunctionTypes": true, /* Enable strict checking of function types. */
// "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */
// "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */
@@ -51,10 +51,14 @@
/* Module Resolution Options */
"moduleResolution": "node" /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */,
- // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */
- // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */
+ // "baseUrl": ".",
+ "paths": {
+ "@mytypes/*": ["./shared/types/*"]
+ } /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */,
// "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */
- "typeRoots": ["./node_modules/@types"], /* List of folders to include type definitions from. */ // Added ./node_modeules/@types to fix red squigglies for react.node types
+ "typeRoots": [
+ "./node_modules/@types"
+ ] /* List of folders to include type definitions from. */, // Added ./node_modeules/@types to fix red squigglies for react.node types
// "types": ["jest"] /* Type declaration files to be included in compilation. */,
// "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */
"esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */,
@@ -75,5 +79,5 @@
"forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */,
"resolveJsonModule": true /* Include modules imported with '.json' extension. Requires TypeScript version 2.9 or later. */
},
- "include": ["backend", "frontend", "__tests__/frontend/lib/testClickNodeForDetails.ts", "__tests__/frontend/lib/checkClickNode.ts"]
+ "include": ["backend", "frontend", "__tests__", "shared"]
}
diff --git a/webpack.config.js b/webpack.config.js
index 8c3deedd..8a766035 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -1,9 +1,9 @@
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
-const { spawn } = require('child_process');
-const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin');
const ReactRefreshWebpackPlugin = require('@pmmmwh/react-refresh-webpack-plugin');
-const webpack = require('webpack');
+const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin');
+const BundleAnalyzerPlugin =
+ require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
const isDevelopment = process.env.NODE_ENV !== 'production';
@@ -41,7 +41,11 @@ module.exports = {
use: {
loader: 'babel-loader',
options: {
- presets: ['@babel/preset-env', '@babel/preset-react'],
+ presets: [
+ '@babel/preset-env',
+ '@babel/preset-react',
+ '@babel/preset-typescript',
+ ],
plugins: [
isDevelopment && require.resolve('react-refresh/babel'),
].filter(Boolean),
@@ -60,16 +64,8 @@ module.exports = {
{
test: /\.(jpg|jpeg|png|ttf|svg)$/,
use: [
- 'file-loader',
{
- loader: 'image-webpack-loader',
- options: {
- bypassOnDebug: true,
- disable: true,
- mozjpeg: {
- quality: 10,
- },
- },
+ loader: 'file-loader',
},
],
exclude: /node_modules/,
@@ -91,6 +87,10 @@ module.exports = {
resolve: {
// Enable importing JS / JSX files without specifying their extension
modules: [path.resolve(__dirname, 'node_modules')],
+ alias: {
+ '@mytypes': path.resolve(__dirname, './shared/types/'),
+ // ... any other path aliases ...
+ },
extensions: [
'.js',
'.jsx',
@@ -105,15 +105,11 @@ module.exports = {
target: 'electron-renderer',
devServer: {
// contentBase: path.resolve(__dirname, '/tsCompiled/frontend'),
- contentBase: path.resolve(__dirname, '/dist/'),
+ static: path.resolve(__dirname, '/dist/'),
host: 'localhost',
port: '8080',
hot: true,
compress: true,
- watchContentBase: true,
- watchOptions: {
- ignored: /node_modules/,
- },
},
plugins: [
new HtmlWebpackPlugin({
@@ -137,6 +133,11 @@ module.exports = {
},
},
}),
+ // new BundleAnalyzerPlugin({
+ // analyzerMode: 'json',
+ // openAnalzyer: true,
+ // generateStatsFile: true,
+ // }),
new ForkTsCheckerWebpackPlugin({
// // Lint files on error. Uncomment for Hard Mode :)
// eslint: {
@@ -148,4 +149,7 @@ module.exports = {
}),
isDevelopment && new ReactRefreshWebpackPlugin(),
].filter(Boolean),
+ externals: {
+ '@mytypes/dbTypes': 'commonjs @mytypes/dbTypes',
+ },
};